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 | |
---|