Changeset fe163ad for python


Ignore:
Timestamp:
Oct 15, 2009, 6:54:23 PM (15 years ago)
Author:
Paul Brossier <piem@piem.org>
Branches:
feature/autosink, feature/cnn, feature/cnn_org, feature/constantq, feature/crepe, feature/crepe_org, feature/pitchshift, feature/pydocstrings, feature/timestretch, fix/ffmpeg5, master, pitchshift, sampler, timestretch, yinfft+
Children:
515c7b2
Parents:
cd77c15
Message:

src/pitch: use a string to set pitch method, add a new function to set pitch unit, keep pitch enums private, update pitch methods where they are used

Location:
python
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • python/aubio/aubioclass.py

    rcd77c15 rfe163ad  
    125125
    126126class pitchdetection:
    127     def __init__(self,mode=aubio_pitch_mcomb,bufsize=2048,hopsize=1024,
    128         channels=1,samplerate=44100.,omode=aubio_pitchm_freq,tolerance=0.1):
    129         self.pitchp = new_aubio_pitchdetection(bufsize,hopsize,channels,
    130                 samplerate,mode,omode)
     127    def __init__(self,mode="mcomb",bufsize=2048,hopsize=1024,
     128        channels=1,samplerate=44100.,omode="freq",tolerance=0.1):
     129        self.pitchp = new_aubio_pitchdetection(mode,bufsize,hopsize,channels,
     130            samplerate)
    131131        self.mypitch = fvec(1, channels)
     132        aubio_pitchdetection_set_unit(self.pitchp,omode)
    132133        aubio_pitchdetection_set_tolerance(self.pitchp,tolerance)
    133134        #self.filt     = filter(srate,"adsgn")
  • python/aubio/task/params.py

    rcd77c15 rfe163ad  
    1 from aubio.aubioclass import aubio_pitchm_freq
    21
    32class taskparams(object):
     
    3029                self.pitchdelay = -0.5
    3130                self.dcthreshold = -1.
    32                 self.omode = aubio_pitchm_freq
     31                self.omode = "freq"
    3332                self.verbose   = False
    3433
  • python/aubio/task/pitch.py

    rcd77c15 rfe163ad  
    1414                else:
    1515                        tolerance = 0.
    16                 self.pitchdet   = pitchdetection(mode=get_pitch_mode(self.params.pitchmode),
     16                self.pitchdet   = pitchdetection(mode=self.params.pitchmode,
    1717                        bufsize=self.params.bufsize,
    1818                        hopsize=self.params.hopsize,
  • python/aubio/task/utils.py

    rcd77c15 rfe163ad  
    2626                 sys.exit(1)
    2727
    28 def get_pitch_mode(nvalue):
    29         """ utility function to convert a string to aubio_pitchdetection_type """
    30         if   nvalue == 'mcomb'  :
    31                  return aubio_pitch_mcomb
    32         elif nvalue == 'yin'    :
    33                  return aubio_pitch_yin
    34         elif nvalue == 'fcomb'  :
    35                  return aubio_pitch_fcomb
    36         elif nvalue == 'schmitt':
    37                  return aubio_pitch_schmitt
    38         elif nvalue == 'yinfft':
    39                  return aubio_pitch_yinfft
    40         else:
    41                  import sys
    42                  print "error: unknown pitch detection function selected"
    43                  sys.exit(1)
    44 
    4528def check_onset_mode(option, opt, value, parser):
    4629        """ wrapper function to convert a list of modes to
     
    5942                val.append(get_pitch_mode(nvalue))
    6043                setattr(parser.values, option.dest, val)
    61 
    62 def check_pitchm_mode(option, opt, value, parser):
    63         """ utility function to convert a string to aubio_pitchdetection_mode """
    64         nvalue = parser.rargs[0]
    65         if   nvalue == 'freq'  :
    66                  setattr(parser.values, option.dest, aubio_pitchm_freq)
    67         elif nvalue == 'midi'  :
    68                  setattr(parser.values, option.dest, aubio_pitchm_midi)
    69         elif nvalue == 'cent'  :
    70                  setattr(parser.values, option.dest, aubio_pitchm_cent)
    71         elif nvalue == 'bin'   :
    72                  setattr(parser.values, option.dest, aubio_pitchm_bin)
    73         else:
    74                  import sys
    75                  print "error: unknown pitch detection output selected"
    76                  sys.exit(1)
    77 
    78 
  • python/aubiopitch

    rcd77c15 rfe163ad  
    1818      help="input sound file")
    1919  parser.add_option("-m","--mode",
    20       action="store", dest="mode", default='mcomb',
     20      action="store", dest="mode", default='yinfft',
    2121      help="pitch detection mode [default=mcomb] \
    2222      mcomb|yin|fcomb|schmitt")
    23   parser.add_option("-u","--units", action="callback",
    24       callback=check_pitchm_mode, dest="omode",
    25       default=aubio_pitchm_freq,
     23  parser.add_option("-u","--units",
     24      action="store", dest="omode", default="freq",
    2625      help="output pitch in units [default=Hz] \
    2726      freq|midi|cent|bin")
     
    7877  (options, args) = parser.parse_args()
    7978  if not options.bufsize:
    80     if options.mode == aubio_pitch_yin:     options.bufsize = 1024
    81     if options.mode == aubio_pitch_schmitt: options.bufsize = 2048
    82     if options.mode == aubio_pitch_mcomb:   options.bufsize = 4096
    83     if options.mode == aubio_pitch_fcomb:   options.bufsize = 4096
     79    if options.mode == "yin":     options.bufsize = 1024
     80    if options.mode == "schmitt": options.bufsize = 2048
     81    if options.mode == "mcomb":   options.bufsize = 4096
     82    if options.mode == "fcomb":   options.bufsize = 4096
    8483    else: options.bufsize = 2048
    8584  if not options.hopsize:
     
    106105if options.pitchmax:  params.pitchmax    = int(options.pitchmax)
    107106if options.pitchmin:  params.pitchmin    = int(options.pitchmin)
    108 if options.omode:     params.omode       = int(options.omode)
    109107#mintol     = float(options.mintol)*step
    110108# default take back system delay
Note: See TracChangeset for help on using the changeset viewer.