Provided by: ecasound_2.9.1-3_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 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. Basicly  just  another
              resonating bandpass filter.

              CHANNEL MIXING / ROUTING

       -chcopy:from-channel, to-channel
              Copy channel ’from_channel’ to ’to_channel’. If ’to_channel’ doesn’t exist, it is created. Channel
              indexing starts from 1.  Option added to ecasound 2.4.5.

       -chmove:from-channel, to-channel
              Copy  channel ’from_channel’ to ’to_channel’, and mutes the source channel ’from_channel’. Channel
              indexing starts from 1.  Option added to ecasound 2.4.5.

       -chorder:ch1,...,chN
              Reorder, omit and/r duplicate chain  channels.  The  resulting  audio  stream  has  total  of  ’N’
              channels.  Each  parameter  specifies  the  source  channel to use for given output channel. As an
              example, ’-chorder:2,1’ would reverse the channels of a stereo stream (’out1,out2’  =  ’in2,in1’).
              Specifying  the  same  source channel multiple times is allowed. For example, ’-chorder:2,2’ would
              route the second channel to both two output channels (’out1,out2’ = ’in2,in2’). If ’chX’ is  zero,
              the given channel ’X’ will be muted in the output stream. Option added to ecasound 2.7.0.

       -chmix:to-channel
              Mix  all  source  channels to channel ’to_channel’.  If ’to_channel’ doesn’t exist, it is created.
              Channel indexing starts from 1.  Option added to ecasound 2.4.5.

       -chmute:channel
              Mutes the channel ’channel’. Channel indexing starts from 1.  Option added to ecasound 2.4.5.

       -erc:from-channel,to-channel
              Deprecated, see -chcopy.

       -erm:to-channel
              Deprecated, see -chmix.

              TIME-BASED EFFECTS

       -etc:delay-time-msec,variance-time-samples,feedback-%,lfo-freq
              Chorus.

       -etd:delay-time-msec,surround-mode,number-of-delays,mix-%,feedback-%
              Delay effect. ’delay time’ is the delay time in milliseconds.  ’surround-mode’ is a  integer  with
              following  meanings:  0  =  normal,  1 = surround, 2 = stereo-spread. ’number_of_delays’ should be
              obvious. Beware that large number of delays and huge delay times need a lot of CPU power.  ’mix-%’
              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).

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)