ref: 23a44c142a08aeedde8c358f9e116ccaf86db4d2
dir: /python/aubioonset/
#! /usr/bin/python
import sys
import numarray
from aubio.aubioclass import *
usage = "usage: %s [options] soundfile" % sys.argv[0]
def parse_args():
from optparse import OptionParser
parser = OptionParser(usage=usage)
parser.add_option("-v","--verbose",
action="store_true", dest="verbose", default=False,
help="make lots of noise")
parser.add_option("-q","--quiet",
action="store_false", dest="verbose", default=True,
help="be quiet [default]")
parser.add_option("-t","--threshold",
action="store", dest="threshold", default=0.3,
help="onset detection threshold [default=0.3]")
parser.add_option("-s","--silence",
action="store", dest="silence", default=-70,
help="silence [default=-70]")
def check_mode(option, opt, value, parser):
nvalue = parser.rargs[0]
if nvalue == 'complexdomain' : setattr(parser.values, option.dest, complexdomain)
elif nvalue == 'hfc' : setattr(parser.values, option.dest, hfc)
elif nvalue == 'phase' : setattr(parser.values, option.dest, phase)
elif nvalue == 'specdiff' : setattr(parser.values, option.dest, specdiff)
elif nvalue == 'energy' : setattr(parser.values, option.dest, energy)
elif nvalue == 'dual' : setattr(parser.values, option.dest, 'dual')
parser.add_option("-m","--mode",
action="callback", callback=check_mode, dest="mode", default='dual',
help="onsetdetection mode [default=dual]")
parser.add_option("-o","--outplot",
action="store", dest="outplot", default=None,
help="be quiet [default=None]")
parser.add_option("-M","--mintol",
action="store", dest="mintol", default=-70,
help="mintol [default=0.48]")
(options, args) = parser.parse_args()
if not len(args):
print "no file name given\n", usage
sys.exit(1)
return options, args
options, args = parse_args()
filename = args[0]
threshold = float(options.threshold)
silence = float(options.silence)
#onsets = getonsets(filename,threshold,silence,mode=options.mode)
onsets = getonsetscausal(filename,threshold,silence,mode=options.mode)
# print all
#for i in onsets: print i*512./44100.
# prune doubled
last = -10.
mintol = float(options.mintol)
for i in onsets:
new = i*512./44100.
if (new - last > mintol): print "%f" % new
last = new