[96fb8ad] | 1 | #!/usr/bin/python |
---|
| 2 | |
---|
| 3 | """ this file is used to get filter the (old) output format of aubionotes """ |
---|
| 4 | |
---|
| 5 | # default parameters |
---|
| 6 | __eps = [0.250,0.50] # minimum length, pitch tolerance (ms,midipitch) |
---|
| 7 | __plot = 0 # -P (command line switch) |
---|
| 8 | __delay = 0.0 # -D <value> (fixed delay for score alignement) |
---|
| 9 | __winlength = 10 # -w <value> (window length for pitch estimation in frames) |
---|
| 10 | |
---|
| 11 | import getopt |
---|
| 12 | import sys |
---|
| 13 | |
---|
| 14 | def parse_args (sysargs): |
---|
| 15 | from getopt import gnu_getopt |
---|
| 16 | shortopts ='i:o:t:p:w:D:P:' |
---|
| 17 | longopts =('input=','output=','tolpitch=','toltime=','winlength=','delay','plot=') |
---|
| 18 | args,tmp = gnu_getopt(sysargs,shortopts,longopts) |
---|
| 19 | assert len(args) > 1 |
---|
| 20 | plot = __plot |
---|
| 21 | delay = __delay |
---|
| 22 | eps = __eps |
---|
| 23 | winlength = __winlength |
---|
| 24 | plot = __plot |
---|
| 25 | fileout = '/tmp/testprint.ps' |
---|
| 26 | args.sort() |
---|
| 27 | for i in range(len(args)): # a bad way |
---|
| 28 | if args[i][0] == '-i' or args[i][0] == '--input': |
---|
| 29 | fileorg = args[i][1] |
---|
| 30 | if args[i][0] == '-o' or args[i][0] == '--output': |
---|
| 31 | fileerr = args[i][1] |
---|
| 32 | if args[i][0] == '-t' or args[i][0] == '--toltime': |
---|
| 33 | eps[0] = float(args[i][1]) |
---|
| 34 | if args[i][0] == '-p' or args[i][0] == '--tolpitch': |
---|
| 35 | eps[1] = float(args[i][1]) |
---|
| 36 | if args[i][0] == '-D' or args[i][0] == '--delay': |
---|
| 37 | delay = float(args[i][1]) |
---|
| 38 | if args[i][0] == '-w' or args[i][0] == '--winlength': |
---|
| 39 | winlength = int(args[i][1]) |
---|
| 40 | if args[i][0] == '-P' or args[i][0] == '--plot': |
---|
| 41 | plot = 1 |
---|
| 42 | fileout = args[i][1] |
---|
| 43 | return fileorg,fileerr,eps,winlength,plot,delay,fileout |
---|
| 44 | |
---|
| 45 | def usage(): |
---|
| 46 | print __file__, "with at least some arguments" |
---|
| 47 | |
---|
| 48 | def main(): |
---|
| 49 | try: |
---|
| 50 | opts,args = getopt.getopt(sys.argv[1:], |
---|
| 51 | "hvo:i:p:P", |
---|
| 52 | ["help", "output=", "verbose", "input=", "plot="]) |
---|
| 53 | except getopt.GetoptError: |
---|
| 54 | usage() |
---|
| 55 | sys.exit(2) |
---|
| 56 | |
---|
| 57 | input = None |
---|
| 58 | output = None |
---|
| 59 | verbose = False |
---|
| 60 | winlength = __winlength |
---|
| 61 | plot = __plot |
---|
| 62 | eps = __eps |
---|
| 63 | |
---|
| 64 | for o, a in opts: |
---|
| 65 | if o in ("-v", "--verbose"): |
---|
| 66 | verbose = True |
---|
| 67 | if o in ("-h", "--help"): |
---|
| 68 | usage() |
---|
| 69 | sys.exit(2) |
---|
| 70 | if o in ("--output"): |
---|
| 71 | output = a |
---|
| 72 | if o in ("-i", "--input"): |
---|
| 73 | input = a |
---|
| 74 | if o in ("-P", "--plot"): |
---|
| 75 | plot = 1 |
---|
| 76 | |
---|
| 77 | assert input != None and input != "", "no input file" |
---|
| 78 | |
---|
| 79 | from aubio import notefilter,txtfile,gnuplot |
---|
| 80 | """ load midi and raw data """ |
---|
| 81 | from numarray import array |
---|
| 82 | notelist = array(txtfile.read_datafile(input)) |
---|
| 83 | """ filter it out """ |
---|
| 84 | notelist_filtered = notefilter.segraw_onsets4(notelist,winlength,eps) |
---|
| 85 | if verbose == 1 : |
---|
| 86 | for a,b in notelist_filtered: |
---|
| 87 | print a,b |
---|
| 88 | """ plot results """ |
---|
| 89 | if plot == 1 : |
---|
| 90 | gnuplot.plotnote(notelist_filtered,title=input,fileout=output) |
---|
| 91 | |
---|
| 92 | if __name__ == "__main__": |
---|
| 93 | main() |
---|
| 94 | |
---|