History

remove old plot_pitch, plot_onset and getonsets, cutfile, getpitch remove old plot_pitch, plot_onset and getonsets, cutfile, getpitch

Paul Brossier committed 20 years ago

Commit 1e3089c1 parent 0fe9aab2 files · +0 −268Browse files

Showing the changes to python (2 of 2 files). Show all

Unified · Split

2 files
  1. python/aubio/gnuplot.py +0 −145
  2. python/aubio/tasks.py +0 −123
python/aubio/gnuplot.py+0−145
@@ -149,151 +149,6 @@ def make_audio_plot(time,data,maxpoints=10000): · 148 unmodified lines
149 y = numarray.array(data).resize(length)[0:-1:downsample]149 y = numarray.array(data).resize(length)[0:-1:downsample]
150 return Gnuplot.Data(x,y,with='lines')150 return Gnuplot.Data(x,y,with='lines')
151 151
152
153def plot_onsets(filename, onsets, ofunc, samplerate=44100., hopsize=512, outplot=None):
154 import Gnuplot, Gnuplot.funcutils
155 import aubio.txtfile
156 import os.path
157 import numarray
158 import re
159 from aubio.onsetcompare import onset_roc
160
161 d,d2 = [],[]
162 maxofunc = 0
163 for i in range(len(onsets)):
164 if len(onsets[i]) == 0: onsets[i] = [0.];
165
166 # onset detection function
167 downtime = (hopsize/samplerate)*numarray.arange(len(ofunc[i]))
168 d.append(Gnuplot.Data(downtime,ofunc[i],with='lines'))
169 maxofunc = max(max(ofunc[i]), maxofunc)
170
171 for i in range(len(onsets)):
172 # detected onsets
173 x1 = (hopsize/samplerate)*numarray.array(onsets[i])
174 y1 = maxofunc*numarray.ones(len(onsets[i]))
175 d.append(Gnuplot.Data(x1,y1,with='impulses'))
176 d2.append(Gnuplot.Data(x1,-y1,with='impulses'))
177
178 # check if datafile exists truth
179 datafile = filename.replace('.wav','.txt')
180 if datafile == filename: datafile = ""
181 if not os.path.isfile(datafile):
182 title = "truth file not found"
183 t = Gnuplot.Data(0,0,with='impulses')
184 else:
185 t_onsets = aubio.txtfile.read_datafile(datafile)
186 y2 = maxofunc*numarray.ones(len(t_onsets))
187 x2 = numarray.array(t_onsets).resize(len(t_onsets))
188 d2.append(Gnuplot.Data(x2,y2,with='impulses'))
189
190 tol = 0.050
191
192 orig, missed, merged, expc, bad, doubled = \
193 onset_roc(x2,x1,tol)
194 title = "GD %2.3f%% FP %2.3f%%" % \
195 ((100*float(orig-missed-merged)/(orig)),
196 (100*float(bad+doubled)/(orig)))
197
198 # audio data
199 time,data = audio_to_array(filename)
200 d2.append(make_audio_plot(time,data))
201
202 # prepare the plot
203 g = gnuplot_init(outplot)
204
205 g('set title \'%s %s\'' % (re.sub('.*/','',filename),title))
206
207 g('set multiplot')
208
209 # hack to align left axis
210 g('set lmargin 15')
211
212 # plot waveform and onsets
213 g('set size 1,0.3')
214 g('set origin 0,0.7')
215 g('set xrange [0:%f]' % max(time))
216 g('set yrange [-1:1]')
217 g.ylabel('amplitude')
218 g.plot(*d2)
219
220 g('unset title')
221
222 # plot onset detection function
223 g('set size 1,0.7')
224 g('set origin 0,0')
225 g('set xrange [0:%f]' % (hopsize/samplerate*len(ofunc[0])))
226 g('set yrange [0:%f]' % (maxofunc*1.01))
227 g.xlabel('time')
228 g.ylabel('onset detection value')
229 g.plot(*d)
230
231 g('unset multiplot')
232
233
234def plot_pitch(filename, pitch, samplerate=44100., hopsize=512, outplot=None):
235 import aubio.txtfile
236 import os.path
237 import numarray
238 import Gnuplot
239 import re
240
241 d = []
242 maxpitch = 1000.
243 for i in range(len(pitch)):
244 #if len(pitch[i]) == 0: pitch[i] = [0.];
245
246 downtime = (hopsize/samplerate)*numarray.arange(len(pitch[i]))
247 d.append(Gnuplot.Data(downtime,pitch[i],with='lines',
248 title=('%d' % i)))
249 maxpitch = max(maxpitch,max(pitch[i][:])*1.1)
250
251 # check if ground truth exists
252 datafile = filename.replace('.wav','.txt')
253 if datafile == filename: datafile = ""
254 if not os.path.isfile(datafile):
255 title = "truth file not found"
256 t = Gnuplot.Data(0,0,with='impulses')
257 else:
258 title = "truth file plotting not implemented yet"
259 values = aubio.txtfile.read_datafile(datafile)
260 if (len(datafile[0])) > 1:
261 time, pitch = [], []
262 for i in range(len(values)):
263 time.append(values[i][0])
264 pitch.append(values[i][1])
265 d.append(Gnuplot.Data(time,pitch,with='lines',
266 title='ground truth'))
267
268 # audio data
269 time,data = audio_to_array(filename)
270 f = make_audio_plot(time,data)
271
272 g = gnuplot_init(outplot)
273 g('set title \'%s %s\'' % (re.sub('.*/','',filename),title))
274 g('set multiplot')
275 # hack to align left axis
276 g('set lmargin 15')
277 # plot waveform and onsets
278 g('set size 1,0.3')
279 g('set origin 0,0.7')
280 g('set xrange [0:%f]' % max(time))
281 g('set yrange [-1:1]')
282 g.ylabel('amplitude')
283 g.plot(f)
284 g('unset title')
285 # plot onset detection function
286 g('set size 1,0.7')
287 g('set origin 0,0')
288 g('set xrange [0:%f]' % max(time))
289 g('set yrange [40:%f]' % maxpitch)
290 g('set key right top')
291 g('set noclip one')
292 g.xlabel('time')
293 g.ylabel('frequency (Hz)')
294 g.plot(*d)
295 g('unset multiplot')
296
297def gnuplot_init(outplot,debug=0,persist=1):152def gnuplot_init(outplot,debug=0,persist=1):
298 # prepare the plot153 # prepare the plot
299 import Gnuplot154 import Gnuplot
python/aubio/tasks.py+0−123
@@ -71,129 +71,6 @@ def check_pitchm_mode(option, opt, value, parser): · 70 unmodified lines
71 print "error: unknown pitch detection output selected"71 print "error: unknown pitch detection output selected"
72 sys.exit(1)72 sys.exit(1)
73 73
74
75#def getonsets(filein,threshold=0.2,silence=-70.,bufsize=1024,hopsize=512,
76# mode='dual',localmin=False,storefunc=False,derivate=False):
77# frameread = 0
78# filei = sndfile(filein)
79# channels = filei.channels()
80# myvec = fvec(hopsize,channels)
81# readsize = filei.read(hopsize,myvec)
82# opick = onsetpick(bufsize,hopsize,channels,myvec,threshold,
83# mode=mode,derivate=derivate)
84# mylist = list()
85# if localmin:
86# ovalist = [0., 0., 0., 0., 0.]
87# ofunclist = []
88# while(readsize):
89# readsize = filei.read(hopsize,myvec)
90# isonset,val = opick.do(myvec)
91# if (aubio_silence_detection(myvec(),silence)):
92# isonset=0
93# if localmin:
94# if val > 0: ovalist.append(val)
95# else: ovalist.append(0)
96# ovalist.pop(0)
97# if storefunc:
98# ofunclist.append(val)
99# if (isonset == 1):
100# if localmin:
101# i=len(ovalist)-1
102# # find local minima before peak
103# while ovalist[i-1] < ovalist[i] and i > 0:
104# i -= 1
105# now = (frameread+1-i)
106# else:
107# now = frameread
108# if now > 0 :
109# mylist.append(now)
110# else:
111# now = 0
112# mylist.append(now)
113# frameread += 1
114# return mylist, ofunclist
115#
116#def cutfile(filein,slicetimes,zerothres=0.008,bufsize=1024,hopsize=512):
117# frameread = 0
118# readsize = hopsize
119# filei = sndfile(filein)
120# framestep = hopsize/(filei.samplerate()+0.)
121# channels = filei.channels()
122# newname = "%s%s%09.5f%s%s" % (filein.split(".")[0].split("/")[-1],".",
123# frameread*framestep,".",filein.split(".")[-1])
124# fileo = sndfile(newname,model=filei)
125# myvec = fvec(hopsize,channels)
126# mycopy = fvec(hopsize,channels)
127# while(readsize==hopsize):
128# readsize = filei.read(hopsize,myvec)
129# # write to current file
130# if len(slicetimes) and frameread >= slicetimes[0]:
131# slicetimes.pop(0)
132# # write up to 1st zero crossing
133# zerocross = 0
134# while ( abs( myvec.get(zerocross,0) ) > zerothres ):
135# zerocross += 1
136# writesize = fileo.write(zerocross,myvec)
137# fromcross = 0
138# while (zerocross < readsize):
139# for i in range(channels):
140# mycopy.set(myvec.get(zerocross,i),fromcross,i)
141# fromcross += 1
142# zerocross += 1
143# del fileo
144# fileo = sndfile("%s%s%09.5f%s%s" %
145# (filein.split(".")[0].split("/")[-1],".",
146# frameread*framestep,".",filein.split(".")[-1]),model=filei)
147# writesize = fileo.write(fromcross,mycopy)
148# else:
149# writesize = fileo.write(readsize,myvec)
150# frameread += 1
151# del fileo
152#
153#
154#def getsilences(filein,hopsize=512,silence=-70):
155# frameread = 0
156# filei = sndfile(filein)
157# srate = filei.samplerate()
158# channels = filei.channels()
159# myvec = fvec(hopsize,channels)
160# readsize = filei.read(hopsize,myvec)
161# mylist = []
162# wassilence = 0
163# while(readsize==hopsize):
164# readsize = filei.read(hopsize,myvec)
165# if (aubio_silence_detection(myvec(),silence)==1):
166# if wassilence == 0:
167# mylist.append(frameread)
168# wassilence == 1
169# else: wassilence = 0
170# frameread += 1
171# return mylist
172#
173#
174#def getpitch(filein,mode=aubio_pitch_mcomb,bufsize=1024,hopsize=512,omode=aubio_pitchm_freq,
175# samplerate=44100.,silence=-70):
176# frameread = 0
177# filei = sndfile(filein)
178# srate = filei.samplerate()
179# channels = filei.channels()
180# myvec = fvec(hopsize,channels)
181# readsize = filei.read(hopsize,myvec)
182# pitchdet = pitchdetection(mode=mode,bufsize=bufsize,hopsize=hopsize,
183# channels=channels,samplerate=srate,omode=omode)
184# mylist = []
185# while(readsize==hopsize):
186# readsize = filei.read(hopsize,myvec)
187# freq = pitchdet(myvec)
188# #print "%.3f %.2f" % (now,freq)
189# if (aubio_silence_detection(myvec(),silence)!=1):
190# mylist.append(freq)
191# else:
192# mylist.append(-1.)
193# frameread += 1
194# return mylist
195
196
197class taskparams(object):74class taskparams(object):
198 """ default parameters for task classes """75 """ default parameters for task classes """
199 def __init__(self,input=None,output=None):76 def __init__(self,input=None,output=None):

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t