Changeset aa17581


Ignore:
Timestamp:
Aug 22, 2005, 9:52:17 PM (16 years ago)
Author:
Paul Brossier <piem@altern.org>
Branches:
feature/autosink, feature/constantq, feature/pitchshift, feature/pydocstrings, feature/timestretch, master, pitchshift, sampler, timestretch, yinfft+
Children:
c29dae2
Parents:
f97445c
Message:

added midi and hertz output modes

Files:
3 edited

Legend:

Unmodified
Added
Removed
  • python/aubio/aubioclass.py

    rf97445c raa17581  
    125125                 setattr(parser.values, option.dest, 'dual')
    126126        else:
    127                  print "unknown detection function selected\n", usage
     127                 print "unknown onset detection function selected"
    128128                 sys.exit(1)
    129129
    130130def check_pitch_mode(option, opt, value, parser):
    131131        nvalue = parser.rargs[0]
    132         if   nvalue == 'mcomb' :
     132        if   nvalue == 'mcomb'  :
    133133                 setattr(parser.values, option.dest, aubio_pitch_mcomb)
    134         elif nvalue == 'yin'           :
     134        elif nvalue == 'yin'    :
    135135                 setattr(parser.values, option.dest, aubio_pitch_yin)
    136         elif nvalue == 'fcomb'         :
     136        elif nvalue == 'fcomb'  :
    137137                 setattr(parser.values, option.dest, aubio_pitch_fcomb)
    138         elif nvalue == 'schmitt'      :
     138        elif nvalue == 'schmitt':
    139139                 setattr(parser.values, option.dest, aubio_pitch_schmitt)
    140140        else:
    141                  print "unknown detection function selected\n", usage
     141                 print "error: unknown pitch detection function selected"
     142                 sys.exit(1)
     143
     144def check_pitchm_mode(option, opt, value, parser):
     145        nvalue = parser.rargs[0]
     146        if   nvalue == 'freq'  :
     147                 setattr(parser.values, option.dest, aubio_pitchm_freq)
     148        elif nvalue == 'midi'  :
     149                 setattr(parser.values, option.dest, aubio_pitchm_midi)
     150        elif nvalue == 'cent'  :
     151                 setattr(parser.values, option.dest, aubio_pitchm_cent)
     152        elif nvalue == 'bin'   :
     153                 setattr(parser.values, option.dest, aubio_pitchm_bin)
     154        else:
     155                 print "error: unknown pitch detection output selected"
    142156                 sys.exit(1)
    143157
     
    192206    framestep = hopsize/(filei.samplerate()+0.)
    193207    channels  = filei.channels()
    194     newname   = "%s%s%f%s%s" % (filein.split(".")[0].split("/")[-1],".",
     208    newname   = "%s%s%09.5f%s%s" % (filein.split(".")[0].split("/")[-1],".",
    195209                frameread*framestep,".",filein.split(".")[-1])
    196210    fileo     = sndfile(newname,model=filei)
     
    214228                    zerocross += 1
    215229            del fileo
    216             fileo = sndfile("%s%s%f%s%s" %
     230            fileo = sndfile("%s%s%09.5f%s%s" %
    217231                (filein.split(".")[0].split("/")[-1],".",
    218232                frameread*framestep,".",filein.split(".")[-1]),model=filei)
     
    261275                mylist.append(freq)
    262276        else:
    263                 mylist.append(0)
     277                mylist.append(-1.)
    264278        frameread += 1
    265279    return mylist
  • python/aubiopitch

    rf97445c raa17581  
    2323                          help="pitch detection mode [default=mcomb] \
    2424                          mcomb|yin|fcomb|schmitt")
     25        parser.add_option("-u","--units", action="callback",
     26                          callback=check_pitchm_mode, dest="omode",
     27                          default=aubio_pitchm_freq,
     28                          help="output pitch in units [default=Hz] \
     29                          freq|midi|cent|bin")
    2530        parser.add_option("-B","--bufsize",
    26                           action="store", dest="bufsize", default=1024,
     31                          action="store", dest="bufsize", default=None,
    2732                          help="buffer size [default=1024]")
    2833        parser.add_option("-H","--hopsize",
    29                           action="store", dest="hopsize", default=512,
     34                          action="store", dest="hopsize", default=None,
    3035                          help="overlap size [default=512]")
    3136        parser.add_option("-t","--threshold",
     
    6469                          help="be quiet")
    6570        (options, args) = parser.parse_args()
     71        if not options.bufsize:
     72                if options.mode == aubio_pitch_yin:     options.bufsize = 1024
     73                if options.mode == aubio_pitch_schmitt: options.bufsize = 2048
     74                if options.mode == aubio_pitch_mcomb:   options.bufsize = 4096
     75                if options.mode == aubio_pitch_fcomb:   options.bufsize = 4096
     76        if not options.hopsize:
     77                options.hopsize = float(options.bufsize) / 2
    6678        if not options.filename:
    67                  print "no file name given\n", usage
    68                  sys.exit(1)
     79                print "no file name given\n", usage
     80                sys.exit(1)
    6981        return options, args
    7082
    7183options, args = parse_args()
     84
     85#print options.bufsize, options.hopsize
    7286
    7387filename   = options.filename
     
    86100        exit("not implemented yet")
    87101else:
    88         pitch = getpitch(filename, #threshold,silence,
     102        pitch = getpitch(filename, #threshold,
    89103                mode=options.mode,
    90                 bufsize=bufsize,hopsize=hopsize)
     104                omode=options.omode,
     105                bufsize=bufsize,hopsize=hopsize,
     106                silence=silence)
    91107
    92108## take back system delay
  • src/pitchdetection.c

    rf97445c raa17581  
    2828#include "pitchdetection.h"
    2929
     30smpl_t freqconvpass(smpl_t f);
     31smpl_t freqconvpass(smpl_t f){
     32        return f;
     33}
     34
    3035typedef smpl_t (*aubio_pitchdetection_func_t)(aubio_pitchdetection_t *p,
    3136                fvec_t * ibuf);
     37typedef smpl_t (*aubio_pitchdetection_conv_t)(smpl_t value);
    3238void aubio_pitchdetection_slideblock(aubio_pitchdetection_t *p, fvec_t *ibuf);
    3339
     
    4854        fvec_t * yin;
    4955        aubio_pitchdetection_func_t callback;
     56        aubio_pitchdetection_conv_t freqconv;
    5057};
    5158
     
    6067        p->srate = samplerate;
    6168        p->type = type;
     69        p->mode = mode;
    6270        p->bufsize = bufsize;
    6371        switch(p->type) {
     
    8694                        break;
    8795        }
     96        switch(p->mode) {
     97                case aubio_pitchm_freq:
     98                        p->freqconv = freqconvpass;
     99                        break;
     100                case aubio_pitchm_midi:
     101                        p->freqconv = aubio_freqtomidi;
     102                        break;
     103                case aubio_pitchm_cent:
     104                        /** bug: not implemented */
     105                        p->freqconv = freqconvpass;
     106                        break;
     107                case aubio_pitchm_bin:
     108                        /** bug: not implemented */
     109                        p->freqconv = freqconvpass;
     110                        break;
     111                default:
     112                        break;
     113        }
    88114        return p;
    89115}
     
    132158
    133159smpl_t aubio_pitchdetection(aubio_pitchdetection_t *p, fvec_t * ibuf) {
    134         return p->callback(p,ibuf);
     160        return p->freqconv(p->callback(p,ibuf));
    135161}
    136162
Note: See TracChangeset for help on using the changeset viewer.