History

added midi and hertz output modes

Paul Brossier committed 21 years ago

Commit aa175811 parent f97445c3 files · +72 −16Browse files

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

Unified · Split

2 files
  1. python/aubio/aubioclass.py +23 −9
  2. python/aubiopitch +22 −6
python/aubio/aubioclass.py+23−9
@@ -124,21 +124,35 @@ def check_onset_mode(option, opt, value, parser): · 123 unmodified lines
124124 elif nvalue == 'dual' :
125125 setattr(parser.values, option.dest, 'dual')
126126 else:
127− print "unknown detection function selected\n", usage
127+ print "unknown onset detection function selected"
128128 sys.exit(1)
129129
130130 def check_pitch_mode(option, opt, value, parser):
131131 nvalue = parser.rargs[0]
132− if nvalue == 'mcomb' :
132+ if nvalue == 'mcomb' :
133133 setattr(parser.values, option.dest, aubio_pitch_mcomb)
134− elif nvalue == 'yin' :
134+ elif nvalue == 'yin' :
135135 setattr(parser.values, option.dest, aubio_pitch_yin)
136− elif nvalue == 'fcomb' :
136+ elif nvalue == 'fcomb' :
137137 setattr(parser.values, option.dest, aubio_pitch_fcomb)
138− elif nvalue == 'schmitt' :
138+ elif nvalue == 'schmitt':
139139 setattr(parser.values, option.dest, aubio_pitch_schmitt)
140140 else:
141− print "unknown detection function selected\n", usage
141+ print "error: unknown pitch detection function selected"
142+ sys.exit(1)
143+
144+def check_pitchm_mode(option, opt, value, parser):
145+ nvalue = parser.rargs[0]
146+ if nvalue == 'freq' :
147+ setattr(parser.values, option.dest, aubio_pitchm_freq)
148+ elif nvalue == 'midi' :
149+ setattr(parser.values, option.dest, aubio_pitchm_midi)
150+ elif nvalue == 'cent' :
151+ setattr(parser.values, option.dest, aubio_pitchm_cent)
152+ elif nvalue == 'bin' :
153+ setattr(parser.values, option.dest, aubio_pitchm_bin)
154+ else:
155+ print "error: unknown pitch detection output selected"
142156 sys.exit(1)
143157
144158
@@ -191,7 +205,7 @@ def cutfile(filein,slicetimes,zerothres=0.008,bufsize=1024,hopsize=512): · 46 unmodified lines
191205 filei = sndfile(filein)
192206 framestep = hopsize/(filei.samplerate()+0.)
193207 channels = filei.channels()
194− newname = "%s%s%f%s%s" % (filein.split(".")[0].split("/")[-1],".",
208+ newname = "%s%s%09.5f%s%s" % (filein.split(".")[0].split("/")[-1],".",
195209 frameread*framestep,".",filein.split(".")[-1])
196210 fileo = sndfile(newname,model=filei)
197211 myvec = fvec(hopsize,channels)
@@ -213,7 +227,7 @@ def cutfile(filein,slicetimes,zerothres=0.008,bufsize=1024,hopsize=512): · 15 unmodified lines
213227 fromcross += 1
214228 zerocross += 1
215229 del fileo
216− fileo = sndfile("%s%s%f%s%s" %
230+ fileo = sndfile("%s%s%09.5f%s%s" %
217231 (filein.split(".")[0].split("/")[-1],".",
218232 frameread*framestep,".",filein.split(".")[-1]),model=filei)
219233 writesize = fileo.write(fromcross,mycopy)
@@ -260,7 +274,7 @@ def getpitch(filein,mode=aubio_pitch_mcomb,bufsize=1024,hopsize=512,omode=aubio_ · 40 unmodified lines
260274 if (aubio_silence_detection(myvec(),silence)!=1):
261275 mylist.append(freq)
262276 else:
263− mylist.append(0)
277+ mylist.append(-1.)
264278 frameread += 1
265279 return mylist
266280
python/aubiopitch+22−6
@@ -22,11 +22,16 @@ def parse_args(): · 21 unmodified lines
2222 default=aubio_pitch_mcomb,
2323 help="pitch detection mode [default=mcomb] \
2424 mcomb|yin|fcomb|schmitt")
25+ parser.add_option("-u","--units", action="callback",
26+ callback=check_pitchm_mode, dest="omode",
27+ default=aubio_pitchm_freq,
28+ help="output pitch in units [default=Hz] \
29+ freq|midi|cent|bin")
2530 parser.add_option("-B","--bufsize",
26− action="store", dest="bufsize", default=1024,
31+ action="store", dest="bufsize", default=None,
2732 help="buffer size [default=1024]")
2833 parser.add_option("-H","--hopsize",
29− action="store", dest="hopsize", default=512,
34+ action="store", dest="hopsize", default=None,
3035 help="overlap size [default=512]")
3136 parser.add_option("-t","--threshold",
3237 action="store", dest="threshold", default=0.1,
@@ -63,13 +68,22 @@ def parse_args(): · 30 unmodified lines
6368 action="store_false", dest="verbose", default=False,
6469 help="be quiet")
6570 (options, args) = parser.parse_args()
71+ if not options.bufsize:
72+ if options.mode == aubio_pitch_yin: options.bufsize = 1024
73+ if options.mode == aubio_pitch_schmitt: options.bufsize = 2048
74+ if options.mode == aubio_pitch_mcomb: options.bufsize = 4096
75+ if options.mode == aubio_pitch_fcomb: options.bufsize = 4096
76+ if not options.hopsize:
77+ options.hopsize = float(options.bufsize) / 2
6678 if not options.filename:
67− print "no file name given\n", usage
68− sys.exit(1)
79+ print "no file name given\n", usage
80+ sys.exit(1)
6981 return options, args
7082
7183 options, args = parse_args()
7284
85+#print options.bufsize, options.hopsize
86+
7387 filename = options.filename
7488 samplerate = float(sndfile(filename).samplerate())
7589 hopsize = int(options.hopsize)
@@ -85,9 +99,11 @@ else: delay = 2./step · 9 unmodified lines
8599 if options.note:
86100 exit("not implemented yet")
87101 else:
88− pitch = getpitch(filename, #threshold,silence,
102+ pitch = getpitch(filename, #threshold,
89103 mode=options.mode,
90− bufsize=bufsize,hopsize=hopsize)
104+ omode=options.omode,
105+ bufsize=bufsize,hopsize=hopsize,
106+ silence=silence)
91107
92108 ## take back system delay
93109 #if delay != 0:

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