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
149149 y = numarray.array(data).resize(length)[0:-1:downsample]
150150 return Gnuplot.Data(x,y,with='lines')
151151
152−
153−def 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−
234−def 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−
297152 def gnuplot_init(outplot,debug=0,persist=1):
298153 # prepare the plot
299154 import Gnuplot
python/aubio/tasks.py+0−123
@@ -71,129 +71,6 @@ def check_pitchm_mode(option, opt, value, parser): · 70 unmodified lines
7171 print "error: unknown pitch detection output selected"
7272 sys.exit(1)
7373
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−
19774 class taskparams(object):
19875 """ default parameters for task classes """
19976 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