I was just messing around with python making wav
files; when I came up with this (what I think is) pretty neat script. It takes each character and represents it with a tone.
import wave
import struct
from math import sin
import os
RATE = 44100
maxVol = 2 ** 15 - 1.0 # maximum amplitude
noise_output = wave.open('noise2.wav', 'w')
noise_output.setparams((2, 2, 44100, 0, 'NONE', 'not compressed'))
a = lambda i, f: sin(f * i / RATE)
f = open(os.path.basename(__file__)).read()
values = [[a, (ord(l))] for l in f]
result = []
count = 0
for i, j in values:
count_end = count + RATE / 8
while count < count_end:
packed_value = struct.pack('h', maxVol * i(count, j * 20 + 1000))
result.append(packed_value)
result.append(packed_value)
count += 1
result_str = ''.join(result)
noise_output.writeframes(result_str)
noise_output.close()
I found the original here. The original just makes a constant tone. Runs fine with Python 3. I would love to see a decoder for this; but I don't know enough about calculating frequencies.