Changeset 633400d for tests


Ignore:
Timestamp:
Dec 5, 2018, 10:34:39 PM (6 years ago)
Author:
Paul Brossier <piem@piem.org>
Branches:
feature/cnn, feature/crepe, feature/pitchshift, feature/timestretch, fix/ffmpeg5, master
Children:
283a619a
Parents:
5b46bc3 (diff), f19db54 (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 feature/pitchshift

Location:
tests
Files:
4 added
30 edited

Legend:

Unmodified
Added
Removed
  • tests/src/io/test-sink-multi.c

    r5b46bc3 r633400d  
    1 #define AUBIO_UNSTABLE 1
    21#include <aubio.h>
    32#include "utils_tests.h"
    43
    5 // this file uses the unstable aubio api, please use aubio_sink instead
    6 // see src/io/sink.h and tests/src/sink/test-sink.c
     4// same as test-sink.c, but uses aubio_source_do_multi to read multiple
     5// channels
    76
    87int main (int argc, char **argv)
     
    1110
    1211  if (argc < 3) {
    13     err = 2;
    14     PRINT_ERR("not enough arguments\n");
     12    PRINT_ERR("not enough arguments, running tests\n");
     13    err = run_on_default_source_and_sink(main);
    1514    PRINT_MSG("usage: %s <input_path> <output_path> [samplerate] [channels] [hop_size]\n", argv[0]);
    1615    return err;
  • tests/src/io/test-sink.c

    r5b46bc3 r633400d  
    77
    88  if (argc < 3) {
    9     err = 2;
    10     PRINT_ERR("not enough arguments\n");
     9    PRINT_ERR("not enough arguments, running tests\n");
     10    err = run_on_default_source_and_sink(main);
    1111    PRINT_MSG("usage: %s <input_path> <output_path> [samplerate] [hop_size]\n", argv[0]);
    1212    return err;
  • tests/src/io/test-sink_apple_audio-multi.c

    r5b46bc3 r633400d  
    33#include "utils_tests.h"
    44
    5 // this file uses the unstable aubio api, please use aubio_sink instead
    6 // see src/io/sink.h and tests/src/sink/test-sink.c
     5// this file uses the unstable aubio api to test aubio_sink_apple_audio, please
     6// use aubio_sink instead see src/io/sink.h and tests/src/sink/test-sink.c
    77
    88int main (int argc, char **argv)
     
    1111
    1212  if (argc < 3) {
    13     err = 2;
    14     PRINT_ERR("not enough arguments\n");
     13    PRINT_ERR("not enough arguments, running tests\n");
     14    err = run_on_default_source_and_sink(main);
    1515    PRINT_MSG("usage: %s <input_path> <output_path> [samplerate] [channels] [hop_size]\n", argv[0]);
    1616    return err;
     
    7272beach_source:
    7373#else /* HAVE_SINK_APPLE_AUDIO */
    74   err = 3;
     74  err = 0;
    7575  PRINT_ERR("aubio was not compiled with aubio_sink_apple_audio\n");
    7676#endif /* HAVE_SINK_APPLE_AUDIO */
  • tests/src/io/test-sink_apple_audio.c

    r5b46bc3 r633400d  
    1111
    1212  if (argc < 3) {
    13     err = 2;
    14     PRINT_ERR("not enough arguments\n");
     13    PRINT_ERR("not enough arguments, running tests\n");
     14    err = run_on_default_source_and_sink(main);
    1515    PRINT_MSG("usage: %s <input_path> <output_path> [samplerate] [hop_size]\n", argv[0]);
    1616    return err;
     
    6161beach_fvec:
    6262#else /* HAVE_SINK_APPLE_AUDIO */
    63   err = 3;
     63  err = 0;
    6464  PRINT_ERR("aubio was not compiled with aubio_source_apple_audio\n");
    6565#endif /* HAVE_SINK_APPLE_AUDIO */
  • tests/src/io/test-sink_sndfile-multi.c

    r5b46bc3 r633400d  
    11#define AUBIO_UNSTABLE 1
    22#include <aubio.h>
    3 #include "config.h"
    43#include "utils_tests.h"
    54
    6 // this file uses the unstable aubio api, please use aubio_sink instead
    7 // see src/io/sink.h and tests/src/sink/test-sink.c
     5// this file uses the unstable aubio api to test aubio_sink_sndfile, please
     6// use aubio_sink instead see src/io/sink.h and tests/src/sink/test-sink.c
    87
    98int main (int argc, char **argv)
     
    1211
    1312  if (argc < 3) {
    14     err = 2;
    15     PRINT_ERR("not enough arguments\n");
     13    PRINT_ERR("not enough arguments, running tests\n");
     14    err = run_on_default_source_and_sink(main);
    1615    PRINT_MSG("usage: %s <input_path> <output_path> [samplerate] [channels] [hop_size]\n", argv[0]);
    1716    return err;
     
    7372beach_source:
    7473#else
    75   err = 3;
     74  err = 0;
    7675  PRINT_ERR("aubio was not compiled with aubio_sink_sndfile\n");
    7776#endif /* HAVE_SNDFILE */
  • tests/src/io/test-sink_sndfile.c

    r5b46bc3 r633400d  
    11#define AUBIO_UNSTABLE 1
    22#include <aubio.h>
    3 #include "config.h"
    43#include "utils_tests.h"
    54
     
    1211
    1312  if (argc < 3) {
    14     err = 2;
    15     PRINT_ERR("not enough arguments\n");
     13    PRINT_ERR("not enough arguments, running tests\n");
     14    err = run_on_default_source_and_sink(main);
    1615    PRINT_MSG("usage: %s <input_path> <output_path> [samplerate] [hop_size]\n", argv[0]);
    1716    return err;
     
    6261beach_fvec:
    6362#else
    64   err = 3;
     63  err = 0;
    6564  PRINT_ERR("aubio was not compiled with aubio_source_sndfile\n");
    6665#endif /* HAVE_SNDFILE */
  • tests/src/io/test-sink_wavwrite-multi.c

    r5b46bc3 r633400d  
    33#include "utils_tests.h"
    44
    5 // this file uses the unstable aubio api, please use aubio_sink instead
    6 // see src/io/sink.h and tests/src/sink/test-sink.c
     5// this file uses the unstable aubio api to test aubio_sink_wavwrite, please
     6// use aubio_sink instead see src/io/sink.h and tests/src/sink/test-sink.c
    77
    88int main (int argc, char **argv)
     
    1111
    1212  if (argc < 3) {
    13     err = 2;
    14     PRINT_ERR("not enough arguments\n");
     13    PRINT_ERR("not enough arguments, running tests\n");
     14    err = run_on_default_source_and_sink(main);
    1515    PRINT_MSG("usage: %s <input_path> <output_path> [samplerate] [channels] [hop_size]\n", argv[0]);
    1616    return err;
     
    7272beach_source:
    7373#else
    74   err = 3;
     74  err = 0;
    7575  PRINT_ERR("aubio was not compiled with aubio_sink_wavwrite\n");
    7676#endif /* HAVE_WAVWRITE */
  • tests/src/io/test-sink_wavwrite.c

    r5b46bc3 r633400d  
    1111
    1212  if (argc < 3) {
    13     err = 2;
    14     PRINT_ERR("not enough arguments\n");
     13    PRINT_ERR("not enough arguments, running tests\n");
     14    err = run_on_default_source_and_sink(main);
    1515    PRINT_MSG("usage: %s <input_path> <output_path> [samplerate] [hop_size]\n", argv[0]);
    1616    return err;
     
    6161beach_fvec:
    6262#else
    63   err = 3;
     63  err = 0;
    6464  PRINT_ERR("aubio was not compiled with aubio_sink_wavwrite\n");
    6565#endif /* HAVE_WAVWRITE */
  • tests/src/io/test-source.c

    r5b46bc3 r633400d  
    66  uint_t err = 0;
    77  if (argc < 2) {
    8     err = 2;
    9     PRINT_ERR("not enough arguments\n");
     8    PRINT_ERR("not enough arguments, running tests\n");
     9    err = run_on_default_source(main);
    1010    PRINT_MSG("read a wave file as a mono vector\n");
    1111    PRINT_MSG("usage: %s <source_path> [samplerate] [hop_size]\n", argv[0]);
     
    2323  uint_t hop_size = 256;
    2424  uint_t n_frames = 0, read = 0;
    25   if ( argc == 3 ) samplerate = atoi(argv[2]);
    26   if ( argc == 4 ) hop_size = atoi(argv[3]);
     25  if ( argc >= 3 ) samplerate = atoi(argv[2]);
     26  if ( argc >= 4 ) hop_size = atoi(argv[3]);
    2727
    2828  char_t *source_path = argv[1];
  • tests/src/io/test-source_apple_audio.c

    r5b46bc3 r633400d  
    1010  uint_t err = 0;
    1111  if (argc < 2) {
    12     err = 2;
    13     PRINT_ERR("not enough arguments\n");
     12    PRINT_ERR("not enough arguments, running tests\n");
     13    err = run_on_default_source(main);
    1414    PRINT_MSG("read a wave file as a mono vector\n");
    1515    PRINT_MSG("usage: %s <source_path> [samplerate] [hop_size]\n", argv[0]);
     
    2828  uint_t hop_size = 256;
    2929  uint_t n_frames = 0, read = 0;
    30   if ( argc == 3 ) samplerate = atoi(argv[2]);
    31   if ( argc == 4 ) hop_size = atoi(argv[3]);
     30  if ( argc >= 3 ) samplerate = atoi(argv[2]);
     31  if ( argc >= 4 ) hop_size = atoi(argv[3]);
    3232
    3333  char_t *source_path = argv[1];
     
    5757beach:
    5858#else /* HAVE_SOURCE_APPLE_AUDIO */
    59   err = 3;
     59  err = 0;
    6060  PRINT_ERR("aubio was not compiled with aubio_source_apple_audio\n");
    6161#endif /* HAVE_SOURCE_APPLE_AUDIO */
  • tests/src/io/test-source_avcodec.c

    r5b46bc3 r633400d  
    1010  uint_t err = 0;
    1111  if (argc < 2) {
    12     err = 2;
    13     PRINT_ERR("not enough arguments\n");
     12    PRINT_ERR("not enough arguments, running tests\n");
     13    err = run_on_default_source(main);
    1414    PRINT_MSG("read a wave file as a mono vector\n");
    1515    PRINT_MSG("usage: %s <source_path> [samplerate] [hop_size]\n", argv[0]);
     
    2828  uint_t hop_size = 256;
    2929  uint_t n_frames = 0, read = 0;
    30   if ( argc == 3 ) samplerate = atoi(argv[2]);
    31   if ( argc == 4 ) hop_size = atoi(argv[3]);
     30  if ( argc >= 3 ) samplerate = atoi(argv[2]);
     31  if ( argc >= 4 ) hop_size = atoi(argv[3]);
    3232
    3333  char_t *source_path = argv[1];
     
    5757beach:
    5858#else /* HAVE_LIBAV */
    59   err = 3;
     59  err = 0;
    6060  PRINT_ERR("aubio was not compiled with aubio_source_avcodec\n");
    6161#endif /* HAVE_LIBAV */
  • tests/src/io/test-source_multi.c

    r5b46bc3 r633400d  
    66  sint_t err = 0;
    77  if (argc < 2) {
    8     err = -2;
    9     PRINT_ERR("not enough arguments\n");
     8    PRINT_ERR("not enough arguments, running tests\n");
     9    err = run_on_default_source(main);
    1010    PRINT_MSG("read a wave file as a mono vector\n");
    1111    PRINT_MSG("usage: %s <source_path> [samplerate] [hop_size]\n", argv[0]);
  • tests/src/io/test-source_seek.c

    r5b46bc3 r633400d  
    66  uint_t err = 0;
    77  if (argc < 2) {
    8     err = 2;
    9     PRINT_ERR("not enough arguments\n");
     8    PRINT_ERR("not enough arguments, running tests\n");
     9    err = run_on_default_source(main);
    1010    PRINT_MSG("read a wave file as a mono vector\n");
    1111    PRINT_MSG("usage: %s <source_path> [samplerate] [hop_size]\n", argv[0]);
     
    2424  uint_t n_frames = 0, read = 0;
    2525  uint_t old_n_frames_1 = 0, old_n_frames_2 = 0, old_n_frames_3 = 0;
    26   if ( argc == 3 ) samplerate = atoi(argv[2]);
    27   if ( argc == 4 ) hop_size = atoi(argv[3]);
     26  if ( argc >= 3 ) samplerate = atoi(argv[2]);
     27  if ( argc >= 4 ) hop_size = atoi(argv[3]);
    2828
    2929  char_t *source_path = argv[1];
  • tests/src/io/test-source_sndfile.c

    r5b46bc3 r633400d  
    1010  uint_t err = 0;
    1111  if (argc < 2) {
    12     err = 2;
    13     PRINT_ERR("not enough arguments\n");
     12    PRINT_ERR("not enough arguments, running tests\n");
     13    err = run_on_default_source(main);
    1414    PRINT_MSG("read a wave file as a mono vector\n");
    1515    PRINT_MSG("usage: %s <source_path> [samplerate] [hop_size]\n", argv[0]);
     
    2828  uint_t hop_size = 256;
    2929  uint_t n_frames = 0, read = 0;
    30   if ( argc == 3 ) samplerate = atoi(argv[2]);
    31   if ( argc == 4 ) hop_size = atoi(argv[3]);
     30  if ( argc >= 3 ) samplerate = atoi(argv[2]);
     31  if ( argc >= 4 ) hop_size = atoi(argv[3]);
    3232
    3333  char_t *source_path = argv[1];
     
    5757beach:
    5858#else
    59   err = 3;
     59  err = 0;
    6060  PRINT_ERR("aubio was not compiled with aubio_source_sndfile\n");
    6161#endif /* HAVE_SNDFILE */
  • tests/src/io/test-source_wavread.c

    r5b46bc3 r633400d  
    1010  uint_t err = 0;
    1111  if (argc < 2) {
    12     err = 2;
    13     PRINT_ERR("not enough arguments\n");
     12    PRINT_ERR("not enough arguments, running tests\n");
     13    err = run_on_default_source(main);
    1414    PRINT_MSG("read a wave file as a mono vector\n");
    1515    PRINT_MSG("usage: %s <source_path> [samplerate] [hop_size]\n", argv[0]);
     
    2828  uint_t hop_size = 256;
    2929  uint_t n_frames = 0, read = 0;
    30   if ( argc == 3 ) samplerate = atoi(argv[2]);
    31   if ( argc == 4 ) hop_size = atoi(argv[3]);
     30  if ( argc >= 3 ) samplerate = atoi(argv[2]);
     31  if ( argc >= 4 ) hop_size = atoi(argv[3]);
    3232
    3333  char_t *source_path = argv[1];
     
    3636  aubio_source_wavread_t * s =
    3737    new_aubio_source_wavread(source_path, samplerate, hop_size);
    38 
    3938  if (!s) { err = 1; goto beach; }
    4039  fvec_t *vec = new_fvec(hop_size);
     
    5857beach:
    5958#else
    60   err = 3;
     59  err = 0;
    6160  PRINT_ERR("aubio was not compiled with aubio_source_wavread\n");
    6261#endif /* HAVE_WAVREAD */
  • tests/src/onset/test-onset.c

    r5b46bc3 r633400d  
    11#include <aubio.h>
    22#include "utils_tests.h"
     3
     4int test_wrong_params(void);
    35
    46int main (int argc, char **argv)
     
    79  if (argc < 2) {
    810    err = 2;
    9     PRINT_ERR("not enough arguments\n");
    10     PRINT_MSG("read a wave file as a mono vector\n");
     11    PRINT_WRN("no arguments, running tests\n");
     12    err = test_wrong_params();
    1113    PRINT_MSG("usage: %s <source_path> [samplerate] [hop_size]\n", argv[0]);
    1214    return err;
     
    1618  uint_t hop_size = win_s / 4;
    1719  uint_t n_frames = 0, read = 0;
    18   if ( argc == 3 ) samplerate = atoi(argv[2]);
    19   if ( argc == 4 ) hop_size = atoi(argv[3]);
     20  if ( argc >= 3 ) samplerate = atoi(argv[2]);
     21  if ( argc >= 4 ) hop_size = atoi(argv[3]);
    2022
    2123  char_t *source_path = argv[1];
     
    6163  return err;
    6264}
     65
     66int test_wrong_params(void)
     67{
     68  uint_t win_size = 1024;
     69  uint_t hop_size = win_size / 2;
     70  uint_t samplerate = 44100;
     71  // hop_size < 1
     72  if (new_aubio_onset("default", 5, 0, samplerate))
     73    return 1;
     74  // buf_size < 2
     75  if (new_aubio_onset("default", 1, 1, samplerate))
     76    return 1;
     77  // buf_size < hop_size
     78  if (new_aubio_onset("default", hop_size, win_size, samplerate))
     79    return 1;
     80  // samplerate < 1
     81  if (new_aubio_onset("default", 1024, 512, 0))
     82    return 1;
     83
     84  // specdesc creation failed
     85  if (new_aubio_onset("abcd", win_size, win_size/2, samplerate))
     86    return 1;
     87
     88  aubio_onset_t *o;
     89
     90  // pv creation might fail
     91  o = new_aubio_onset("default", 5, 2, samplerate);
     92  if (o) del_aubio_onset(o);
     93
     94  o = new_aubio_onset("default", win_size, hop_size, samplerate);
     95  if (!aubio_onset_set_default_parameters(o, "wrong_type"))
     96    return 1;
     97  del_aubio_onset(o);
     98
     99  return run_on_default_source(main);
     100}
  • tests/src/pitch/test-pitch.c

    r5b46bc3 r633400d  
    3131  aubio_cleanup ();
    3232
     33  if (new_aubio_pitch(0, win_s, hop_s, samplerate)) return 1;
     34  if (new_aubio_pitch("unknown", win_s, hop_s, samplerate)) return 1;
     35  if (new_aubio_pitch("default", win_s,     0, samplerate)) return 1;
     36  if (new_aubio_pitch("default",     0, hop_s, samplerate)) return 1;
     37  if (new_aubio_pitch("default", hop_s, win_s, samplerate)) return 1;
     38  if (new_aubio_pitch("default", win_s, hop_s,          0)) return 1;
     39
     40  o = new_aubio_pitch("default", win_s, hop_s, samplerate);
     41
     42  if (aubio_pitch_set_unit(o, "freq")) return 1;
     43  if (aubio_pitch_set_unit(o, "hertz")) return 1;
     44  if (aubio_pitch_set_unit(o, "Hertz")) return 1;
     45  if (aubio_pitch_set_unit(o, "Hz")) return 1;
     46  if (aubio_pitch_set_unit(o, "f0")) return 1;
     47  if (aubio_pitch_set_unit(o, "midi")) return 1;
     48  if (aubio_pitch_set_unit(o, "cent")) return 1;
     49  if (aubio_pitch_set_unit(o, "bin")) return 1;
     50  if (!aubio_pitch_set_unit(o, "unknown")) return 1;
     51
     52  if (aubio_pitch_set_tolerance(o, 0.3)) return 1;
     53  if (aubio_pitch_set_silence(o, 0)) return 1;
     54  if (aubio_pitch_set_silence(o, -200)) return 1;
     55  if (!aubio_pitch_set_silence(o, -300)) return 1;
     56  del_aubio_pitch(o);
     57
     58  // fft based might fail with non power of 2
     59  o = new_aubio_pitch("yinfft", win_s + 1, hop_s, samplerate);
     60  if (o) del_aubio_pitch(o);
     61  o = new_aubio_pitch("yinfast", win_s + 1, hop_s, samplerate);
     62  if (o) del_aubio_pitch(o);
     63  o = new_aubio_pitch("fcomb", win_s + 1, hop_s, samplerate);
     64  if (o) del_aubio_pitch(o);
     65  o = new_aubio_pitch("mcomb", win_s + 1, hop_s, samplerate);
     66  if (o) del_aubio_pitch(o);
     67  o = new_aubio_pitch("specacf", win_s + 1, hop_s, samplerate);
     68  if (o) del_aubio_pitch(o);
     69
    3370  return 0;
    3471}
  • tests/src/spectral/test-filterbank.c

    r5b46bc3 r633400d  
    99  fvec_t *out_filters = new_fvec (n_filters); // per-band outputs
    1010
     11  if (new_aubio_filterbank(0, win_s)) return 1;
     12  if (new_aubio_filterbank(n_filters, 0)) return 1;
     13
    1114  // create filterbank object
    1215  aubio_filterbank_t *o = new_aubio_filterbank (n_filters, win_s);
     16
     17  smpl_t power = aubio_filterbank_get_power(o);
     18  smpl_t norm = aubio_filterbank_get_norm(o);
     19  if (aubio_filterbank_set_power(o, power)) {
     20    return 1;
     21  }
     22  if (aubio_filterbank_set_norm(o, norm)) {
     23    return 1;
     24  }
    1325
    1426  // apply filterbank ten times
  • tests/src/spectral/test-mfcc.c

    r5b46bc3 r633400d  
    55  uint_t win_s = 512; // fft size
    66  uint_t n_filters = 40; // number of filters
    7   uint_t n_coefs = 13; // number of coefficients
     7  uint_t n_coeffs = 13; // number of coefficients
    88  smpl_t samplerate = 16000.; // samplerate
    99  cvec_t *in = new_cvec (win_s); // input buffer
    10   fvec_t *out = new_fvec (n_coefs); // output coefficients
     10  fvec_t *out = new_fvec (n_coeffs); // output coefficients
     11
     12  if (new_aubio_mfcc(    0, n_filters, n_coeffs, samplerate)) return 1;
     13  if (new_aubio_mfcc(win_s,         0, n_coeffs, samplerate)) return 1;
     14  if (new_aubio_mfcc(win_s, n_filters,        0, samplerate)) return 1;
     15  if (new_aubio_mfcc(win_s, n_filters, n_coeffs,          0)) return 1;
    1116
    1217  // create mfcc object
    13   aubio_mfcc_t *o = new_aubio_mfcc (win_s, n_filters, n_coefs, samplerate);
     18  aubio_mfcc_t *o = new_aubio_mfcc (win_s, n_filters, n_coeffs, samplerate);
    1419
    1520  cvec_norm_set_all (in, 1.);
  • tests/src/spectral/test-phasevoc.c

    r5b46bc3 r633400d  
    1313  // allocate fft and other memory space
    1414  aubio_pvoc_t * pv = new_aubio_pvoc(win_s,hop_s);
     15
     16  if (new_aubio_pvoc(win_s, 0)) return 1;
     17
     18  if (aubio_pvoc_get_win(pv) != win_s) return 1;
     19  if (aubio_pvoc_get_hop(pv) != hop_s) return 1;
     20
     21  if (aubio_pvoc_set_window(pv, "hanningz") != 0) return 1;
    1522
    1623  // fill input with some data
     
    2936    cvec_print (fftgrain);
    3037
    31     // optionnaly rebuild the signa
     38    // optionally rebuild the signal
    3239    aubio_pvoc_rdo(pv,fftgrain,out);
    3340
  • tests/src/spectral/test-tss.c

    r5b46bc3 r633400d  
    3535  }
    3636
     37  aubio_tss_set_alpha(tss, 4.);
     38  aubio_tss_set_beta(tss, 3.);
     39  aubio_tss_set_threshold(tss, 3.);
     40
    3741  del_aubio_pvoc(pv);
    3842  del_aubio_pvoc(pvt);
  • tests/src/synth/test-sampler.c

    r5b46bc3 r633400d  
     1#include <string.h> // strncpy
     2#include <limits.h> // PATH_MAX
    13#include <aubio.h>
    24#include "utils_tests.h"
     
    68  sint_t err = 0;
    79
    8   if (argc < 4) {
    9     err = 2;
    10     PRINT_ERR("not enough arguments\n");
     10  if (argc < 3) {
     11    PRINT_ERR("not enough arguments, running tests\n");
     12    err = run_on_default_source_and_sink(main);
    1113    PRINT_MSG("usage: %s <input_path> <output_path> <sample_path> [samplerate]\n", argv[0]);
    1214    return err;
     
    1921  char_t *source_path = argv[1];
    2022  char_t *sink_path = argv[2];
    21   char_t *sample_path = argv[3];
    22   if ( argc == 5 ) samplerate = atoi(argv[4]);
     23  char_t sample_path[PATH_MAX];
     24  if ( argc >= 4 ) {
     25    strncpy(sample_path, argv[3], PATH_MAX - 1);
     26  } else {
     27    // use input_path as sample
     28    strncpy(sample_path, source_path, PATH_MAX - 1);
     29  }
     30  sample_path[PATH_MAX - 1] = '\0';
     31  if ( argc >= 5 ) samplerate = atoi(argv[4]);
    2332
    2433  fvec_t *vec = new_fvec(hop_size);
  • tests/src/synth/test-wavetable.c

    r5b46bc3 r633400d  
    77
    88  if (argc < 2) {
    9     err = 2;
    10     PRINT_ERR("not enough arguments\n");
     9    PRINT_ERR("not enough arguments, running tests\n");
     10    err = run_on_default_sink(main);
    1111    PRINT_MSG("usage: %s <output_path> [freq] [samplerate]\n", argv[0]);
    1212    return err;
     
    1818
    1919  char_t *sink_path = argv[1];
    20   if ( argc == 4 ) samplerate = atoi(argv[3]);
    21   if ( argc == 3 ) freq = atof(argv[2]);
     20  if ( argc >= 4 ) samplerate = atoi(argv[3]);
     21  if ( argc >= 3 ) freq = atof(argv[2]);
    2222
    2323  fvec_t *vec = new_fvec(hop_size);
  • tests/src/tempo/test-tempo.c

    r5b46bc3 r633400d  
    11#include <aubio.h>
    22#include "utils_tests.h"
     3
     4int test_wrong_params(void);
    35
    46int main (int argc, char **argv)
     
    68  uint_t err = 0;
    79  if (argc < 2) {
    8     err = 2;
    9     PRINT_ERR("not enough arguments\n");
    10     PRINT_MSG("read a wave file as a mono vector\n");
    11     PRINT_MSG("usage: %s <source_path> [samplerate] [win_size] [hop_size]\n", argv[0]);
     10    PRINT_WRN("no arguments, running tests\n");
     11    err = test_wrong_params();
     12    PRINT_MSG("usage: %s <source_path> [samplerate] [win_size] [hop_size]\n",
     13        argv[0]);
    1214    return err;
    1315  }
     
    2123
    2224  char_t *source_path = argv[1];
    23   aubio_source_t * source = new_aubio_source(source_path, samplerate, hop_size);
     25  aubio_source_t * source = new_aubio_source(source_path, samplerate,
     26      hop_size);
    2427  if (!source) { err = 1; goto beach; }
    2528
     
    3134
    3235  // create tempo object
    33   aubio_tempo_t * o = new_aubio_tempo("default", win_size, hop_size, samplerate);
     36  aubio_tempo_t * o = new_aubio_tempo("default", win_size, hop_size,
     37      samplerate);
     38
     39  if (!o) { err = 1; goto beach_tempo; }
    3440
    3541  do {
     
    4046    // do something with the beats
    4147    if (out->data[0] != 0) {
    42       PRINT_MSG("beat at %.3fms, %.3fs, frame %d, %.2fbpm with confidence %.2f\n",
     48      PRINT_MSG("beat at %.3fms, %.3fs, frame %d, %.2f bpm "
     49          "with confidence %.2f\n",
    4350          aubio_tempo_get_last_ms(o), aubio_tempo_get_last_s(o),
    44           aubio_tempo_get_last(o), aubio_tempo_get_bpm(o), aubio_tempo_get_confidence(o));
     51          aubio_tempo_get_last(o), aubio_tempo_get_bpm(o),
     52          aubio_tempo_get_confidence(o));
    4553    }
    4654    n_frames += read;
     
    5462  // clean up memory
    5563  del_aubio_tempo(o);
     64beach_tempo:
    5665  del_fvec(in);
    5766  del_fvec(out);
     
    6271  return err;
    6372}
     73
     74int test_wrong_params(void)
     75{
     76  uint_t win_size = 1024;
     77  uint_t hop_size = 256;
     78  uint_t samplerate = 44100;
     79  aubio_tempo_t *t;
     80  fvec_t* in, *out;
     81  uint_t i;
     82
     83  // test wrong method fails
     84  if (new_aubio_tempo("unexisting_method", win_size, hop_size, samplerate))
     85    return 1;
     86
     87  // test hop > win fails
     88  if (new_aubio_tempo("default", hop_size, win_size, samplerate))
     89    return 1;
     90
     91  // test null hop_size fails
     92  if (new_aubio_tempo("default", win_size, 0, samplerate))
     93    return 1;
     94
     95  // test 1 buf_size fails
     96  if (new_aubio_tempo("default", 1, 1, samplerate))
     97    return 1;
     98
     99  // test null samplerate fails
     100  if (new_aubio_tempo("default", win_size, hop_size, 0))
     101    return 1;
     102
     103  // test short sizes workaround
     104  t = new_aubio_tempo("default", 2048, 2048, 500);
     105  if (!t)
     106    return 1;
     107
     108  del_aubio_tempo(t);
     109
     110  t = new_aubio_tempo("default", win_size, hop_size, samplerate);
     111  if (!t)
     112    return 1;
     113
     114  in = new_fvec(hop_size);
     115  out = new_fvec(1);
     116
     117  // up to step = (next_power_of_two(5.8 * samplerate / hop_size ) / 4 )
     118  for (i = 0; i < 256 + 1; i++)
     119  {
     120    aubio_tempo_do(t,in,out);
     121    PRINT_MSG("beat at %.3fms, %.3fs, frame %d, %.2f bpm "
     122        "with confidence %.2f, was tatum %d\n",
     123        aubio_tempo_get_last_ms(t), aubio_tempo_get_last_s(t),
     124        aubio_tempo_get_last(t), aubio_tempo_get_bpm(t),
     125        aubio_tempo_get_confidence(t), aubio_tempo_was_tatum(t));
     126  }
     127
     128  del_aubio_tempo(t);
     129  del_fvec(in);
     130  del_fvec(out);
     131
     132  return run_on_default_source(main);
     133}
  • tests/src/temporal/test-filter.c

    r5b46bc3 r633400d  
    99
    1010  aubio_filter_t *o = new_aubio_filter_c_weighting (44100);
     11
     12  if (new_aubio_filter(0))
     13    return 1;
     14
     15  if (aubio_filter_get_samplerate(o) != 44100)
     16    return 1;
     17
     18  if (aubio_filter_set_c_weighting (o, -1) == 0)
     19    return 1;
     20
     21  if (aubio_filter_set_c_weighting (0, 32000) == 0)
     22    return 1;
     23
    1124  in->data[impulse_at] = 0.5;
    1225  fvec_print (in);
     
    1629
    1730  o = new_aubio_filter_a_weighting (32000);
     31
     32  if (aubio_filter_set_a_weighting (o, -1) == 0)
     33    return 1;
     34  if (aubio_filter_set_a_weighting (0, 32000) == 0)
     35    return 1;
     36
    1837  in->data[impulse_at] = 0.5;
    1938  fvec_print (in);
  • tests/src/test-mathutils.c

    r5b46bc3 r633400d  
    103103
    104104  window_size /= 2.;
    105   window = new_aubio_window("triangle", window_size);
     105  window = new_aubio_window("parzen", window_size);
    106106  fvec_print(window);
    107107  del_fvec(window);
     
    117117  test_miditofreq();
    118118  test_freqtomidi();
     119  test_aubio_window();
    119120  return 0;
    120121}
  • tests/src/utils/test-hist.c

    r5b46bc3 r633400d  
    2626    del_fvec(t);
    2727  }
     28  if (new_aubio_hist(0, 1, 0)) return 1;
    2829  return 0;
    2930}
  • tests/src/utils/test-log.c

    r5b46bc3 r633400d  
    1010void logging(int level, const char_t *message, void *data) {
    1111  FILE *out;
    12   fprintf(stdout, "using custom logging function\n");
     12  //fprintf(stdout, "using custom logging function\n");
    1313  if (level == AUBIO_LOG_ERR) {
    1414    out = stderr;
     
    2626  fprintf(stdout, "### testing normal logging\n");
    2727  AUBIO_ERR("testing normal AUBIO_LOG_ERR\n");
     28  AUBIO_INF("testing normal AUBIO_LOG_INF\n");
    2829  AUBIO_WRN("testing normal AUBIO_LOG_WRN\n");
    2930  AUBIO_MSG("testing normal AUBIO_LOG_MSG\n");
     
    3233  fprintf(stdout, "### testing with one custom function\n");
    3334  aubio_log_set_function(logging, (void *)hdr);
    34   AUBIO_ERR("testing recustom AUBIO_LOG_ERR\n");
    35   AUBIO_WRN("testing recustom AUBIO_LOG_WRN\n");
    36   AUBIO_MSG("testing recustom AUBIO_LOG_MSG\n");
    37   AUBIO_DBG("testing recustom AUBIO_LOG_DBG\n");
     35  AUBIO_ERR("testing custom set_function AUBIO_LOG_ERR\n");
     36  AUBIO_INF("testing custom set_function AUBIO_LOG_INF\n");
     37  AUBIO_WRN("testing custom set_function AUBIO_LOG_WRN\n");
     38  AUBIO_MSG("testing custom set_function AUBIO_LOG_MSG\n");
     39  AUBIO_DBG("testing custom set_function AUBIO_LOG_DBG\n");
    3840
    3941  fprintf(stdout, "### testing resetted logging\n");
    4042  aubio_log_reset();
    41   AUBIO_ERR("testing uncustom AUBIO_LOG_ERR\n");
    42   AUBIO_WRN("testing uncustom AUBIO_LOG_WRN\n");
    43   AUBIO_MSG("testing uncustom AUBIO_LOG_MSG\n");
    44   AUBIO_DBG("testing uncustom AUBIO_LOG_DBG\n");
     43  AUBIO_ERR("testing again normal AUBIO_LOG_ERR\n");
     44  AUBIO_INF("testing again normal AUBIO_LOG_INF\n");
     45  AUBIO_WRN("testing again normal AUBIO_LOG_WRN\n");
     46  AUBIO_MSG("testing again normal AUBIO_LOG_MSG\n");
     47  AUBIO_DBG("testing again normal AUBIO_LOG_DBG\n");
    4548
    4649  fprintf(stdout, "### testing per level customization\n");
     
    4851  aubio_log_set_level_function(AUBIO_LOG_WRN, logging, NULL);
    4952  aubio_log_set_level_function(AUBIO_LOG_MSG, logging, (void *)hdr);
    50   AUBIO_ERR("testing custom AUBIO_LOG_ERR\n");
    51   AUBIO_WRN("testing custom AUBIO_LOG_WRN with data=NULL\n");
    52   AUBIO_MSG("testing custom AUBIO_LOG_MSG\n");
    53   AUBIO_DBG("testing uncustomized AUBIO_LOG_DBG\n");
     53  AUBIO_ERR("testing custom set_level_function AUBIO_LOG_ERR\n");
     54  AUBIO_INF("testing again normal AUBIO_LOG_INF\n");
     55  AUBIO_WRN("testing custom set_level_function AUBIO_LOG_WRN with data=NULL\n");
     56  AUBIO_MSG("testing custom set_level_function AUBIO_LOG_MSG\n");
     57  AUBIO_DBG("testing again normal AUBIO_LOG_DBG\n");
    5458
    5559  return 0;
  • tests/utils_tests.h

    r5b46bc3 r633400d  
    55#include <assert.h>
    66#include "config.h"
     7
     8#ifdef HAVE_STRING_H
     9#include <string.h>
     10#endif
     11
     12#ifdef HAVE_UNISTD_H
     13#include <unistd.h> // unlink, close
     14#endif
     15
     16#ifdef HAVE_LIMITS_H
     17#include <limits.h> // PATH_MAX
     18#endif /* HAVE_LIMITS_H */
     19#ifndef PATH_MAX
     20#define PATH_MAX 1024
     21#endif
     22
     23#if defined(HAVE_WIN_HACKS) && !defined(__GNUC__)
     24#include <io.h> // _access
     25#endif
     26
     27// This macro is used to pass a string to msvc compiler: since msvc's -D flag
     28// strips the quotes, we define the string without quotes and re-add them with
     29// this macro.
     30
     31#define REDEFINESTRING(x) #x
     32#define DEFINEDSTRING(x) REDEFINESTRING(x)
     33
     34#ifndef AUBIO_TESTS_SOURCE
     35#error "AUBIO_TESTS_SOURCE is not defined"
     36#endif
    737
    838#ifdef HAVE_C99_VARARGS_MACROS
     
    4878  time_t now = time(0);
    4979  struct tm *tm_struct = localtime(&now);
    50   int seed = tm_struct->tm_sec;
     80  size_t **tm_address = (void*)&tm_struct;
     81  int seed = tm_struct->tm_sec + (size_t)tm_address;
    5182  //PRINT_WRN("current seed: %d\n", seed);
    52   srandom (seed);
     83  srandom ((unsigned int)seed);
    5384}
     85
     86// create_temp_sink / close_temp_sink
     87#if defined(__GNUC__) // mkstemp
     88
     89int check_source(char *source_path)
     90{
     91  return access(source_path, R_OK);
     92}
     93
     94int create_temp_sink(char *sink_path)
     95{
     96  return mkstemp(sink_path);
     97}
     98
     99int close_temp_sink(char *sink_path, int sink_fildes)
     100{
     101  int err;
     102  if ((err = close(sink_fildes)) != 0) return err;
     103  if ((err = unlink(sink_path)) != 0) return err;
     104  return err;
     105}
     106
     107#elif defined(HAVE_WIN_HACKS) //&& !defined(__GNUC__)
     108// windows workaround, where mkstemp does not exist...
     109
     110int check_source(char *source_path)
     111{
     112  return _access(source_path, 04);
     113}
     114
     115int create_temp_sink(char *templ)
     116{
     117  int i = 0;
     118  static const char letters[] = "abcdefg0123456789";
     119  int letters_len = strlen(letters);
     120  int templ_len = strlen(templ);
     121  if (templ_len == 0) return 0;
     122  utils_init_random();
     123  for (i = 0; i < 6; i++)
     124  {
     125    templ[templ_len - i] = letters[rand() % letters_len];
     126  }
     127  return 1;
     128}
     129
     130int close_temp_sink(char* sink_path, int sink_fildes) {
     131  // the file should be closed when not using mkstemp, no need to open it
     132  if (sink_fildes == 0) return 1;
     133  return _unlink(sink_path);
     134}
     135
     136#else // windows workaround
     137// otherwise, we don't really know what to do yet
     138#error "mkstemp undefined, but not on windows. additional workaround required."
     139#endif
     140
     141// pass progname / default
     142int run_on_default_source( int main(int, char**) )
     143{
     144  const int argc = 2;
     145  int err = 0;
     146  char** argv = (char**)calloc(argc, sizeof(char*));
     147  argv[0] = __FILE__;
     148  argv[1] = DEFINEDSTRING(AUBIO_TESTS_SOURCE);
     149  // check if the file can be read
     150  if ( check_source(argv[1]) ) return 1;
     151  err = main(argc, argv);
     152  if (argv) free(argv);
     153  return err;
     154}
     155
     156int run_on_default_sink( int main(int, char**) )
     157{
     158  const int argc = 2;
     159  int err = 0;
     160  char** argv = (char**)calloc(argc, sizeof(char*));
     161  char sink_path[PATH_MAX] = "tmp_aubio_XXXXXX";
     162  int fd = create_temp_sink(sink_path);
     163  if (!fd) return 1;
     164  argv[0] = __FILE__;
     165  argv[1] = sink_path;
     166  err = main(argc, argv);
     167  close_temp_sink(sink_path, fd);
     168  if (argv) free(argv);
     169  return err;
     170}
     171
     172int run_on_default_source_and_sink( int main(int, char**) )
     173{
     174  const int argc = 3;
     175  int err = 0;
     176  char** argv = (char**)calloc(argc, sizeof(char*));
     177  char sink_path[PATH_MAX] = "tmp_aubio_XXXXXX";
     178  int fd = create_temp_sink(sink_path);
     179  if (!fd) return 1;
     180  argv[0] = __FILE__;
     181  argv[1] = DEFINEDSTRING(AUBIO_TESTS_SOURCE);
     182  argv[2] = sink_path;
     183  // check if the file can be read
     184  if ( check_source(argv[1]) ) return 1;
     185  err = main(argc, argv);
     186  close_temp_sink(sink_path, fd);
     187  if (argv) free(argv);
     188  return err;
     189}
  • tests/wscript_build

    r5b46bc3 r633400d  
    88programs_sources = ctx.path.ant_glob('src/**/*.c')
    99
     10test_sound_target = '44100Hz_44100f_sine441_stereo.wav'
     11test_sound_abspath = bld.path.get_bld().make_node(test_sound_target)
     12# workaround to double escape backslash characters on windows
     13test_sound_abspath = str(test_sound_abspath).replace('\\', '\\\\')
     14
     15b = bld(name='create_tests_source',
     16    rule='python ${SRC} ${TGT}',
     17    source='create_tests_source.py',
     18    target=test_sound_target)
     19# use post() to create the task, keep a reference to it
     20b.post()
     21create_tests_source = b.tasks[0]
     22
    1023for source_file in programs_sources:
    1124    target = os.path.basename(os.path.splitext(str(source_file))[0])
    12     bld(features = 'c cprogram test',
     25    a = bld(features = 'c cprogram test',
    1326            source = source_file,
    1427            target = target,
     
    1629            use = uselib,
    1730            install_path = None,
    18             defines = 'AUBIO_UNSTABLE_API=1',
     31            defines = ['AUBIO_UNSTABLE_API=1',
     32                        'AUBIO_TESTS_SOURCE={}'.format(test_sound_abspath)]
    1933       )
     34    a.post()
     35    # make sure the unit_test task runs *after* the source is created
     36    a.tasks[-1].set_run_after(create_tests_source)
Note: See TracChangeset for help on using the changeset viewer.