|
Ecasound is a Linux software package designed for multitrack audio processing.
Primary tasks Ecasound is designed for
- Harddisk/Multitrack Recording and Mixing - [examples]
Ecasound’s flexible chain-based design makes it a powerful tool for multitrack recording and mixing. Once you read through the examples, you’ll notice that recording&mixing has never been this easy. ;)
- Effect Processing - [examples]
Ecasound offers a wide range of effect algorithms (including support for LADSPA effect plugins). Using Ecasound’s chain-concept, effects can be combined in various ways. It’s also possible to save a complex effect setup as a preset. Later on these presets can be used just like a native effect. An important part of the effect system is dynamic control. Oscillators, envelopes and MIDI-control sources can be used to control effect parameters. Check out these few examples of Ecasound preset system and LADSPA plugins and be impressed! :)
- Realtime Signal Routing - [examples]
Route audio signals through external devices or use your computer as an fx-processor for external signals.
- Audio File Playback and Format Conversion - [examples]
As Ecasound supports a wide range of file formats and audio devices, it can also be used as a player and a converter. Notice! There are some issues you should be aware of. See below for more info.
- Automating Audio Processing Tasks - [examples]
Ecasound suits well to scripting and automation. It can be called from shell scripts, launched from graphical programs or used from remote terminal sessions. Additionally Ecasound Control Interface (ECI) offers a more flexible but yet simple way to interact with the Ecasound engine. Implementations of ECI are available for multiple languages (for example C, C++, Python, Perl, PHP and elisp.
Ecasound is not recommended for MIDI sequencing, sequencing loops or short audio clips, sound synthesis or bitwise file conversions.
Features
- Novel user-interface concept
What makes Ecasound unique is its non-graphical user-interface. The basic working principle of ecasound is similar to the widely used gdb (software debugging) and mysql (database admin) tools. Ecasound allows the user to perform most common tasks directly from the terminal console. Repeating or otherwise complicated tasks can be easily turned into shell scripts or ECI apps. Ecasound tries to follow the time-tested UNIX design practises - see for example The Art of UNIX Programming by Eric S. Raymond.
- Highly optimized real-time engine
Ecasound’s engine has been developed with real-time reliability as the top priority. The engine clearly separates real-time safe subsystems from non-RT subsystems such as storage access, user-interface code and memory management. This allows Ecasound to deliver reliable playback and recording in all circumstances - even under significant system load.
- Ability to adapt to runtime environment
Ecasound will automatically adjust buffering parameters and other performance related options based on analysis of runtime environment and the requested task. Ecasound does not require you to run it with special privileges, but if available (for example the permission to utilize real-time scheduling), Ecasound will take full advantage and choose more aggressive parameters allowing to further minimize processing latencies while at the same time not risking reliability.
- Support for new Linux audio technology
- Portability and minimal external dependencies
Ecasound runs on various operating systems (GNU/Linux, FreeBSD, Mac OS X, Solaris, Cygwin/win32) and architectures (IA32, PowerPC, ARM, SPARC). Ecasound implements most of its core functionality without relying on external packages. Although Ecasound can utilize numerous external packages, they are all optional. As a mimimum, Ecasound needs POSIX (with 1003.1c thread support) and ANSI C++ runtimes.
Sound processing components
- Sound processing components
- amplify, panning, DC-fix, volume normalization
- channel mixing and routing
- dynamics: noise gate, various compressors, limiter
- filters: lowpass, highpass, bandpass, bandreject, resonant lowpass, resonant bandpass, resonator, comb, inverse comb, allpass
- envelope modulation: pulse gate, tremolo
- time modulation: chorus, flanger, phaser, pitch shift, fake-stereo
- delays: multitap delays, reverbs
- LADSPA effect plugins - hundreds of sound processing plugins available
Parameter controllers
- Controllers (for modifying effect parameters during processing)
- sine oscillator
- generic oscillator (either using an envelope table with static points or with linear interpolation)
- linear envelopes (fade-in, fade-out, custom/generic envelopes)
- MIDI continuous controllers (CC)
Requirements
To run ecasound, you need:
- operating system that provides standard POSIX interfaces; has been tested with various combinations of GNU/Linux (Linux 2.2-2.6 and glibc 2.1-2.3), FreeBSD 4.x, Solaris 2.8, Cygwin 1.3.20
- standard C++ runtime environment; has been tested with libstdc++ 2.9/2.10, 3.x and 4.x
- POSIX threads; has been tested with glibc linuxthreads (libpthread) and Native POSIX Thread Library (NPTL)
Optional packages:
- for soundcard input/output: JACK, ALSA drivers, OSS or OSS/Lite
- for higher quality resampling: libsamplerate
- for .w64/.aiff/.snd/etc file support Libsndfile [Ecasound 2.3.2 and newer]
- for .mp3 file support, mpg123 (input) and lame (output) packages
- for .ogg file support, the vorbis-tools package
- for .aac/.m4a/.mp4 file support FAAC/FAAD2 [Ecasound 2.3.4 and newer]
- for .flac support FLAC [Ecasound 2.3.4 and newer]
- for .aiff and .au/.snd file support, Audiofile SGI audio file library
- for tracker module support, MikMod module player
- for .mid file input Timidity++
- for aRts support - aRts server package
To compile ecasound, you need:
- standard C++ build environment; has been tested with gcc 2.91.66, 2.95.3, 3.0.x, 3.1.x, 3.2.x, 3.3.x, Sun Workshop 6 C5.2 C++ (compiler needs to support STL and exceptions)
- GNU make, automake, autoconf and libtool packages
- binutils-2.9.1.0.15 or newer (exceptions will not work with older releases)
Optional when compiling ecasound:/
- for pyecasound, the Python devel package
- for curses support, the ncurses devel package
- for LADSPA support, the LADSPA SDK package
- for ALSA support, the ALSA devel package
- for JACK support, the JACK devel package
- for .aiff/.au/.snd/etc support Audiofile devel package
- for .w64/.aiff/.snd/etc support Libsndfile devel package [2.3.2 and newer]
- for aRts support, the aRts C-API devel package
- for higher quality resampling, the libsamplerate devel package
Supported audio inputs/outputs
- Supported Audio Inputs/Outputs
- Soundcards via ALSA (Advanced Linux Sound Architecture), audio subsystem for Linux-2.6 and newer kernels
- JACK, a low-latency audio server
- Soundcards via OSS (/dev/dsp), Open Sound System, audio subsystem for various Linux/BSD/UNIX systems
- aRts, audio server (KDE 2.x and newer)
- RIFF WAVE (.wav) files, 8/16/24/32bit non-compressed PCM
- Ecasound Wave Files (.ewf), simple wrapper format for recording and mixing purposes
- Raw/headerless sample data (.raw)
- CDDA (.cdr), on-disc format used on audio-CDs
- MPEG 1.0/2.0 (layers 1, 2 and 3) (.mp3), using mpg123 for input and lame for output
- Ogg Vorbis (.ogg), using ogg123 and vorbize from the vorbis-tools package
- Module formats supported by MikMod, XM, IT, S3M, MOD, MTM, 669, STM, ULT, FAR, MED, AMF, DSM, IMF, GDM, STX
- AIFF (.aiff) and Sun/NeXT audio (.au/.snd) formats using libaudiofile
- W64 (.w64), PVF, VOC and many other formats using libsndfile [2.3.2 and newer]
- FLAC audio files using FLAC [Ecasound 2.3.4 and newer]
- AAC audio (.aac/.m4a/.mp4) support using FAAC/FAAD2 [Ecasound 2.3.4 and newer]
- MIDI files (.mid) - using Timidity++
- standard input/output streams (stdin, stdout) and named pipes
|
|