ich versuche mich in die Python Programmierung einzuarbeiten, und bin dabei auf dieses doch sehr interessante Forum gestossen. Ich habe ein kleines Python programm, welches ich gerne besser verstehen möchte, evtl. kann mir dabei jemand weiter helfen? Grundsätzlich geht es darum einen Stream von der Soundkarte einzulesen, eine FFT darauf anzuwenden, und dann einen sog. "Waterfall plot" auszugeben. Nach einiger Suche, habe ich festgestellt, das dies in Python deutlich einfacher (und schneller) zu bewerkstelligen ist, als z.B. in C oder Pascal. Es geht dabei um ein Script von dieser Seite
http://www.swharden.com/blog/2010-03-05 ... in-python/.
ich poste hier mal den für mich interessanten Teil (mit dem ich auch die grössten Verständnisprobleme habe):
Code: Alles auswählen
def graph():
global chunks, bufferSize, fftx,ffty, w
if len(chunks)>0:
data = chunks.pop(0)
data=scipy.array(struct.unpack("%dB"%(bufferSize*2),data))
#print "RECORDED",len(data)/float(sampleRate),"SEC"
ffty=scipy.fftpack.fft(data)
fftx=scipy.fftpack.rfftfreq(bufferSize*2, 1.0/sampleRate)
fftx=fftx[0:len(fftx)/4]
ffty=abs(ffty[0:len(ffty)/2])/1000
ffty1=ffty[:len(ffty)/2]
ffty2=ffty[len(ffty)/2::]+2
ffty2=ffty2[::-1]
ffty=ffty1+ffty2
ffty=(scipy.log(ffty)-1)*120
fftx,ffty=downSample(fftx,ffty,2)
updatePic(fftx,ffty)
reloadPic()
if len(chunks)>20:
print "falling behind...",len(chunks)
Allen Lesern fröhliche Weihnachten und vorab schon Herzlichen Dank für die Hilfe!
Weihnachtliche Grüsse,
Jan