diff --git a/src/_sox_ng b/src/_sox_ng new file mode 100644 index 0000000..4915c01 --- /dev/null +++ b/src/_sox_ng @@ -0,0 +1,633 @@ +#compdef sox_ng soxi_ng play_ng rec_ng +# ------------------------------------------------------------------------------ +# Copyright (c) 2025 Github zsh-users - https://github.com/zsh-users +# +# Permission is hereby granted, free of charge, to any person obtaining +# a copy of this software and associated documentation files (the +# "Software"), to deal in the Software without restriction, including +# without limitation the rights to use, copy, modify, merge, publish, +# distribute, sublicense, and/or sell copies of the Software, and to +# permit persons to whom the Software is furnished to do so, subject to +# the following conditions: +# +# The above copyright notice and this permission notice shall be included +# in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR +# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +# OTHER DEALINGS IN THE SOFTWARE. +# ------------------------------------------------------------------------------ +# Description +# ----------- +# +# Completion script for sox_ng v14.7.0 (https://codeberg.org/sox_ng/sox_ng) +# +# ------------------------------------------------------------------------------ +# Authors +# ------- +# +# * Shohei Yoshida (https://github.com/syohex) +# +# ------------------------------------------------------------------------------ + +_sox_ng_common() { + typeset -A opt_args + local context state line + local curcontext="$curcontext" + local ret=1 + + local service="$1" + + local -a sox_ng_global_options=( + '(--buffer --input-buffer)'{--buffer,--input-buffer}'[set the size in bytes of the buffers used for processing audio(default: 8192)]:size' + '(--clobber --no-clobber)--clobber[do not prompt before overwriting an existing file]' + '--combine[select the input file combining method]:type:(concatenate merge mix mix-power multiply sequence)' + '(-D --no-dither)'{-D,--no-dither}'[disable automatic dither]' + '--effects-file[read a file to obtain all effects and their arguments]:file:_files' + '(-G --guard)'{-G,--guard}'[automatically invoke the gain effect to guard against clipping]' + '(- *)'{-h,--help}'[show version number and usage information]' + '--help-effect[show usage information for the specified effect]:effect:_sox_ng_effects' + '--help-format[show information about the specified file format]' + '(--i --info)'{--i,--info}'[behave as soxi_ng]' + '(-m -M)'{-m,-M}'[equivalent to --combine mix and --combine merge respectively]' + '--magic[enable libmagic library to help to detect audio file types]' + '(--multi-threaded --single-threaded)--multi-threaded[process in parallel]' + '(--multi-threaded --single-threaded)--single-threaded[process at a time]' + '(--clobber --no-clobber)--no-clobber[prompt before overwriting an existing file]' + '--norm=-[automatically invoke the gain effect to guard against clipping and to normalize the audio]:level' + '--play-rate-arg[select a quality option to be used when the rate effect is invoked]:rate' + '--plot[set plot mode]:mode:(gnuplot octave off)' + '(-q --no-show-progress)'{-q,--no-show-progress}'[run in quiet mode]' + '-R[run in "repeatable" mode]' + '--replay-gain[select whether or not to apply replay gain adjustment to input files]:gain:(track album off)' + '(-S --show-progress)'{-S,--show-progress}'[display input file format/header information]' + '-T(equivalent to --combine multiply)' + '--temp[specified that any temporary files should be created in the given directory]:dir:_files -/' + '(- *)--version[show version number and exit]' + '-V[set verbosity]:level:(0 1 2 3 4 5 6)' + ) + + local -a sox_ng_format_options=( + "--ignore-length[override the audio length given in an audio file's header]" + '(-v --volume)'{-v,--volume}'[adjust the volume of the file by a factor of factor]:factor' + '(-b --bits)'{-b,--bits}'[set the number of bits in each encoded sample]:bits' + '(-c --channels)'{-c,--channels}'[set the number of audio channels in the audio file]' + '(-e --encoding)'{-e,--encoding}'[set the audio encoding type]:type:_sox_ng_audio_encoding_type' + '--no-glob[specify that filename "globbing should not be performed by Sox on the following filename"]' + '(-r --rate)'{-r,--rate}'[give the sample rate in Hz of the file]:rate' + '(-t --type)'{-t,--type}'[give the type of an audio file]:type:_sox_ng_supported_formats' + '(-L -B -X --endian)-L[the byte order of the audio file is little endian]' + '(-L -B -X --endian)-B[the byte order of the audio file is big endian]' + '(-L -B -X --endian)-x[the byte order of the audio file should be reversed]' + '(-L -B -X --endian)--endian[the byte order of the audio file]:type:(little big swap)' + '(-N --reverse-nibbles)'{-N,--reverse-nibbles}'[nibble ordering of the samples should be reversed]' + '(-X --reverse-bits)'{-X,--reverse-bits}'[bit ordering of the samples should be reversed]' + '--add-comment[append a comment to the output file header]:comment' + '--comment[specify the comment text to store in the output file header]:comment' + '--comment-file[specify a file containing the comment text to store in the output file header]:file:_files' + '(-C --compression)'{-C,--compression}'[set the compression factor for output file formats]:factor' + ) + + local -a sox_ng_effects=( + allpass band bandpass bandreject bass treble bend biquad centercut + channels chorus compand contrast dcshift deemph delay dither dolbyb + dop downsample earwax gain echo echos equalizer fade fir firfit + flanger highpass hilbert ladspa loudness lowpass mcompand + noiseprof noisered norm oops overdrive pad phaser pitch rate remix + repeat reverb reverse riaa saturation sdm silence sinc softvol + spectrogram speed speexdsp splice stat stats stretch swap synth + tempo treble tremolo trim upsample vad vol + ) + + _arguments -s \ + $sox_ng_global_options[@] \ + $sox_ng_format_options[@] \ + '*:: :_sox_ng_file_or_effect' \ + && ret=0 + return ret +} + +_sox_ng_file_or_effect() { + _alternative \ + 'file: :_files' \ + 'effect: :_sox_ng_effect' +} + +_sox_ng_effect() { + local ret=1 + local last_index=0 + local index=1 + for word in $words[@]; do + if [[ $words[$index] != -* ]]; then + last_index=$index + fi + (( index++ )) + done + + if [[ $last_index == 0 ]]; then + _sox_ng_effects && ret=0 + return ret + fi + + local effect=$words[$last_index] + if (( ! ${sox_ng_effects[(I)$effect]} )); then + _sox_ng_effects && ret=0 + return ret + fi + + local -a sox_ng_dither_filters=( + lipshitz f-weighted modified-e-weighted improved-e-weighted gesemann + shibata low-shibata high-shibata + shibata-A0 shibata-A1 shibata-A2 shibata-A3 shibata-A4 shibata-A5 shibata-A6 + shibata-B0 shibata-B1 shibata-B2 shibata-B3 shibata-B4 shibata-B5 shibata-B6 + shibata-A-saturated + ) + local -a sox_ng_sdm_filters=( + clans-4 clans-5 clans-6 clans-7 clans-8 + sdm-4 sdm-5 sdm-6 sdm-7 sdm-8 + ) + + local -a options=() + case "$effect" in + (allpass|highpass|lowpass) + options=( + '-1:use 1-pole filter' + '-2:use 2-pole filter' + ) + ;; + (band) + options=( + '-n:introduce a power gain of about 11dB in the filter' + ) + ;; + (bandpass|bandreject) + options=( + '-c:select a constant skirt gain instead of the default' + ) + ;; + (bend) + options=( + '-f:frame rate]:frame_rate' + '-o:over sampling]:sampling' + ) + ;; + (centercut) + options=( + '-a:gain out for all channels:gain' + '-b:move the bass out of the center into the sides' + '-w:change the window size:window_size' + ) + ;; + (chorus|flanger|phaser) + options=( + '-n:no interpolation' + '-l:do linear interpolation between samples' + '-q:ask for quadratic interpolation which is about 40% slower but makes it less noisy' + '-s:sinusoidal modulation' + '-t:triangular modulation' + ) + ;; + (dither) + options=( + '-S:select a slightly "sloped" TPDF' + '-s:enable noise-shaping with the shibata filter' + '-f:select filter:filter:(($sox_ng_dither_filters))' + '-a:enable a mode where dithering are automatically enabled only when needed' + '-p:override the target precision in bits(from 1 to 24):bit' + ) + ;; + (dolbyb) + options=( + '(-e -d)-e:do Dolby B encoding' + '(-e -d)-d:do Dolby B decoding' + '-u:set the upsample ratio to use in the sliding filter:upsample' + '-h:upsample is used throughout the effect from when the audio enters to when it leaves' + '-t:adjust the gain when the audio is fed to the Dolby gain control circuits:threshold' + '-a:set how accurate it needs to be before it is considered OK:accuracy' + '-f:filter type to use:type:(1 2 3 4)' + ) + ;; + (gain) + options=( + '-e:the levels of the audio channels of a multichannel' + '-B:balance option' + '-b:balance option but has clipping protection' + '-r:used in conjunction with a prior invocation of gain with the -h option' + '-n:normalize the audio to 0dB FSD' + '-l:invoke a simple limiter' + '-h:apply gain to provide headroom for subsequent processing' + ) + ;; + (hilbert) + options=( + '-n:the number of filter taps:taps' + ) + ;; + (ladspa) + options=( + '-l:latency compensation' + '-r:allow cloning a mono plugins to handle multichannel input' + ) + ;; + (rate) + options=( + '-q:quality level is quick' + '-l:quality level is low' + '-m:quality level is medium' + '-g:quality level is generic' + '-h:quality level is high' + '-e:quality level is extreme' + '-v:quality level is very high' + '-u:quality level is ultra' + ) + ;; + (remix) + options=( + '-a:retain the automatic scaling' + '-m:multiple files are mix-combined' + '-p:any automatic 1/n scaling is replaced by 1/sqrt(n) scaling' + ) + ;; + (reverb) + options=( + '-w:select only the "wet" signal' + ) + ;; + (sdm) + options=( + '-f:select the noise-shaping filter:filter:(($sox_ng_sdm_filters))' + '-t:number of paths to consider:num' + '-l:output latency(max 2048)' + ) + ;; + (silence) + options=( + "-l:below-periods' duration of 'silent' audio should be left at the beginning of each period of silence" + ) + ;; + (sinc) + options=( + '-a:override attenuation:att' + "-b:kaiser window's 'beta' parameter:beta" + '-p:any phase response:phase' + '-M:minimum phase response' + '-I:intermediate phase response' + '-L:linear phase response' + '-t:override the default transition bandwidth:tbw' + '-n:number of filter taps:taps' + ) + ;; + (spectrogram) + options=( + '-x:change the width of the spectrogram:num' + '-X:X axis pixels per second:num' + '-y:set the size of the Y axis per channel in pixels:num' + '-Y:set the total height of the spectrogram:num' + '-z:Z axis range in DB:num' + '-Z:set the upper limit of the Z axis in dBFS:num' + '-n:normalize the upper limit of the Z axis' + '-q:set the Z axis quantization:num' + '-w:select a window function:func:(Hann Hamming Bartlett Rectangular Kaiser Dolph)' + '-W:window adjustment parameter:num' + '-s:allow slack overlapping of DFT windows' + '-m:create a monochrome spectrogram' + '-h:select a high-color palette' + '-p:permute the colors in a color or hybrid palette:num:(1 2 3 4 5 6)' + '-l:create a "printer-friendly" spectrogram with a light background' + '-a:suppress the display of the axis lines' + '-r:raw spectrogram' + '-A:select an alternative, fixed color set' + '-t:set the image title:title' + '-c:set the image comment:comment' + '-o:the name of the spectrogram output PNG file:file:_files' + '-L:plot the frequency on a logarithmic axis' + '-R:specify the frequency range:range' + '-d:set the X axis resolution such that audio with the given duration:duration' + '-S:start the spectrogram at the given point in the audio stream' + ) + ;; + (speexdsp) + options=( + '-agc:enable automatic gain control and set target volume level:level' + '-denoise:enable nose reduction and set the maximum attenuation:max_db' + '-dereverb:enable reverb reduction' + '-fps:specify the number of frames per second:frames' + '-spf:specify the number of samples per frame:samples' + ) + ;; + (splice) + options=( + '-h:audio=correlated, fade level=constant gain, transitions=smooth' + '-t:audio=correlated, fade level=constant gain, transitions=abrupt' + '-q:audio=uncorrelated, fade level=constant power, transitions=smooth' + ) + ;; + (stat) + options=( + '-s:scale the input data by a given factor:scale' + '-rms:convert all averaged values to "root mean square" format' + "-freq:output the input's power spectrum" + '-v:display only the "Volume Adjustment"value' + '-d:display a hex dump of the 32-bit signed PCM data audio in internal buffer' + '-a:output the average power spectrum instead of the power spectrum' + '-h:use the "histogram algorithm" to calculated the integrated EBU R-128 loudness' + '-j:output in JSON format' + ) + ;; + (stats) + options=( + '-b:three measurements are scale to a signed integer with the given number:bits' + '-x:behave the same way as -b except that the signed integers values are displayed in hexadecimal' + '-s:scale the three measurements by a given floating point number:scale' + '-w:short window size:time' + ) + ;; + (synth) + options=( + '-j:select just intonation:key' + '-n:disable to incorporate the functionaly of gain' + ) + ;; + (tempo) + options=( + '-q:use tree search instead of linear search' + '(-m -s -l)-m:optimize default values for music processing' + '(-m -s -l)-s:optimize default values for speech processing' + '(-m -s -l)-l:optimize default values for linear processing' + ) + ;; + (vad) + options=( + '-t:level to use to trigger activity detection:level' + '-T:time constant to use to help ignore short bursts of sound:num' + '-s:the amount of audio to search for quieter/shorter bursts of audio:num' + '-g:allowed gap between quieter/shorter bursts of audio:num' + '-p:the amount of audio to preserve before the trigger point:num' + '-b:time for the initial noise estimate:num' + '-N:time used by the adaptive noise estimate when the noise level is increasing:num' + '-n:time used by the adaptive noise estimate when the noise level is decreasing:num' + '-r:amount of noise reduction to use in the detection algorithm:num' + "-f:frequency of the algorithm's processing measurements:num" + '-M:time constant used to smooth spectral measurements:num' + '-h:"Brick-wall" frequence of the high-pass filter:num' + '-l:"Brick-wall" frequence of the low-pass filter:num' + '-H:"Brick-wall" frequence of the high-pass lifter:num' + '-L:"Brick-wall" frequence of the low-pass lifter:num' + ) + ;; + esac + + _describe -t 'effect' 'effect options' options "$@" && ret=0 + return ret +} + +_sox_ng_soxi_ng() { + _arguments -s \ + '-V[set verbosity]' \ + '-T[change behavior of -s, -d, and -D. display the total across all given files]' \ + '-t[show detected file type]' \ + '-r[show sample-rate]' \ + '-c[show number of channels]' \ + '-s[show number of samples]' \ + '-d[show duration in hours, minutes and seconds]' \ + '-D[show duration in seconds]' \ + '-b[show number of bits per sample]' \ + '-B[show the bitrate averaged over the whole file]' \ + '-p[show estimated sample precision in bits]' \ + '-e[show the name of the audio encoding]' \ + '-a[show file comments if available]' \ + '*: :_files' +} + +_sox_ng_audio_encoding_type() { + local -a types=( + 'signed-integer:PCM data stored as signed integers' + 'unsigned-integer:PCM data stored as unsigned integers' + 'float:PCM data stored as IEEE 753 32-bit or 64-bit floating point numbers' + 'floating-point:PCM data stored as IEEE 753 32-bit or 64-bit floating point numbers' + 'a-law:internal telephony standard for logarithmic encoding to 8 bits per sample' + 'u-law:the North American telephony standard for logarithmic encoding to 8 bits per sample' + 'mu-law:the North American telephony standard for logarithmic encoding to 8 bits per sample' + 'oki-adpcm:OKI 4-bit ADPCM has a precision equivalent to roughly 12-bit PCM' + 'ima-adpcm:IMA 4-bit ADPCM has a precision equivalent to roughly 13-bit PCM' + 'ms-adpcm:Microsoft 4-bit ADPCM has a precision equivalent to roughly 14-bit PCM' + 'gsm-full-rate:GCM full rate audio format' + ) + + _describe -t types 'type' types "$@" +} + +_sox_ng_supported_formats() { + local -a formats=( + 'raw:Raw audio files' + '3gp:Third Generation Partnership Project format' + '3g2:Third Generation Partnership Project 2 format'. + '8svx:Amiga 8SVX musical instrument description format' + 'aac:Advanced Audio Coding format' + 'ac3:Audio Codec 3 (Dolby Digital) format' + 'adts:Audio Data Transport Stream format' + 'aiff:AIFF files as used on old Apple Macs, Apple IIc/IIgs and SGI' + 'aiffc:AIFF-C is based on AIFF but also handles compressed audio' + 'alsa:The Advanced Linux Sound Architecture' + 'amb:Ambisonic B-Format' + 'amr-nb:Adaptive Multi Rate Narrow and Wide Band' + "ao:Xiph.org's Audio Output device driver only works for playing audio" + "ape:Monkey's Audio format" + 'apm:Ubisoft Rayman 2 APM format' + 'aptx:Audio Processing Technology for Bluetooth format' + 'argo_asf:Argonaut Games ASF format' + 'asf:Advanced / Active Streaming Format' + 'ast:AST Audio Stream format' + 'au:Sun Microsystems AU files' + 'avi:Audio Video Interleaved format' + 'avr:Audio Visual Research format' + "caf:Apple's Core Audio File format" + 'cdda:Red Book Compact Disc Digital Audio (raw audio)' + 'coreaudio:The MacOS X CoreAudio' + 'cvsd:Continuously Variable Slope Delta modulation' + 'cvu:Unfiltered Continuously Variable Slope Delta modulation' + 'dat:Text Data files contain a textual representation of sample data' + 'dfpwm:DFPWM1a format' + 'dts:Digital Theatre Systems format' + 'dff:Direct Stream Digital Interchange File Format' + 'dsf:DSD Stream File is a format defined by Sony for storing 1-bit DSD data' + 'dvms:The Digital Voice Messaging System format' + 'eac3:Enhanced AC-3 Audio' + 'ffmpeg:pseudo-type that uses the external program ffmpeg' + 'flv:Macromedia Flash Video format' + 'fssd:Flexible Sound Studio Data format' + 'gsrt:Grandstream ring-tone files' + 'gsm:GSM 06.10 Lossy Speech Compression' + 'gxf:General eXchange Format' + 'hcom:Macintosh HCOM files' + 'htk:Single channel 16-bit PCM format used by HTK' + 'ima:A headerless file of IMA ADPCM audio data' + 'ism:ISM streaming video format' + 'kvag:Simon & Schuster Interactive VAG format' + 'lpc:LPC-10' + 'm4a:MPEG-4 Audio format' + 'm4b:MPEG-4 Video format' + 'mat4:Matlab 4.2 format' + 'mat5:Matlab 5.0 format' + 'm3u:A playlist format' + 'maud:An IFF-conforming audio file type' + 'mkv:Matroska video format' + 'mlp:Meridian Lossless Packing format' + 'mov:MPEG-1 Systems / MPEG program stream format' + 'mp1:MP1 compressed audio' + 'mp2:MP2 compressed audio' + 'mp3:MP3 compressed audio' + 'mp4:MPEG-4 video format' + 'mpeg:MPEG-1 Systems / MPEG program stream format' + 'mpegts:MPEG-TS (MPEG-2 Transport Stream) format' + 'mxf:Material eXchange Format Operational Pattern OP1A "OP-Atom" format' + 'nsp:NSP format' + 'nut:NUT is a low overhead generic container format' + 'ogg:Various Xiph.org audio formats in an Ogg container' + "vorbis:Xiph.org's Ogg Vorbis compressed audio" + "opus:Xiph.org's Opus compressed audio" + 'oss:The Open Sound System' + 'paf:Ensoniq PARIS file format' + 'pls:A playlist format containing a list of audio files' + 'prc:Psion Record format' + 'pulseaudio:PulseAudio is a cross-platform networked sound server' + 'pvf:Portable Voice Format' + 'ra:RealAudio format' + 'raw:Headerless audio data' + 'rm:RealMedia format' + 'rso:Lego Mindstorms RSO format' + 'sbc:Bluetooth SIG low-complexity subband audio format' + 'sd2:Sound Designer 2 format' + 'sds:MIDI Sample Dump Standard' + 'sf:IRCAM Sound Description Interchange Format' + "sln:Asterisk PBX 'signed linear' 8khz, 16-bit signed integer, little-endian raw format" + 'smjpeg:Loki SDL MJPEG' + 'smp:SMP format' + 'snd:Several file formats use the .snd extension' + 'sndfile:pseudo-type that forces libsndfile to be used' + 'sndio:OpenBSD audio device driver' + 'sndr:Sounder files are an MS-DOS/Windows format' + 'sndt:SoundTool files are another MS-DOS/Windows format' + "sox:SoX's native uncompressed PCM format" + 'spdif:IEC 61937 S/PDIF format' + 'sph:SPHERE (SPeech HEader REsources)' + 'spx:Ogg Speex format' + 'sunau:The Sun /dev/audio device driver' + 'tta:True Audio format' + 'vag:Sony PS2 VAG format' + 'txw:TXW is a file format from the Yamaha TX-16W sampling keyboard ' + 'voc:Sound Blaster VOC files' + 'vox:Headerless files of Dialogic/OKI ADPCM audio data' + "w64:Sonic Foundry's 64-bit RIFF/WAV format" + 'wav:Microsoft .WAV RIFF files' + 'waveaudio:The MS-Windows native audio device driver' + 'wavpcm:A non-standard but widely used variant of .wav' + 'wma:Windows Media Audio format' + 'wsaud:Westwood Studios audio format' + 'wsd:Wideband Single-bit Data' + 'wtv:Windows Television format' + 'wv:WavPack lossless audio compression' + 'wve:Psion 8-bit A-law' + 'xa:Maxis XA files' + 'xi:Fasttracker 2 Extended Instrument format' + ) + + _describe -t formats 'format' formats "$@" +} + +_sox_ng_effects() { + local -a effects=( + 'allpass:Apply a two-pole all-pass filter' + 'band:Apply a band-pass filter' + 'bandpass:Apply a two-pole Butterworth band-pass filter' + 'bandreject:Apply a two-pole Butterworth band-reject filter' + 'bass:Boost or cut the bass frequencies of the audio' + 'bend:Changes the pitch by specified amounts at specified times without changing the duration' + 'biquad:Apply a biquad Infinite Impulse Response filter' + 'centercut:Remove the center from a stereo file leaving the far left and right parts of the stereo' + 'channel:Invoke a simple algorithm to change the number of channels in the audio signal' + 'chorus:Add a chorus effect to the audio' + 'compand:Compand (compress or expand) the dynamic range of the audio' + 'contrast:modify an audio signal to make it sound louder' + 'dcshift:Apply a DC shift to the audio' + 'deemph:Pre-emphasis was applied in the mastering of some CDs issued in the early 1980s' + 'delay:Delay zero or more audio channels' + 'dither:Apply dithering to the audio' + 'dolbyb:Apply Dolby B decoding/encoding to its input signal' + 'dop:DSD over PCM' + 'downsample:Downsample the signal by an integer factor' + 'earwax:move the sound stage from inside your head to outside and in front of you' + 'echo:Add echoes to the audio' + 'echos:Add a sequence of echoes to the audio' + 'equalizer:Apply a two-pole peaking equalization filter' + 'fade:Apply a fade effect to the beginning, end, or both of the audio' + "fir:Use SoX's FFT convolution engine with given Finite Impulse Response filter coefficients" + "firfit:Use SoX's FFT convolution engine to make a filter" + 'flanger:Apply a flanging effect to the audio' + 'gain:Apply amplification or attenuation to the audio signal' + 'highpass:Apply a high-pass filter with 3dB point frequency' + 'hilbert:Apply an odd-tap Hilbert transform filter' + "ladspa:Apply a LADSPA(Linux Audio Developer's Simple Plugin API) plugin" + 'loudness:Loudness control is similar to the gain effect' + 'lowpass:Apply a low-pass filter' + 'mcompand:Apply the multi-band compander' + 'noiseprof:Calculate a profile of the audio for use in noise reduction' + 'noisered:Reduce noise in the audio signal by profiling and filtering' + 'norm:Normalize the audio' + 'oops:Out Of Phase Stereo effect' + 'overdrive:Non-linear distortion' + 'pad:Pad the audio with silence at the beginning, at the end or at any specified points' + 'phaser:Add a phasing effect to the audio' + 'pitch:Change the audio pitch but not the tempo' + 'rate:Change the audio sampling rate' + 'remix:Select and mix input audio channels into output audio channels' + 'repeat:Repeat the entire audio count times, or once if count is not given' + 'reverb:Add reverberation to the audio using the "freeverb" algorithm' + 'reverse:Reverse the audio completely' + 'riaa:Apply RIAA vinyl playback equalization' + 'saturation:Add saturation, which can produce effects ranging from subtle warmth to crunchy fuzz' + 'sdm:Apply a 1-bit sigma-delta modulator producing DSD output' + 'silence:Removes silence from the beginning, middle or end of the audio' + 'sinc:Apply a kaiser-windowed low-pass, high-pass, band-pass or band-reject filter' + 'softvol:Apply a simple multiplier to the audio ensuring' + 'spectrogram:Create a spectrogram of the audio' + 'speed:Adjust the audio speed (pitch and tempo together)' + 'speexdsp:Use the Speex DSP library to improve perceived sound quality' + 'splice:Splice audio sections together' + 'stat:Display time and frequency domain statistical information about the audio' + 'stats:Display time domain statistical information about the audio channels' + 'stretch:Change the audio duration but not its pitch' + 'swap:Swap stereo channels' + 'synth:Generate fixed or swept frequency audio tones with various wave shapes and wide-band noise' + 'tempo:Change the audio playback speed but not its pitch' + 'treble:Apply a treble tone control effect' + 'tremolo:Apply a tremolo' + 'trim:Cuts out portions of the audio' + 'upsample:Upsample the signal by an integer factor' + 'vad:Trim silence and quiet background sounds from the ends of recordings of speech' + 'vol:Apply amplification or attenuation to the audio signal' + ) + + _describe -t effects 'effect' effects "$@" +} + +case $service in + (soxi_ng) + _sox_ng_soxi_ng + ;; + (*) + _sox_ng_common + ;; +esac + +# Local Variables: +# mode: Shell-Script +# sh-indentation: 2 +# indent-tabs-mode: nil +# sh-basic-offset: 2 +# End: +# vim: ft=zsh sw=2 ts=2 et