source: python/aubiofilter-notes @ e7a7794

feature/autosinkfeature/constantqfeature/pitchshiftfeature/pydocstringsfeature/timestretchpitchshiftsamplertimestretchyinfft+
Last change on this file since e7a7794 was e7a7794, checked in by Paul Brossier <piem@piem.org>, 11 years ago

python: finish getting rid of numarray

  • Property mode set to 100755
File size: 3.4 KB
Line 
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
11import getopt
12import sys
13
14def 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
45def usage():
46        print __file__, "with at least some arguments"
47
48def 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 numpy 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       
92if __name__ == "__main__":
93        main()
94
Note: See TracBrowser for help on using the repository browser.