NAME
ecasound - sample editor, multitrack recorder, fx-processor, etc.
SYNOPSIS
ecasound [ general_options ] { [ chain_setup ] [ effect_setup ] [
input_setup ] [ output_setup ] }
DESCRIPTION
Ecasound is a software package designed for multitrack audio
processing. It can be used for simple tasks like audio playback,
recording and format conversions, as well as for multitrack effect
processing, mixing, recording and signal recycling. Ecasound supports a
wide range of audio inputs, outputs and effect algorithms. Effects and
audio objects can be combined in various ways, and their parameters can
be controlled by operator objects like oscillators and MIDI-CCs. A
versatile console mode user-interface is included in the package.
OPTIONS
Note! All options except those mentioned in ecasound options and Global
options, can be used in ecasound chainsetup files (.ecs).
ECASOUND OPTIONS
These options are parsed and handled by the ecasound frontend
binary and are not passed to backend library. This means that
these options may not work in other applications that use
ecasound libraries for their functionality.
-c Starts ecasound in interactive mode. In interactive mode you can
control ecasound with simple commands ("start", "stop", "pause",
etc.). See ecasound-iam .
-C Disables ecasound's interactive mode (see '-c' and '-K').
-D Print all debug information to stderr (unbuffered, plain output
without ncurses).
-s[:]chainsetup-file
Create a new chainsetup from file 'chainsetup-file' and add it
to the current session. Chainsetup files commonly have a
filename ending to the '.ecs' extension. A chainsetup can
contain inputs, outputs, chains, effects, controllers -- i.e.
objects one one specific configuration of audio processing
elements. A session, on the other hand, is a collection of one
or more chainsetups. Only one of the chainsetups may be
connected (i.e. it can be run/processed). But it is possible to
have another chainsetup select (i.e. can be configured) while
other one is current connteced (i.e. running).
-E "cmd1 [[args] ; cmd2 args ; ... ; cmdN]"
Execute a set of Ecasound Interactive mode (EIAM) commands at
launch. These commands are executed immediately after ecasound
is started. If the command line contains sufficient options to
create a valid chainsetup that will be executed, the launch
commands are executed after the other command line options are
parsed, but before the processing engine is started. Note that
this command is a feature of the ecasound frontend binary and
not supported by the library backend. This means that other
clients may not support the '-E' option, and also that the
launch commands are not saved as part of chainsetup or session
state.
--server
Enables the so called NetECI mode, in which ecasound can be
controlled remotely over a socket connection. When activated,
clients can connect to the running ecasound session, and use
interactive mode commands to control and observe ecasound
processing.
The NetECI protocol is defined in Ecasound's Programmer Guide
One example client using this feature is ecamonitor(1). This
utility is included in the Ecasound distribution package
(requires a working Python environment).
Warning! If the machine running ecasound, is connected to a
public network, be sure to block ecasound's port in your
firewall! As there is no access control implemented for incoming
connections, anyone can otherwise connect, control and observe
your ecasound sessions. This option replaces '--daemon'
(deprecated in 2.6.0).
--server-tcp-port=NNN
Set the TCP port used by the daemon mode. By default ecasound
will use port number 2868. This option replaces '--daemon-port'
(deprecated in 2.6.0).
--no-server
Disable ecasound's daemon mode. This is the default. This
option replaces '--nodaemon' (deprecated in 2.6.0).
--osc-udp-port=NNN
Enables support for Open Source Control (OSC). Ecasound will
listen for incoming OSC messages on UDP port NNN. Ecasound's OSC
interface is documented at:
<http://ecasound.git.sourceforge.net/git/gitweb.cgi?p=ecasound/ecasound;a=blob;f=Documentation/ecasound_osc_interface.txt;hb=HEAD>
Note that OSC support is still experimental and the interface
might change in later versions of Ecasound.
This option was added to ecasound 2.7.0.
--keep-running,-K
Do not exit when processing is finished/stopped. Only affects
non-interactive operating mode (see -c/-C). Option added to
ecasound 2.4.2.
--help,-h
Show this help.
--version
Print version info.
GLOBAL OPTIONS
-d, -dd, -ddd
Increase the amount of printed debug messages. -d adds some
verbosity, while -ddd results in very detailed output.
-d:debug_level
Set the debug level mask to 'debug_level'. This a bitmasked
value with the following classes: errors (1), info (2),
subsystems (4), module_names (8), user_objects (16),
system_objects 32, functions (64), continuous (128) and
eiam_return_values (256). Default is 271 (1+2+4+8+256). See
sourcode documentation for the ECA_LOGGER class for more
detailed information.
-R[:]path-to-file
Use ecasound resource file (see ecasoundrc man page)
'path-to-file' as the only source of setting resource value.
Specifying this option will disable the normal policy of
querying both global and user (if exists) resource files.
-q Quiet mode, no output. Same as -d:0.
GENERAL CHAINSETUP OPTIONS
-a:chainname1, chainname2, ...
Selects active signal chains. All inputs and outputs following
this '-a' option are assigned to selected chains (until a new -a
option is specified). When adding effects, controllers and other
chain operators, only one chain can be selected at a time. If no
-a option has been given, chain 'default' is used instead when
adding objects. Chain name 'all' is also reserved. It will
cause all existing chains to be selected. By giving multiple -a
options, you can control to which chains effects, inputs and
outputs are assigned to. Look at the EXAMPLES section for more
detailed info about the usage of this option.
-n:name
Sets the name of chainsetup to 'name'. If not specified,
defaults either to "command-line-setup" or to the file name from
which chainsetup was loaded. Whitespaces are not allowed.
-x Truncate outputs. All output object are opened in overwrite
mode. Any existing files will be truncated.
-X Open outputs for updating. Ecasound opens all outputs - if
target format allows it - in readwrite mode.
-z:feature
Enables 'feature'. Most features can be disabled using notation
-z:nofeature. '-z:db,dbsize' enables double-buffering for audio
objects that support it (dbsize=0 for default, otherwise buffer
size in sample frames). '-z:nodb' disables double-buffering.
'-z:intbuf' and '-z:nointbuf' control whether extra internal
buffering is allowed for realtime devices. Disabling this can
reduce latency times in some situations. With '-z:xruns',
processing will be halted if an under/overrun occurs.
'-z:multitrack' and 'z:nomultitrack' can be used to force
ecasound to enable or disable multitrack-mode. In rare cases you
may want to explicitly specify the recording offset with
'-z:multitrack,offset-in-samples'. The offset is the amount of
samples skipped when recording from real-time inputs. '-z:psr'
enables the precise-sample-rates mode for OSS-devices.
'-z:mixmode,sum' enables mixing mode where channels are mixed by
summing all channels. The default is '-z:mixmode,avg', in which
channels are mixed by averaging. Mixmode selection was first
added to ecasound 2.4.0. See ecasoundrc man page.
CHAINSETUP BUFFERING AND PERFORMANCE OPTIONS
-B:buffering_mode
Selects the default buffering mode. Mode is one of: 'auto'
(default), 'nonrt', 'rt', 'rtlowlatency'.
-b:buffer size
Sets the size of buffer in samples (must be an exponent of 2).
This is quite an important option. For real-time processing, you
should set this as low as possible to reduce the processing
delay. Some machines can handle buffer values as low as 64 and
128. In some circumstances (for instance when using oscillator
envelopes) small buffer sizes will make envelopes act more
smoothly. When not processing in real-time (all inputs and
outputs are normal files), values between 512 - 4096 often give
better results. Default is 1024.
-r:sched_priority
Use realtime scheduling policy (SCHED_FIFO). This is impossible
if ecasound doesn't have root priviledges. Beware! This gives
better performance, but can cause total lock-ups if something
goes wrong. The 'sched_priority' can be omitted (0=omitted). If
given, this is the static priority to the highest priority
ecasound thread. Other ecasound threads run with priority
'sched_priority-1...n'. Value '-1' can be used to disable
raised-priority mode.
-z:feature
Relevant features are -z:db,xxx (-z:nodb) and -z:intbuf
(-z:nointbuf). See section General chainsetup options for
details.
PROCESSING CONTROL
-t:seconds
Sets processing time in seconds (doesn't have to be an integer
value). If processing time isn't set, engine stops when all
inputs are finished. This option is equivalent to the
'cs-set-length' EIAM command. A special-case value of '-1' will
set the chainsetup length according to the longest input object.
-tl Enables looping. When processing is finished, engine will start
again from beginning. This option is equivalent to the 'cs-loop'
EIAM command.
INPUT/OUTPUT SETUP
See ecasound user's guide for more detailed documentation.
-G:mgrtype,optstring
Sets options for audio object manager type 'mgrtype'. For
available options, see "OBJECT TYPE SPECIFIC NOTES" below.
-f:sample_format,channel,sample-rate,interleaving
Sets the audio stream parameters for subsequent audio objects.
To set different parameters for different audio objects,
multiple '-f' options have to be specified (note the ordering,
the '-f' options should precede the audio objects for them to
have any effect). See documentation for '-i' and '-o' options.
When an audio object is opened (e.g. a file or sound device is
opened, or connection is made to a sound server), the audio
stream parameters are passed to the object. It should be noted
that not all audio objects allow to set any or all of the
parameters. For instance when opening existing audio files,
many file formats have a header describing the file audio
parameters. In these cases the audio file header overrides the
parameters passed with '-f' option. Similarly when creating JACK
inputs and outputs, the JACK server mandates the sampling rate
and sample format.
If no '-f' option is specified, or some of the argument fields
are left empty (e.g. '-f:,2,44100'), ecasound will use default
values. These default values are defined in ecasoundrc
configuration file. See ecasoundrc(5) manual page.
Note that ecasound opens out files by default in update mode.
Unless option '-x' (overwrite outputs) option is given, audio
parameters of an existing audio file take preference over the
params set with '-f'.
Sample format is given as a formatted string. The first letter
is either "u", "s" and "f" (unsigned, signed, floating point).
The following number specifies sample size in bits. If sample is
little endian, "_le" is added to the end. Similarly if big
endian, "_be" is added. If endianess is not specified, host
byte-order is used. Currently supported formats are "u8" (same
as "8"), "s16_le" (same as "16"), "s16_be", "s24_le", "s24_be",
"s32_le", "s32_be", "f32_le" and "f32_be". An empty string ""
picks the system default sample format.
The 4th parameter defines the channel layout. The available
options are 'i' (interleaved' and 'n' (noninterleaved). With the
noninterleaved setting, ecasound will process samples one
channel at a time, and the blocksize is set with '-b'. The
default setting is 'i'.
-y:seconds
Sets starting position for last specified input/output. If you
need more flexible control over audio objects, you should use
the .ewf format.
-i[:]input-file-or-device[,params]
Specifies a new input source that is connected to all selected
chains (chains are selected with '-a:...'). Connecting multiple
inputs to the same chain is not possible, but one input can be
connected to multiple chains. Input can be a a file, device or
some other audio object (see below). If the input is a file, its
type is determined using the file name extension. If the object
name contains any commas, the name must be enclosed in
backquotes to avoid confusing the parser. Currently supported
formats are RIFF WAVE files (.wav), audio-cd tracks (.cdr),
ecasound EWF files (.ewf), RAW audio data (.raw) and MPEG audio
files (.mp2,.mp3). More audio formats are supported via
libaudiofile and libsndfile libraries (see documentation below).
MikMod is also supported (.xm, .mod, .s3m, .it, etc). MIDI files
(.mid) are supported using Timidity++. Similarly Ogg Vorbis
(.ogg) can be read, and written if ogg123 and vorbize tools are
installed; FLAC files (.flac) with flac command-line tools or
using libsndfile; and AAC files (.aac/.m4a/.mp4) with faad2/faac
tools. Supported realtime devices are OSS audio devices
(/dev/dsp*), ALSA audio and loopback devices and JACK audio
subsystem. If no inputs are specified, the first non-option
(doesn't start with '-') command line argument is considered to
be an input.
-o[:]output-file-or-device[,params]
Works in the same way as the -i option. If no outputs are
specified, the default output device is used (see
~/.ecasoundrc). If the object name contains any commas, the name
must be enclosed in backquotes to avoid confusing the parser.
Note, many object types do not support output (e.g. MikMod, MIDI
and many others).
OBJECT TYPE SPECIFIC NOTES
ALSA devices - 'alsa'
When using ALSA drivers, instead of a device filename, you need
to use the following option syntax: -i[:]alsa,pcm_device_name.
ALSA direct-hw and plugin access - 'alsahw', 'alsaplugin'
It's also possible to use a specific card and device combination
using the following notation:
-i[:]alsahw,card_number,device_number,subdevice_number. Another
option is the ALSA PCM plugin layer. It works just like the
normal ALSA pcm-devices, but with automatic channel count and
sample format conversions. Option syntax is
-i[:]alsaplugin,card_number,device_number,subdevice_number.
aRts input/output - 'arts'
If enabled at compile-time, ecasound supports audio input and
output using aRts audio server. Option syntax is -i:arts,
-o:arts.
Audio file sequencing - 'audioloop', 'select', 'playat'
Ecasound provides a set of special audio object types that can
be used for temporal sequencing of audio files - i.e. looping,
playing only a select portion of a file, playing file at a
spefific time, and other such operation.
Looping is possible with -i:audioloop,file.ext,params. The file
name (or any object type understood by Ecasound) given as the
second parameter is played back continuously looping back to the
beginning when the end of file is reached. Any additional
parameters given are passed unaltered to the file object.
Parameters 3...N are passed as is to the child object (i.e. "-i
audioloop,foo.wav,bar1,bar2" will pass parameters "bar1,bar2" to
the "foo.wav" object.
To select and use only a specific segment of an audio object,
the -i:select,start-time,duration,file.ext,params can be used.
This will play "duration" of "file.ext", starting at
"start-time". The time values should be given as seconds (e.g.
"2.25", or as samples (e.g. "25000sa"). Parameters 4...N are
passed as is to the child object.
To play an audio object at a given moment in time, the
-i:playat,play-at-time,file.ext,params can be used. This will
play "file.ext" after position reaches "play-at-time". The time
values should be given as seconds (e.g. "2.25", or as samples
(e.g. "25000sa"). Parameters 2...N are passed as is to the child
object.
Ecasound Wave Files (EWF) - '*.ewf'
A special file format that allows to slice and loop full (or
segments) of audio files. This format is specific to Ecasound.
See ecasound user's guide for more detailed information.
See also audio object types 'audioloop', 'select' and 'playat'.
JACK input/outputs - Overview
JACK is a low-latency audio server that can be used to connect
multiple independent audio application to each other. It is
different from other audio server efforts in that it has been
designed from the ground up to be suitable for low-latency
professional audio work.
JACK input/outputs - 'jack'
Ecasound provides multiple ways to communicate with JACK
servers. To create a JACK input or output object, one should use
-i jack and -o jack. These create JACK client ports
"ecasound:in_N" and "ecasound:out_n" respectively ('N' is
replaced by the channel number). Ecasound automatically creates
one JACK port for each channel (number of channels is set with
-f:bits,channels,rate option).
It is important to note that by default JACK ports are not
connected anywhere (e.g. to soundcard input/outputs, or to other
apps). One thus has to connect the ports with an external
program (e.g. "QJackCtl" or "jack_connect").
JACK input/outputs - 'jack,clientname,portprefix'
"jack,clientname" For simple use scanerios, ecasound provides a
way to autoconnect the ecasound ports. This can be done with by
giving the peer client name as the second parameter to the
"jack" object, e.g. -o jack,clientname. As an example, -o
jack,system will create an output that is automatically
connected to outputs of the default system soundcard. The
client parameter can be omitted, in which case no automatic
connections are made.
If one needs to change the port prefix (e.g. "in" in client name
"ecasound:in_N"), the prefix can be specified as the third
parameter to "jack" object, e.g. -o jack,,fxout. Also the third
parameter can be omitted, in which case the default prefixes
"in" and "out" are used.
JACK input/outputs - 'jack_multi'
A variant of 'jack' object type is 'jack_multi'. The full object
syntax is jack_multi,destport1,...,destportN. When a
'jack_multi' object is connected to a JACK server, first channel
of the object is connected to JACK port 'destport1', second to
'destport2' and so forth. For instance "-f:32,2,44100 -o
jack_multi,foo:in,bar:in" creates a stereo ecasound output
object, with its left and right channels routed to two
difference JACK clients. The destination ports must be active
when the ecasound engine is launched, or otherwise the
connections cannot be established. If destination ports are not
specified for all channels, or zero length strings are given,
those ports are not connected at launch by ecasound.
JACK input/outputs - 'jack_alsa', 'jack_auto', 'jack_generic'
(**deprecated since 2.6.0**)
Ecasound 2.5 and older supported "jack_alsa", "jack_auto" and
"jack_generic" object types, but these are now replaced by a
more generic "jack" interface, and thus are now deprecated (they
work but are no longer documented).
JACK input/outputs - client options
Additionally global JACK options can be set using
-G:jack,client_name,operation_mode option. 'client_name' is the
name used when registering ecasound to the JACK system. If
'operation_mode' is "notransport", ecasound will ignore any
transport state changes in the JACK-system; in mode "send" it
will send all start, stop and position-change events to other
JACK clients; in mode "recv" ecasound will follow JACK start,
stop and position-change events; and mode "sendrecv" (the
default) which is a combination of the two previous modes.
More details about ecasound's JACK support can be found from
Ecasound User's Guide.
Libaudiofile - 'audiofile'
If libaudiofile support was enabled at compile-time, this option
allows you to force Ecasound to use libaudiofile for
reading/writing a certain audio file. Option syntax is
-i:audiofile,foobar.ext (same for -o).
Libsndfile - 'sndfile'
If libsndfile support was enabled at compile-time, this option
allows you to force Ecasound to use libsndfile for
reading/writing a certain audio file. Option syntax is
-i:sndfile,foobar.ext[,.format-ext] (same for -o). The optional
third parameter "format" can be used to override the audio
format (for example you can create an AIFF file with filename
"foo.wav").
Loop device - 'loop'
Loop devices make it possible to route (loop back) data between
chains. Option syntax is -[io][:]loop,tag. If you add a loop
output with tag '1', all data written to this output is routed
to any loop input with tag '1'. The tag can be either numerical
(e.g. '-i:loop,1') or a string (e.g. "-i:loop,vocals"). Like
with other input/output objects, you can attach the same loop
device to multiple chains and this way split/mix the signal.
Note: this 'loop' device is different from 'audioloop' (latter
added to ecasound v2.5.0).
Mikmod - 'mikmod'
If mikmod support was enabled at compile-time, this option
allows you to force Ecasound to use Mikmod for reading/writing a
certain module file. Option syntax is -i:mikmod,foobar.ext.
Null inputs/outputs - 'null'
If you specify "null" or "/dev/null" as the input or output, a
null audio device is created. This is useful if you just want to
analyze sample data without writing it to a file. There's also a
realtime variant, "rtnull", which behaves just like "null"
objects, except all i/o is done at realtime speed.
Resample - 'resample'
Object type 'resample' can be used to resample audio object's
audio data to match the sampling rate used in the active
chainsetup. For example, ecasound -f:16,2,44100 -i
resample,22050,foo.wav -o /dev/dsp, will resample file from
22.05kHz to 44.1kHz and write the result to the soundcard
device. Child sampling rate can be replaced with keyword 'auto'.
In this case ecasound will try to query the child object for its
sampling rate. This works with files formats such as .wav which
store meta information about the audio file format. To use
'auto' in the previous example, ecasound -f:16,2,44100 -i
resample,auto,foo.wav -o /dev/dsp.
Parameters 4...N are passed as is to the child object (i.e. "-i
resample,22050,foo.wav,bar1,bar2" will pass parameters
"bar1,bar2" to the "foo.wav" object.
If ecasound was compiled with support for libsamplerate, you can
use 'resample-hq' to use the highest quality resampling
algorithm available. To force ecasound to use the internal
resampler, 'resampler-lq' (low-quality) can be used.
Reverse - 'reverse'
Object type 'reverse' can be used to reverse audio data coming
from an audio object. As an example, ecasound -i reverse,foo.wav
-o /dev/dsp will play 'foo.wav' backwards. Reversing output
objects is not supported. Note! Trying to reverse audio object
types with really slow seek operation (like mp3), works
extremely badly. Try converting to an uncompressed format (wav
or raw) first, and then do reversation.
Parameters 3...N are passed as is to the child object (i.e. "-i
reverse,foo.wav,bar1,bar2" will pass parameters "bar1,bar2" to
the "foo.wav" object.
System standard streams and named pipes - 'stdin', 'stdout'
You can use standard streams (stdin and stdout) by giving stdin
or stdout as the file name. Audio data is assumed to be in
raw/headerless (.raw) format. If you want to use named pipes,
create them with the proper file name extension before use.
Tone generator - 'tone'
To generate a test tone, input -i:tone,type,freq,duration-secs
can be used. Parameter 'type' specifies the tone type: currently
only 'sine' is supported. The 'freq' parameter sets the
frequency of the generated tone and 'duration-secs' the length
of the generated stream. Specifying zero, or a negative value,
as the duration will produce an infinite stream. This feature
was first added to Ecasound 2.4.7.
Typeselect - 'typeselect'
The special 'typeselect' object type can be used to override how
ecasound maps filename extensions and object types. For instance
ecasound -i typeselect,.mp3,an_mp3_file.wav -o /dev/dsp. would
play the file 'an_mp3_file.wav' as an mp3-file and not as an
wav-file as would happen without typeselect.
Parameters 4...N are passed as is to the child object (i.e. "-i
typeselect,.au,foo.wav,bar1,bar2" will pass parameters
"bar1,bar2" to the "foo.wav" object.
MIDI SETUP
MIDI I/O devices - general
If no MIDI-device is specified, the default MIDI-device is used
(see ecasoundrc(5)).
-Md:rawmidi,device_name
Add a rawmidi MIDI I/O device to the setup. 'device_name' can be
anything that can be accessed using the normal UNIX file
operations and produces raw MIDI bytes. Valid devices are for
example OSS rawmidi devices (/dev/midi00), ALSA rawmidi devices
(/dev/snd/midiC2D0), named pipes (see mkfifo man page), and
normal files.
-Md:alsaseq,sequencer-port
Adds a ALSA MIDI sequencer port to the setup. 'sequencer-port'
identifies a port to connect to. It can be numerical (e.g.
128:1), or a client name (e.g. "KMidimon").
-Mms:device_id
Sends MMC start ("Deferred Play") and stop ("Stop") with device
ID 'device_id'.
While Ecasound does not directly support syncing transport state
to incoming MMC messages, this can be achieved by connecting
Ecasound to JACK input/outputs, and using a tool such as JackMMC
and JackCtlMMC ( see <http://jackctlmmc.sourceforge.net/>) to
convert MMC messages into JACK transport change events.
-Mss Sends MIDI-sync (i.e. "MIDI Start" and "MIDI Stop" system
realtime messages) .to the selected MIDI-device. Notice that as
Ecasound will not send MIDI-clock, but only the start and stop
messages.
EFFECT SETUP
PRESETS
Ecasound has a powerful effect preset system that allows you create new
effects by combining basic effects and controllers. See ecasound user's
guide for more detailed information.
-pf:preset_file.eep
Uses the first preset found from file 'preset_file.eep' as a
chain operator.
-pn:preset_name
Find preset 'preset_name' from global preset database and use it
as a chain operator. See ecasoundrc man page for info about the
preset database.
SIGNAL ANALYSIS
-ev Analyzes sample data to find out how much the signal can be
amplified without clipping. The resulting percent value can be
used as a parameter to '-ea' (amplify). A statistical summary,
containing info about the stereo-image and distribution of
sample values, is printed out at the end of processing.
-evp Peak amplitude watcher. Maintains peak information for each
processed channels. Peak information is resetted on every read.
-ezf Finds the optimal value for DC-adjusting. You can use the result
as a parameter to -ezx effect.
GENERAL SIGNAL PROCESSING ALGORITHMS
-eS:stamp-id
Audio stamp. Takes a snapshot of passing audio data and stores
it using id 'stamp-id' (integer number). This data can later be
used by controllers and other operators.
-ea:amplify%
Adjusts the signal amplitude to 'amplify%' percent (linear
scale, i.e. individual samples are multiplied by
'amplify%/100'). See also '-eadb'.
-eac:amplify%,channel
Amplifies signal of channel 'channel' by amplify-% percent
(linear scale, i.e. individual samples are multiplied by
'amplify%/100'). 'channel' ranges from 1...n where n is the
total number of channels. See also '-eadb'.
-eadb:gain-dB[,channel]
Adjusts signal level by 'gain-dB', with a gain of 0dB having no
effect to the signal, negative gains attenuating the signal and
positive gain values amplifying it. The 'channel' parameter
(1...n) is optional. If 'channel' parameter is specified, and
its value is nonzero, gain is only applied to the given channel
(1...n).
-eaw:amplify%,max-clipped-samples
Amplifies signal by amplify-% percent (linear scale, i.e.
individual samples are multiplied by 'amplify%/100'). If number
of consecutive clipped samples (resulting sample value is
outside the nominal [-1,1] range), a warning will be issued.
-eal:limit-%
Limiter effect. Limits audio level to 'limit-%' (linear scale)
with values equal or greater than 100% resulting in no change to
the signal.
-ec:rate,threshold-%
Compressor (a simple one). 'rate' is the compression rate in
decibels ('rate' dB change in input signal causes 1dB change in
output). 'threshold' varies between 0.0 (silence) and 1.0 (max
amplitude).
-eca:peak-level-%, release-time-sec, fast-crate, crate
A more advanced compressor (original algorithm by John S.
Dyson). If you give a value of 0 to any parameter, the default
is used. 'peak-level-%' essentially specifies how hard the peak
limiter is pushed. The default of 69% is good. 'release_time'
is given in seconds. This compressor is very sophisticated, and
actually the release time is complex. This is one of the
dominant release time controls, but the actual release time is
dependent on a lot of factors regarding the dynamics of the
audio in. 'fastrate' is the compression ratio for the fast
compressor. This is not really the compression ratio. Value of
1.0 is infinity to one, while the default 0.50 is 2:1. Another
really good value is special cased in the code: 0.25 is somewhat
less than 2:1, and sounds super smooth. 'rate' is the
compression ratio for the entire compressor chain. The default
is 1.0, and holds the volume very constant without many nasty
side effects. However the dynamics in music are severely
restricted, and a value of 0.5 might keep the music more intact.
-enm:threshold-level-%,pre-hold-time-msec,attack-time-msec,post-hold-time-msec,release-time-msec
Noise gate. Supports multichannel processing (each channel
processed separately). When signal amplitude falls below
'threshold_level_%' percent (100% means maximum amplitude), gate
is activated. If the signal stays below the threshold for
'th_time' ms, it's faded out during the attack phase of 'attack'
ms. If the signal raises above the 'threshold_level' and stays
there over 'hold' ms the gate is released during 'release' ms.
-ei:pitch-shift-%
Pitch shifter. Modifies audio pitch by altering its length.
-epp:right-%
Stereo panner. Changes the relative balance between the first
two channels. When 'right-%' is 0, only signal on the left (1st)
channel is passed through. Similarly if it is '100', only right
(2nd) channel is let through.
-ezx:channel-count,delta-ch1,...,delta-chN
Adjusts the signal DC by 'delta-chX', where X is the channel
number. Use -ezf to find the optimal delta values.
ENVELOPE MODULATION
-eemb:bpm,on-time-%
Pulse gate (pulse frequency given as beats-per-minute).
-eemp:freq-Hz,on-time-%
Pulse gate.
-eemt:bpm,depth-%
Tremolo effect (tremolo speed given as beats-per-minute).
FILTER EFFECTS
-ef1:center_freq, width
Resonant bandpass filter. 'center_freq' is the center frequency.
Width is specified in Hz.
-ef3:cutoff_freq, reso, gain
Resonant lowpass filter. 'cutoffr_freq' is the filter cutoff
frequency. 'reso' means resonance. Usually the best values for
resonance are between 1.0 and 2.0, but you can use even bigger
values. 'gain' is the overall gain-factor. It's a simple
multiplier (1.0 is the normal level). With high resonance values
it often is useful to reduce the gain value.
-ef4:cutoff, resonance
Resonant lowpass filter (3rd-order, 36dB, original algorithm by
Stefan M. Fendt). Simulates an analog active RC-lowpass design.
Cutoff is a value between [0,1], while resonance is between
[0,infinity).
-efa:delay-samples,feedback-%
Allpass filter. Passes all frequencies with no change in
amplitude. However, at the same time it imposes a
frequency-dependent phase-shift.
-efc:delay-samples,radius
Comb filter. Allows the spikes of the comb to pass through.
Value of 'radius' should be between [0, 1.0).
-efb:center-freq,width
Bandpass filter. 'center_freq' is the center frequency. Width is
specified in Hz.
-efh:cutoff-freq
Highpass filter. Only frequencies above 'cutoff_freq' are passed
through.
-efi:delay-samples,radius
Inverse comb filter. Filters out the spikes of the comb. There
are 'delay_in_samples-2' spikes. Value of 'radius' should be
between [0, 1.0). The closer it is to the maximum value, the
deeper the dips of the comb are.
-efl:cutoff-freq
Lowpass filter. Only frequencies below 'cutoff_freq' are passed
through.
-efr:center-freq,width
Bandreject filter. 'center_freq' is the center frequency. Width
is specified in Hz.
-efs:center-freq,width
Resonator. 'center_freq' is the center frequency. Width is
specified in Hz. Basicly just another resonating bandpass
filter.
CHANNEL MIXING / ROUTING
-chcopy:from-channel, to-channel
Copy channel 'from_channel' to 'to_channel'. If 'to_channel'
doesn't exist, it is created. Channel indexing starts from 1.
Option added to ecasound 2.4.5.
-chmove:from-channel, to-channel
Copy channel 'from_channel' to 'to_channel', and mutes the
source channel 'from_channel'. Channel indexing starts from 1.
Option added to ecasound 2.4.5.
-chorder:ch1,...,chN
Reorder, omit and/r duplicate chain channels. The resulting
audio stream has total of 'N' channels. Each parameter specifies
the source channel to use for given output channel. As an
example, '-chorder:2,1' would reverse the channels of a stereo
stream ('out1,out2' = 'in2,in1'). Specifying the same source
channel multiple times is allowed. For example, '-chorder:2,2'
would route the second channel to both two output channels
('out1,out2' = 'in2,in2'). If 'chX' is zero, the given channel
'X' will be muted in the output stream. Option added to ecasound
2.7.0.
-chmix:to-channel
Mix all source channels to channel 'to_channel'. If
'to_channel' doesn't exist, it is created. Channel indexing
starts from 1. Option added to ecasound 2.4.5.
-chmute:channel
Mutes the channel 'channel'. Channel indexing starts from 1.
Option added to ecasound 2.4.5.
-erc:from-channel,to-channel
Deprecated, see -chcopy.
-erm:to-channel
Deprecated, see -chmix.
TIME-BASED EFFECTS
-etc:delay-time-msec,variance-time-samples,feedback-%,lfo-freq
Chorus.
-etd:delay-time-msec,surround-mode,number-of-delays,mix-%,feedback-%
Delay effect. 'delay time' is the delay time in milliseconds.
'surround-mode' is a integer with following meanings: 0 =
normal, 1 = surround, 2 = stereo-spread. 'number_of_delays'
should be obvious. Beware that large number of delays and huge
delay times need a lot of CPU power. 'mix-%' determines how much
effected (wet) signal is mixed to the original. 'feedback-%'
represents how much of the signal is recycled in each delay or,
if you prefer, at what rate the repeated snippet of delayed
audio fades. Note that sufficiently low feedback values may
result in a number of audible repetitions lesser than what you
have specified for 'number_of_delays', especially if you have
set a low value for 'mix-%'. By default the value for this
parameter is 100% (No signal loss.).
-ete:room_size,feedback-%,wet-%
A more advanced reverb effect (original algorithm by Stefan M.
Fendt). 'room_size' is given in meters, 'feedback-%' is the
feedback level given in percents and 'wet-%' is the amount of
reverbed signal added to the original signal.
-etf:delay-time-msec
Fake-stereo effect. The input signal is summed to mono. The
original signal goes to the left channels while a delayed
version (with delay of 'delay time' milliseconds) is goes to the
right. With a delay time of 1-40 milliseconds this adds a
stereo-feel to mono-signals.
-etl:delay-time-msec,variance-time-samples,feedback-%,lfo-freq
Flanger.
-etm:delay-time-msec,number-of-delays,mix-%
Multitap delay. 'delay time' is the delay time in milliseconds.
'number_of_delays' should be obvious. 'mix-%' determines how
much effected (wet) signal is mixed to the original.
-etp:delay-time-msec,variance-time-samples,feedback-%,lfo-freq
Phaser.
-etr:delay-time,surround-mode,feedback-%
Reverb effect. 'delay time' is the delay time in milliseconds.
If 'surround-mode' is 'surround', reverbed signal moves around
the stereo image. 'feedback-%' determines how much effected
(wet) signal is fed back to the reverb.
LADSPA-PLUGINS
-el:plugin_unique_name,param-1,...,param-N
Ecasound supports LADSPA-effect plugins (Linux Audio Developer's
Simple Plugin API). Plugins are located in shared library (.so)
files in /usr/local/share/ladspa (configured in ecasoundrc man
page). One shared library file can contain multiple plugin
objects, but every plugin has a unique plugin name. This name is
used for selecting plugins. See LAD mailing list web site for
more info about LADSPA. Other useful sites are LADSPA home page
and LADSPA documentation.
-eli:plugin_unique_number,param-1,...,param-N
Same as above expect plugin's unique id-number is used. It is
guaranteed that these id-numbers are unique among all LADSPA
plugins.
GATE SETUP
-gc:start-time,len
Time crop gate. Initially gate is closed. After 'start-time'
seconds has elapsed, gate opens and remains open for 'len'
seconds. When closed, passing audio buffers are trucated to zero
length.
-ge:open-threshold-%,close-thold-%,volume-mode,reopen-count
Threshold gate. Initially gate is closed. It is opened when
volume goes over 'othreshold' percent. After this, if volume
drops below 'cthold' percent, gate is closed and won't be opened
again, unless the 'reopen-count' is set to anything other than
zero. If 'value_mode' is 'rms', average RMS volume is used.
Otherwise peak average is used. When closed, passing audio
buffers are trucated to zero length. If the 'reopen-count' is
set to a positive number, then the gate will restart its
operation that many times. So for example, a reopen count of 1
will cause up to 2 openings of the gate. A negative value for
'reopen-count' will result in the gate reopening indefinitely.
The 'reopen-count' is invaluable in recording vinyl and tapes,
where you can set things up and then recording starts whenever
the needle is on the vinyl, and stops when it's off. As many
sides as you like can be recorded in one session. You will need
to experiment with buffer lengths and start/stop levels to get
reliable settings for your equipment.
CONTROL ENVELOPE SETUP
Controllers can be used to dynamically change effect parameters
during processing. All controllers are attached to the selected
(=usually the last specified effect/controller) effect. The
first three parameters are common for all controllers.
'fx_param' specifies the parameter to be controlled. Value '1'
means the first parameter, '2' the second and so on.
'start_value' and 'end_value' set the value range. For examples,
look at the the EXAMPLES section.
-kos:fx-param,start-value,end-value,freq,i-phase
Sine oscillator with frequency of 'freq' Hz and initial phase of
'i_phase' times pi.
-kog:fx-param,freq,mode,point-pairs,start-value,end-value,pos1,value1,...
Generic oscillator. Frequency 'freq' Hz, mode either '0' for
static values or '1' for linear interpolation. 'point-pairs'
specifies the number of 'posN' - 'valueN' pairs to include.
'start-value' and 'end-value' are used as border values. All
'posN' and 'valueN' must be between 0.0 and 1.0. Also, for all
'posN' values 'pos1 < pos2 < ... < posN' must be true.
-kf:fx-param,start-value,end-value,freq,mode,genosc-number
Generic oscillator. 'genosc_number' is the number of the
oscillator preset to be loaded. Mode is either '0' for static
values or '1' for linear interpolation. The location for the
preset file is taken from ./ecasoundrc (see ecasoundrc man
page).
-kl:fx-param,start-value,end-value,time-seconds
Linear envelope that starts from 'start_value' and linearly
changes to 'end_value' during 'time_in_seconds'. Can be used for
fadeins and fadeouts.
-kl2:fx-param,start-value,end-value,1st-stage-length-sec,2nd-stage-length-sec
Two-stage linear envelope, a more versatile tool for doing
fade-ins and fade-outs. Stays at 'start_value' for
'1st_stage_length' seconds and then linearly changes towards
'end_value' during '2nd_stage_length' seconds.
-klg:fx-param,low-value,high-value,point_count,pos1,value1,...,posN,valueN
Generic linear envelope. This controller source can be used to
map custom envelopes to chain operator parameters. Number of
envelope points is specified in 'point_count'. Each envelope
point consists of a position and a matching value. Number of
pairs must match 'point_count' (i.e. 'N==point_count'). The
'posX' parameters are given as seconds (from start of the
stream). The envelope points are specified as float values in
range '[0,1]'. Before envelope values are mapped to operator
parameters, they are mapped to the target range of
'[low-value,high-value]'. E.g. a value of '0' will set operator
parameter to 'low-value' and a value of '1' will set it to
'high-value'. For the initial segment '[0,pos1]', the envelope
will output value of 'value1' (e.g. 'low-value').
-km:fx-param,start-value,end-value,controller,channel
MIDI continuous controller (control change messages). Messages
on the MIDI-channel 'channel' that are coming from controller
number 'controller' are used as the controller source. As
recommended by the MIDI-specification, channel numbering goes
from 1 to 16. Possible controller numbers are values from 0 to
127. The MIDI-device where bytes are read from can be specified
using -Md option. Otherwise the default MIDI-device is used as
specified in ~ecasound/ecasoundrc (see ecasoundrc man page).
Defaults to /dev/midi.
-ksv:fx-param,start-value,end-value,stamp-id,rms-toggle
Volume analyze controller. Analyzes the audio stored in stamp
'stamp-id' (see '-eS:id' docs), and creates control data based
on the results. If 'rms-toggle' is non-zero, RMS-volume is used
to calculate the control value. Otherwise average peak-amplitude
is used.
-kx This is a special switch that can be used when you need to
control controller parameters with another controller. When you
specify -kx, the last specified controller will be set as the
control target. Then you just add another controller as usual.
INTERACTIVE MODE
See ecasound-iam(1) man page.
ENVIRONMENT
ECASOUND
If defined, some utility programs and scripts will use the
ECASOUND environment as the default path to ecasound executable.
ECASOUND_LOGFILE
Output all debugging messages to a separate log file. If
defined, ECASOUND_LOGFILE defines the logfile path. This is a
good tool for debugging ECI/EIAM scripts and applications.
ECASOUND_LOGLEVEL
Select which messages are written to the logfile defined by
ECASOUND_LOGFILE. The syntax for -d:level is used. If not
defined, all messages are written. Defaults to -d:319
(everything else but 'functions (64)' and 'continuous (128)'
class messages).
COLUMNS
Ecasound honors the COLUMNS environment variable when formatting
printed trace messages. If COLUMNS is not set, a default of 74
is used.
RETURN VALUES
In interactive mode, ecasound always returns zero.
In non-interactive (batch) mode, a non-zero value is returned
for the following errors:
1 Unable to create a valid chainsetup with the given parameters.
Can be caused by invalid option syntax, etc.
2 Unable to start processing. This can be caused by insufficient
file permissions, inability to access some system resources,
etc.
3 Error during processing. Possible causes: output object has run
out of free disk space, etc.
4 Error during process termination and/or cleanup. See section on
'SIGNALS' for further details.
SIGNALS
When ecasound receives any of the POSIX signals SIGINT (ctrl-c),
SIGHUP, SIGTERM or SIGQUIT, normal cleanup and exit procedure is
initiated. Here normal exit means that e.g. file headers are updated
before closing, helper processes are terminated in normal way, and so
forth.
If, while doing the cleanup described above, ecasound receives another
signal (of the same set of POSIX signals), ecasound will skip the
normal cleanup procedure, and terminate immediately. Any remaining
cleanup tasks will be skipped. Depending on the runtime state and
configuration, this brute force exit may have some side-effects.
Ecasound will return exit code of '4' if normal cleanup was skipped.
Special case handling is applied to the SIGINT (ctrl-c) signal. If a
SIGINT signal is received during the cleanup procedure, ecasound will
ignore the signal once, and emit a notice to 'stderr' that cleanup is
already in progress. Any subsequent SIGINT signals will no longer get
special handling, and instead process will terminate immediately (and
possibly without proper cleanup).
FILES
~/.ecasound The default directory for ecasound user resource files.
See the ecasoundrc (5) man page man page.
*.ecs Ecasound Chainsetup files. Syntax is more or less the same as
with command-line arguments.
*.ecp Ecasound Chain Preset files. Used for storing effect and chain
operator presets. See ecasound user's guide for more better
documentation.
*.ews Ecasound Wave Stats. These files are used to cache waveform data.
EXAMPLES
Examples of how to perform common tasks with ecasound can be found at
http://eca.cx/ecasound/Documentation/examples.html.
SEE ALSO
ecatools (1) man page, ecasound-iam (1) man page ecasoundrc (5) man
page, "HTML docs in the Documentation subdirectory"
BUGS
See file BUGS. If ecasound behaves weirdly, try to increase the debug
level to see what's going on.
AUTHOR
Kai Vehmanen, <kvehmanen -at- eca -dot- cx <kvehmanen -at- eca -dot-
cx>>
10.10.2009 ecasound(1)