danielsdesk
3/13/2013 - 6:49 PM

pydsptut

from   numpy import *
import scipy.io.wavfile as wavfile
import matplotlib.pyplot as pyplot

# cool tools to use for audio analysis
# sonic visualiser - sonicvisualiser.org
# 


def foo():
    audiofile    = 'myfile.wav'
    audio        = wavfile.read(audiofile)
    audiofft    = fft.rfft(audio)
    makegraph(audiofft,'audiofft.png')

    audiofft    = abs(audiofft)
    audiofftdb    = 10*log10(audiofft)
    makegraph(audiofft, 'audiofft2.png')
    pyplot.clf()
    sgram        = specgram(audio)
    pyplot.savefig('audiospectro.png')

def writewav(data, outfile='out.wav', samplerate=44100):
    ''' make wav file '''
    wavfile.write(outfile, samplerate, data)
    
def readwav(filepath):
    ''' read in a wav file '''
    return wavfile.read(filepath)[1]
    
def gensignal(amplitude=10.0, freq=494.0, samplerate = 44100.0, numsamples=256.0):
    ''' creates a sinosoidal signal '''
    sig    =    array(amplitude*sin(2*pi*(freq/samplerate)*arange(numsamples)), dtype=int16)
    return sig
    
def makegraph(data, filename):
    pyplot.clf()
    pyplot.plot(data)
    pyplot.savefig(filename)

def makesinwav(freq, amplitude, sampling_freq, num_samples):
    return array(sin(2*pi*(freq/float(sampling_freq))*arange(float(num_samples)))*amplitude,dtype=int16)
    
if __name__ == "__main__":
    sig = makesinwav(494.0,10000.0,44100.0,84100.0)
    makegraph(sig,'sig.png')
    writewav(sig)