// ------------------------------------------------------------------------
// ecasound.cpp: Console mode user interface to ecasound.
// Copyright (C) 2000,2009 Kai Vehmanen
//
// Attributes:
//     eca-style-version: 3 (see Ecasound Programmer's Guide)
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
// 
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
// 
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307  USA
// ------------------------------------------------------------------------

#include "eca-comhelp.h"

/* FIXME: get chainop list from libecasound!
 *   - 2009/Jan: or maybe not, people should just be pointed to 
 *               ecasound(1) */

static const char* ecasound_parameter_help_rep =
"USAGE: ecasound [options] \n"
"     -c                       enable interactive mode \n"
"     -C                       disable interactive mode (batchmode)\n"
"     -d:debug_level           show debug info \n"
"     -D                       print all trace messages to stderr\n"
"     -q                       quiet mode, no output\n"
"     -s[:]file.ecs            load chainsetup from 'file' \n"
"     -E \"foo1 ; foo 2\"      execute interactive commands at start\n"
"     --server                 enable ecasound's network control mode\n"
"     --server-tcp-port=NNN    use TCP port NNN\n"
"     --no-server              disable the daemon mode (default)\n"
"     --osc-udp-port=NNN       listen for OSC messages on UDP port NNN\n"
"     --keep-running (or -K)   do not exit from batchmode\n"
"     --help (or -h)           show this help\n"
"     --version                print version info\n"
" --- \n"
"     -b:buffersize            size of sample buffer in samples\n"
"     -B:mode                  buffering mode\n"
"     -m:mixmode               mixmode\n"
"     -n:name                  set chainsetup name\n"
"     -r[:priority]            raise runtime priority\n"
"     -sr:sample_rate          set internal sample rate\n"
"     -x                       truncate outputs\n"
"     -X                       open outputs for update (default)\n"
"     -z:feature               enable feature 'feature',  see ecasound(1)\n"
" --- \n"
"     -t:seconds               processing time in seconds\n"
"     -tl                      enable looping\n"
" --- \n"
"     -a:name1,name2, ...      select/create chains ('all' reserved)\n"
"     -f:type,channels,srate   set file format (for all following inputs/outputs)\n"
"     -i[:]infile              specify an input (assigned to active chains)\n"
"     -o[:]outfile             specify an input (assigned to active chains)\n"
"     -y:seconds               set start position for preceding input/output\n"
" --- \n"
"     -Md:rawmidi,midi_device  set MIDI-device\n"
"     -Mms:device_id           send MMC start/stop\n"
"     -Mss                     send MIDI start/stop\n"
" --- \n"
"     -pf:preset.eep           insert the first preset from file 'preset.eep'\n"
"     -pn:preset_name          insert preset 'preset_name' from the\n"
"                              preset database\n"
" --- \n"
"     -eS:stamp-id             audio stamp\n"
"     -ea:amp-%                amplify\n"
"     -eac:amp-%,channel       channel amplify\n"
"     -eaw:amp-%,max-clipped-samples - \n"
"                              amplify with clip-control\n"
"     -ec:compression-rate-dB,threshold-% ...\n"
"                              compressor\n"
"     -eca:peak-limit-%,release-time-sec,fast-crate,overall-crate ...\n"
"                              advanced compressor\n"
"     -eemb:bpm,on-time-msec   pulse gate (bpm)\n"
"     -eemp:freq-Hz,on-time-%  pulse gate\n"
"     -eemt:bpm,depth-%        tremolo\n"
"     -ef1:center-freq,width   resonant bandpass filter\n"
"     -ef3:cutoff-freq,resonance,gain ...\n"
"                              resonant lowpass filter\n"
"     -ef4:cutoff-freq,resonance ...\n"
"                              resonant lowpass filter (2nd-order,24dB)\n"
"     -efa:delay-samples,feedback-% ...\n"
"                              allpass filter\n"
"     -efb:center-freq,width   bandpass filter\n"
"     -efc:delay-samples,radius ...\n"
"                              comb filter\n"
"     -efh:cutoff-freq         highpass filter\n"
"     -efi:delay-samples,radius ...\n"
"                              inverse comb filter\n"
"     -efl:cutoff-freq         lowpass filter\n"
"     -efr:center-freq,width   bandreject filter\n"
"     -efs:center-freq,width   resonator filter\n"
"     -ei:change-%             pitch shifter\n"
"     -el:name,par1,...,parN   LADSPA-plugin 'name'\n"
"     -eli:id,par1,...,parnN   LADSPA-plugin with numeric 'id'\n"
"     -elv2:uri,par1,...,parN LV2-plugin 'uri'\n"
"     -enm:threshold-level-%,pre-hold-time-msec,attack-time-msec,post-hold-time-msec,release-time-msec ...\n"
"                              noise gate\n"
"     -erc:from-channel,to-channel ...\n"
"                              copy 'from-channel' to 'to-channel'\n"
"     -erm:to-channel          mix all channels to channel 'to-channel' \n"
"     -epp:right-%             normal pan\n"
"     -etc:delay-time-msec,variance-time-samples,feedback-%,lfo-freq ...\n"
"                              chorus\n"
"     -etd:delay-time-msec,surround-mode,number-of-delays,mix-%,feedback-% ...\n"
"                              delay\n"
"     -ete:room-size,feedback-%,wet-% ...\n"
"                              advanced reverb\n"
"     -etf:delay-time-msec     fake stereo\n"
"     -etl:delay-time-msec,variance-time-samples,feedback-%,lfo-freq ...\n"
"                             flanger\n"
"     -etm:delay-time-msec,number-of-delays,mix-% ...\n"
"                              multitap delay\n"
"     -etp:delay-time-msec,variance-time-samples,feedback-%,lfo-freq ...\n"
"                              phaser\n"
"     -etr:delay-time,surround-mode,feedback-% ...\n"
"                              reverb\n"
"     -ev:cumulative-mode,result-max-multiplier ...\n"
"                              analyze/maximize volume\n"
"     -evp:peak-ch1,peak-chN   peak amplitude watcher\n"
"     -ezf                     find optimal value for DC-offset adjustment\n"
"     -ezx:channel-count,delta-ch1,...,delta-chN\n"
"                              adjust DC-offset\n"
" --- \n"
"     -gc:open-at-sec,duration-sec ...\n"
"                              time crop gate\n"
"     -ge:threshold-openlevel-%,threshold-closelevel-%,rms-enabled ...\n"
"                              threshold gate\n"
" --- \n"
"     -kf:param-id,range-low,range-high,freq,mode,preset-number ...\n"
"                              file envelope (generic oscillator)\n"
"     -kl:param-id,range-low,range-high,length-sec ...\n"
"                              linear envelope (fade-in and fade-out)\n"
"     -kl2:param-id,range-low,range-high,1st-stage-sec,2nd-stage-sec ...\n"
"                              two-stage linear envelope\n"
"     -klg:param-id,range-low,range-high,point_count ...\n"
"                              generic linear envelope\n"
"     -km:param-id,range-low,range-high,controller,channel ...\n"
"                              MIDI-controlled envelope\n"
"     -kog:param-id,range-low,range-high,freq,mode,pcount,start_val,end_val ...\n"
"                              generic oscillator\n"
"     -kos:param-id,range-low,range-high,freq,phase-offset ...\n"
"                              sine oscillator\n"
"     -ksv:param-id,range-low,range-high,stamp-id,rms-toggle ...\n"
"                              volume analyzing controller"
" --- \n"
"     -kx                      use last specified controller as\n"
"                              controller target\n"
"\n"
"Note that this is only a partial list of available options. For\n"
"a complete list of available options, as well as more detailed\n"
"descriptions of of their use, see ecasound(1) manual page and\n"
"the documentation at ecasound's website. Documentation is available\n"
"online at:\n"
" - http://nosignal.fi/ecasound/Documentation/ecasound_manpage.html\n"
" - http://nosignal.fi/ecasound/Documentation/examples.html\n"
"\n"
"Report bugs to ecasound-list mailing list (http://nosignal.fi/ecasound/mlists.php).\n";

const char* ecasound_parameter_help(void)
{
  return ecasound_parameter_help_rep;
}
