Robert Miller
from essentia.standard import *
import glob
myLib = glob.glob('/Users/milrober/Desktop/MIR/Code/240E_Homework/samples/*.wav')
sndFiles = []
for snd in myLib:
loader = MonoLoader(filename=snd)
sndFiles.append(loader())
w = Windowing(type='hann')
spectrum = Spectrum()
pitchYin = PitchYinFFT()
titles = []
for ml in myLib:
titles.append(ml[55:])
def getPitches(audio, windowSize=2048, hop=1024):
pitches = []
confidences = []
for frame in FrameGenerator(audio, frameSize=windowSize, hopSize=hop):
pitch, pConf = pitchYin(spectrum(w(frame)))
pitches.append(pitch)
confidences.append(pConf)
return pitches, confidences
p1, c1 = getPitches(sndFiles[0])
plot(p1)
[<matplotlib.lines.Line2D at 0x10aaeefd0>]
plot(p1[2000:2100])
twinx()
plot(c1[2000:2100],'r')
[<matplotlib.lines.Line2D at 0x1093dc8d0>]
pitches = []
confidences = []
for snd in sndFiles:
p,c = getPitches(snd)
pitches.append(p)
confidences.append(c)
#Code from Class
def midi2Hz(midinote, tuning=440.0):
return tuning * (2**((midinote - 69)/12.0))
num_freqs = 8*12 # eight octaves from C0
quant_freqs = [midi2Hz(i + 24) for i in range(num_freqs)]
def quantize_freq(freq_list, quant_freqs, quant_offset=24):
quantized = zeros_like(freq_list)
for i in range(len(freq_list)):
arg = argwhere(array(quant_freqs) > freq_list[i])
if arg.size == 0 or arg[0] == 0:
quantized[i] = 0
elif quant_freqs[arg[0]] - freq_list[i] > freq_list[i] - quant_freqs[arg[0] - 1]:
quantized[i] = arg[0] - 1
else:
quantized[i] = arg[0]
return quantized + quant_offset
quantized_pitches = []
for p in pitches:
quantized_pitches.append(quantize_freq(p,quant_freqs))
hist(quantized_pitches[0],arange(40,100));
title(titles[0])
<matplotlib.text.Text at 0x10c8fbed0>
hist(quantized_pitches[1],arange(40,100));
title(titles[1])
<matplotlib.text.Text at 0x10c9cc690>
hist(quantized_pitches[2],arange(40,100));
title(titles[2])
<matplotlib.text.Text at 0x10ca59590>
hist(quantized_pitches[3],arange(40,100));
title(titles[3])
<matplotlib.text.Text at 0x10cb4bcd0>
hist(quantized_pitches[4],arange(40,100));
title(titles[4])
<matplotlib.text.Text at 0x10cc3dc90>
winSize = 200
hopSize = 100
signal = pitches[1]
win_start = arange(0,len(signal)-winSize,hopSize)
ssm = []
for starti in win_start:
for startj in win_start:
wini = signal[starti:starti+winSize]
winj = signal[startj:startj+winSize]
ssm.append(corrcoef(wini,winj)[0,1])
ssm = array(ssm).reshape(len(win_start), len(win_start))
imshow(ssm,cmap='gray')
title(titles[1])
<matplotlib.text.Text at 0x10cd24bd0>
def constructSSM(sig):
winSize = 200
hopSize = 100
signal = sig
win_start = arange(0,len(signal)-winSize,hopSize)
ssm = []
for starti in win_start:
for startj in win_start:
wini = signal[starti:starti+winSize]
winj = signal[startj:startj+winSize]
ssm.append(corrcoef(wini,winj)[0,1])
ssm = array(ssm).reshape(len(win_start), len(win_start))
return ssm
ssms = []
for p in pitches:
ssms.append(constructSSM(p))
imshow(ssms[0])
title(titles[0])
<matplotlib.text.Text at 0x10cdc9d50>
imshow(ssms[2])
title(titles[2])
<matplotlib.text.Text at 0x10cdc3d50>
imshow(ssms[3],cmap='gray')
title(titles[3])
<matplotlib.text.Text at 0x10cf1a550>
imshow(ssms[4])
<matplotlib.image.AxesImage at 0x10a612a90>
imshow(ssms[4],cmap='gray')
title(myLib[4][55:])
<matplotlib.text.Text at 0x10c8c6c10>