In [1]:
%matplotlib notebook
from scipy.io.wavfile import write
from numpy import linspace,sin,pi,int16,concatenate
from pylab import plot,show,axis
import pandas as pd
import os
from os.path import isfile, join
In [46]:
fileList = os.listdir('gg/')
def isDataFile(filename):
return filename.find('.dat')>0
dataFiles = filter(isDataFile,fileList)
print 'Building note list...'
notes = open('CMaj_Notes.txt','r')
note_list = []
note_file = notes.readlines()
for line in note_file:
line = line.split("\t",3)
line[2] = line[2].strip('\n')
note_list.append(line)
print 'Note list built.'
print 'Building grain list...'
all_grains = []
for data in dataFiles:
grain_list = []
grains = open("gg/" + data, "r")
grain_file = grains.readlines()
for line in grain_file:
line = line.split("\t",3)
line[2] = line[2].strip('\n')
grain_list.append(line)
all_grains.append(grain_list)
print 'Grain list built.'
In [4]:
len(dataFiles)
Out[4]:
In [30]:
pd.read_csv('gg/'+dataFiles[0],sep='\t',header=None,names=('grain-ID','area','sides'))
Out[30]:
In [32]:
# tone synthesis
def note(freq, len, amp=1, rate=44100):
t = linspace(0,len,len*rate)
data = sin(2*pi*freq*t)*amp
return data.astype(int16) # two byte integers
In [43]:
# A tone, 2 seconds, 44100 samples per second
tone_1 = note(440,2,amp=10000) + note(660,2,amp=10000)
tone_2 = note(440,2,amp=10000)
tone_total = []
#concatenate((tone_1,tone_2))
for data in all_grains:
tones = []
for grain in data:
for tone in note_list:
if grain[2] == tone[2]:
output_note = note(float(tone[1]),2,amp=100)
tones.append(output_note)
tone_total.append(sum(tones))
print 'Finished building notes'
#concatenate((tone_total[0:-1]))
In [47]:
write('test.wav',44100,concatenate((tone_total))) # writing the sound to a file
len(tone_total[:])
#plot(linspace(0,2,2*44100),tone_total)
#axis([0,0.4,15000,-15000])
#show()
Out[47]:
In [ ]: