Changeset 568fc60 for python/lib/aubio/cmd.py
- Timestamp:
- Nov 5, 2018, 3:43:02 PM (6 years ago)
- Branches:
- feature/autosink, feature/cnn, feature/cnn_org, feature/constantq, feature/crepe, feature/crepe_org, feature/pitchshift, feature/timestretch, fix/ffmpeg5, master
- Children:
- 893e699
- Parents:
- a9e3bd0 (diff), bc1ed63 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
python/lib/aubio/cmd.py
ra9e3bd0 r568fc60 12 12 import sys 13 13 import argparse 14 import warnings 14 15 import aubio 15 16 … … 169 170 170 171 def add_verbose_help(self): 171 self.add_argument("-v", "--verbose",172 self.add_argument("-v", "--verbose", 172 173 action="count", dest="verbose", default=1, 173 174 help="make lots of noise [default]") 174 self.add_argument("-q", "--quiet",175 self.add_argument("-q", "--quiet", 175 176 action="store_const", dest="verbose", const=0, 176 177 help="be quiet") … … 181 182 182 183 def add_buf_size(self, buf_size=512): 183 self.add_argument("-B", "--bufsize",184 self.add_argument("-B", "--bufsize", 184 185 action="store", dest="buf_size", default=buf_size, 185 186 metavar = "<size>", type=int, … … 187 188 188 189 def add_hop_size(self, hop_size=256): 189 self.add_argument("-H", "--hopsize",190 self.add_argument("-H", "--hopsize", 190 191 metavar = "<size>", type=int, 191 192 action="store", dest="hop_size", default=hop_size, … … 193 194 194 195 def add_method(self, method='default', helpstr='method'): 195 self.add_argument("-m", "--method",196 self.add_argument("-m", "--method", 196 197 metavar = "<method>", type=str, 197 198 action="store", dest="method", default=method, … … 199 200 200 201 def add_threshold(self, default=None): 201 self.add_argument("-t", "--threshold",202 self.add_argument("-t", "--threshold", 202 203 metavar = "<threshold>", type=float, 203 204 action="store", dest="threshold", default=default, … … 240 241 241 242 def add_slicer_options(self): 242 self.add_argument("-o", "--output", type = str,243 self.add_argument("-o", "--output", type = str, 243 244 metavar = "<outputdir>", 244 245 action="store", dest="output_directory", default=None, 245 help="specify path where slices of the original file should be created") 246 help="specify path where slices of the original file should" 247 " be created") 246 248 self.add_argument("--cut-until-nsamples", type = int, 247 249 metavar = "<samples>", 248 250 action = "store", dest = "cut_until_nsamples", default = None, 249 help="how many extra samples should be added at the end of each slice") 251 help="how many extra samples should be added at the end of" 252 " each slice") 250 253 self.add_argument("--cut-every-nslices", type = int, 251 254 metavar = "<samples>", … … 255 258 metavar = "<slices>", 256 259 action = "store", dest = "cut_until_nslices", default = None, 257 help="how many extra slices should be added at the end of each slice") 260 help="how many extra slices should be added at the end of" 261 " each slice") 258 262 self.add_argument("--create-first", 259 263 action = "store_true", dest = "create_first", default = False, … … 289 293 if args.verbose > 2 and hasattr(self, 'options'): 290 294 name = type(self).__name__.split('_')[1] 291 optstr = ' '.join(['running', name, 'with options', repr(self.options), '\n']) 295 optstr = ' '.join(['running', name, 'with options', 296 repr(self.options), '\n']) 292 297 sys.stderr.write(optstr) 293 298 def flush(self, frames_read, samplerate): … … 297 302 def parse_options(self, args, valid_opts): 298 303 # get any valid options found in a dictionnary of arguments 299 options = {k :v for k,v in vars(args).items() if k in valid_opts}304 options = {k: v for k, v in vars(args).items() if k in valid_opts} 300 305 self.options = options 301 306 … … 378 383 outstr = "unknown bpm" 379 384 else: 380 bpms = 60. / np.diff(self.beat_locations)385 bpms = 60. / np.diff(self.beat_locations) 381 386 median_bpm = np.mean(bpms) 382 387 if len(self.beat_locations) < 10: … … 399 404 return self.notes(block) 400 405 def repr_res(self, res, frames_read, samplerate): 401 if res[2] != 0: # note off406 if res[2] != 0: # note off 402 407 fmt_out = self.time2string(frames_read, samplerate) 403 408 sys.stdout.write(fmt_out + '\n') 404 if res[0] != 0: # note on409 if res[0] != 0: # note on 405 410 lastmidi = res[0] 406 411 fmt_out = "%f\t" % lastmidi 407 412 fmt_out += self.time2string(frames_read, samplerate) 408 sys.stdout.write(fmt_out) # + '\t')413 sys.stdout.write(fmt_out) # + '\t') 409 414 def flush(self, frames_read, samplerate): 410 415 eof = self.time2string(frames_read, samplerate) … … 473 478 if self.wassilence != 1: 474 479 self.wassilence = 1 475 return 2 # newly found silence476 return 1 # silence again480 return 2 # newly found silence 481 return 1 # silence again 477 482 else: 478 483 if self.wassilence != 0: 479 484 self.wassilence = 0 480 return -1 # newly found noise481 return 0 # noise again485 return -1 # newly found noise 486 return 0 # noise again 482 487 483 488 def repr_res(self, res, frames_read, samplerate): … … 499 504 def __call__(self, block): 500 505 ret = super(process_cut, self).__call__(block) 501 if ret: self.slices.append(self.onset.get_last()) 506 if ret: 507 self.slices.append(self.onset.get_last()) 502 508 return ret 503 509 504 510 def flush(self, frames_read, samplerate): 505 from aubio.cut import _cut_slice506 511 _cut_slice(self.options, self.slices) 507 duration = float (frames_read) / float(samplerate) 508 base_info = '%(source_file)s' % {'source_file': self.options.source_uri} 512 duration = float(frames_read) / float(samplerate) 513 base_info = '%(source_file)s' % \ 514 {'source_file': self.options.source_uri} 509 515 base_info += ' (total %(duration).2fs at %(samplerate)dHz)\n' % \ 510 {'duration': duration, 'samplerate': samplerate}516 {'duration': duration, 'samplerate': samplerate} 511 517 info = "created %d slices from " % len(self.slices) 512 518 info += base_info 513 519 sys.stderr.write(info) 520 521 def _cut_slice(options, timestamps): 522 # cutting pass 523 nstamps = len(timestamps) 524 if nstamps > 0: 525 # generate output files 526 timestamps_end = None 527 if options.cut_every_nslices: 528 timestamps = timestamps[::options.cut_every_nslices] 529 nstamps = len(timestamps) 530 if options.cut_until_nslices and options.cut_until_nsamples: 531 msg = "using cut_until_nslices, but cut_until_nsamples is set" 532 warnings.warn(msg) 533 if options.cut_until_nsamples: 534 lag = options.cut_until_nsamples 535 timestamps_end = [t + lag for t in timestamps[1:]] 536 timestamps_end += [1e120] 537 if options.cut_until_nslices: 538 slice_lag = options.cut_until_nslices 539 timestamps_end = [t for t in timestamps[1 + slice_lag:]] 540 timestamps_end += [1e120] * (options.cut_until_nslices + 1) 541 aubio.slice_source_at_stamps(options.source_uri, 542 timestamps, timestamps_end = timestamps_end, 543 output_dir = options.output_directory, 544 samplerate = options.samplerate, 545 create_first = options.create_first) 514 546 515 547 def main(): … … 526 558 action="store_true", dest="show_version") 527 559 args, extras = parser_root.parse_known_args() 528 if args.show_version == False:# no -V, forward to parser560 if not args.show_version: # no -V, forward to parser 529 561 args = parser.parse_args(extras, namespace=args) 530 elif len(extras) != 0: # -V with other arguments, print help562 elif len(extras) != 0: # -V with other arguments, print help 531 563 parser.print_help() 532 564 sys.exit(1) 533 else: # in py3, we can simply use parser directly565 else: # in py3, we can simply use parser directly 534 566 args = parser.parse_args() 535 567 if 'show_version' in args and args.show_version: … … 538 570 elif 'verbose' in args and args.verbose > 3: 539 571 sys.stderr.write('aubio version ' + aubio.version + '\n') 540 if 'command' not in args or args.command is None or args.command in ['help']: 572 if 'command' not in args or args.command is None \ 573 or args.command in ['help']: 541 574 # no command given, print help and return 1 542 575 parser.print_help() … … 572 605 frames_read += read 573 606 # exit loop at end of file 574 if read < a_source.hop_size: break 607 if read < a_source.hop_size: 608 break 575 609 # flush the processor if needed 576 610 processor.flush(frames_read, a_source.samplerate) … … 580 614 fmt_string += " from {:s} at {:d}Hz\n" 581 615 sys.stderr.write(fmt_string.format( 582 frames_read /float(a_source.samplerate),616 frames_read / float(a_source.samplerate), 583 617 frames_read, 584 618 frames_read // a_source.hop_size + 1,
Note: See TracChangeset
for help on using the changeset viewer.