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
2020 action="store_true", dest="show_version")
2121
2222 subparsers = parser.add_subparsers(title='commands', dest='command',
23+ parser_class= AubioArgumentParser,
2324 metavar="")
2425
2526 parser_add_subcommand_help(subparsers)
@@ -46,168 +47,170 @@ def parser_add_subcommand_onset(subparsers): · 20 unmodified lines
4647 subparser = subparsers.add_parser('onset',
4748 help='estimate time of onsets (beginning of sound event)',
4849 formatter_class = argparse.ArgumentDefaultsHelpFormatter)
49− parser_add_input(subparser)
50− parser_add_buf_hop_size(subparser)
50+ subparser.add_input()
51+ subparser.add_buf_hop_size()
5152 helpstr = "onset novelty function"
5253 helpstr += " <default|energy|hfc|complex|phase|specdiff|kl|mkl|specflux>"
53− parser_add_method(subparser, helpstr=helpstr)
54− parser_add_threshold(subparser)
55− parser_add_silence(subparser)
56− parser_add_minioi(subparser)
57− parser_add_time_format(subparser)
58− parser_add_verbose_help(subparser)
54+ subparser.add_method(helpstr=helpstr)
55+ subparser.add_threshold()
56+ subparser.add_silence()
57+ subparser.add_minioi()
58+ subparser.add_time_format()
59+ subparser.add_verbose_help()
5960 subparser.set_defaults(process=process_onset)
6061
6162 def parser_add_subcommand_pitch(subparsers):
6263 # pitch subcommand
6364 subparser = subparsers.add_parser('pitch',
6465 help='estimate fundamental frequency (monophonic)')
65− parser_add_input(subparser)
66− parser_add_buf_hop_size(subparser, buf_size=2048)
66+ subparser.add_input()
67+ subparser.add_buf_hop_size(buf_size=2048)
6768 helpstr = "pitch detection method <default|yinfft|yin|mcomb|fcomb|schmitt>"
68− parser_add_method(subparser, helpstr=helpstr)
69− parser_add_threshold(subparser)
70− parser_add_pitch_unit(subparser)
71− parser_add_silence(subparser)
72− parser_add_time_format(subparser)
73− parser_add_verbose_help(subparser)
69+ subparser.add_method(helpstr=helpstr)
70+ subparser.add_threshold()
71+ subparser.add_pitch_unit()
72+ subparser.add_silence()
73+ subparser.add_time_format()
74+ subparser.add_verbose_help()
7475 subparser.set_defaults(process=process_pitch)
7576
7677 def parser_add_subcommand_beat(subparsers):
7778 # beat subcommand
7879 subparser = subparsers.add_parser('beat',
7980 help='estimate location of beats')
80− parser_add_input(subparser)
81− parser_add_buf_hop_size(subparser, buf_size=1024, hop_size=512)
82− parser_add_time_format(subparser)
83− parser_add_verbose_help(subparser)
81+ subparser.add_input()
82+ subparser.add_buf_hop_size(buf_size=1024, hop_size=512)
83+ subparser.add_time_format()
84+ subparser.add_verbose_help()
8485 subparser.set_defaults(process=process_beat)
8586
8687 def parser_add_subcommand_tempo(subparsers):
8788 # tempo subcommand
8889 subparser = subparsers.add_parser('tempo',
8990 help='estimate overall tempo in bpm')
90− parser_add_input(subparser)
91− parser_add_buf_hop_size(subparser, buf_size=1024, hop_size=512)
92− parser_add_time_format(subparser)
93− parser_add_verbose_help(subparser)
91+ subparser.add_input()
92+ subparser.add_buf_hop_size(buf_size=1024, hop_size=512)
93+ subparser.add_time_format()
94+ subparser.add_verbose_help()
9495 subparser.set_defaults(process=process_tempo)
9596
9697 def parser_add_subcommand_notes(subparsers):
9798 # notes subcommand
9899 subparser = subparsers.add_parser('notes',
99100 help='estimate midi-like notes (monophonic)')
100− parser_add_input(subparser)
101− parser_add_buf_hop_size(subparser)
102− parser_add_time_format(subparser)
103− parser_add_verbose_help(subparser)
101+ subparser.add_input()
102+ subparser.add_buf_hop_size()
103+ subparser.add_time_format()
104+ subparser.add_verbose_help()
104105 subparser.set_defaults(process=process_notes)
105106
106107 def parser_add_subcommand_mfcc(subparsers):
107108 # mfcc subcommand
108109 subparser = subparsers.add_parser('mfcc',
109110 help='extract Mel-Frequency Cepstrum Coefficients')
110− parser_add_input(subparser)
111− parser_add_buf_hop_size(subparser)
112− parser_add_time_format(subparser)
113− parser_add_verbose_help(subparser)
111+ subparser.add_input()
112+ subparser.add_buf_hop_size()
113+ subparser.add_time_format()
114+ subparser.add_verbose_help()
114115 subparser.set_defaults(process=process_mfcc)
115116
116117 def parser_add_subcommand_melbands(subparsers):
117118 # melbands subcommand
118119 subparser = subparsers.add_parser('melbands',
119120 help='extract energies in Mel-frequency bands')
120− parser_add_input(subparser)
121− parser_add_buf_hop_size(subparser)
122− parser_add_time_format(subparser)
123− parser_add_verbose_help(subparser)
121+ subparser.add_input()
122+ subparser.add_buf_hop_size()
123+ subparser.add_time_format()
124+ subparser.add_verbose_help()
124125 subparser.set_defaults(process=process_melbands)
125126
126127 def parser_add_subcommand_quiet(subparsers):
127128 # quiet subcommand
128129 subparser = subparsers.add_parser('quiet',
129130 help='extract timestamps of quiet and loud regions')
130− parser_add_input(subparser)
131− parser_add_hop_size(subparser)
132− parser_add_silence(subparser)
133− parser_add_time_format(subparser)
134− parser_add_verbose_help(subparser)
131+ subparser.add_input()
132+ subparser.add_hop_size()
133+ subparser.add_silence()
134+ subparser.add_time_format()
135+ subparser.add_verbose_help()
135136 subparser.set_defaults(process=process_quiet)
136137
137−def parser_add_input(parser):
138− parser.add_argument("source_uri", default=None, nargs='?',
139− help="input sound file to analyse", metavar = "<source_uri>")
140− parser.add_argument("-i", "--input", dest = "source_uri2",
141− help="input sound file to analyse", metavar = "<source_uri>")
142− parser.add_argument("-r", "--samplerate",
143− metavar = "<freq>", type=int,
144− action="store", dest="samplerate", default=0,
145− help="samplerate at which the file should be represented")
146−
147−def parser_add_verbose_help(parser):
148− parser.add_argument("-v","--verbose",
149− action="count", dest="verbose", default=1,
150− help="make lots of noise [default]")
151− parser.add_argument("-q","--quiet",
152− action="store_const", dest="verbose", const=0,
153− help="be quiet")
154−
155−def parser_add_buf_hop_size(parser, buf_size=512, hop_size=256):
156− parser_add_buf_size(parser, buf_size=buf_size)
157− parser_add_hop_size(parser, hop_size=hop_size)
158−
159−def parser_add_buf_size(parser, buf_size=512):
160− parser.add_argument("-B","--bufsize",
161− action="store", dest="buf_size", default=buf_size,
162− metavar = "<size>", type=int,
163− help="buffer size [default=%d]" % buf_size)
164−
165−def parser_add_hop_size(parser, hop_size=256):
166− parser.add_argument("-H","--hopsize",
167− metavar = "<size>", type=int,
168− action="store", dest="hop_size", default=hop_size,
169− help="overlap size [default=%d]" % hop_size)
170−
171−def parser_add_method(parser, method='default', helpstr='method'):
172− parser.add_argument("-m","--method",
173− metavar = "<method>", type=str,
174− action="store", dest="method", default=method,
175− help="%s [default=%s]" % (helpstr, method))
176−
177−def parser_add_threshold(parser, default=None):
178− parser.add_argument("-t","--threshold",
179− metavar = "<threshold>", type=float,
180− action="store", dest="threshold", default=default,
181− help="threshold [default=%s]" % default)
182−
183−def parser_add_silence(parser):
184− parser.add_argument("-s", "--silence",
185− metavar = "<value>", type=float,
186− action="store", dest="silence", default=-70,
187− help="silence threshold")
188−
189−def parser_add_minioi(parser):
190− parser.add_argument("-M", "--minioi",
191− metavar = "<value>", type=str,
192− action="store", dest="minioi", default="12ms",
193− help="minimum Inter-Onset Interval")
194−
195−def parser_add_pitch_unit(parser, default="Hz"):
196− help_str = "frequency unit, should be one of Hz, midi, bin, cent"
197− help_str += " [default=%s]" % default
198− parser.add_argument("-u", "--pitch-unit",
199− metavar = "<value>", type=str,
200− action="store", dest="pitch_unit", default=default,
201− help=help_str)
202−
203−def parser_add_time_format(parser):
204− helpstr = "select time values output format (samples, ms, seconds)"
205− helpstr += " [default=seconds]"
206− parser.add_argument("-T", "--time-format",
207− metavar='format',
208− dest="time_format",
209− default=None,
210− help=helpstr)
138+class AubioArgumentParser(argparse.ArgumentParser):
139+
140+ def add_input(self):
141+ self.add_argument("source_uri", default=None, nargs='?',
142+ help="input sound file to analyse", metavar = "<source_uri>")
143+ self.add_argument("-i", "--input", dest = "source_uri2",
144+ help="input sound file to analyse", metavar = "<source_uri>")
145+ self.add_argument("-r", "--samplerate",
146+ metavar = "<freq>", type=int,
147+ action="store", dest="samplerate", default=0,
148+ help="samplerate at which the file should be represented")
149+
150+ def add_verbose_help(self):
151+ self.add_argument("-v","--verbose",
152+ action="count", dest="verbose", default=1,
153+ help="make lots of noise [default]")
154+ self.add_argument("-q","--quiet",
155+ action="store_const", dest="verbose", const=0,
156+ help="be quiet")
157+
158+ def add_buf_hop_size(self, buf_size=512, hop_size=256):
159+ self.add_buf_size(buf_size=buf_size)
160+ self.add_hop_size(hop_size=hop_size)
161+
162+ def add_buf_size(self, buf_size=512):
163+ self.add_argument("-B","--bufsize",
164+ action="store", dest="buf_size", default=buf_size,
165+ metavar = "<size>", type=int,
166+ help="buffer size [default=%d]" % buf_size)
167+
168+ def add_hop_size(self, hop_size=256):
169+ self.add_argument("-H","--hopsize",
170+ metavar = "<size>", type=int,
171+ action="store", dest="hop_size", default=hop_size,
172+ help="overlap size [default=%d]" % hop_size)
173+
174+ def add_method(self, method='default', helpstr='method'):
175+ self.add_argument("-m","--method",
176+ metavar = "<method>", type=str,
177+ action="store", dest="method", default=method,
178+ help="%s [default=%s]" % (helpstr, method))
179+
180+ def add_threshold(self, default=None):
181+ self.add_argument("-t","--threshold",
182+ metavar = "<threshold>", type=float,
183+ action="store", dest="threshold", default=default,
184+ help="threshold [default=%s]" % default)
185+
186+ def add_silence(self):
187+ self.add_argument("-s", "--silence",
188+ metavar = "<value>", type=float,
189+ action="store", dest="silence", default=-70,
190+ help="silence threshold")
191+
192+ def add_minioi(self, default="12ms"):
193+ self.add_argument("-M", "--minioi",
194+ metavar = "<value>", type=str,
195+ action="store", dest="minioi", default=default,
196+ help="minimum Inter-Onset Interval [default=%s]" % default)
197+
198+ def add_pitch_unit(self, default="Hz"):
199+ help_str = "frequency unit, should be one of Hz, midi, bin, cent"
200+ help_str += " [default=%s]" % default
201+ self.add_argument("-u", "--pitch-unit",
202+ metavar = "<value>", type=str,
203+ action="store", dest="pitch_unit", default=default,
204+ help=help_str)
205+
206+ def add_time_format(self):
207+ helpstr = "select time values output format (samples, ms, seconds)"
208+ helpstr += " [default=seconds]"
209+ self.add_argument("-T", "--time-format",
210+ metavar='format',
211+ dest="time_format",
212+ default=None,
213+ help=helpstr)
211214
212215 # some utilities
213216

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