Ecasound Changelog

What's new in Ecasound 2.9.1

Jan 4, 2014
  • changed: configure.in renamed to configure.ac as automake 2.0 will drop support for configure.in [ghedo]
  • changed: ecatools now accepts file names with commas [ghedo]
  • changed: build with -D_XOPEN_SOURCE=600, see http://www.unix.org/version3/single_unix_v3.pdf and http://www.unix.org/version3/
  • fixed: compilation errors with Mac Xcode 5.x versions that have dropped llvm-gcc support, reported by Brett Koonce
  • fixed: multiple bugs with ai-remove and ao-remove; reported by Rocco
  • fixed: multiple issues wih ALSA draining (playing the last samples at the end) code added to 2.8.0; reported by Knut Petersen
  • fixed: silenced invalid dbc/runtime warnings from audioio-seqbase.cpp; reported by Julien Claassen
  • fixed: -t:x inaccuracy that increased with larger buffersizes; reported by Knut Petersen

New in Ecasound 2.9.0 (Jun 19, 2012)

  • note: tested to build with the new gcc-4.7.0
  • added: LV2 support using liblilv [jeremysalwen]; sffeat:2541460
  • added: 'stop-sync' command to interactive mode, a syncronous stop call that blocks until engine has halted
  • added: 'cop-bypass' and 'cop-is-bypassed' commands added
  • added: 'c-is-muted' and 'c-is-bypassed' commands
  • changed: new params to 'c-mute' and 'c-bypass'
  • changed: pyeca - now requires python 2.4 or newer; fixes sfbug:3059303
  • changed: removed ecasound.spec file from distribution
  • changed: flush chainop internal state when position is changed with a seek (setpos et al)
  • changed: cop-remove and ctrl-remove
  • fixed: resample, commas in filenames not handled correctly
  • fixed: bug in map-ladspa-list output, param names not printed out correctly
  • fixed: bug in RIFF header generation, incorrect chunk size
  • fixed: bug in saving jack input/output params
  • fixed: seeks with -kf did not work, sfbug:2013828
  • fixed: seeks with -kog did not work, sfbug:2013824
  • fixed: sndfile, seeking beyond end-of-file for inputs
  • fixed: regression with stop+start and -z:db

New in Ecasound 2.8.1 (May 23, 2011)

  • fixed: jack_multi did not work correctly when connecting to a single port
  • fixed: bugfix to mp3/ogg/aac output

New in Ecasound 2.7.2 (Aug 20, 2010)

  • Manual gate (-gm) added. See ecasound(1) for docs.
  • liboil now enabled by default if its development files are
  • found when running configure.
  • Bugfixes.

New in Ecasound 2.7.1 (Feb 22, 2010)

  • note: key changes are described in more detail at: http://eca.cx/relnotes/ecasound_v2_7_1_relnotes.txt
  • fixed: glitches in ALSA capture/playback with some sound hardware/configurations, and using alsa-lib older than 1.0.15; related to deprecated ALSA API function snd_pcm_sw_params_set_xfer_align()
  • fixed: bug in removing audio objects when disk double buffering is used (-z:db); could cause a segfault in some scenarios (e.g. with ecasignalview)
  • fixed: interactive mode; c-selected segfauls if issued with no chainsetup selected
  • fixed: build errors when no liblo is available
  • fixed: interactive-mode; cs-setpos, cs-rewind and cs-forward did not work if chainsetup was connected, and no chains (or an invalid chain) was selected; bug reported by Joel Roth
  • fixed: ecalength choked filenames with whitespace; patch from FUJI project (http://students.mimuw.edu.pl/~tk197881/a8cas/)

New in Ecasound 2.7.0 (Oct 20, 2009)

  • note: key changes are described in more detail at: http://eca.cx/relnotes/ecasound_v2_7_0_relnotes.txt
  • added: new exit code of '4' to ecasound; see entry below about signal handling changes and ecasound(1) for more details
  • added: -eadb chainop, like -ea/-eac, but gain given in dB; documented in ecasound(1)
  • added: -chorder chainop; see ecasound(1)
  • added: optional inner loop optimizations using liboil; enable with '--enable-liboil'
  • added: OSC support added, see ecasound(1) and Documentation/ecasound_osc_interface.txt; sffeat:2541462
  • added: in ncurses mode, honor COLUMNS environment variable
  • added: configure - added '--with-extra-cppflags' and '--with-extra-libs' options
  • added: new 'cop-get' command; see ecasound-iam(1) [alinson]
  • changed: ecasound now defines "-D_XOPEN_SOURCE=500" for all builds, expressing that the codebase expects the build environment be compatible with the Single UNIX Spec v2 (1998); thanks to Jussi Laako for reminding about this
  • changed: yet another change to signal handling in ecasound; now two level response to signals is supported in all stages of process termination -> first starting normal cleanup and exit procudere, and with second signal terminate immediately; see ecasound(1) for the full story (new 'SIGNALS' section)
  • changed: dropped "-funroll-loops" from the set of default compiler options
  • changed: comment out many entries in the global installed 'ecasoundrc' file (entries are redundant as the same defaults are already set in the program binaries)
  • changed: optimized inner loops in core chain routing and mixdown functions (with liboil if available)
  • changed: optimized inner loops of -ea, -eadb, -eac, and -epp
  • changed: dropped tracking of 'clipped samples' from -ev as the results were of little use (and misleading)
  • changed: '-ev' status output
  • changed: cosmetic changes to the default ncurses trace output; reduced number of subsystem-level trace messages
  • changed: the name for default chainsetup created from command line is now "untitled-chainsetup"
  • changed: do not automatically connect chainsetups loaded with '-s'
  • fixed: mp3 output was broken with lame 3.98 (and newer); the default lame parameters have now been updated and have been tested with lame 3.96, 3.97 and with the latest 3.98.2
  • fixed: bad audio with 'resample' object, non-integer sampling rate change ratios and output to JACK; ecasound did emit warning about this, but did not raise a fatal error; now the underlying problem is fixed and now 'resample' and 'jack' objects maybe safely used together
  • fixed: minor bug in ecamonitor; "cop-status" was used with multiple chains selected
  • fixed: don't use '--ignore-fail-on-non-empty' rmdir option as it is not available on many platforms (e.g. OS X) and this breaks the uninstall target; sfbug:2772628
  • fixed: bug in ecasound frontend parser for '-E' option that broken passing arguments containing the substring "-E"; introduced in 2.5.2 release
  • fixed: stale audio was written to JACK output ports in case of multiple streams, connected to different JACK ports, reaching end-of-stream at different times [jedahu]

New in Ecasound 2.6.0 (Feb 10, 2009)

  • added: new optional params to 'jack' -> 'jack,clientname,portprefix'; replaces old interfaces 'jack_auto', 'jack_generic' and 'jack_alsa'; see ecasound(1) for more details
  • added: interactive mode - new commands 'jack-connect', 'jack-disconnect' and 'jack-list-connections'; see ecasound-iam(1) for details; closes sffeat:2134183
  • added: 'jack_multi', see ecasound(1); closes sffeat:1415822
  • added: ecasound options '--server', '--server-tcp-port' and '--no-server'; these replace the misleading old options '--daemon', '--nodaemon' and '--daemon-port', which are now deprecated
  • added: extended unit tests to cover option parsing, with some initial test cases
  • added: unit test framework - minor improvements including abilitity to select which cases to run
  • added: ECI - functions eci_ready() and eci_ready_r() added to ecasoundc.h, and ECA_CONTROL_INTERACE::ready() to the C++ API
  • changed: deprecated 'jack_auto', 'jack_generic' and 'jack_alsa'
  • changed: numbering of JACK ports created with 'jack' and 'jack_generic' starts from "_1" separately for each prefix [dsacre]
  • changed: deprecated 'ai-wave-edit', 'ao-wave-edit' commands and the 'ext-cmd-wave-editor' ecasoundrc field
  • changed: emit a 'subsystem' level trace message when engine state changes to finished
  • changed: interactive mode - minor update to 'status' command output
  • changed: compile libecasoundc as PIC code to make it possible to use it from shared libraries; fixes problems with e.g. Audio::Ecasound on amd64 architecture ; closes sfbug:2505551
  • changed: ecasound option -f now accepts empty arguments for sample format, channel count and sampling rate; empty argument states that ecasound can pick a suitable value, either the default value or e.g. the JACK system sampling rate; updated documentation, see ecasound(1)
  • changed: minor update to ecasound's "--help"
  • changed: when reading RIFF WAVE files, properly ignore any unknown subchunk types
  • changed: largefile support (+2GiB files) is now enabled by default and configure uses's default autoconf macro AC_SYS_LARGEFILE to perform the checks; to explicitly disable, use '--disable-largefile'; the old '--with-largefile' no longer has any effect
  • changed: refactored ECI C impl code to get rid of all fixed size buffers from the parser; this makes the implementation more robust, reduces memory usage and provides a small speed-up to most ECI apps; closes sfbug:1412409
  • fixed: do not limit max-gain reported by '-ev' to [1,max] value range
  • fixed: avoid denormal numbers in '-ete' (leads to unusually high CPU load)
  • fixed: 'dump-cop-value' did not work as documented
  • fixed: ECI - signal an error (e.g. eci_error() returns true) if connection is lost to engine process (sync lost
  • or an other error)
  • fixed: ecasignalview - exit if engine reports an error during operation
  • fixed: interactive mode - loop devices saved with incorrect syntax, affects cs-save, cs-save-as and cs-edit ; see
  • http://eca.cx/ecasound-list/2009/01/0058.html
  • fixed: problems when seeking back to start with setups using loop devices; closes sfbug:2527049
  • fixed: segfault if using a tone generator input with a fixed lenght, and a seek past the end of stream was performed
  • fixed: aac/ogg/mikmod/mid inputs - once object reached state 'finished' (all samples played), it cannot be played again by reconnecting the chainsetup
  • fixed: combination of '--server' and '-C' (disable interactive mode) had a bug that prevented processing of commands received over the server socket while the engine was running the batchmode
  • fixed: a nasty bug in 'playat' implementation causing audible artifacts ; see http://eca.cx/ecasound-list/2009/01/0089.html
  • fixed: sndfile and audiofile backends - emit a warning if a seek fails (e.g. when seeking beyond current end-of-file for output objects)
  • fixed: various improvements and fixes related to using non-seekable audio objects (especially interactive use); in most cases this means graceful recovery from failed seek attempts, and correct reporting of the objects actual current position
  • fixed: error is emitted if trying to use 'select' with objects that do not support seeking
  • fixed: bugs with passing 'auto' as the 2nd parameter of 'resample'
  • fixed: bug with seeking resampled audio objects
  • fixed: bug in combined use of 'audioloop' and 'resample'
  • fixed: catch and warn about various errors cases when given incorrect or missing params to audio types: typeselect, resample, reverse, playat, audioloop, select

New in Ecasound 2.5.2 (Aug 25, 2008)

  • fixed: bug in channel routing of LADSPA plugins that have more audio output ports than input ports

New in Ecasound 2.5.1 (Aug 21, 2008)

  • fixed: a last minute change in 2.5.0 that caused build errors with gcc-4.3.1 if ALSA support is disabled
  • fixed: a change in 2.5.0 how process cleanup is initiated from the signal handler caused severe problems on some systems when ecasound was interrupted with e.g. ctrl-c/SIGINT; worst case was a crashed X session which is of course really, really bad
  • fixed: a bug in registering LADSPA plugins; on some systems not all found plugins were registered properly to ecasound's object maps causing some plugins to be unusable; errors

New in Ecasound 2.5.0 (Aug 18, 2008)

  • Added a new audio looper object. For instance "-i:audioloop,foo.wav" will play "foo.wav" and loop it indefinitely. See http://eca.cx/examples and ecasound(1) man page for more information.
  • Added a new audio selector object. Specifying "-i:select,5,15.2,foo.wav" will play out 15.2sec of "foo.wav", starting at position 5sec (i.e. selects range 5.0-20.2sec). See http://eca.cx/examples and ecasound(1) man page for more information.
  • Added a new sequencer object that allows to play audio clips at a given position. Specifying "-i:playat,25.0,foo.wav" will play out "foo.wav" starting at position 25.0sec (i.e. the first 25.0secs will be silent and then "foo.wav" is played from the beginning). See http://eca.cx/examples and ecasound(1) man page for more information.
  • Ability to stack audio objects. For instance "-i audioloop,reverse,select,10,15,foo.wav" will loop a reversed 15sec segment taken from 10sec onwards from 'file.wav'.
  • Code for Ecasound Wave Files (EWF) has been mostly rewritten to fix longstanding bugs and design issues. This release also marks the ability to write to EWF files as a deprecated feature that will be removed in a later release. One new feature is the ability to specify parameters in terms of samples instead of seconds.
  • Added a simple tone generator object. For example '-i:tone,sine,440,10.3' will produce a 440Hz sine tone with duration of 10.3 seconds. This input type will be especially useful for reproducing bugs in complicated chainsetups, without the need to exchange complete session data (which usually are composed of large amounts of audio files).
  • Added 'reopen-count' parameter to threshold gate (-ge) operator. For instance when recording vinyl/tapes, this allows to automatically restart recording when a new track is started. When the gate is closed, no audio is passed through to the output file, but otherwise recording is kept running. Patch from Andrew Lees.
  • Major update to the "Ecasound Examples": http://eca.cx/examples
  • Updates to ecasound.el (ecasound emacs mode): new ECI commands exported.
  • Various bugs (in runtime functionality, documentation as well as build issues) have been fixed.