1 2018-09-22 Paul Brossier <piem@aubio.org>
5 * VERSION: bump to 0.4.7
6 * src/spectral/dct.h: add dct type II object with optimised versions
7 * src/io/, src/notes/, src/pitch: prevent crashes on corrupted files
8 * examples/: fix jack midi output, improve messages when jack disabled
9 * python/: add dct support, minor bug fixes tests and demos
10 * wscript: improve support for BLAS/ATLAS
14 * src/pitch/pitchyinfft.c: fix out of bound read when samplerate > 50kHz
15 thanks to @fCorleone (closes #189, CVE-2018-14523, debian #904906)
16 * src/notes/notes.c: bail out if pitch creation failed (see #188)
17 * src/io/source_wavread.c:
18 - also exit if samplerate is negative (closes #188, CVE-2018-14522,
20 - add some input validation (closes #148 and #158, CVE-2017-17054,
22 * src/io/source_avcodec.c:
23 - give up if resampling context failed opening (see #137, closes #187,
24 CVE-2018-14521, debian #904908)
25 - give up reading file if number of channel changes during stream (closes
26 #137, CVE-2017-17554, debian #884237)
27 - make sure libavutil > 52 before checking avFrame->channels (see #137)
28 - fix build with ffmpeg 4.0, thanks to @jcowgill (closes #168, #173)
29 - avoid deprecated call for ffmpeg >= 4.0
30 * src/onset/onset.c: add dummy default parameters for wphase (closes #150)
34 * examples/parse_args.h: hide jack options if not available, improve error
36 * examples/utils.h: process_block returns void
37 * examples/utils.c: fix examples failing to send more than one JACK midi
38 event per frame, thanks to @cyclopsian (closes #201)
42 * src/spectral/dct.h: add dct type II object with implementation factory
43 * src/spectral/dct_plain.c: add plain dct implementation
44 * src/spectral/dct_ooura.c: add ooura implementation
45 * src/spectral/dct_fftw.c: add fftw implementation
46 * src/spectral/dct_ipp.c: add ipp version
47 * src/spectral/dct_accelerate.c: add vdsp/accelerate dct
48 * tests/src/spectral/test-dct.c: check reconstruction works
49 * src/spectral/mfcc.c: use new dct to compute mfcc
53 * src/aubio_priv.h: avoid hard-coded undefs, split BLAS and ATLAS support,
54 add vdsp scalar add and multiply
59 - add options to disable examples and tests
60 - detect includes for openblas/libblas/atlas
61 * scripts/get_waf.sh: bump to 2.0.11, verify signature if gpg available
62 * python/lib/gen_external.py: pass '-x c' to emcc only
66 * python/lib/gen_code.py: add support for rdo methods
67 * python/tests/test_dct.py: add tests for new dct
68 * python/demos/demo_pitch_sinusoid.py: use // to yield an integer, fixing
69 demo on py3, thanks to @ancorcruz (closes #176)
70 * python/ext/py-musicutils.*: add shift(fvec) and ishift(fvec)
71 * python/tests/test_fvec_shift.py: add tests for shift() and ishift()
72 * python/lib/aubio/cmd.py: fix typo in comment
76 * README.md, doc/statuslinks.rst: use latest for commits-since
77 * examples/parse_args.h: add yinfast to pitch algorithms
78 * doc/requirements.rst: add some blas documentation
79 * doc/requirements.rst: split media/optimisation libraries
80 * doc/develop.rst: fixed spelling error, thanks to Jon Williams (closes #161)
81 * doc/aubio{pitch,notes}.txt: add yinfast to list of pitch methods
83 [ Continuous integration ]
85 * .travis.yml: remove xcode8.2 builds, group osx, add alias pip=pip2
86 * .appveyor.yml: upgrade pip first, always use python -m pip
88 2017-10-02 Paul Brossier <piem@aubio.org>
92 * VERSION: bump to 0.4.6
93 * src/spectral/fft.c, src/*.c: add support for Intel IPP (many thanks to
95 * wscript: add support for emscripten (thanks to Martin Hermant)
96 * src/pitch/pitchyinfast.h: new fast method to compute YIN algorithm
97 * src/pitch/pitchyin*.c: improve confidence measure, making sure its value
98 corresponds to the selected period (thanks to Eduard Mueller)
99 * python/lib/aubio/cmd.py: add `quiet`, `cut`, and `help` subcommands
103 * src/aubio_priv.h: add missing aubio_vDSP_vclr (Eduard Mueller)
104 * src/io/source_avcodec.c: improve error message, prevent un-opened bracket,
105 no declaration after statements for older compilers, avoid unused variable
106 * src/mathutils.c: prevent segfault with Accelerate.framework (closes #58,
108 * src/spectral/phasevoc.h: add aubio_pvoc_set_window to change the windowing
110 * src/mathutils.c: add window type `ones` (no windowing)
114 * python/demos/demo_tapthebeat.py: add a real-time example to play beats
116 * python/lib/gen_external.py: improve parsing and syntax, use results in
117 emscripten build (Martin Hermant)
118 * python/lib/aubio/cmd.py: add option `-u` to `aubio pitch`, improve error
119 messages, add `quiet` subcommand (closes #124), improve syntax, add some
120 documentation, add `cut` and `help` subcommand, add silence and time format
122 * python/lib/aubio/cut.py: upgrade to argparse, set samplerate as needed
123 * python/demos/demo_yin_compare.py: add comparison of yin implementations
124 * python/demos/demo_wav2midi.py: add an example to create a midi from a
125 sound file using mido (closes: #134)
126 * python/demos/demo_bpm_extract.py: use argparse, use beats_to_bpm function
127 * python/ext/py-cvec.c: fix support for pypy by changing setters to return a
128 negative value on error (closes #17)
132 * src/tempo/beattracking.h: fix typo (thanks to Hannes Fritz)
133 * doc/requirements.rst: fix broken link (thanks to @ssj71, closes #99)
134 * doc/aubiomfcc.txt: fix typo in 'coefficients'
138 * python/tests/tests_aubio_{cmd,cut}.py: add basic tests
139 * python/tests/test_filterbank*.py: ignore UserWarnings, clean-up,
140 improve get_coeff tests
144 * wscript: add support for emscripten, see scripts/build_emscripten
145 * scripts/get_waf.sh: update waf to 2.0.1, build waf from source tarball
146 * scripts/build_emscripten: update to build aubio.js
147 * Makefile: add coverage and coverage_report targets, run tests once
149 [ Continuous integration ]
151 * .travis.yml: add coverage report on osx
152 * .appveyor.yml: use msvc 14.0 (VS 2015) and scripts/get_waf.sh
153 * .coveragerc: add minimal python coverage configuration
155 2017-04-10 Paul Brossier <piem@aubio.org>
159 * VERSION: bump to 0.4.5
160 * src/io/source_avcodec.c: add support for libswresample
161 * aubio: new python command line tool to extract information
162 * src/onset/onset.c: add spectral whitening and compression, improve default
164 * this_version.py: use centralized script to get current version, adding git
165 sha when building from git repo (thanks to MartinHN)
169 * src/spectral/awhithening.h: add adaptive whitening
170 * src/{cvec,mathutils,musicutils}.h: add cvec_logmag, fvec_logmag, and fvec_push
171 * src/onset/onset.h: add aubio_onset_set_default_parameters to load optimal
172 parameters of each novelty function, _{set,get}_compression and
173 _{set,get}_awhitening to turn on/off compression and adaptive whitening
174 * src/spectral/specdesc.h: add weighted phase
178 * src/onset/onset.c: improve default onset parameters (thanks to @superbock
179 for access to his evaluation database), see commit dccfad2 for more details
180 * src/pitch/pitch.c: avoid segfault when using invalid parameters
181 * src/temporal/biquad.c: fix biquad parameters initialization (thanks to
186 * examples/aubio{onset,track}.c: add options --miditap-note and
187 --miditap-velo to set which midi note is triggered at onset/beat (thanks to
189 * examples/aubioonset.c: show actual parameters in verbose mode
190 * examples/utils.c: improve memory usage to emit midi notes
194 * python/ext/py-source.c: add with (PEP 343) and iter (PEP 234) interface
195 * python/ext/py-sink.c: add with interface (PEP 343)
196 * python/lib/aubio/cmd.py: new `aubio` command line tool
197 * python/lib/aubio/cut.py: moved from python/scripts/aubiocut
201 * doc/*.rst: reorganize and improve sphinx manual
202 * doc/*.txt: update manpages, add simple manpage for aubio command line
203 * doc/full.cfg: derive from doc/web.cfg
204 * README.md: simplify and add contribute information
208 * wscript: prefer libswresample over libavsamplerate when available, use
209 current version in manpages, doxygen, and sphinx, update to newest waf
210 * setup.py: use entry_points console_scripts to generate scripts, use
211 centralized version from this_version.py, clean up
212 * python/lib/moresetuptools.py: detect if libswresample is available
214 2017-01-08 Paul Brossier <piem@aubio.org>
218 * VERSION: bump to 0.4.4
219 * src/utils/log.h: new function to redirect log, error, and warnings
220 * python/: AUBIO_ERR raises python exception, AUBIO_WRN to emit py warning
221 * doc/: add some documentation, fix errors in manpages
222 * wscript: new rules to build 'manpages', 'doxygen', and 'sphinx', new
223 --build-type=<release|debug> option (thanks to Eduard Mueller)
224 * src/notes/notes.h: add minioi and silence methods
225 * examples/: add --minioi (minimum inter-onset interval) option
226 * src/pitch/pitchyin.c: improve msvc compiler optimisations (thanks to
228 * python/, src/: improve error messages, fix minor memory leaks
229 * src/io/source_avcodec.c: improve compatibility with latest ffmpeg and with
230 older libav/ffmpeg versions
231 * python/demos/: new demos to capture microphone in real time
235 * src/aubio.h: include utils/log.h
236 * src/utils/log.h: add new aubio_log_set_function to redirect log messages
237 * src/notes/notes.h: add aubio_notes_{get,set}_minioi_ms, add
238 _{get,set}_silence methods
242 * src/aubio_priv.h: add AUBIO_INF to print to stdout with header, use new
243 logging function, add ATAN alias, add stdarg.h, move #include "config.h"
244 * src/{fmat,fvec}.c: avoid integer division
245 * src/pitch/pitchyin.c: [msvc] help compiler to optimize aubio_pitchyin_do
246 by giving it addresses for all arrays which are referenced in inner loops,
247 thanks to Eduard Mueller.
248 * src/pitch/pitch.c: declare internal functions as static, fail on wrong
249 method, warn on wrong unit, improve error messages, fix error string
250 * src/spectral/specdesc.c: return NULL if wrong mode asked, remove trailing
252 * src/onset/onset.c: return null and clean-up if new_aubio_specdesc failed,
254 * src/notes/notes.c: use midi note to store pitch candidate, round to
255 nearest note, add a variable to define precision, fix out-of-bound write,
256 fix unset silence_threshold, fix error message
257 * src/spectral/ooura_fft8g.c: add cast to avoid conversion warnings, prefix
258 public function with aubio_ooura_ to avoid with other apps using ooura (e.g.
259 puredata), make internal functions static,
260 * src/spectral/fft.c: add message about fftw3 being able to do non-power of
261 two sizes, make calls to fftw_destroy_plan thread-safe, use prefixed
263 * src/spectral/phasevoc.c: fix error string
264 * src/temporal/resampler.c: throw an error when using libsamplerate with doubles
265 * src/io/ioutils.h: add functions to check samplerate and channels, use in sink_*.c
266 * src/io/source.c: add error message when aubio was compiled with no source,
267 only show error message from last child source_
268 * src/io/source_avcodec.c: call avformat_free_context after
269 avformat_close_input, keep a reference to packet to remove it when closing
270 file, avoid deprecation warnings with ffmpeg 3.2, add backward compatibility
271 for libavcodec55, fix for old libavcodec54, use AV_SAMPLE_FMT_DBL when
272 compiling with HAVE_AUBIO_DOUBLE, fix missing samples in eof block, avoid
273 function calls before declarations, improve error messages, replace with new
274 context before closing old one, make sure s->path is set to null
275 * src/io/{source_wavread,sink_wavwrite}.c: declare internal functions as static
276 * src/io/source_wavread.c: fix bytes_read for JUNK headers, improve error
277 messages, initialize buffer, skip chunks until data is found, or abort, skip
279 * src/io/source_sndfile.c: add support for multi-channel resampling, set
280 handle to null after sucessful close, add missing floor in ratio comparison,
282 * src/io/sink.c: only show error message from last child sink_
283 * src/io/sink_apple_audio.c: avoid crash on empty file name
284 * src/io/sink_sndfile.c: improve error message
285 * src/io/sink_{sndfile,wavwrite}.c: use AUBIO_MAX_CHANNELS, fix error message
289 * README.md: update copyright dates, use https
290 * src/aubio.h: add some links to examples, use https
291 * src/pitch/pitch.h: add aubio_pitch_get_tolerance, add basic description of
293 * src/notes/notes.h: add doxygen header
294 * src/spectral/fft.h: strip example path
295 * doc/*.rst: improve sphinx documentation
296 * doc/android.rst: add reference to it scripts/build_android
297 * doc/debian_packages.rst: added page on debian packages
298 * doc/python_module.rst: add demo_source_simple.py, add note on pip, add
299 `print(aubio.version)`
300 * doc/cli.rst: include command line manpages
301 * doc/cli_features.rst: add matrix of command line features
302 * doc/requirements.rst: add a note about --notests (closes #77), document
303 --msvc options, improve description of options
304 * doc/download.rst: added page on download
305 * doc/installing.rst: update
306 * doc/xcode_frameworks.rst: added page on xcode frameworks
307 * doc/**: use https://aubio.org
308 * doc/conf.py: use pyramid theme, update copyright, remove hardcoded path
309 * doc/web.cfg: exclude ioutils from doc
310 * doc/aubionotes.txt: document -M option (see #18),
311 * doc/aubioonset.txt: add documentation for -M, --minioi, improve threshold
312 description (thanks to Peter Parker), fix typo (onset, not pitch)
313 * doc/aubio*.txt: document -T/--timeformat option
317 * Makefile: add a brief intro, avoid offline operations, add html and dist
318 targets, add rules for documentation, simplify listing, avoid offline
319 operations, bump waf to 1.9.6, check for waf before clean, chmod go-w
320 waflib, improve clean, use pip to install, factorise pip options, generate
321 more test sounds, improve test_python and test_pure_python, pass build_ext
322 in test_pure_python{,_wheel}, quieten uninstall_python if already
323 uninstalled, improve test targets, use bdist_wheel in test_pure_python,
324 build_ext only for --enable-double, verbose waf rules, add cleanwaf
325 * wscript: added debug/release build type configurations release (default)
326 enables optimizations, debug symbols are enabled in both configurations,
327 thanks to Eduard Mueller.
328 * wscript: add options to disable source_wavread/sink_wavwrite, add check
329 for stdarg.h, new rules 'manpages', 'sphinx', and 'doxygen' to build
330 documentation, add version to sphinx and manpages, disable libsamplerate
331 if double precision enabled (libsamplerate only supports float), fix typos,
332 remove trailing spaces, improve tarball creation (./waf dist), remove
333 full.cfg from tarball, prepend to CFLAGS to honor user cflags
334 * wscript, src/wscript_build: improve install locations using DATAROOTDIR,
336 * wscript: default to no atlas for now
337 * src/wscript_build: always build static library
338 * scripts/build_android: add an example script to build aubio on android,
342 * examples/aubionotes.c: use new notes, set minioi, send last note off when
343 needed, add warning for missing options
344 * examples/aubioonset.c: add minioi option, in seconds
345 * examples/: only send a last note off when using jack
346 * examples/: return 1 if object creation failed
347 * examples/: use PROG_HAS_OUTPUT, add PROG_HAS_SILENCE
351 * tests/src/spectral/test-fft.c: fix default size
352 * tests/src/spectral/test-phasevoc.c: fix typos
353 * tests/src/utils/test-log.c: add AUBIO_INF, add example for
354 aubio_log_set_function, improve messages
358 * python/ext/aubiomodule.c: add aubio._aubio.__version__ and import it as
359 aubio.version, use custom logging function for errors and warnings, remove
360 duplicated add_generated_objects, use <> for non local aubio
361 * python/ext/py-cvec.c: use NPY_INTP_FMT
362 * python/ext/py-fft.c: use error string set in src/spectral/fft.c
363 * python/ext/py-phasevoc.c: use error string set in src/spectral/phasevoc.c
364 * python/ext/py-sink.c: always set samplerate and channels in init
365 * python/ext/py-source.c: use error string set in src/io/source.c
366 * python/lib/aubio/midiconv.py: add unicode double sharp and double flat,
367 improve unicode handling, skip UnicodeEncodeError on python 2.x
371 * MANIFEST.in: add src/**.c, exclude full.cfg, include waflib, remove
373 * setup.py: define AUBIO_VERSION use sorted glob.glob to improve
374 reproducibility, remove extra quotes, remove status from version string,
375 update description, use custom build_ext instead of 'generate' command,
376 define HAVE_AUBIO_DOUBLE to 1 if needed
377 * python/lib/gen_code.py: add support for multiple _do outputs, fix number
378 of output, improve del_ function, safer DECREF, fix indentation, emit RuntimeError
379 * python/lib/gen_external.py: clean-up, enable tss, remove duplicate,
381 * python/lib/moresetuptools.py: add HAVE_STDARG_H, also check for
382 HAVE_AUBIO_DOUBLE, cleaner clean, look first for system library, then for
383 local build, then local sources, mo nore fake config.h here, use
384 samplerate in single precision only
385 * python/README.md: add a note about nose2 for python tests (closes #74)
386 * scripts/setenv_local.sh: python3 compat
390 * python/demos/demo_alsa.py: add example using alsaaudio (closes #72)
391 * python/demos/demo_mfcc.py: add options to plot first and second
392 derivatives, and set samplerate/win_s/hop_s, thanks to @jhoelzl (closes #68)
393 * python/demos/demo_notes.py: add simple notes demos
394 * python/demos/demo_pyaudio.py: added simple demo for pyaudio, see #6,
395 closes #78, thanks to @jhoelzl and @notalentgeek, add some comments, avoid
396 overwriting aubio.pitch
397 * python/demos/demo_source_simple.py: fix indentation, make executable
398 * python/demos/demo_timestretch{,_online}.py: fix usage string, remove
399 unused import, use // to yield an integer (closes #71)
400 * python/demos/demo_timestretch_online.py: use 512, fix block counter
401 * python/demos/demo_tss.py: improve default parameters, exit before plotting
405 * python/tests/: use local import, add __init__.py
406 * python/tests/test_cvec.py: simplify
407 * python/tests/test_fft.py: skip test fft(zeros).phas == 0 if needed, expected powerpc
408 * python/tests/test_fvec.py: reduce alpha norm precision to 10.-4
409 * python/tests/test_{midi2note,note2midi}.py: use nose2.params, add unicode tests
410 * python/tests/test_notes.py: add basic tests
411 * python/tests/test_notes.py: test results are correct for 44100Hz_44100f_sine441.wav
412 * python/tests/test_sink.py: add more tests, quiet warnings
413 * python/tests/test_source.py: break long line, check the tail of the file
414 is non-zero on non silent test files, filter user warnings to avoid spamming
415 the console, only check if last frames are non silent on brownnoise (weak),
416 remove fragile brownnoise test, check duration on short files, use nose2
417 params to process one sound file per test
418 * python/tests/test_specdesc.py: RuntimeError is now raised on wrong mode
419 * python/tests/utils.py: by default, use 5 seconds brownoise
423 * .travis.yml: add debian dpkg-buildflags config, switch from precise to
424 trusty, sudo required, add ffmpeg on osx, add targets ios, iosimulator,
425 and osx noopt configs, bump to xcode8, add xcode8.2 config, mimick
426 build_apple_frameworks options, alway upgrade pip, add pip --version and
427 which pip after upgrading, remove --user, use expandwaf in install, remove
428 unused ARCH, shuffle order, remove duplicate, add missing opening quote,
429 use AUBIO_NOTESTS to build only lib on ios, add gitter webhook
430 * .appveyor.yml: fix path for windows+python 3.5, fix typo in path, make
433 2016-08-16 Paul Brossier <piem@aubio.org>
437 * src/io/source.h, src/io/source_*.h: add _get_duration
438 * src/notes/notes.h: add basic notes object
439 * src/tempo/beattracking.{c,h}: add _get_period and _get_period_s
440 * src/mathutils.h: add fvec_ishift
441 * src/fvec.{c,h}: add fvec_weighted_copy
442 * src/tempo/tempo.{c,h}: add _get_period and _get_period_s, also add tatum,
443 a subdivision of the beat period, default to 4, implement get/set_delay
444 * src/**.{c,h}: use #ifdef HAVE_FOO, not #if _HAVE_FOO, add const qualifiers
445 to unmodified pointers (see #35)
449 * src/{fmat,fvec,mathutils}.c: optimisations (using atlas or Accelerate when
450 available) for fvec_sum, fvec_mean, fvec_shift, aubio_level_lin,
451 fvec_set_all, fvec_zeros, fvec_weight, fvec_copy, fvec_weighted_copy,
453 * src/aubio_priv.h: check for atlas cblas, use cblas_xswap, vDSP_dotpr,
454 protect SQR parameters, avoid redefining MIN/MAX, define PATH_MAX and PI
455 when needed, use _isnan on windows msvc 9 to avoid linking error, more
457 * src/mathutils.c: avoid for loop initial declarations [gcc], use
458 HAVE_ATLAS, use smpl_t for constants
459 * src/fmat.c: skip asserts
460 * src/spectral/{filterbank,mfcc}.c: use accelerated fmat_vecmul
461 * src/spectral/fft.c: fftw can be used odd length sizes, not Ooura,
462 factorise double / single flags, use memcpy
463 * src/spectral/phasevoc.c: fix arguments checks, return NULL when fft
464 creation failed , apply windowing for resynthesized grain, use ishift for
465 odd windows, fix scaling factors for correct reconstruction at 50 and 75%
467 * src/pitch/pitch.c: allow for silence == 0, improve error messages
468 * src/pitch/pitchmcomb.c: fix candidates sorting function, really comparing
470 * src/notes/notes.c: equivalent to previous examples/aubionotes.c results
471 * src/onset/onset.c: simplify selection of first onset, fix for "conversion
472 from 'smpl_t' to 'uint_t', possible loss of data" with msvc
473 * src/pitch/pitchmcomb.c: scan across all spectrum
474 * src/pitch/pitchyinfft.c: use fvec_weighted_copy
475 * src/{spectral/*.c,onset/*.c,tempo/*.c}: make sure win_size > 1
476 * src/io/*.c: use custom defines for {source,sink}_apple_audio, take a copy
478 * src/io/source_avcodec.c:
479 - update to libav10, libavcodec 55.34.1
480 - avoid deprecation warning, detect if we use ffmpeg or libav version
481 - check if the uri is a network stream using av_url_split, call
482 avformat_network_init() if needed
483 - check if we still need max_analyze_duration2 (closes #53, thanks to
485 * src/io/source_{avcodec,sndfile}.c: avoid modifying input param
486 * src/io/{sink,source,utils}_apple_audio.c: fix memory leak calling
487 CFRelease (closes #26, closes #27, and closes #28)
488 * src/io/sink_apple_audio.c: disable async mode for now, factorise code
489 * src/io/source_apple_audio.c: check out of bounds _seek, set s->path, quiet
490 * src/io/source_sndfile.c: fix crash, zero-pad output vector when
491 upsampling, use sf_read_double when compiling with AUBIO_DOUBLE, approximate
492 duration when resampling
493 * src/io/sink_sndfile.c: fix for double precision
494 * src/synth/sampler.c: fix typo, keeps a copy of uri
495 * src/tempo/tempo.c: do not write novelty function in output[1]
496 * src/temporal/resampler.c: make msvc happier adding a dummy variable
497 * src/temporal/filter.c: check parameters, fix filter_do_outplace to really
498 avoid modifying input
499 * src/utils/windll.c: add dll main entry point
504 - new build system, new code generator
505 - Python 3 compatibility (#33), thanks to Nils Philippsen (@nphilipp)
506 - double precision compatibility
507 - simplify memory allocations, removed unneeded malloc/free calls
508 - fix memory leak (#49), check input sizes (#63) and output sizes (#60)
509 - improve indentation, clean up unused imports and variables
510 - fix comparison to None and to False
511 * setup.py: move from python/setup.py, add option to build libaubio inside
512 python-aubio (for instance with pip), add command 'generate' with option
513 '--enable-double', build with -Wdeclaration-after-statement -Werror
514 * python/ext/aubiomodule.c: fix PyMethodDef sentinel
515 * python/ext/aubioproxy.c: factorize input checks into
516 PyAubio_IsValidVector, fix windows c89 compilation, use npy_intp, not long
517 * python/ext: rewrite and simplify, safer and improved memory usage (#49),
518 improve error strings, verify actual object creation
519 * python/ext/py-source.c: added duration, check seek is not negative
520 * python/ext/py-musicutils.c: do not overwrite PyArg_ParseTuple messages
521 * python/lib/gen_code.py: new generator, switch to using custom PyObjects
522 instead of fvec, cvec, fmat, ready for double precision (defaults to single)
523 * python/lib/aubio__init__.py: use new aubio.float_type, make sure length is
524 not zero and float_type is imported
525 * python/lib/aubio/midiconv.py: fix instance checks, make sure midi2note
527 * python/lib/aubio/slicing.py: fix samplerate
528 * python/ext/aubio-types.h: add new_py_ functions to create PyObjects
529 instead of fvec_t, apply to generated and hard-coded objects
530 * python/lib/gen_external.py: improve compiler detection, fixes build on
532 * python/lib/moresetuptools.py: helpers for windows and macos compilations
536 * python/demos/demo_reading_speed.py: new reading speed tests, external
537 packages disabled by default
538 * python/demos/demo_timestretch.py: new timescale algorithm
539 * python/demos/demo_timestretch_online.py: new timescale algorithm (online
541 * python/demos/demo_create_test_sounds.py: add script to create simple sound
542 files to test on using sox
543 * python/demos/demo_a_weighting.py: add simple demo for a_weighting
544 * python/demos/demo_filter.py: moved from _a_weighting
545 * python/demos/demo_mfcc.py: use n_coeffs
546 * python/demos/demo_bpm_extract.py: add exception type, avoid {} as default
548 * python/demos/demo_pysoundcard_*: update to pysoundcard 0.5.2 (closes #42)
549 * python/scripts/aubiocut: fix usage string output
553 * python/tests/run_all_tests,*.py: switch to nose2, fix most prospect warnings
554 * python/tests/test_fvec.py: add test_pass_to_numpy, cope with accumulated
556 * python/tests/test_cvec.py: simplify, add more tests
557 * python/tests/test_fft.py: more tests, fft.do to clash on wrong size
558 inputs, f.rdo input size, cvec is large enough, memory tests, avoid
559 VisibleDeprecationWarning
560 * python/tests/test_filterbank.py: check for wrong values, ValueError raised
561 * python/tests/test_filter.py: add tests
562 * python/tests/test_musicutils.py: simplify, check TypeError is raised
563 * python/tests/test_mfcc.py: more tests, check for wrong input size (see #63)
564 * python/tests/test_mathutils: fix test_miditobin test, can also raise
565 NotImplementedError (darwin)
566 * python/tests/test_note2midi.py: more tests, use unicode_literals
567 * python/tests/test_phasevoc.py: add a note about ocasional crash check
568 perfect reconstruction for overlap > 75% add 50% overlap test, fix duplicate
569 test name, add wrong sized input tests
570 * python/tests/test_sink.py: remove useless many_sinks_not_closed and cruft
571 * python/tests/test_source.py: simplify, quieten, skip tests if no test sounds
572 * python/tests/test_specdesc.py: check for wrong values, skip wrong name
573 test, use correct input size (see #63)
574 * python/tests/utils.py: try reopening the file is deleting it fails on windows
575 * python/VERSION: removed, use same VERSION file for libaubio and python-aubio
576 * MANIFEST.in: move from python/, update contents
577 * nose2.cfg: add minimal config, set multiprocess always-on=false (fixes
578 coverage, pass -N to speed up the tests)
582 * examples/*.c: add time format option
583 * examples/{aubioonset,aubiotrack}.c: also emit midi note, thanks to
584 @topas-rec (closes #62)
585 * examples/: use outmsg to print notes (fixes #8)
586 * examples/aubionotes.c: use new aubio_notes object
587 * examples/aubiotrack.c: enable -O and -t options, fix is_beat/is_silence
589 * examples/{parse_args,utils}.h: check in config.h if getopt.h was found, or
590 build without for msvc, more windows hacks
591 * examples/utils.c: change send_noteon to accept floating point midi note number
595 * tests/src/io/test-source_apple_audio.c: shorten long line
596 * tests/src/io/test-source_avcodec.c: use HAVE_LIBAV, closes #10
597 * tests/src/temporal: avoid crash, clarify
598 * tests/src/tempo/test-tempo.c: tempo back to only one output
599 * tests/src/test-delnull.c: improve test, avoid segfaults
600 * tests/src/test-lvec.c: use AUBIO_LSMP_FMT
601 * tests/utils_tests.h: add VA_ARGS versions of variadic macros
602 * tests/utils_tests.h: also use custom srandom/random when compiling with
604 * tests/utils_tests.h: make sure M_PI and RAND_MAX are defined
608 * Makefile: set waf to 1.8.22 for now, new targets create_test_sounds,
609 build_python, test_python, clean_python, build_python3, clean_python3,
610 test_pure_python, test_pure_python_wheel, (use test_pure_* targets to build
611 without libaubio), use 'HAVE_DOUBLE=1 make' to build in double precision
612 * scripts/build_apple_frameworks: add script to build macosx and ios
613 frameworks (see #34, #43)
614 * scripts/build_emscripten: add script to build with emcc and co
615 * scripts/build_mingw: add script to cross-compile using mingw
616 * scripts/get_waf.sh: added simple script to fetch latest waf
617 * scripts/setenv_local.sh: set environment to run from built source tree
618 * scripts/setenv_local.sh: update to new python-aubio build location
619 * tests/wscript_build: do not install test programs
620 * tests/wscript_build, src/wscript_build: use 'use =', simplify
621 * src/wscript_build: enable shared lib on ios, static lib on windows
623 - update --enable-foo to fail if foo is not found
624 - add -mmacosx-version-min=10.4 on darwin
625 - add '-fembed-bitcode' on ios (closes #31), min to 6.1
626 - make fat build, add option to not build with Accelerate framework
627 - add option to not build with CoreAudio/AudioToolbox
628 - add --disable-docs option
630 - pass HAVE_AUBIO_DOUBLE in compiler arguments
631 - first check for headers, make getopt.h and unistd.h optional
632 - check HAVE_AV* from ctx.env
633 - make msvc compiler quieter, add /MD and /D_CRT_SECURE_NO_WARNINGS
634 - check if we find atlas/cblas.h
635 - new build platform emscripten
636 - more cleanups and updates
640 * .travis.yml: config for https://travis-ci.org/aubio/aubio
641 * .appveyor.yml: config for https://ci.appveyor.com/project/piem/aubio
642 * .landscape.yml: config for https://landscape.io/github/aubio/aubio
643 * conda recipes: see https://github.com/conda/conda-recipes#387
644 * .gitignore: add python/tests/sounds and .egg-info
648 * src/: remove trailing spaces, improve doxygen strings, update copyrights,
650 * src/onset/onset.h: fix description of get/set_delay functions
651 * src/spectral/mfcc.h: add link to reference implementation
652 * src/spectral/filterbank_mel.h: update reference url
653 * src/musicutils.h: update link to Bernardini's paper, improve doc
654 * doc/aubiomfcc.txt: add a note about the output
655 * doc/*.cfg: update to Doxygen 1.8.8
656 * python/README.md: fix typo (thanks to Sam Alexander), document how to
657 build in a virtualenv (see #2)
658 * README.md: minor updates, link to python/README.md, switch to https
659 * VERSION: bump to 0.4.3
661 2015-08-01 Paul Brossier <piem@aubio.org>
664 * src/onset/onset.h: add aubio_onset_get_silence(), fix description of
665 aubio_onset_get/set_delay functions
666 * src/tempo/tempo.h: add aubio_tempo_get_silence and aubio_tempo_get_threshold
669 * src/io/audio_unit.c: fix deprecation warning (closes #16)
670 * src/io/sink_apple_audio.c: avoid opening null path
671 * src/io/sink_sndfile.c: improve error messages, set nsamples after write
672 * src/io/sink_wavwrite.c: fail if samplerate is way too large, assume
673 windows is little endian to build with mingw32
674 * src/io/source_apple_audio.c: check out of bounds _seek, set s->path, quiet
675 * src/io/source_avcodec.c: update to libav10, libavcodec 55.34.1
676 * src/io/source_sndfile.c: cast to uint_t for now, clarify some variables
677 names, fix crash, zero-pad output vector when upsampling, improve seek errors and strings
678 * src/io/source_wavread.c: avoid orphan parenthesis , cast size_t to int to
679 avoid warning on win64 , improve seek errors processing , sync error message
680 * src/onset/onset.c: avoid doubled onset at start, check parameters
681 * src/pitch/pitch.c: add Hertz as valid unit string, check parameters
682 * src/pitch/pitchyin.c, src/pitch/pitchyinfft.c: avoid producing NaN on silence (closes #7)
683 * src/pitch/pitchyin.{c,h}: fix typo, developed
684 * src/spectral/phasevoc.c: fix argument checks, improve error messages
685 * src/synth/sampler.c: make sure blocksize > 0
686 * src/tempo/beattracking.c: avoid segfault on silence (closes #24)
687 * src/tempo/tempo.c: add silence detection (closes #23), add old behavior in
688 examples/aubiotrack.c, check parameters
689 * src/*.c: fix some useless float conversion
692 * python/ext/aubiomodule.c: improve documentation
693 * python/ext/py-musicutils.c: add silence_detection (closes #21),
694 level_detection, db_spl, level_lin, complete window implementation
695 * python/ext/py-source.c: add channels, add seek (closes #9)
696 * python/demos/demo_a_weighting.py: add simple demo for a_weighting
697 * python/demos/demo_sink_multi.py: add multi channel version
698 * python/demos/, python/demos/: minor improvements, improve syntax (closes #19)
699 * python/setup.py: use setuptools, add numpy to install_requires
702 * waf: removed, now automatically downloaded with make, updated to 1.8.12
703 * Makefile: add target to fetch waf and basic instructions
704 * .travis.yml: added template for travis continuous integration
705 * {examples,src,tests}/wscript_build: add external libs and uselib to targets
706 * src/wscript_build: do not hardocode install path
707 * wscript, src/io/*.c: use custom defines instead of __APPLE__
708 * wscript: make fat build optional, remove iOS sdk versioning
711 * examples/: use outmsg to print notes (fixes #8)
712 * examples/parse_args.h: improve short documentation (closes #12)
713 * doc/*.cfg: remove html timestamps to make build reproducible (see debian bug #779216)
714 * doc/aubiocut.txt: improve documentation
715 * doc/*.rst: add sphinx documentation basis with Makefile and conf.py
716 * README.md: minor updates
717 * python.old: removed old code
718 * tests/: minor bug fixing
720 2014-01-31 Paul Brossier <piem@aubio.org>
723 * src/io/{source_wavread,sink_wavwrite}.h: new source and sink objects to
724 read and write simple wav files when building with no external dependencies
725 * src/io/{source,sink}*.h: added close functions to explicitly close file
726 * src/io/sink*.h: added do_multi, preset_channels, preset_samplerate,
727 get_channels and get_samplerate functions
728 * src/onset/onset.h: added aubio_onset_get_threshold
729 * src/mathutils.h: add fvec_quadratic_peak_mag to find the magnitude of
733 * src/io/source_avcodec.c: implement _seek function
734 * src/io/source_sndfile.c: fixed _seek when signal is resampled
735 * src/spectral/ooura_fft8g.c: use float when double is not needed
736 * src/io/{source,sink}_apple_audio.c: improve error messages
737 * src/spectral/phasevoc.c: optimize swapbuffers by using memcpy
738 * src/lvec.c: add missing lvec_set_sample, improve test
739 * src/tempo/beattracking.c: improve confidence values by using interpolated
740 peak magnitude and avoiding nan
741 * src/tempo/tempo_davies.c: set default novelty function to specflux
744 * python/ext/py-{sink,source}.c: add do_multi and close functions
745 * python/ext/aubio-types.h: set NPY_NO_DEPRECATED_API to version 1.7
746 * python/lib/aubio/slicing.py: new function to slice a source into a list of
748 * python/scripts/aubiocut: add options --cut-until-nsamples and
749 --cut-until-nsclices, thanks to Mark Suppes for requesting, sponsoring,
750 and testing this feature
753 * src/aubio_priv.h: use ifdefs to avoid checking undefined defines
754 * src/**.c: add missing prototypes, avoid some declarations after statement
755 * waf, waflib: update to 1.7.15
757 2013-12-08 Paul Brossier <piem@aubio.org>
759 * Overdue: After more than five years of development behind the curtain,
760 time has come to release a new version of aubio.
762 * General: The library has been completely revised since 0.3.2. The API has
763 seen a major clean up, and has been thoroughly tested. The following list of
764 changes is not exhaustive.
766 * Memory management: allocation and freeing of memory has been optimized in
767 many ways. Several memory leaks and out of bound access have been fixed.
769 * Optimization: the FFT, central to most algorithms, can now be computed
770 using different optimized algorithms, depending on what is available on your
771 platform (FFTW, Ooura, or vDSP). Other simple optimization tricks are
772 included. Most can be deactivated by configuring the build accordingly.
774 * python/: The python interface has been completely rewritten to use numpy C
775 interface, making the aubio python module order of magnitudes faster than
776 the previous version. Several demos and tests are included.
778 * src/: source and header files are now organized in sub-directories.
780 * src/io/source.h: new source readers can now use any or all of libav,
781 CoreAudio, and libsndfile. This means that aubio can now easily read most
782 uncompressed and compressed formats. Compiled with libav, aubio can also
783 read audio from video files, and over the network.
785 * src/io/sink.h: a new sink object lets you write wav files with any number
786 of channels, at any samplerate, using libsndfile or CoreAudio.
788 * src/onset, src/tempo/, src/pitch: the different methods for onset, tempo,
789 and pitch extraction have seen many bug-fixes and optimizations.
791 * src/spectral/specdesc.h: new onset distances and statistical measures have
794 * src/spectral/filterbank.h: new filter bank to compute the energy in any
795 custom-defined frequency bands.
797 * src/spectral/mfcc.h, examples/aubiomfcc.c: a standard implementation of
798 the Mel-Frequency Cepstrum Coefficients algorithm has been added.
800 * src/temporal/{a,c}_weighting.h: standard implementation of the C-weighting
801 and A-weighting pre-processing filters are now provided for most commons
804 * src/synth/wavetable.h, src/synth/sampler.h: provide basic ways to generate
807 * src/fvec.h: fvec_t, the vector object central to most aubio algorithms, is
808 now single channel. This simplifies the code of each algorithm greatly.
810 * src/lvec.h: lvec_t provides a double precision vector, required for some
811 operations to avoid floating point overflow
813 * src/fmat.h: fmat_t provides a single precision matrix, useful for
814 multi-channel operations and to some algorithms such as the spectral filter
817 * examples/: several new options, including new programs, have been
818 included. Refer to the documentation for details.
820 * tests/: several tests and examples programs have been added. This should
821 be a good place to look at to understand how to use aubio.
823 * doc/web.cfg: a simplified Doxygen configuration produces a simpler html
826 * doc/*.txt: the manpages have been rewritten for txt2man.
828 * Build system: the build system has been switched from autotools/automake
829 to waf. Type './waf' or see README.md for instructions on how to use waf.
831 2006-11-10 Paul Brossier <piem@altern.org>
832 * configure.ac: check c compiler for -Wextra option
833 * examples/*: add lash support to aubioonset, aubiotrack, and aubionotes
834 * */Makefile.am: improve compilation on Mac OS X, mingw and cygwin
835 * src/{onset,tempo}.[ch]: add simple c interfaces to onset and tempo tasks
836 * src/beattracking.c: allow the use of two beat trackers simultaneously
837 * examples/tests: add test programs for most c functions
838 * src/*.c: add most missing free calls
839 * src/*.c: fix some out of array writes
840 * src/,ext/: more gcc warning fixes
842 2006-27-06 Paul Brossier <piem@altern.org>
843 * plugins/puredata/Makefile.am: move pd help to pattern-help.pd
844 - thanks goes to Frank Barknecht
845 * ext/sndfileio.c src/aubio_priv.h: fixes memset in aubio_priv.h, remove
846 useless sfinfo.format=0 - thanks karsten wiese
847 * ext/midi/midi_alsa_seq.c: do not call pthread_ in aubio_midi_direct_output
848 - thanks karsten wiese
849 * python/aubio/task/beat.py: task beat() output seconds
850 * python/aubio/task/beat.py: ugly hack to plot beat track anyway
851 * examples/aubionotes.c: fix signed/unsigned mismatches in examples
852 * src/beattracking.c: fix signed/unsigned mismatches in beattracking
853 * src/pitchfcomb.c: fix signed/unsigned mismatches in pitchfcomb
854 * src/pitchschmitt.c: fix signed/unsigned mismatches in pitchscmitt
855 * configure.ac: use -Wextra but unused parameters, fix macos CFLAGS
856 * plugins/puredata/Makefile.am: simplify puredata Makefile.am
857 * python/aubio/Makefile.am: avoid overwriting CFLAGS
858 * examples/Makefile.am: use top_{build,src}dir instead of ../
859 * configure.ac: make configure.ac more readable
860 * python/aubio/task/cut.py: use os.path to derive default output filenames
863 2006-18-05 Paul Brossier <piem@altern.org>
864 * src/pitchyinfft.{c,h}: new pitch detection method
865 * src/beattracking.c: algorithm improved
866 * plugins/puredata/: new puredata external
867 * python/tasks: enhancements to the onset detection algorithms
868 * python/aubiocut: improved, can now slice at beats and silences
869 * python/aubiopitch: new python program to extract pitch tracks
870 * python/: plotting features for aubiocut and aubiopitch
871 * python/: interface refactored
872 * doc/: updated documentation
875 2006-18-05 Paul Brossier <piem@altern.org>
876 * src/beattracking.c: added beattracking.c
880 2005-29-03 Paul Brossier <piem@altern.org>
881 * python/aubio/gnuplot.py: clean up and add plotsound
882 * python/aubiocompare-onset: updated
883 * examples/aubioonset.c: fix text output when nframes<4
884 * ext/midi/midi_file.c: by default, int is unsigned on powerpc
885 * python/aubiocut, python/aubio/aubioclass.py: updated
886 * ext/midi/midi_alsa_seq.c: activated threading
887 * configure.ac,Makefile.am: added rules to check presence
888 of swig, python, puredata and docbook-to-man.
890 2005-17-03 Paul Brossier <piem@altern.org>
891 * examples/utils.{c,h}: corrected usedoubled and -O interactions
892 * examples/aubioonset.c: added frames>=4 check (thanks Hamish Allan)
894 2004-12-11 Paul Brossier <piem@altern,org>
895 * swig/Makefile.am: instructions moved to python/aubio and cleaned
896 * python/aubiocut: corrected slicing on multichannel files
897 * VERSION: bumped to 0.1.8
899 2004-12-06 Paul Brossier <piem@altern.org>
900 * examples/{midi*,testforclam}.c: removed
901 * src/{sndfile,midi*,jackio}.[ch]: moved to ext
903 2004-12-03 Paul Brossier <piem@altern.org>
904 * src/{mathutils,pitchyin}.h: got rid of some shadowed declarations
905 * plugins/puredata: first puredata plugin attempt added
907 2004-11-30 Paul Brossier <piem@altern.org>
908 * configure.ac: added -lmx on macosx
909 * python/aubiocut: seeks for local minima before peak
910 added zero crossing search
911 * src/pitchyinc.c: adds draft for all-in-one faster function
912 * examples/*.c: added ladcca client (needs work)
913 * examples/aubioonset.c: cleaned up verbose stdout
914 * doc/aubio.css: updated
916 2004-10-28 Paul Brossier <piem@altern.org>
917 * src/Makefile.am: added config.h installation
920 2004-10-26 Paul Brossier <piem@altern.org>:
921 * src/pitchdetection.*: moved to src/pitchmcomb.*, now includes a
922 draft driver for transparent use of mcomb or yin
923 * src/pitchmcomb.*: added from old src/pitchdetection.*
926 2004-10-20 Paul Brossier <piem@altern.org>:
927 * configure.ac: made fftw3f, alsa and jack optional
928 * src/fft.{c,h}: now uses FFTW3F_SUPPORT
929 * src/timer.c: #if 0 on win32 version
931 2004-10-18 Paul Brossier <piem@altern.org>:
932 * src/{fft,cvec,pvoc}.c: fixed fft size (N/2+1)
933 * src/{onsetdetection,tss}.c: fixed sizes as well
934 * src/pvoc.c: fixed resynthesis scaling factor (still missing
935 windowing), windowing added in pvoc_rdo
936 * src/fft.h: removed FFTW typedef
937 * configure.ac: removed AC_ISC_POSIX to compile on mingw32
938 * src/fft.c: removed useless fftw3.h include
939 * src/pitchmcomb.c: removed call to vec_adapt_thres (writes out of
942 2004-10-17 Paul Brossier <piem@altern.org>
943 * src/sample.c: removed static _malloc, set all 0. (fixes nan bugs)
944 * examples/*.c: removed useless pvoc inits
945 * src/pitchyin.c: based on de Cheveigne paper
947 2004-09-17 Paul Brossier <piem@altern.org>
948 * configure.ac,src/Makefile.am: cleaned up autotools process
949 * examples/aubio*.c: removed some useless code.
950 * src/sample.c: removed crazy call to memset
952 2004-09-02 Paul Brossier <piem@altern.org>
953 * src/sndfileio.c: removed abusive call to AUBIO_ARRAY,
954 defined MAX_SIZE instead.
955 * src/onsetdetection.c: rewritten free_function.
956 * src/phasevoc.c: in aubio_pvoc_rdo, one way writing only
957 * swig/, python/aubio: added swig wrapper, played a bit with
959 * src/aubio.h: now includes midi_driver.h
961 2004-06-25 Paul Brossier <piem@altern.org>
963 renamed pickparams_t to aubio_pickpeak_t
964 disabled samer_pp (broken)
965 added del_aubio_peakpick
966 added aubio_peakpick_pimrt_wt (thanks mramirez)
967 * python/aubio/onsetcompare.py: now works on huge list
968 thanks goes to Nicolas Wack
969 * examples/aubionotes.c: now outputs NOTEONs
970 * configure.ac: quick hack to disable jack and alsa
971 * examples/*usingjack*: more hacking to disable jack
972 * README: some updates
974 2004-06-23 Paul Brossier <piem@altern.org>
975 * src/*.h: added C++ ifdefs in header files
976 * src/fft.h: removed complex.h include in header
977 * src/hist.c: fixed out of array indexes
978 thanks Miguel Ramirez!
979 * src/Makefile.am: added install headers
980 * doc/Makefile.am: removed dist-hook to update-docs
981 * sounds/Makefile.am: added install hooks
982 * aubio.pc.in: added aubio.pc generation for pkg-config
983 * python: added some evaluation functions
984 * src/aubio_priv.h: moved AUBIO_DBG to stderr
985 * examples/utils.h: now outputs on stdout
986 * examples/midi*.c: fixed compilation with gcc-2.95
989 2004-04-27 Paul Brossier <piem@altern.org>
990 * pitchdetection.c: fixed, still not great
991 * Makefile.am: fixed missing headers (thank you Charbel)
992 * aubioonset,aubionotes: renamed for install (were *demo files)
993 * First working release: 0.1.3
995 2004-01-31 Paul Brossier <piem@altern.org>
996 * pitchdetection.c: working, still a bit too picky
997 * filter.c: sizeable biquad, fixed via pitchtest.c
998 * types.h: added file, all generic system wide types.
999 * tss.c: added some speed improvements
1001 2004-01-20 Paul Brossier <piem@altern.org>
1002 * peakpick.c: working real time onset detection
1003 * biquad.c: needs fixing
1005 2004-01-10 Paul Brossier <piem@altern.org>
1006 * long time i didn't touch this file
1007 * added various objects
1008 * working onsetdetectors
1010 * splitted in a dynamic library
1011 * functions renamed (new_. del_. aubio_._do)
1012 * VERSION: 0.1.0_alpha
1014 2003-11-04 Paul Brossier <piem@altern.org>
1015 * aubio.h: degrouping in modules
1016 * VERSION: 0.0.6_alpha
1018 2003-11-03 Paul Brossier <piem@altern.org>
1019 * phasevoc.c: fixed memory acces
1020 * jackio.c: moving to ringbuffer type implementation
1021 * VERSION: 0.0.4_alpha
1023 2003-11-03 Paul Brossier <piem@altern.org>
1024 * jackio.c: added jack support
1025 * aubioenc.c: fixed memory freeing bugs
1026 * VERSION: 0.0.3_alpha
1028 2003-10-29 Paul Brossier <piem@altern.org>
1029 * aubio.h: Grouping all headers
1030 * makefile.am: Running first make dist
1031 * VERSION: 0.0.2alpha
1033 2003-10-18 Paul Brossier <piem@altern.org>
1034 * aubioenc.c: Working phase vocoder
1035 * VERSION: 0.0.1alpha