about summary refs log tree commit diff
path: root/Completion/Unix/Command/_ecasound
diff options
context:
space:
mode:
Diffstat (limited to 'Completion/Unix/Command/_ecasound')
-rw-r--r--Completion/Unix/Command/_ecasound210
1 files changed, 210 insertions, 0 deletions
diff --git a/Completion/Unix/Command/_ecasound b/Completion/Unix/Command/_ecasound
new file mode 100644
index 000000000..cb6b724a0
--- /dev/null
+++ b/Completion/Unix/Command/_ecasound
@@ -0,0 +1,210 @@
+#compdef ecasound
+
+local curcontext="$curcontext" state line expl
+typeset -A opt_args
+
+_arguments \
+  '-c[start in interactive mode]' \
+  '(-q)-d\:-[debug level]:debug level' \
+  '-D[print all debug information to stderr]' \
+  '(-d)-q[quiet mode, no output]' \
+  '(-)--help[show usage information]' \
+  '(-)--version[show version information]' \
+  '-n\:-[set the name of chainsetup]:chainsetup name' \
+  '-s\:-[create a new chainsetup from file]:chainsetup file:_files' \
+  '-sr\:-[set internal sampling rate]:Internal sampling rate:(8000 11025 22050 44100 48000)' \
+  '*-a\:-[select active signal chains]:chain name' \
+  '-b\:-[set the size of buffer in samples]:buffer size:->b' \
+  '-m\:-[force use of specified mix mode]:Mix mode:((auto\:Automatic simple\:Only\ one\ input/cain/output normal\:Normal\ single-threaded\ mode))' \
+  '-r[use realtime scheduling policy (SCHED_FIFO)]' \
+  '-r\:-[use realtime scheduling policy (SCHED_FIFO)]:sched_priority' \
+  '-x[truncate outputs]' \
+  '*-z\:-[enable feature]:feature:->z' \
+  '-t\:-[set processing time in seconds]:seconds (int/float)' \
+  '-tl[enable looping]' \
+  '*-f\:-[set sampling parameters for the following input/output files]: :->f' \
+  '*-y\:-[set starting position for last specified input/output]:seconds' \
+  '*-i\:-[specifies a new input source]:input source:->io' \
+  '*-o\:-[specifies a new output source]:output source:->io' \
+  '*-Md\:-[set the active MIDI-device]:device name:_files' \
+  '*-Mms\:-[send MMC start/stop to MIDI device-id]:device id' \
+  '*-mss[sends MIDI-sync to the selected MIDI-device]' \
+  '*-pf\:-[use the first preset found from file as chain operator]:preset file:_files -g *.epp' \
+  '*-pn\:-[find preset from global preset database]:preset name:->pn' \
+  '*-ev[analyze sample data to find max apm value without clipping]' \
+  '*-ezf[find the optimal value for DC-adjusting]' \
+  '*-eS\:-[audio stamp]:stamp-id (int)' \
+  '*-ea\:-[amplify signal]:amplification value (percent)' \
+  '*-eac\:-[amplify signal of channel]: :->eac' \
+  '*-eaw\:-[amplify singal (clipping)]: :->eaw' \
+  '*-eal\:-[limits audio level]:limit (percent)' \
+  '*-ec\:-[compressor (a simple one)]: :->ec' \
+  '*-eca\:-[a more advanced compressor]: :->eca' \
+  '*-enm\:-[noise gate. (each channel is processes separately)]: :->enm' \
+  '*-ei\:-[pitch shifter (modifies audio pitch by altering its length)]:pitch-shift (percent)' \
+  '*-epp\:-[normal pan effect]:panning (0=left, 50=center, 100=right)' \
+  '*-ezx\:-[adjusts the signal DC (use -ezf to find optimal values)]: :->ezx' \
+  '*-eem-[envelope modulation]: :->emod' \
+  '*-ef-[apply filter effects]: :->filters' \
+  '*-erc\:-[copy channel]: :->erc' \
+  '*-erm\:-[mix all channels to one channel]:to channel' \
+  '*-et-[time based effects]: :->teffects' \
+  '*-el\:-[LADSPA Plugin]: :->el' \
+  '*-eli\:-[LADSPA Plugin]: :->el' \
+  '*-gc\:-[time crop gate]: :->gc' \
+  '*-ge\:-[threshold gate]: :->ge' \
+  && return 0
+
+case $state in
+  filters)
+    _values -S : 'filter effect' \
+      '1[resonant bandpass filter]: :->ef1' \
+      '3[resonant lowpass filter]: :->ef3' \
+      '4[resonant lowpass filter (3rd-order, 36dB)]: :->ef4' \
+      'a[allpass filter]: :->efa' \
+      'c[comb filter]: :->efc' \
+      'b[bandpass filter]: :->efb' \
+      'h[highpass filter]:cutoff frequency' \
+      'i[inverse comb filter]: :->efi' \
+      'l[lowpass filter]:cutoff frequency' \
+      'r[bandreject filter]: :->efr' \
+      's[resonator (resonating bandpass filter)]: :->efs'
+  ;;
+  teffects)
+    _values -S : 'time based effect' \
+      'c[chorus]: :->etc' \
+      'd[delay effect]: :->etd' \
+      'e[a more advanced reverb effect]: :->ete' \
+      'f[fake-stereo effect]:delay time (msec)' \
+      'l[flanger]: :->etl' \
+      'm[multitap delay]: :->etm' \
+      'p[phaser]: :->etp' \
+      'r[reverb effect]: :->etr'
+  ;;
+  emod)
+    _values -S : 'envelopme modulation' \
+      'b[pulse gate]: :->eemb' \
+      'p[pulse gate (hz)]: :->eemp' \
+      't[tremolo effect]: :->eemt'
+  ;;
+esac
+
+case $state in
+  b)
+    _wanted -V sizes expl 'buffer size' compadd \
+        1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 32768 65536
+  ;;
+  f)
+    if compset -P '*,*,*,'; then
+      _values 'interleaving' \
+        'i[interleaved stream format]' \
+	'n[noninterleaved]'
+    elif compset -P '*,*,'; then
+      _message 'sampling rate'
+    elif compset -P '*,'; then
+      _message 'channels'
+    else
+      _values 'sampling parameters' \
+        'u8[unsigned 8-bit]' \
+	's16_le[signed 16-bit little endian]' \
+	's16_be[signed 16-bit big endian]' \
+	's24_le[signed 24-bit little endian]' \
+	's24_be[signed 24-bit big endian]' \
+	's32_le[signed 32-bit little endian]' \
+	's32_be[signed 32-bit big endian]' \
+	'f32_le[32-bit float (little endian)]' \
+	'f32_be[32-bit float (big endian)]'
+    fi
+  ;;
+  z)
+    _values -s , feature \
+      '(nodb)db[enable double-buffering]' \
+      '(db)nodb[disable double-buffering]' \
+      'dbsize[set db buffer size]:buffer size in sample frames:(0 1 2 4 8 16)' \
+      '(nointbuf)intbuf[use extra internal buffering for realtime devices]' \
+      '(intbuf)nointbuf[prevent extra internal buffering for realtime devices]' \
+      'xruns[processing will be halted when a under/overrun occurs]' \
+      'psr[enable the precise-sample-rates]'
+  ;;
+  io)
+    if compset -P 'alsa,'; then
+      if [[ -e /proc/asound ]]; then
+	eval `grep "^[[:digit:]]" < /proc/asound/cards|awk 'BEGIN {print "_values '\''ALSA device'\''" }; {print "'\''" $1 "[" $6, $7, $8, $9 "]'\''"}'||echo _message Wrong`
+      else
+	_message 'ALSA information bot found in proc filesystem'
+      fi
+    else
+      _alternative \
+        'files:input/output file:_files -g "*.(aif|aiff|mid|wav|ewf|mp3|mp2)"' \
+        'streams:stream:(stdin stdout)' \
+	'devices:realtime device:((/dev/dsp alsa\:alsa\ device null\:null\ device))'
+    fi
+  ;;
+  pn)
+    _wanted presets expl preset compadd \
+        ${${(M)${(f)"$(</usr/share/ecasound/effect_presets)"}:#[a-z]*}%% *}
+  ;;
+  etd)
+    if compset -P 3 '*,'; then
+      _message 'mix (wet) (percent)'
+    elif compset -P 2 '*,'; then
+      _message 'number of delays'
+    elif compset -P '*,'; then
+      _values -s , 'surround mode' \
+              '0[normal]' \
+              '1[surround]' \
+              '2[stereo-spread]'
+    else
+      _message 'delay time (msec)'
+    fi
+  ;;
+  ge)
+    if compset -P 2 '*,'; then
+      _values 'volume mode'
+              'rms'
+    elif compset -P '*,'; then
+      _message 'close threshold (percent)'
+    else
+      _message 'open threshold (percent)'
+    fi
+  ;;
+  *)
+    # all the rest are comma separated lists for which we use a message prompt
+    typeset -A msgs
+    local str
+    msgs=(
+      eac  'amplification value (percent):channel'								     				  
+      eaw  'amplification value (percent):channel:max-clipped-samples'						     				  
+      ec   'compression rate (decibels):threshold (0.0-1.0)'							     				  
+      eca  'peak-level:release-time (seconds):fast compression rate (0.0-1.0):compression rate'		     				  
+      enm  'threshold-level:pre-hold-time (msec):attack-time (msec):post-hold-time (msec):release-time (msec)'     				  
+      ezx  'left DC fix value:right CD fix value'								     				  
+      eemb 'pulse frequency (beats per minute):on time (msec)'
+      eemp 'pulse frequency (hz):on time (percent)'
+      eemt 'tremolo speed (beats per second):depth (percent)'
+      ef1  'center frequency:width (Hz)'
+      ef3  'cutoff frequency:resonance:gain'
+      ef4  'cutoff:resonance'
+      efa  'delay (samples):feedback (percent)'
+      efc  'delay (samples):radius (0-1.0)'
+      efb  'center frequency:width (Hz)'
+      efi  'delay (samples):radius (0-1.0)'
+      efr  'center frequency:width (Hz)'
+      efs  'center frequency:width (Hz)'
+      erc  'from channel:to channel'
+      etc  'delay time (msec):variance time (samples):feedback (percent):lfo frequency'
+      ete  'room size (metres):feedback level (percent):amount of reverbed signal added to the original (wet) (percent)'
+      etl  'delay time (msec):variance time (samples):feedback (percent):lfo frequency'
+      etm  'delay time (msec):number of delays:mix (wet) (percent)'
+      etp  'delay time (msec):variance time (samples):feedback (percent):lfo frequency'
+      etr  'delay time (msec):surround mode:feedback (percent)'
+      el   'unique LADSPA name/number'
+      gc   'start time (seconds):length (seconds)'
+    )
+    str=$msgs[$state]
+    while compset -P 1 '*,'; do
+      str="${str#*:}"
+    done
+    _message "${str%%:*}"
+  ;;      
+esac