def createSnareFft(): # read in the snare drum sample files = glob.glob('./snare_samples/*.wav') matrix = numpy.array([]) for filename in files: print filename rate, data = wave_reader.readWav(filename) data = wave_reader.stereoToMono(data) features = analyzer.getFrequencies(data) matrix = build_data.addToFeatureMatrix(matrix, features[0:2000]) build_data.saveFile('snaredata.csv', matrix)
def readSong(filename, segTime = 0.05): # read in the input song rate, data = wave_reader.readWav(filename) data = wave_reader.stereoToMono(data) # sample every 0.1 seconds by default segSize = segTime * rate matrix = numpy.array([]) print 'reading in song...' start = 0 end = segSize for i in range(0, int(math.floor(len(data)/segSize))): data_seg = data[start:end] start += segSize end += segSize features = analyzer.getFrequencies(data_seg) matrix = build_data.addToFeatureMatrix(matrix, features[0:2000]) outfile = os.path.splitext(filename)[0] + '.csv' build_data.saveFile(outfile, matrix) return matrix
if note_amp[note_freq_sort[j]] < max_amp * 0.3: break if note == None or note_name.index(note) > note_freq_sort[j]: if last_note == None or abs(note_name.index(last_note) - note_freq_sort[j]) <= 7: note = note_name[note_freq_sort[j]] f.write("%.4f\n"%np.sum(note_amp)) if note != last_note: if last_note != None: toRtn.append((last_note, start_time, time)) last_note = note start_time = time""" f.close() # if last_note != None: # toRtn.append((last_note, start_time, t[1]*len(t))) #print toRtn #print len(toRtn) return toRtn if __name__ == "__main__": # f = open("note_freq.txt", 'w') # for i in range(len(note_name)): # f.write("%s: %.4f\n" % (note_name[i], note_freq[i])) _, _, fr, data = readWav("rec") # qualify(data, fr) # print("hello") recognize(data, fr, 195) # print(freqToNote(500))
def wav2mid(wav_file_name, tempo=120): _, _, fr, data = readWav(wav_file_name) note_time_list = recognize(data, fr, tempo) outMidPath = writeMid(note_time_list, tempo) print outMidPath