Вот, что у меня вышло с модулятором:
#-------------------------------------------------------------------------------
# Name: Nikolay
# Purpose:
#
# Author: toksin
#
# Created: 21.01.2011
# Copyright: (c) developer 2011
# Licence: Free
#-------------------------------------------------------------------------------
#
#Файл bin.txt содержит данные в виде нулей и единиц(входящая информация)
#в psk-31 используется алфавит варикод http://en.wikipedia.org/wiki/Varicode
#Файл test.wav содержит промодулированный сигнал
#
#!/usr/bin/env python
import cmath
import pylab, wave
from matplotlib import mlab
import struct
mes = []
fmes = open("bin.txt", "r").read()
for m in fmes:
mes.append(m)
s = []
amp = 5000
sampl = 11025#частота семплирования
f = 1000# частота несущей(Гц)
phase = 0
manip = 31#частота манипуляции
sampl_manip = sampl/manip
ln_mes = len(mes)*manip
if ln_mes>sampl:
ln = ln_mes/sampl +1
else:
ln = 1
for t in xrange(sampl*ln):
if t % sampl_manip == 0 and len(mes)>0 and t>0:
bit = int(mes.pop(0))
if bit == 0:
if phase == 0:
phase -= cmath.pi
else:
phase = 0
elif bit ==" ":
phase = phase
s.append(cmath.sin(2*cmath.pi*f*t/sampl+phase))
x =[]
for r in s:
x.append(r.real)
#pylab.plot([y for y in range(len(s))], x)
#pylab.show()
#print len(x)
wav_file = wave.open("test.wav", "wb")
nchannels = 1
sampwidth = 2
framerate = int(sampl)
nframes = ln_mes
comptype = "NONE"
compname = "not compressed"
wav_file.setparams((nchannels, sampwidth, framerate, nframes,
comptype, compname))
for s in x:
# write the audio frames, make sure nframes is correct
wav_file.writeframes(struct.pack('h', s*amp/2))
wav_file.close()
Вот еще вопрос - способен ли питон производить цифровую обработку сигнала, со скоростью равной С++ ? Если использовать cmath, scipy, numpy.