Changeset ad65346
- Timestamp:
- Sep 23, 2016, 6:57:20 AM (8 years ago)
- Branches:
- feature/cnn, feature/crepe, feature/pitchshift, feature/timestretch, 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. - Files:
-
- 3 added
- 17 edited
Legend:
- Unmodified
- Added
- Removed
-
python/demos/demo_mfcc.py
r3ffedf22 rad65346 3 3 import sys 4 4 from aubio import source, pvoc, mfcc 5 from numpy import vstack, zeros 5 from numpy import vstack, zeros, diff 6 6 7 win_s = 512 # fft size8 hop_s = win_s // 4 # hop size9 7 n_filters = 40 # must be 40 for mfcc 10 8 n_coeffs = 13 11 samplerate = 4410012 9 13 10 if 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") 15 13 sys.exit(1) 16 14 17 15 source_filename = sys.argv[1] 16 17 if len(sys.argv) > 2: samplerate = int(sys.argv[2]) 18 else: samplerate = 0 19 if len(sys.argv) > 3: win_s = int(sys.argv[3]) 20 else: win_s = 512 21 if len(sys.argv) > 4: hop_s = int(sys.argv[4]) 22 else: hop_s = win_s // 4 23 if len(sys.argv) > 5: mode = sys.argv[5] 24 else: mode = "default" 18 25 19 26 samplerate = 0 … … 49 56 wave.yaxis.set_visible(False) 50 57 58 # compute first and second derivatives 59 if mode in ["delta", "ddelta"]: 60 mfccs = diff(mfccs, axis = 0) 61 if mode == "ddelta": 62 mfccs = diff(mfccs, axis = 0) 63 51 64 all_times = arange(mfccs.shape[0]) * hop_s 52 65 n_coeffs = mfccs.shape[1] … … 54 67 ax = plt.axes ( [0.1, 0.75 - ((i+1) * 0.65 / n_coeffs), 0.8, 0.65 / n_coeffs], sharex = wave ) 55 68 ax.xaxis.set_visible(False) 56 ax.yaxis.set_visible(False) 69 ax.set_yticks([]) 70 ax.set_ylabel('%d' % i) 57 71 ax.plot(all_times, mfccs.T[i]) 58 72 59 73 # add time to the last axis 60 set_xlabels_sample2time( ax, frames_read, samplerate) 74 set_xlabels_sample2time( ax, frames_read, samplerate) 61 75 62 76 #plt.ylabel('spectral descriptor value') 63 77 ax.xaxis.set_visible(True) 64 wave.set_title('MFCC for %s' % source_filename) 78 title = 'MFCC for %s' % source_filename 79 if mode == "delta": title = mode + " " + title 80 elif mode == "ddelta": title = "double-delta" + " " + title 81 wave.set_title(title) 65 82 plt.show() -
python/ext/aubiomodule.c
r3ffedf22 rad65346 257 257 #endif 258 258 259 void 260 aubio_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 259 275 static PyObject * 260 276 initaubio (void) … … 316 332 add_ufuncs(m); 317 333 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); 318 336 return m; 319 337 } -
python/ext/py-fft.c
r3ffedf22 rad65346 52 52 self->o = new_aubio_fft (self->win_s); 53 53 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 59 56 return -1; 60 57 } -
python/ext/py-phasevoc.c
r3ffedf22 rad65346 67 67 self->o = new_aubio_pvoc ( self->win_s, self->hop_s); 68 68 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 72 71 return -1; 73 72 } -
python/ext/py-source.c
r3ffedf22 rad65346 141 141 self->o = new_aubio_source ( self->uri, self->samplerate, self->hop_size ); 142 142 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 145 145 return -1; 146 146 } -
python/lib/moresetuptools.py
r3ffedf22 rad65346 66 66 'HAVE_MATH_H', 'HAVE_STRING_H', 67 67 'HAVE_C99_VARARGS_MACROS', 68 'HAVE_LIMITS_H', 'HAVE_MEMCPY_HACKS']: 68 'HAVE_LIMITS_H', 'HAVE_STDARG_H', 69 'HAVE_MEMCPY_HACKS']: 69 70 ext.define_macros += [(define_macro, 1)] 70 71 -
python/tests/test_fvec.py
r3ffedf22 rad65346 99 99 alpha = np.random.rand() * 5. 100 100 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) 102 102 103 103 class aubio_zero_crossing_rate_test(TestCase): -
python/tests/test_source.py
r3ffedf22 rad65346 6 6 from aubio import source 7 7 from utils import list_all_sounds 8 9 import warnings 10 warnings.filterwarnings('ignore', category=UserWarning, append=True) 8 11 9 12 list_of_sounds = list_all_sounds('sounds') … … 23 26 24 27 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\'') 26 30 self.default_test_sound = list_of_sounds[0] 27 31 -
python/tests/test_specdesc.py
r3ffedf22 rad65346 226 226 227 227 def test_unknown(self): 228 # FIXME should fail? 229 with self.assertRaises(ValueError): 228 with self.assertRaises(RuntimeError): 230 229 specdesc("unknown", 512) 231 self.skipTest('todo: new_specdesc should fail on wrong method')232 230 233 231 if __name__ == '__main__': -
src/aubio.h
r3ffedf22 rad65346 110 110 111 111 Several examples of C programs are available in the \p examples/ and \p tests/src 112 directories of the source tree. 112 directories of the source tree. See more examples: 113 @ref spectral/test-fft.c 114 @ref spectral/test-phasevoc.c 115 @ref onset/test-onset.c 116 @ref pitch/test-pitch.c 117 @ref tempo/test-tempo.c 118 @ref test-fvec.c 119 @ref test-cvec.c 113 120 114 121 \subsection unstable_api Unstable API … … 189 196 #include "synth/wavetable.h" 190 197 #include "utils/parameter.h" 198 #include "utils/log.h" 191 199 192 200 #if AUBIO_UNSTABLE -
src/aubio_priv.h
r3ffedf22 rad65346 63 63 #ifdef HAVE_LIMITS_H 64 64 #include <limits.h> // for CHAR_BIT, in C99 standard 65 #endif 66 67 #ifdef HAVE_STDARG_H 68 #include <stdarg.h> 65 69 #endif 66 70 … … 169 173 } aubio_status; 170 174 175 /* Logging */ 176 177 #include "utils/log.h" 178 179 /** internal logging function, defined in utils/log.c */ 180 uint_t aubio_log(sint_t level, const char_t *fmt, ...); 181 171 182 #ifdef HAVE_C99_VARARGS_MACROS 172 #define AUBIO_ERR(...) fprintf(stderr, "AUBIO ERROR: " __VA_ARGS__)173 #define AUBIO_MSG(...) fprintf(stdout, __VA_ARGS__)174 #define AUBIO_DBG(...) fprintf(stderr, __VA_ARGS__)175 #define AUBIO_WRN(...) fprintf(stderr, "AUBIO WARNING: " __VA_ARGS__)176 #else 177 #define AUBIO_ERR(format, args...) fprintf(stderr, "AUBIO ERROR: " format , ##args)178 #define AUBIO_MSG(format, args...) fprintf(stdout, format , ##args)179 #define AUBIO_DBG(format, args...) fprintf(stderr, format , ##args)180 #define AUBIO_WRN(format, args...) fprintf(stderr, "AUBIO WARNING: " format, ##args)183 #define AUBIO_ERR(...) aubio_log(AUBIO_LOG_ERR, "AUBIO ERROR: " __VA_ARGS__) 184 #define AUBIO_MSG(...) aubio_log(AUBIO_LOG_MSG, __VA_ARGS__) 185 #define AUBIO_DBG(...) aubio_log(AUBIO_LOG_DBG, __VA_ARGS__) 186 #define AUBIO_WRN(...) aubio_log(AUBIO_LOG_WRN, "AUBIO WARNING: " __VA_ARGS__) 187 #else 188 #define AUBIO_ERR(format, args...) aubio_log(stderr, "AUBIO ERROR: " format , ##args) 189 #define AUBIO_MSG(format, args...) aubio_log(stdout, format , ##args) 190 #define AUBIO_DBG(format, args...) aubio_log(stderr, format , ##args) 191 #define AUBIO_WRN(format, args...) aubio_log(stderr, "AUBIO WARNING: " format, ##args) 181 192 #endif 182 193 -
src/io/source_sndfile.c
r3ffedf22 rad65346 60 60 uint_t input_hop_size; 61 61 #ifdef HAVE_SAMPLERATE 62 aubio_resampler_t * resampler;62 aubio_resampler_t **resamplers; 63 63 fvec_t *input_data; 64 fmat_t *input_mat; 64 65 #endif /* HAVE_SAMPLERATE */ 65 66 … … 127 128 128 129 #ifdef HAVE_SAMPLERATE 129 s->resampler = NULL;130 130 s->input_data = NULL; 131 s->input_mat = NULL; 132 s->resamplers = NULL; 131 133 if (s->ratio != 1) { 134 uint_t i; 135 s->resamplers = AUBIO_ARRAY(aubio_resampler_t*, s->input_channels); 132 136 s->input_data = new_fvec(s->input_hop_size); 133 s->resampler = new_aubio_resampler(s->ratio, 4); 137 s->input_mat = new_fmat(s->input_channels, s->input_hop_size); 138 for (i = 0; i < (uint_t)s->input_channels; i++) { 139 s->resamplers[i] = new_aubio_resampler(s->ratio, 4); 140 } 134 141 if (s->ratio > 1) { 135 142 // we would need to add a ring buffer for these … … 190 197 191 198 #ifdef HAVE_SAMPLERATE 192 if (s->resampler ) {193 aubio_resampler_do(s->resampler , s->input_data, read_data);199 if (s->resamplers) { 200 aubio_resampler_do(s->resamplers[0], s->input_data, read_data); 194 201 } 195 202 #endif /* HAVE_SAMPLERATE */ … … 214 221 #ifdef HAVE_SAMPLERATE 215 222 if (s->ratio != 1) { 216 AUBIO_ERR("source_sndfile: no multi channel resampling yet\n"); 217 return; 218 //ptr_data = s->input_data->data; 223 ptr_data = s->input_mat->data; 219 224 } else 220 225 #endif /* HAVE_SAMPLERATE */ … … 252 257 253 258 #ifdef HAVE_SAMPLERATE 254 if (s->resampler) { 255 //aubio_resampler_do(s->resampler, s->input_data, read_data); 259 if (s->resamplers) { 260 for (i = 0; i < input_channels; i++) { 261 fvec_t input_chan, read_chan; 262 input_chan.data = s->input_mat->data[i]; 263 input_chan.length = s->input_mat->length; 264 read_chan.data = read_data->data[i]; 265 read_chan.length = read_data->length; 266 aubio_resampler_do(s->resamplers[i], &input_chan, &read_chan); 267 } 256 268 } 257 269 #endif /* HAVE_SAMPLERATE */ … … 314 326 aubio_source_sndfile_close(s); 315 327 #ifdef HAVE_SAMPLERATE 316 if (s->resampler != NULL) { 317 del_aubio_resampler(s->resampler); 328 if (s->resamplers != NULL) { 329 uint_t i = 0, input_channels = s->input_channels; 330 for (i = 0; i < input_channels; i ++) { 331 if (s->resamplers[i] != NULL) { 332 del_aubio_resampler(s->resamplers[i]); 333 } 334 } 335 AUBIO_FREE(s->resamplers); 318 336 } 319 337 if (s->input_data) { 320 338 del_fvec(s->input_data); 339 } 340 if (s->input_mat) { 341 del_fmat(s->input_mat); 321 342 } 322 343 #endif /* HAVE_SAMPLERATE */ -
src/notes/notes.c
r3ffedf22 rad65346 82 82 83 83 if (strcmp(method, "default") != 0) { 84 AUBIO_ERR("unknown notes detection method %s, using default.\n", 85 method); 84 AUBIO_ERR("notes: unknown notes detection method \"%s\"\n", method); 86 85 goto fail; 87 86 } -
src/spectral/fft.h
r3ffedf22 rad65346 28 28 - [vDSP](https://developer.apple.com/library/mac/#documentation/Accelerate/Reference/vDSPRef/Reference/reference.html) 29 29 30 \example s rc/spectral/test-fft.c30 \example spectral/test-fft.c 31 31 32 32 */ -
src/spectral/specdesc.c
r3ffedf22 rad65346 274 274 onset_type = aubio_onset_default; 275 275 else { 276 AUBIO_ERR("unknown spectral descriptor type %s, using default.\n", onset_mode); 277 onset_type = aubio_onset_default; 276 AUBIO_ERR("unknown spectral descriptor type %s\n", onset_mode); 277 AUBIO_FREE(o); 278 return NULL; 278 279 } 279 280 switch(onset_type) { 280 281 /* for both energy and hfc, only fftgrain->norm is required */ 281 case aubio_onset_energy: 282 case aubio_onset_energy: 282 283 break; 283 284 case aubio_onset_hfc: … … 367 368 void del_aubio_specdesc (aubio_specdesc_t *o){ 368 369 switch(o->onset_type) { 369 case aubio_onset_energy: 370 case aubio_onset_energy: 370 371 break; 371 372 case aubio_onset_hfc: -
tests/src/spectral/test-fft.c
r3ffedf22 rad65346 5 5 int return_code = 0; 6 6 uint_t i, n_iters = 100; // number of iterations 7 uint_t win_s = 5 00; // window size7 uint_t win_s = 512; // window size 8 8 fvec_t * in = new_fvec (win_s); // input buffer 9 9 cvec_t * fftgrain = new_cvec (win_s); // fft norm and phase -
wscript
r3ffedf22 rad65346 114 114 ctx.check(header_name='string.h') 115 115 ctx.check(header_name='limits.h') 116 ctx.check(header_name='stdarg.h') 116 117 ctx.check(header_name='getopt.h', mandatory = False) 117 118 ctx.check(header_name='unistd.h', mandatory = False)
Note: See TracChangeset
for help on using the changeset viewer.