Changeset ad65346 for python


Ignore:
Timestamp:
Sep 23, 2016, 6:57:20 AM (9 years ago)
Author:
Paul Brossier <piem@piem.org>
Branches:
feature/cnn, feature/crepe, feature/pitchshift, feature/timestretch, fix/applefworks, fix/ffmpeg5, master, pitchshift, sampler, timestretch
Children:
7d01fdf
Parents:
3ffedf22 (diff), bd8a92d (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge branch 'master' into pitchshift

Location:
python
Files:
9 edited

Legend:

Unmodified
Added
Removed
  • python/demos/demo_mfcc.py

    r3ffedf22 rad65346  
    33import sys
    44from aubio import source, pvoc, mfcc
    5 from numpy import vstack, zeros
     5from numpy import vstack, zeros, diff
    66
    7 win_s = 512                 # fft size
    8 hop_s = win_s // 4          # hop size
    97n_filters = 40              # must be 40 for mfcc
    108n_coeffs = 13
    11 samplerate = 44100
    129
    1310if len(sys.argv) < 2:
    14     print("Usage: %s <source_filename>" % sys.argv[0])
     11    print("Usage: %s <source_filename> [samplerate] [win_s] [hop_s] [mode]" % sys.argv[0])
     12    print("  where [mode] can be 'delta' or 'ddelta' for first and second derivatives")
    1513    sys.exit(1)
    1614
    1715source_filename = sys.argv[1]
     16
     17if len(sys.argv) > 2: samplerate = int(sys.argv[2])
     18else: samplerate = 0
     19if len(sys.argv) > 3: win_s = int(sys.argv[3])
     20else: win_s = 512
     21if len(sys.argv) > 4: hop_s = int(sys.argv[4])
     22else: hop_s = win_s // 4
     23if len(sys.argv) > 5: mode = sys.argv[5]
     24else: mode = "default"
    1825
    1926samplerate = 0
     
    4956wave.yaxis.set_visible(False)
    5057
     58# compute first and second derivatives
     59if mode in ["delta", "ddelta"]:
     60    mfccs = diff(mfccs, axis = 0)
     61if mode == "ddelta":
     62    mfccs = diff(mfccs, axis = 0)
     63
    5164all_times = arange(mfccs.shape[0]) * hop_s
    5265n_coeffs = mfccs.shape[1]
     
    5467    ax = plt.axes ( [0.1, 0.75 - ((i+1) * 0.65 / n_coeffs),  0.8, 0.65 / n_coeffs], sharex = wave )
    5568    ax.xaxis.set_visible(False)
    56     ax.yaxis.set_visible(False)
     69    ax.set_yticks([])
     70    ax.set_ylabel('%d' % i)
    5771    ax.plot(all_times, mfccs.T[i])
    5872
    5973# add time to the last axis
    60 set_xlabels_sample2time( ax, frames_read, samplerate) 
     74set_xlabels_sample2time( ax, frames_read, samplerate)
    6175
    6276#plt.ylabel('spectral descriptor value')
    6377ax.xaxis.set_visible(True)
    64 wave.set_title('MFCC for %s' % source_filename)
     78title = 'MFCC for %s' % source_filename
     79if mode == "delta": title = mode + " " + title
     80elif mode == "ddelta": title = "double-delta" + " " + title
     81wave.set_title(title)
    6582plt.show()
  • python/ext/aubiomodule.c

    r3ffedf22 rad65346  
    257257#endif
    258258
     259void
     260aubio_log_function(int level, const char *message, void *data)
     261{
     262  // remove trailing \n
     263  char *pos;
     264  if ((pos=strchr(message, '\n')) != NULL) {
     265        *pos = '\0';
     266  }
     267  // warning or error
     268  if (level == AUBIO_LOG_ERR) {
     269    PyErr_Format(PyExc_RuntimeError, "%s", message);
     270  } else {
     271    PyErr_WarnEx(PyExc_UserWarning, message, 1);
     272  }
     273}
     274
    259275static PyObject *
    260276initaubio (void)
     
    316332  add_ufuncs(m);
    317333
     334  aubio_log_set_level_function(AUBIO_LOG_ERR, aubio_log_function, NULL);
     335  aubio_log_set_level_function(AUBIO_LOG_WRN, aubio_log_function, NULL);
    318336  return m;
    319337}
  • python/ext/py-fft.c

    r3ffedf22 rad65346  
    5252  self->o = new_aubio_fft (self->win_s);
    5353  if (self->o == NULL) {
    54     PyErr_Format(PyExc_RuntimeError,
    55         "error creating fft with win_s=%d "
    56         "(should be a power of 2 greater than 1; "
    57         "try recompiling aubio with --enable-fftw3)",
    58         self->win_s);
     54    // PyErr_Format(PyExc_RuntimeError, ...) was set above by new_ which called
     55    // AUBIO_ERR when failing
    5956    return -1;
    6057  }
  • python/ext/py-phasevoc.c

    r3ffedf22 rad65346  
    6767  self->o = new_aubio_pvoc ( self->win_s, self->hop_s);
    6868  if (self->o == NULL) {
    69     PyErr_Format(PyExc_RuntimeError,
    70         "failed creating pvoc with win_s=%d, hop_s=%d",
    71         self->win_s, self->hop_s);
     69    // PyErr_Format(PyExc_RuntimeError, ...) was set above by new_ which called
     70    // AUBIO_ERR when failing
    7271    return -1;
    7372  }
  • python/ext/py-source.c

    r3ffedf22 rad65346  
    141141  self->o = new_aubio_source ( self->uri, self->samplerate, self->hop_size );
    142142  if (self->o == NULL) {
    143     PyErr_Format (PyExc_RuntimeError, "error creating source with \"%s\"",
    144         self->uri);
     143    // PyErr_Format(PyExc_RuntimeError, ...) was set above by new_ which called
     144    // AUBIO_ERR when failing
    145145    return -1;
    146146  }
  • python/lib/moresetuptools.py

    r3ffedf22 rad65346  
    6666                         'HAVE_MATH_H', 'HAVE_STRING_H',
    6767                         'HAVE_C99_VARARGS_MACROS',
    68                          'HAVE_LIMITS_H', 'HAVE_MEMCPY_HACKS']:
     68                         'HAVE_LIMITS_H', 'HAVE_STDARG_H',
     69                         'HAVE_MEMCPY_HACKS']:
    6970        ext.define_macros += [(define_macro, 1)]
    7071
  • python/tests/test_fvec.py

    r3ffedf22 rad65346  
    9999        alpha = np.random.rand() * 5.
    100100        x_alpha_norm = (np.sum(np.abs(x)**alpha)/len(x))**(1/alpha)
    101         assert_almost_equal(alpha_norm(x, alpha), x_alpha_norm, decimal = 5)
     101        assert_almost_equal(alpha_norm(x, alpha), x_alpha_norm, decimal = 4)
    102102
    103103class aubio_zero_crossing_rate_test(TestCase):
  • python/tests/test_source.py

    r3ffedf22 rad65346  
    66from aubio import source
    77from utils import list_all_sounds
     8
     9import warnings
     10warnings.filterwarnings('ignore', category=UserWarning, append=True)
    811
    912list_of_sounds = list_all_sounds('sounds')
     
    2326
    2427    def setUp(self):
    25         if not len(list_of_sounds): self.skipTest('add some sound files in \'python/tests/sounds\'')
     28        if not len(list_of_sounds):
     29            self.skipTest('add some sound files in \'python/tests/sounds\'')
    2630        self.default_test_sound = list_of_sounds[0]
    2731
  • python/tests/test_specdesc.py

    r3ffedf22 rad65346  
    226226
    227227    def test_unknown(self):
    228         # FIXME should fail?
    229         with self.assertRaises(ValueError):
     228        with self.assertRaises(RuntimeError):
    230229            specdesc("unknown", 512)
    231             self.skipTest('todo: new_specdesc should fail on wrong method')
    232230
    233231if __name__ == '__main__':
Note: See TracChangeset for help on using the changeset viewer.