Showing the changes to python (1 of 1 file). Show all
Unified · Split
| @@ -12,7 +12,8 @@ class taskpitch(task): · 11 unmodified lines | ||
| 12 | 12 | hopsize=self.params.hopsize, |
| 13 | 13 | channels=self.channels, |
| 14 | 14 | samplerate=self.srate, |
| 15 | − omode=self.params.omode) | |
| 15 | + omode=self.params.omode, | |
| 16 | + yinthresh=self.params.yinthresh) | |
| 16 | 17 | |
| 17 | 18 | def __call__(self): |
| 18 | 19 | from aubio.median import short_find |
| @@ -83,7 +84,10 @@ class taskpitch(task): · 64 unmodified lines | ||
| 83 | 84 | time, pitch = [], [] |
| 84 | 85 | for i in range(len(values)): |
| 85 | 86 | time.append(values[i][0]) |
| 86 | − pitch.append(aubio_freqtomidi(values[i][1])) | |
| 87 | + if values[i][1] == 0.0: | |
| 88 | + pitch.append(-1.) | |
| 89 | + else: | |
| 90 | + pitch.append(aubio_freqtomidi(values[i][1])) | |
| 87 | 91 | return time,pitch |
| 88 | 92 | |
| 89 | 93 | def oldeval(self,results): |
| @@ -104,20 +108,29 @@ class taskpitch(task): · 14 unmodified lines | ||
| 104 | 108 | med = percental(res,len(res)/2) |
| 105 | 109 | return self.truth, self.truth-med, self.truth-avg |
| 106 | 110 | |
| 107 | − def eval(self,pitch,tol=0.9): | |
| 111 | + def eval(self,pitch,tol=0.5): | |
| 108 | 112 | timet,pitcht = self.gettruth() |
| 109 | 113 | pitch = [aubio_freqtomidi(i) for i in pitch] |
| 110 | 114 | for i in range(len(pitch)): |
| 111 | 115 | if pitch[i] == "nan" or pitch[i] == -1: |
| 112 | 116 | pitch[i] = -1 |
| 113 | 117 | time = [ i*self.params.step for i in range(len(pitch)) ] |
| 114 | − assert len(timet) == len(time) | |
| 118 | + #print len(timet),len(pitcht) | |
| 119 | + #print len(time),len(pitch) | |
| 120 | + if len(timet) != len(time): | |
| 121 | + time = time[1:len(timet)+1] | |
| 122 | + pitch = pitch[1:len(pitcht)+1] | |
| 123 | + #pitcht = [aubio_freqtomidi(i) for i in pitcht] | |
| 124 | + for i in range(len(pitcht)): | |
| 125 | + if pitcht[i] == "nan" or pitcht[i] == "-inf" or pitcht[i] == -1: | |
| 126 | + pitcht[i] = -1 | |
| 127 | + assert len(timet) == len(time) | |
| 115 | 128 | assert len(pitcht) == len(pitch) |
| 116 | 129 | osil, esil, opit, epit, echr = 0, 0, 0, 0, 0 |
| 117 | 130 | for i in range(len(pitcht)): |
| 118 | 131 | if pitcht[i] == -1: # currently silent |
| 119 | 132 | osil += 1 # count a silence |
| 120 | − if pitch[i] == -1. or pitch[i] == "nan": | |
| 133 | + if pitch[i] <= 0. or pitch[i] == "nan": | |
| 121 | 134 | esil += 1 # found a silence |
| 122 | 135 | else: |
| 123 | 136 | opit +=1 |
| @@ -137,11 +150,12 @@ class taskpitch(task): · 13 unmodified lines | ||
| 137 | 150 | import Gnuplot |
| 138 | 151 | |
| 139 | 152 | downtime = self.params.step*numarray.arange(len(pitch)) |
| 140 | − oplots.append(Gnuplot.Data(downtime,pitch,with='linespoints', | |
| 153 | + pitch = [aubio_freqtomidi(i) for i in pitch] | |
| 154 | + oplots.append(Gnuplot.Data(downtime,pitch,with='lines', | |
| 141 | 155 | title=self.params.pitchmode)) |
| 142 | 156 | |
| 143 | 157 | |
| 144 | − def plotplot(self,wplot,oplots,outplot=None,multiplot = 0): | |
| 158 | + def plotplot(self,wplot,oplots,outplot=None,multiplot = 1, midi = 1): | |
| 145 | 159 | from aubio.gnuplot import gnuplot_init, audio_to_array, make_audio_plot |
| 146 | 160 | import re |
| 147 | 161 | import Gnuplot |
| @@ -152,7 +166,6 @@ class taskpitch(task): · 4 unmodified lines | ||
| 152 | 166 | # check if ground truth exists |
| 153 | 167 | timet,pitcht = self.gettruth() |
| 154 | 168 | if timet and pitcht: |
| 155 | − pitcht = [aubio_miditofreq(i) for i in pitcht] | |
| 156 | 169 | oplots = [Gnuplot.Data(timet,pitcht,with='lines', |
| 157 | 170 | title='ground truth')] + oplots |
| 158 | 171 | |
| @@ -177,13 +190,17 @@ class taskpitch(task): · 18 unmodified lines | ||
| 177 | 190 | g('set size 1,0.7') |
| 178 | 191 | g('set origin 0,0') |
| 179 | 192 | g('set xrange [0:%f]' % max(time)) |
| 180 | − g('set yrange [100:%f]' % self.params.pitchmax) | |
| 193 | + if not midi: | |
| 194 | + g('set log y') | |
| 195 | + #g.xlabel('time (s)') | |
| 196 | + g.ylabel('f0 (Hz)') | |
| 197 | + g('set yrange [100:%f]' % self.params.pitchmax) | |
| 198 | + else: | |
| 199 | + g.ylabel('pitch (midi)') | |
| 200 | + g('set yrange [%f:%f]' % (40, aubio_freqtomidi(self.params.pitchmax))) | |
| 181 | 201 | g('set key right top') |
| 182 | 202 | g('set noclip one') |
| 183 | 203 | g('set format x ""') |
| 184 | − g('set log y') | |
| 185 | − #g.xlabel('time (s)') | |
| 186 | − g.ylabel('f0 (Hz)') | |
| 187 | 204 | if multiplot: |
| 188 | 205 | for i in range(len(oplots)): |
| 189 | 206 | # plot onset detection functions |