History

python/lib/aubio/cmd.py: use custom parser class

Paul Brossier committed 9 years ago

Commit c95062b1 parent b02d52f1 file · +118 −115Browse files

Showing the changes to python (1 of 1 file). Show all

Unified · Split

python/lib/aubio/cmd.py+118−115
@@ -20,6 +20,7 @@ def aubio_parser(): · 19 unmodified lines
20 action="store_true", dest="show_version")20 action="store_true", dest="show_version")
21 21
22 subparsers = parser.add_subparsers(title='commands', dest='command',22 subparsers = parser.add_subparsers(title='commands', dest='command',
23 parser_class= AubioArgumentParser,
23 metavar="")24 metavar="")
24 25
25 parser_add_subcommand_help(subparsers)26 parser_add_subcommand_help(subparsers)
@@ -46,168 +47,170 @@ def parser_add_subcommand_onset(subparsers): · 20 unmodified lines
46 subparser = subparsers.add_parser('onset',47 subparser = subparsers.add_parser('onset',
47 help='estimate time of onsets (beginning of sound event)',48 help='estimate time of onsets (beginning of sound event)',
48 formatter_class = argparse.ArgumentDefaultsHelpFormatter)49 formatter_class = argparse.ArgumentDefaultsHelpFormatter)
49 parser_add_input(subparser)50 subparser.add_input()
50 parser_add_buf_hop_size(subparser)51 subparser.add_buf_hop_size()
51 helpstr = "onset novelty function"52 helpstr = "onset novelty function"
52 helpstr += " <default|energy|hfc|complex|phase|specdiff|kl|mkl|specflux>"53 helpstr += " <default|energy|hfc|complex|phase|specdiff|kl|mkl|specflux>"
53 parser_add_method(subparser, helpstr=helpstr)54 subparser.add_method(helpstr=helpstr)
54 parser_add_threshold(subparser)55 subparser.add_threshold()
55 parser_add_silence(subparser)56 subparser.add_silence()
56 parser_add_minioi(subparser)57 subparser.add_minioi()
57 parser_add_time_format(subparser)58 subparser.add_time_format()
58 parser_add_verbose_help(subparser)59 subparser.add_verbose_help()
59 subparser.set_defaults(process=process_onset)60 subparser.set_defaults(process=process_onset)
60 61
61def parser_add_subcommand_pitch(subparsers):62def parser_add_subcommand_pitch(subparsers):
62 # pitch subcommand63 # pitch subcommand
63 subparser = subparsers.add_parser('pitch',64 subparser = subparsers.add_parser('pitch',
64 help='estimate fundamental frequency (monophonic)')65 help='estimate fundamental frequency (monophonic)')
65 parser_add_input(subparser)66 subparser.add_input()
66 parser_add_buf_hop_size(subparser, buf_size=2048)67 subparser.add_buf_hop_size(buf_size=2048)
67 helpstr = "pitch detection method <default|yinfft|yin|mcomb|fcomb|schmitt>"68 helpstr = "pitch detection method <default|yinfft|yin|mcomb|fcomb|schmitt>"
68 parser_add_method(subparser, helpstr=helpstr)69 subparser.add_method(helpstr=helpstr)
69 parser_add_threshold(subparser)70 subparser.add_threshold()
70 parser_add_pitch_unit(subparser)71 subparser.add_pitch_unit()
71 parser_add_silence(subparser)72 subparser.add_silence()
72 parser_add_time_format(subparser)73 subparser.add_time_format()
73 parser_add_verbose_help(subparser)74 subparser.add_verbose_help()
74 subparser.set_defaults(process=process_pitch)75 subparser.set_defaults(process=process_pitch)
75 76
76def parser_add_subcommand_beat(subparsers):77def parser_add_subcommand_beat(subparsers):
77 # beat subcommand78 # beat subcommand
78 subparser = subparsers.add_parser('beat',79 subparser = subparsers.add_parser('beat',
79 help='estimate location of beats')80 help='estimate location of beats')
80 parser_add_input(subparser)81 subparser.add_input()
81 parser_add_buf_hop_size(subparser, buf_size=1024, hop_size=512)82 subparser.add_buf_hop_size(buf_size=1024, hop_size=512)
82 parser_add_time_format(subparser)83 subparser.add_time_format()
83 parser_add_verbose_help(subparser)84 subparser.add_verbose_help()
84 subparser.set_defaults(process=process_beat)85 subparser.set_defaults(process=process_beat)
85 86
86def parser_add_subcommand_tempo(subparsers):87def parser_add_subcommand_tempo(subparsers):
87 # tempo subcommand88 # tempo subcommand
88 subparser = subparsers.add_parser('tempo',89 subparser = subparsers.add_parser('tempo',
89 help='estimate overall tempo in bpm')90 help='estimate overall tempo in bpm')
90 parser_add_input(subparser)91 subparser.add_input()
91 parser_add_buf_hop_size(subparser, buf_size=1024, hop_size=512)92 subparser.add_buf_hop_size(buf_size=1024, hop_size=512)
92 parser_add_time_format(subparser)93 subparser.add_time_format()
93 parser_add_verbose_help(subparser)94 subparser.add_verbose_help()
94 subparser.set_defaults(process=process_tempo)95 subparser.set_defaults(process=process_tempo)
95 96
96def parser_add_subcommand_notes(subparsers):97def parser_add_subcommand_notes(subparsers):
97 # notes subcommand98 # notes subcommand
98 subparser = subparsers.add_parser('notes',99 subparser = subparsers.add_parser('notes',
99 help='estimate midi-like notes (monophonic)')100 help='estimate midi-like notes (monophonic)')
100 parser_add_input(subparser)101 subparser.add_input()
101 parser_add_buf_hop_size(subparser)102 subparser.add_buf_hop_size()
102 parser_add_time_format(subparser)103 subparser.add_time_format()
103 parser_add_verbose_help(subparser)104 subparser.add_verbose_help()
104 subparser.set_defaults(process=process_notes)105 subparser.set_defaults(process=process_notes)
105 106
106def parser_add_subcommand_mfcc(subparsers):107def parser_add_subcommand_mfcc(subparsers):
107 # mfcc subcommand108 # mfcc subcommand
108 subparser = subparsers.add_parser('mfcc',109 subparser = subparsers.add_parser('mfcc',
109 help='extract Mel-Frequency Cepstrum Coefficients')110 help='extract Mel-Frequency Cepstrum Coefficients')
110 parser_add_input(subparser)111 subparser.add_input()
111 parser_add_buf_hop_size(subparser)112 subparser.add_buf_hop_size()
112 parser_add_time_format(subparser)113 subparser.add_time_format()
113 parser_add_verbose_help(subparser)114 subparser.add_verbose_help()
114 subparser.set_defaults(process=process_mfcc)115 subparser.set_defaults(process=process_mfcc)
115 116
116def parser_add_subcommand_melbands(subparsers):117def parser_add_subcommand_melbands(subparsers):
117 # melbands subcommand118 # melbands subcommand
118 subparser = subparsers.add_parser('melbands',119 subparser = subparsers.add_parser('melbands',
119 help='extract energies in Mel-frequency bands')120 help='extract energies in Mel-frequency bands')
120 parser_add_input(subparser)121 subparser.add_input()
121 parser_add_buf_hop_size(subparser)122 subparser.add_buf_hop_size()
122 parser_add_time_format(subparser)123 subparser.add_time_format()
123 parser_add_verbose_help(subparser)124 subparser.add_verbose_help()
124 subparser.set_defaults(process=process_melbands)125 subparser.set_defaults(process=process_melbands)
125 126
126def parser_add_subcommand_quiet(subparsers):127def parser_add_subcommand_quiet(subparsers):
127 # quiet subcommand128 # quiet subcommand
128 subparser = subparsers.add_parser('quiet',129 subparser = subparsers.add_parser('quiet',
129 help='extract timestamps of quiet and loud regions')130 help='extract timestamps of quiet and loud regions')
130 parser_add_input(subparser)131 subparser.add_input()
131 parser_add_hop_size(subparser)132 subparser.add_hop_size()
132 parser_add_silence(subparser)133 subparser.add_silence()
133 parser_add_time_format(subparser)134 subparser.add_time_format()
134 parser_add_verbose_help(subparser)135 subparser.add_verbose_help()
135 subparser.set_defaults(process=process_quiet)136 subparser.set_defaults(process=process_quiet)
136 137
137def parser_add_input(parser):138class AubioArgumentParser(argparse.ArgumentParser):
138 parser.add_argument("source_uri", default=None, nargs='?',139
139 help="input sound file to analyse", metavar = "<source_uri>")140 def add_input(self):
140 parser.add_argument("-i", "--input", dest = "source_uri2",141 self.add_argument("source_uri", default=None, nargs='?',
141 help="input sound file to analyse", metavar = "<source_uri>")142 help="input sound file to analyse", metavar = "<source_uri>")
142 parser.add_argument("-r", "--samplerate",143 self.add_argument("-i", "--input", dest = "source_uri2",
143 metavar = "<freq>", type=int,144 help="input sound file to analyse", metavar = "<source_uri>")
144 action="store", dest="samplerate", default=0,145 self.add_argument("-r", "--samplerate",
145 help="samplerate at which the file should be represented")146 metavar = "<freq>", type=int,
146 147 action="store", dest="samplerate", default=0,
147def parser_add_verbose_help(parser):148 help="samplerate at which the file should be represented")
148 parser.add_argument("-v","--verbose",149
149 action="count", dest="verbose", default=1,150 def add_verbose_help(self):
150 help="make lots of noise [default]")151 self.add_argument("-v","--verbose",
151 parser.add_argument("-q","--quiet",152 action="count", dest="verbose", default=1,
152 action="store_const", dest="verbose", const=0,153 help="make lots of noise [default]")
153 help="be quiet")154 self.add_argument("-q","--quiet",
154 155 action="store_const", dest="verbose", const=0,
155def parser_add_buf_hop_size(parser, buf_size=512, hop_size=256):156 help="be quiet")
156 parser_add_buf_size(parser, buf_size=buf_size)157
157 parser_add_hop_size(parser, hop_size=hop_size)158 def add_buf_hop_size(self, buf_size=512, hop_size=256):
158 159 self.add_buf_size(buf_size=buf_size)
159def parser_add_buf_size(parser, buf_size=512):160 self.add_hop_size(hop_size=hop_size)
160 parser.add_argument("-B","--bufsize",161
161 action="store", dest="buf_size", default=buf_size,162 def add_buf_size(self, buf_size=512):
162 metavar = "<size>", type=int,163 self.add_argument("-B","--bufsize",
163 help="buffer size [default=%d]" % buf_size)164 action="store", dest="buf_size", default=buf_size,
164 165 metavar = "<size>", type=int,
165def parser_add_hop_size(parser, hop_size=256):166 help="buffer size [default=%d]" % buf_size)
166 parser.add_argument("-H","--hopsize",167
167 metavar = "<size>", type=int,168 def add_hop_size(self, hop_size=256):
168 action="store", dest="hop_size", default=hop_size,169 self.add_argument("-H","--hopsize",
169 help="overlap size [default=%d]" % hop_size)170 metavar = "<size>", type=int,
170 171 action="store", dest="hop_size", default=hop_size,
171def parser_add_method(parser, method='default', helpstr='method'):172 help="overlap size [default=%d]" % hop_size)
172 parser.add_argument("-m","--method",173
173 metavar = "<method>", type=str,174 def add_method(self, method='default', helpstr='method'):
174 action="store", dest="method", default=method,175 self.add_argument("-m","--method",
175 help="%s [default=%s]" % (helpstr, method))176 metavar = "<method>", type=str,
176 177 action="store", dest="method", default=method,
177def parser_add_threshold(parser, default=None):178 help="%s [default=%s]" % (helpstr, method))
178 parser.add_argument("-t","--threshold",179
179 metavar = "<threshold>", type=float,180 def add_threshold(self, default=None):
180 action="store", dest="threshold", default=default,181 self.add_argument("-t","--threshold",
181 help="threshold [default=%s]" % default)182 metavar = "<threshold>", type=float,
182 183 action="store", dest="threshold", default=default,
183def parser_add_silence(parser):184 help="threshold [default=%s]" % default)
184 parser.add_argument("-s", "--silence",185
185 metavar = "<value>", type=float,186 def add_silence(self):
186 action="store", dest="silence", default=-70,187 self.add_argument("-s", "--silence",
187 help="silence threshold")188 metavar = "<value>", type=float,
188 189 action="store", dest="silence", default=-70,
189def parser_add_minioi(parser):190 help="silence threshold")
190 parser.add_argument("-M", "--minioi",191
191 metavar = "<value>", type=str,192 def add_minioi(self, default="12ms"):
192 action="store", dest="minioi", default="12ms",193 self.add_argument("-M", "--minioi",
193 help="minimum Inter-Onset Interval")194 metavar = "<value>", type=str,
194 195 action="store", dest="minioi", default=default,
195def parser_add_pitch_unit(parser, default="Hz"):196 help="minimum Inter-Onset Interval [default=%s]" % default)
196 help_str = "frequency unit, should be one of Hz, midi, bin, cent"197
197 help_str += " [default=%s]" % default198 def add_pitch_unit(self, default="Hz"):
198 parser.add_argument("-u", "--pitch-unit",199 help_str = "frequency unit, should be one of Hz, midi, bin, cent"
199 metavar = "<value>", type=str,200 help_str += " [default=%s]" % default
200 action="store", dest="pitch_unit", default=default,201 self.add_argument("-u", "--pitch-unit",
201 help=help_str)202 metavar = "<value>", type=str,
202 203 action="store", dest="pitch_unit", default=default,
203def parser_add_time_format(parser):204 help=help_str)
204 helpstr = "select time values output format (samples, ms, seconds)"205
205 helpstr += " [default=seconds]"206 def add_time_format(self):
206 parser.add_argument("-T", "--time-format",207 helpstr = "select time values output format (samples, ms, seconds)"
207 metavar='format',208 helpstr += " [default=seconds]"
208 dest="time_format",209 self.add_argument("-T", "--time-format",
209 default=None,210 metavar='format',
210 help=helpstr)211 dest="time_format",
212 default=None,
213 help=helpstr)
211 214
212# some utilities215# some utilities
213 216

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t