Provided by: ecasound_2.9.3-4build2_amd64 bug

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  specific
              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 reset 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 truncated 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
              truncated 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).

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://nosignal.fi/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>>

                                                   05.05.2011                                        ecasound(1)