This is the command ecasound that can be run in the OnWorks free hosting provider using one of our multiple free online workstations such as Ubuntu Online, Fedora Online, Windows online emulator or MAC OS online emulator
PROGRAM:
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 processing engine buffer size in samples. The size must be an exponent of
2, and it is independent of channel count (e.g. -b:1024 at 48kHz will result in
21.333ms buffer length whether input is mono, stereo or 5.1).
This is an important option as this defines the length of one processing engine
iteration and affects ecasound behaviour in many ways. If not explicitly specified,
ecasound will try to choose an optimal value based on current buffering mode (see
-B option). For real-time processing, you can try to 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), larger values may help to
avoid buffer overruns, lower CPU usage and/or otherwise improve performance.
Note that when any JACK input/outputs are used, the buffer size setting is
overridden and set to period/buffer size reported by JACK server (e.g. jackd’s ’-p’
option). It is not possible to turn off this behaviour.
If not explicitly specified, the default buffer size is chosen based on current
buffering mode (see -B).
-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 one 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 endianness 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 one 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" which is a combination of the two previous modes.
If not explicitly set, in interactive mode (’-c’ option), the default mode is
"sendrecv", while in batchmode default is "notransport". In both cases the mode can
be changed with -G option as described above.
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.
Basically 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-%’ expresses the mix balance between the
original and delayed signal, with 0 meaning no delayed signal, 100 meaning no
original signal, and 50 (the default) achieving an equal balance. ’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). Parameters 1..N are set as values of the plugin’s control ports.
If plugin has more than one audio input and/or output port, only one plugin is
instance is created, and the chain channels are fed to the same plugin instance. If
plugin has at most one input and at most one output audio port, a separate plugin
instance is created for each channel of the ecasound chain (e.g. for a stereo audio
channel, two LADSPA plugins of same type are created, with one per channel).
Plugins are located in shared library (.so) files. Ecasound looks for plugins in
@prefix@/lib/ladspa (e.g. "/usr/local/lib/ladspa"), directories listed in
environment variable LADSPA_PATH. Plugin search path can be configured also via
ecasoundrc, see ecasoundrc(5) 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 (-el) expect plugin’s unique id-number is used. It is guaranteed that
these id-numbers are unique among all LADSPA plugins.
LV2 PLUGINS
-elv2:plugin-id-uri,param-1,...,param-N
Ecasound also supports LV2 audio plugins. LV2 plugins are identified by a globally
unique, case-sensitive identifier.
If plugin has more than one audio input and/or output port, only one plugin is
instance is created, and the chain channels are fed to the same plugin instance. If
plugin has at most one input and at most one output audio port, a separate plugin
instance is created for each channel of the ecasound chain (e.g. for a stereo audio
channel, two LV2 plugins of same type are created, with one per channel).
LV2 is a plugin standard for audio systems.
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.
-gm:state
Manual gate. If ’state’ is 1, gate is open and all samples are passed through. If
’state’ is zero, gate is closed an no samples are let through. This chain operator
is useful when writing to an output needs to be stopped dynamically (without
stopping the whole engine).
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,start-value,end-value,freq,mode,point-pairs,first-value,last-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. ’first-value’ and ’last-value’ are used as border values (values
for position 0.0/first and position 1.0/last). 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.
TMPDIR Some functions of Ecasound (e.g. "cs-edit" interactive command) require creation of
temporary files. By default, these files are created under "/tmp", but this can be
overridden by setting the TMPDIR environment variable.
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).
Use ecasound online using onworks.net services