Liquidsoap 1.3.1 : Language reference

Liquidsoap scripting language reference

Categories

The Source / ... categories contain all functions that return sources. The Input functions are those which build elementary sources (playing files, synthesizing sound, etc.). The Output functions are those which take a source and register it for being streamed to the outside (file, soundcard, audio server, etc.). The Visualization functions are experimental ones that let you visualize in real-time some aspects of the audio stream. The Sound Processing functions are those which basically work on the source as a continuous audio stream. They would typically be mixers of streams, audio effects or analysis. Finally, Track Processing functions are basically all others, often having a behaviour that depends on or affects the extra information that liquidsoap puts in streams: track limits and metadata.

Source / Conversions

audio_to_stereo
(?id:string,source(audio=*+1,video=0,midi=0))->
source(audio=2,video=0,midi=0)

Convert any kind of audio source into a stereo source.

drop_audio
(?id:string,source(audio='#a,video='#b,midi='#c))->
source(audio=0,video='#b,midi='#c)

Drop all audio channels of a stream.

drop_midi
(?id:string,source(audio='#a,video='#b,midi='#c))->
source(audio='#a,video='#b,midi=0)

Drop all midi channels of a stream.

drop_video
(?id:string,source(audio='#a,video='#b,midi='#c))->
source(audio='#a,video=0,midi='#c)

Drop all video channels of a stream.

id
(?id:string,source('a))->source('a)

Does not do anything, simply forwards its input stream.

mean
(?id:string,source(audio='#a,video='#b,midi='#c))->
source(audio=1,video='#b,midi='#c)

Produce mono audio by taking the mean of all audio channels.

mux_audio
(?id:string,audio:source(audio='#a,video=0,midi=0),
 source(audio=0,video='#b,midi='#c))->
source(audio='#a,video='#b,midi='#c)

Mux an audio stream into an audio-free stream.

mux_mono
(?id:string,mono:source(audio=1,video=0,midi=0),
 source(audio='#a,video='#b,midi='#c))->
source(audio='#a+1,video='#b,midi='#c)

Mux a mono audio stream into another stream.

mux_stereo
(?id:string,stereo:source(audio=2,video=0,midi=0),
 source(audio='#a,video='#b,midi='#c))->
source(audio='#a+2,video='#b,midi='#c)

Mux a stereo audio stream into another stream.

mux_video
(?id:string,video:source(audio=0,video='#a,midi=0),
 source(audio='#b,video=0,midi='#c))->
source(audio='#b,video='#a,midi='#c)

Add video channnels to a stream.

stereo.left
(source(audio=2,video=0,midi=0))->
source(audio=1,video=0,midi=0)

Extract the left channel of a stereo source

stereo.right
(source(audio=2,video=0,midi=0))->
source(audio=1,video=0,midi=0)

Extract the right channel of a stereo source

swap
(?id:string,source(audio=2,video=0,midi=0))->
source(audio=2,video=0,midi=0)

Swap two channels of a stereo source.

Source / Input

blank
(?id:string,?duration:float)->source('a)

Produce silence and blank images.

empty
(?id:string)->source(audio='a,video='b,midi='c)

A source that does not produce anything. No silence, no track at all.

fail
(?id:string)->source('b)

Creates a source that fails to produce anything.

gstreamer.hls
(?id:string,'a)->source(audio=2,video=1,midi=0)

Play an http live stream.

in
(?id:string,?start:bool,?on_start:(()->unit),
 ?on_stop:(()->unit),?fallible:bool)->
source(audio='#a+1,video='#b,midi='#c)

Create a source from the first available input driver in pulseaudio, portaudio, oss, alsa, blank.

input.external
(?id:string,?buffer:float,?channels:int,?max:float,
 ?restart:bool,?restart_on_error:bool,?samplerate:int,
 string)->source(audio='#a+1,video=0,midi=0)

Stream data from an external application.

input.external.avi
(?id:string,?buffer:float,?max:float,?restart:bool,
 ?restart_on_error:bool,string)->
source(audio='#a,video='#b,midi=0)

WARNING: This is only EXPERIMENTAL!

Stream data from an external application.

input.external.rawvideo
(?id:string,?buffer:float,?max:float,?restart:bool,
 ?restart_on_error:bool,string)->
source(audio=0,video=1,midi=0)

WARNING: This is only EXPERIMENTAL!

Stream data from an external application.

input.ffmpeg.video
(?id:string,?restart:bool,?restart_on_error:bool,
 ?buffer:float,?max:float,?format:string,string)->
source(audio='#a,video='#b,midi=0)

No documentation available.

input.gstreamer.audio
(?id:string,?max:float,?pipeline:string)->
source(audio='#a+1,video=0,midi=0)

Stream audio from a GStreamer pipeline.

input.gstreamer.audio_video
(?id:string,?audio_pipeline:string,?max:float,
 ?pipeline:string,?video_pipeline:string)->
source(audio=2,video=1,midi=0)

Stream audio+video from a GStreamer pipeline.

input.gstreamer.video
(?id:string,?max:float,?pipeline:string)->
source(audio=0,video=1,midi=0)

Stream video from a GStreamer pipeline.

input.harbor
(?id:string,?auth:((string,string)->bool),?buffer:float,
 ?debug:bool,?dumpfile:string,?icy:bool,
 ?icy_metadata_charset:string,?logfile:string,?max:float,
 ?metadata_charset:string,
 ?on_connect:(([(string*string)])->unit),
 ?on_disconnect:(()->unit),?password:string,?port:int,
 ?replay_metadata:bool,?timeout:float,?user:string,
 string)->source('a)

Retrieves the given http stream from the harbor.

input.harbor.ssl
(?id:string,?auth:((string,string)->bool),?buffer:float,
 ?debug:bool,?dumpfile:string,?icy:bool,
 ?icy_metadata_charset:string,?logfile:string,?max:float,
 ?metadata_charset:string,
 ?on_connect:(([(string*string)])->unit),
 ?on_disconnect:(()->unit),?password:string,?port:int,
 ?replay_metadata:bool,?timeout:float,?user:string,
 string)->source('a)

Retrieves the given https stream from the harbor.

input.http
(?id:string,?autostart:bool,?bind_address:string,
 ?buffer:float,?debug:bool,?force_mime:string,
 ?logfile:string,?max:float,?new_track_on_metadata:bool,
 ?on_connect:(([(string*string)])->unit),
 ?on_disconnect:(()->unit),?playlist_mode:string,
 ?poll_delay:float,?timeout:float,?user_agent:string,
 string)->source('a)

Forwards the given http stream. The relay can be paused/resumed using the start/stop telnet commands.

input.https
(?id:string,?autostart:bool,?bind_address:string,
 ?buffer:float,?debug:bool,?force_mime:string,
 ?logfile:string,?max:float,?new_track_on_metadata:bool,
 ?on_connect:(([(string*string)])->unit),
 ?on_disconnect:(()->unit),?playlist_mode:string,
 ?poll_delay:float,?timeout:float,?user_agent:string,
 string)->source('a)

Forwards the given https stream. The relay can be paused/resumed using the start/stop telnet commands.

input.mencoder.video
(?id:string,?restart:bool,?restart_on_error:bool,
 ?buffer:float,?max:float,string)->
source(audio=0,video=1,midi=0)

No documentation available.

input.mplayer
(?id:string,?restart:bool,?restart_on_error:bool,
 ?buffer:float,?max:float,string)->
source(audio='#a+1,video=0,midi=0)

Stream data from mplayer

input.portaudio
(?id:string,?buflen:int,?clock_safe:bool,?fallible:bool,
 ?on_start:(()->unit),?on_stop:(()->unit),?start:bool)->
source(audio='#a+1,video='#b,midi='#c)

Stream from a portaudio input device.

input.udp
(?id:string,?buffer:float,host:string,port:int,string)->
active_source('a)

WARNING: This is only EXPERIMENTAL!

Input encoded data from UDP, without any control whatsoever.

input.v4l2
(?id:string,?device:string)->
source(audio=0,video=1,midi=0)

Stream from a video4linux 2 input device, such as a webcam.

input.v4l2_with_audio
(?id:string,?device:string)->
source(audio=2,video=1,midi=0)

Stream from a video4linux 2 input device, such as a webcam.

noise
(?id:string,?duration:float)->
source(audio='a,video='b,midi=0)

Generate (audio and/or video) white noise.

playlist
(?id:string,?check_next:((request('a))->bool),
 ?conservative:bool,?default_duration:float,
 ?length:float,?mime_type:string,?mode:string,
 ?prefix:string,?reload:int,?reload_mode:string,
 ?timeout:float,string)->source('a)

Loop on a playlist of URIs.

playlist.once
(?id:string,?random:bool,?on_done:(()->unit),
 ?reload_mode:string,string)->source('a)

Custom playlist source written using the script language. It will read directory or playlist, play all files and stop.

playlist.reloadable
(?id:string,?random:bool,?on_done:(()->unit),
 ?filter:(([(string*string)])->bool),string)->
(((?uri:string)->unit)*source('a))

Custom playlist source written using the script language. Will read directory or playlist, play all files and stop. Returns a pair (reload,source) where reload is a function of type (?uri:string)->unit used to reload the source and source is the actual source. The reload function can optionally be called with a new playlist URI. Otherwise, it reloads the previous URI.

playlist.safe
(?id:string,?mime_type:string,?mode:string,
 ?prefix:string,?reload:int,?reload_mode:string,string)->
source('a)

Loop on a playlist of local files, and never fail. In order to do so, it has to check every file at the loading, so the streamer startup may take a few seconds. To avoid this, use a standard playlist, and put only a few local files in a default safe_playlist in order to ensure the liveness of the streamer.

request.dynamic
(?id:string,?conservative:bool,?default_duration:float,
 ?length:float,?timeout:float,(()->request('a)))->
source('a)

Play request dynamically created by a given function.

request.equeue
(?id:string,?conservative:bool,?default_duration:float,
 ?length:float,?timeout:float)->source('a)

Receive URIs from users, and play them. Insertion and deletion possible at any position.

request.queue
(?id:string,?conservative:bool,?default_duration:float,
 ?interactive:bool,?length:float,?queue:[request('a)],
 ?timeout:float)->source('a)

Receive URIs from users, and play them.

saw
(?id:string,?amplitude:float,?duration:float,?float)->
source(audio='#a+1,video=0,midi=0)

Generate a saw wave.

sine
(?id:string,?amplitude:float,?duration:float,?float)->
source(audio='#a+1,video=0,midi=0)

Generate a sine wave.

single
(?id:string,?conservative:bool,?default_duration:float,
 ?length:float,?timeout:float,string)->source('a)

Loop on a request. It never fails if the request is static, meaning that it can be fetched once. Typically, http, ftp, say requests are static, and time is not.

square
(?id:string,?amplitude:float,?duration:float,?float)->
source(audio='#a+1,video=0,midi=0)

Generate a square wave.

Source / Liquidsoap

buffer
(?id:string,?buffer:float,?fallible:bool,?max:float,
 ?on_start:(()->unit),?on_stop:(()->unit),?start:bool,
 source('a))->source('a)

Create a buffer between two different clocks.

buffer.adaptative
(?id:string,?averaging:float,?buffer:float,
 ?fallible:bool,?limit:float,?max:float,
 ?on_start:(()->unit),?on_stop:(()->unit),?reset:bool,
 ?start:bool,source(audio='#a+1,video=0,midi=0))->
source(audio='#a+1,video=0,midi=0)

WARNING: This is only EXPERIMENTAL!

Create a buffer between two different clocks. The speed of the output is adapted so that no buffer underrun or overrun occurs. This wonderful behavior has a cost: the pitch of the sound might be changed a little.

Source / MIDI Processing

midi.chord
(?id:string,?metadata:string,
 source(audio='#a,video='#b,midi='#c))->
source(audio='#a,video='#b,midi='#c+1)

Generate a chord.

midi.merge_all
(?id:string,?track_out:int,
 source(audio='#a,video='#b,midi='#c+1))->
source(audio='#a,video='#b,midi='#c+1)

Merge all MIDI tracks in one.

midi.remove
(?id:string,[int],source(audio='#a,video='#b,midi='#c+1))->
source(audio='#a,video='#b,midi='#c+1)

Remove MIDI tracks.

Source / Output

gstreamer.encode_jpeg_avi
('a,source(audio='#b,video='#c+1,midi='#d))->
active_source(audio='#b,video='#c+1,midi='#d)

Encode jpeg video file using gstreamer

gstreamer.encode_mp3
('a,source(audio='#b+1,video='#c,midi='#d))->
active_source(audio='#b+1,video='#c,midi='#d)

Encode a mp3 file using gstreamer

gstreamer.encode_x264_avi
('a,source(audio='#b,video='#c+1,midi='#d))->
active_source(audio='#b,video='#c+1,midi='#d)

Encode an x264 video file using gstreamer

gstreamer.rtp.mpeg4
(?host:string,?port:int,
 source(audio='#a,video='#b+1,midi='#c))->
active_source(audio='#a,video='#b+1,midi='#c)

Broadcast a video in RTP. In order to play it, save the following in xxx.sdp and use vlc xxx.sdp: v=0 m=video 5000 RTP/AVP 96 c=IN IP4 127.0.0.1 a=rtpmap:96 MP4V-ES/90000

out
(source(audio='#a+1,video='#b,midi='#c))->
active_source(audio='#a+1,video='#b,midi='#c)

Output a stream using the 'output.prefered' operator. The input source does not need to be infallible, blank will just be played during failures.

output.ao
(?id:string,?buffer_size:int,?channels_matrix:string,
 ?clock_safe:bool,?driver:string,?fallible:bool,
 ?on_start:(()->unit),?on_stop:(()->unit),
 ?options:[(string*string)],?start:bool,
 source(audio='#a+1,video='#b,midi='#c))->
active_source(audio='#a+1,video='#b,midi='#c)

Output stream to local sound card using libao.

output.dummy
(?id:string,?fallible:bool,?on_start:(()->unit),
 ?on_stop:(()->unit),?start:bool,source('a))->
active_source('a)

Dummy output for debugging purposes.

output.external
(?id:string,?fallible:bool,?flush:bool,
 ?on_start:(()->unit),?on_stop:(()->unit),
 ?reopen_delay:float,?reopen_on_metadata:bool,
 ?reopen_when:(()->bool),?start:bool,format('a),string,
 source('a))->active_source('a)

Send the stream to a process' standard input.

output.file
(?id:string,?append:bool,?dir_perm:int,?fallible:bool,
 ?flush:bool,?on_close:((string)->unit),
 ?on_start:(()->unit),?on_stop:(()->unit),?perm:int,
 ?reopen_delay:float,?reopen_on_metadata:bool,
 ?reopen_when:(()->bool),?start:bool,format('a),string,
 source('a))->active_source('a)

Output the source stream to a file.

output.gstreamer.audio
(?id:string,?clock_safe:bool,?fallible:bool,
 ?on_start:(()->unit),?on_stop:(()->unit),
 ?pipeline:string,?start:bool,
 source(audio='#a+1,video='#b,midi='#c))->
active_source(audio='#a+1,video='#b,midi='#c)

Output stream to a GStreamer pipeline.

output.gstreamer.audio_video
(?id:string,?asynchronous:bool,?audio_pipeline:string,
 ?blocking:bool,?clock_safe:bool,?fallible:bool,
 ?on_start:(()->unit),?on_stop:(()->unit),
 ?pipeline:string,?start:bool,?video_pipeline:string,
 source(audio='#a+1,video='#b+1,midi='#c))->
active_source(audio='#a+1,video='#b+1,midi='#c)

Output stream to a GStreamer pipeline.

output.gstreamer.video
(?id:string,?clock_safe:bool,?fallible:bool,
 ?on_start:(()->unit),?on_stop:(()->unit),
 ?pipeline:string,?start:bool,
 source(audio='#a,video='#b+1,midi='#c))->
active_source(audio='#a,video='#b+1,midi='#c)

Output stream to a GStreamer pipeline.

output.harbor
(?id:string,?auth:((string,string)->bool),?buffer:int,
 ?burst:int,?chunk:int,?dumpfile:string,?encoding:string,
 ?fallible:bool,?format:string,
 ?headers:[(string*string)],?metaint:int,mount:string,
 ?on_connect:((headers:[(string*string)],uri:string,
               protocol:string,string)->unit),
 ?on_disconnect:((string)->unit),?on_start:(()->unit),
 ?on_stop:(()->unit),?password:string,?port:int,
 ?start:bool,?timeout:float,?url:string,?user:string,
 format('a),source('a))->active_source('a)

Encode and output the stream using the harbor server.

output.harbor.ssl
(?id:string,?auth:((string,string)->bool),?buffer:int,
 ?burst:int,?chunk:int,?dumpfile:string,?encoding:string,
 ?fallible:bool,?format:string,
 ?headers:[(string*string)],?metaint:int,mount:string,
 ?on_connect:((headers:[(string*string)],uri:string,
               protocol:string,string)->unit),
 ?on_disconnect:((string)->unit),?on_start:(()->unit),
 ?on_stop:(()->unit),?password:string,?port:int,
 ?start:bool,?timeout:float,?url:string,?user:string,
 format('a),source('a))->active_source('a)

Encode and output the stream using the SSL harbor server.

output.icecast
(?id:string,?chunked:bool,?connection_timeout:float,
 ?description:string,?dumpfile:string,?encoding:string,
 ?fallible:bool,?format:string,?genre:string,
 ?headers:[(string*string)],?host:string,?icy_id:int,
 ?icy_metadata:string,?mount:string,?name:string,
 ?on_connect:(()->unit),?on_disconnect:(()->unit),
 ?on_error:((string)->float),?on_start:(()->unit),
 ?on_stop:(()->unit),?password:string,?port:int,
 ?protocol:string,?public:bool,?start:bool,
 ?timeout:float,?url:string,?user:string,?verb:string,
 format('a),source('a))->active_source('a)

Encode and output the stream to an icecast2 or shoutcast server.

output.portaudio
(?id:string,?buflen:int,?clock_safe:bool,?fallible:bool,
 ?on_start:(()->unit),?on_stop:(()->unit),?start:bool,
 source(audio='#a+1,video='#b,midi='#c))->
active_source(audio='#a+1,video='#b,midi='#c)

Output the source's stream to a portaudio output device.

output.prefered
(?id:string,?fallible:bool,?on_start:(()->unit),
 ?on_stop:(()->unit),?start:bool,
 source(audio='#a+1,video='#b,midi='#c))->
active_source(audio='#a+1,video='#b,midi='#c)

Output to local audio card using the first available driver in pulseaudio, portaudio, oss, alsa, ao, dummy.

output.shoutcast
(?id:string,?start:bool,?host:string,?port:int,
 ?user:string,?password:string,?genre:string,?url:string,
 ?name:string,?public:bool,?icy_id:int,?format:string,
 ?dj:(()->string),?dumpfile:string,?icy_metadata:string,
 ?on_connect:(()->unit),?on_disconnect:(()->unit),
 ?aim:string,?icq:string,?irc:string,?icy_reset:bool,
 ?fallible:bool,?on_start:(()->unit),?on_stop:(()->unit),
 ?on_error:((string)->float),format('a),source('a))->
active_source('a)

Output to shoutcast.

output.udp
(?id:string,?fallible:bool,host:string,
 ?on_start:(()->unit),?on_stop:(()->unit),port:int,
 ?start:bool,format('a),source('a))->active_source('a)

WARNING: This is only EXPERIMENTAL!

Output encoded data to UDP, without any control whatsoever.

Source / Sound Processing

add
(?id:string,?normalize:bool,?weights:[int],
 [source(audio='#a,video='#b,midi=0)])->
source(audio='#a,video='#b,midi=0)

Mix sources, with optional normalization. Only relay metadata from the first source that is effectively summed.

amplify
(?id:string,?override:string,'a,
 source(audio='#b,video='#c,midi='#d))->
source(audio='#b,video='#c,midi='#d)
where 'a is either float or ()->float

Multiply the amplitude of the signal.

clip
(?id:string,source(audio='#a,video='#b,midi='#c))->
source(audio='#a,video='#b,midi='#c)

Clip sound.

comb
(?id:string,?delay:float,?feedback:'a,
 source(audio='#b,video='#c,midi='#d))->
source(audio='#b,video='#c,midi='#d)
where 'a is either float or ()->float

Comb filter.

compand
(?id:string,?mu:float,
 source(audio='#a,video='#b,midi='#c))->
source(audio='#a,video='#b,midi='#c)

Compand the signal

compress
(?id:string,?attack:'a,?gain:'b,?knee:'c,?ratio:float,
 ?release:'d,?rms_window:float,?threshold:'e,
 source(audio='#f,video='#g,midi='#h))->
source(audio='#f,video='#g,midi='#h)
where 'a, 'b, 'c, 'd, 'e is either float or ()->float

Compress the signal.

compress.exponential
(?id:string,?mu:float,
 source(audio='#a,video='#b,midi='#c))->
source(audio='#a,video='#b,midi='#c)

Exponential compressor.

cross
(?id:string,?active:bool,?conservative:bool,
 ?duration:float,?inhibit:float,?minimum:float,
 ?override:string,((source('a),source('a))->source('a)),
 source('a))->source('a)

Generic cross operator, allowing the composition of the N last seconds of a track with the beginning of the next track.

echo
(?id:string,?delay:'a,?feedback:'b,?ping_pong:bool,
 source(audio='#c,video='#d,midi='#e))->
source(audio='#c,video='#d,midi='#e)
where 'a, 'b is either float or ()->float

Add echo.

fade.final
(?id:string,?duration:float,?override_duration:string,
 ?override_type:string,?type:string,
 source(audio='#a,video='#b,midi='#c))->
source(audio='#a,video='#b,midi='#c)

Fade a stream to silence.

fade.in
(?id:string,?duration:float,?override_duration:string,
 ?override_type:string,?type:string,
 source(audio='#a,video='#b,midi='#c))->
source(audio='#a,video='#b,midi='#c)

Fade the beginning of tracks.

fade.initial
(?id:string,?duration:float,?override_duration:string,
 ?override_type:string,?type:string,
 source(audio='#a,video='#b,midi='#c))->
source(audio='#a,video='#b,midi='#c)

Fade the beginning of a stream.

fade.out
(?id:string,?duration:float,?override_duration:string,
 ?override_type:string,?type:string,
 source(audio='#a,video='#b,midi='#c))->
source(audio='#a,video='#b,midi='#c)

Fade the end of tracks.

filter
(?id:string,freq:'a,mode:string,?q:'b,?wetness:'c,
 source(audio='#d,video='#e,midi='#f))->
source(audio='#d,video='#e,midi='#f)
where 'a, 'b, 'c is either float or ()->float

Perform several kinds of filtering on the signal

filter.fir
(?id:string,beta:float,?coeffs:int,frequency:float,
 source(audio='#a,video='#b,midi='#c))->
source(audio='#a,video='#b,midi='#c)

Low-pass FIR filter.

filter.iir.butterworth.bandpass
(?id:string,frequency1:float,frequency2:float,?order:int,
 source(audio='#a,video='#b,midi='#c))->
source(audio='#a,video='#b,midi='#c)

IIR filter

filter.iir.butterworth.bandstop
(?id:string,frequency1:float,frequency2:float,?order:int,
 source(audio='#a,video='#b,midi='#c))->
source(audio='#a,video='#b,midi='#c)

IIR filter

filter.iir.butterworth.high
(?id:string,frequency:float,?order:int,
 source(audio='#a,video='#b,midi='#c))->
source(audio='#a,video='#b,midi='#c)

IIR filter

filter.iir.butterworth.low
(?id:string,frequency:float,?order:int,
 source(audio='#a,video='#b,midi='#c))->
source(audio='#a,video='#b,midi='#c)

IIR filter

filter.iir.eq.allpass
(?id:string,?bandwidth:float,frequency:float,
 source(audio='#a,video='#b,midi='#c))->
source(audio='#a,video='#b,midi='#c)

All pass biquad filter.

filter.iir.eq.bandpass
(?id:string,frequency:float,?q:float,
 source(audio='#a,video='#b,midi='#c))->
source(audio='#a,video='#b,midi='#c)

Band pass biquad filter.

filter.iir.eq.high
(?id:string,frequency:float,?q:float,
 source(audio='#a,video='#b,midi='#c))->
source(audio='#a,video='#b,midi='#c)

High pass biquad filter.

filter.iir.eq.highshelf
(?id:string,frequency:float,?slope:float,
 source(audio='#a,video='#b,midi='#c))->
source(audio='#a,video='#b,midi='#c)

High shelf biquad filter.

filter.iir.eq.low
(?id:string,frequency:float,?q:float,
 source(audio='#a,video='#b,midi='#c))->
source(audio='#a,video='#b,midi='#c)

Low pass biquad filter.

filter.iir.eq.lowshelf
(?id:string,frequency:float,?slope:float,
 source(audio='#a,video='#b,midi='#c))->
source(audio='#a,video='#b,midi='#c)

Low shelf biquad filter.

filter.iir.eq.notch
(?id:string,frequency:float,?q:float,
 source(audio='#a,video='#b,midi='#c))->
source(audio='#a,video='#b,midi='#c)

Band pass biquad filter.

filter.iir.eq.peak
(?id:string,frequency:float,?gain:float,?q:float,
 source(audio='#a,video='#b,midi='#c))->
source(audio='#a,video='#b,midi='#c)

Peak EQ biquad filter.

filter.iir.resonator.allpass
(?id:string,frequency:float,?q:float,
 source(audio='#a,video='#b,midi='#c))->
source(audio='#a,video='#b,midi='#c)

IIR filter

filter.iir.resonator.bandpass
(?id:string,frequency:float,?q:float,
 source(audio='#a,video='#b,midi='#c))->
source(audio='#a,video='#b,midi='#c)

IIR filter

filter.iir.resonator.bandstop
(?id:string,frequency:float,?q:float,
 source(audio='#a,video='#b,midi='#c))->
source(audio='#a,video='#b,midi='#c)

IIR filter

filter.rc
(?id:string,mode:string,rc:'a,?wetness:'b,
 source(audio='#c,video='#d,midi='#e))->
source(audio='#c,video='#d,midi='#e)
where 'a, 'b is either float or ()->float

First-order filter (RC filter).

flanger
(?id:string,?delay:float,?feedback:'a,?freq:'b,?phase:'c,
 source(audio='#d,video='#e,midi='#f))->
source(audio='#d,video='#e,midi='#f)
where 'a, 'b, 'c is either float or ()->float

Flanger effect.

ladspa.alias
(?id:string,?aliasing_level:'a,
 source(audio='#b,video='#c,midi='#d))->
source(audio='#b,video='#c,midi='#d)
where 'a is either float or ()->float

Aliasing by Steve Harris <steve(at)plugin.org.uk>.

ladspa.allpass_c
(?id:string,decay_time:'a,delay_time:'b,max_delay:'c,
 source(audio='#d,video='#e,midi='#f))->
source(audio='#d,video='#e,midi='#f)
where 'a, 'b, 'c is either float or ()->float

Allpass delay line, cubic spline interpolation by Andy Wingo <wingo at pobox dot com>.

ladspa.allpass_l
(?id:string,decay_time:'a,delay_time:'b,max_delay:'c,
 source(audio='#d,video='#e,midi='#f))->
source(audio='#d,video='#e,midi='#f)
where 'a, 'b, 'c is either float or ()->float

Allpass delay line, linear interpolation by Andy Wingo <wingo at pobox dot com>.

ladspa.allpass_n
(?id:string,decay_time:'a,delay_time:'b,max_delay:'c,
 source(audio='#d,video='#e,midi='#f))->
source(audio='#d,video='#e,midi='#f)
where 'a, 'b, 'c is either float or ()->float

Allpass delay line, noninterpolating by Andy Wingo <wingo at pobox dot com>.

ladspa.amp
(?id:string,?amps_gain:'a,
 source(audio='#b,video='#c,midi='#d))->
source(audio='#b,video='#c,midi='#d)
where 'a is either float or ()->float

Simple amplifier by Steve Harris <steve(at)plugin.org.uk>.

ladspa.ampitchshift
(?id:string,?buffer_size:'a,?pitch_shift:'b,
 source(audio='#c,video='#d,midi='#e))->
source(audio='#c,video='#d,midi='#e)
where 'b is either float or ()->float,
  'a is either int or ()->int

AM pitchshifter by Steve Harris <steve(at)plugin.org.uk>.

ladspa.analogueosc
(?id:string,?frequency:'a,?instability:'b,?warmth:'c,
 ?waveform:'d)->source(audio=1,video=0,midi=0)
where 'a, 'b, 'c is either float or ()->float,
  'd is either int or ()->int

Analogue Oscillator by Steve Harris <steve(at)plugin.org.uk>.

ladspa.artificiallatency
(?id:string,?delay:'a,
 source(audio='#b,video='#c,midi='#d))->
source(audio='#b,video='#c,midi='#d)
where 'a is either float or ()->float

Artificial latency by Steve Harris <steve(at)plugin.org.uk>.

ladspa.autophaser
(?id:string,?attack_time:'a,?decay_time:'b,?feedback:'c,
 ?modulation_depth:'d,?spread:'e,
 source(audio='#f,video='#g,midi='#h))->
source(audio='#f,video='#g,midi='#h)
where 'a, 'b, 'c, 'd, 'e is either float or ()->float

Auto phaser by Steve Harris <steve(at)plugin.org.uk>.

ladspa.bandpass_a_iir
(?id:string,?bandwidth:'a,?center_frequency:'b,
 source(audio='#c,video='#d,midi='#e))->
source(audio='#c,video='#d,midi='#e)
where 'a, 'b is either float or ()->float

Glame Bandpass Analog Filter by Alexander Ehlert <mag(at)glame.de>.

ladspa.bandpass_iir
(?id:string,?bandwidth:'a,?center_frequency:'b,
 ?stages:'c,source(audio='#d,video='#e,midi='#f))->
source(audio='#d,video='#e,midi='#f)
where 'a, 'b is either float or ()->float,
  'c is either int or ()->int

Glame Bandpass Filter by Alexander Ehlert <mag(at)glame.de>.

ladspa.bodeshifter
(?id:string,?frequency_shift:'a,
 source(audio=1,video=0,midi=0))->
source(audio=2,video=0,midi=0)
where 'a is either float or ()->float

Bode frequency shifter by Steve Harris <steve(at)plugin.org.uk>.

ladspa.bodeshiftercv
(?id:string,?base_shift:'a,?cv_attenuation:'b,?mix:'c,
 source(audio=2,video=0,midi=0))->
source(audio=3,video=0,midi=0)
where 'a, 'b, 'c is either float or ()->float

Bode frequency shifter (CV) by Steve Harris <steve(at)plugin.org.uk>.

ladspa.butthigh_iir
(?id:string,?cutoff_frequency:'a,?resonance:'b,
 source(audio='#c,video='#d,midi='#e))->
source(audio='#c,video='#d,midi='#e)
where 'a, 'b is either float or ()->float

GLAME Butterworth Highpass by Alexander Ehlert <mag(at)glame.de>.

ladspa.buttlow_iir
(?id:string,?cutoff_frequency:'a,?resonance:'b,
 source(audio='#c,video='#d,midi='#e))->
source(audio='#c,video='#d,midi='#e)
where 'a, 'b is either float or ()->float

GLAME Butterworth Lowpass by Alexander Ehlert <mag(at)glame.de>.

ladspa.bwxover_iir
(?id:string,?cutoff_frequency:'a,?resonance:'b,
 source(audio=1,video=0,midi=0))->
source(audio=2,video=0,midi=0)
where 'a, 'b is either float or ()->float

Glame Butterworth X-over Filter by Alexander Ehlert <mag(at)glame.de>.

ladspa.chebstortion
(?id:string,?distortion:'a,
 source(audio='#b,video='#c,midi='#d))->
source(audio='#b,video='#c,midi='#d)
where 'a is either float or ()->float

Chebyshev distortion by Steve Harris <steve(at)plugin.org.uk>.

ladspa.comb
(?id:string,?band_separation:'a,?feedback:'b,
 source(audio='#c,video='#d,midi='#e))->
source(audio='#c,video='#d,midi='#e)
where 'a, 'b is either float or ()->float

Comb Filter by Steve Harris <steve(at)plugin.org.uk>.

ladspa.comb_c
(?id:string,decay_time:'a,delay_time:'b,max_delay:'c,
 source(audio='#d,video='#e,midi='#f))->
source(audio='#d,video='#e,midi='#f)
where 'a, 'b, 'c is either float or ()->float

Comb delay line, cubic spline interpolation by Andy Wingo <wingo at pobox dot com>.

ladspa.comb_l
(?id:string,decay_time:'a,delay_time:'b,max_delay:'c,
 source(audio='#d,video='#e,midi='#f))->
source(audio='#d,video='#e,midi='#f)
where 'a, 'b, 'c is either float or ()->float

Comb delay line, linear interpolation by Andy Wingo <wingo at pobox dot com>.

ladspa.comb_n
(?id:string,decay_time:'a,delay_time:'b,max_delay:'c,
 source(audio='#d,video='#e,midi='#f))->
source(audio='#d,video='#e,midi='#f)
where 'a, 'b, 'c is either float or ()->float

Comb delay line, noninterpolating by Andy Wingo <wingo at pobox dot com>.

ladspa.combsplitter
(?id:string,?band_separation:'a,
 source(audio=1,video=0,midi=0))->
source(audio=2,video=0,midi=0)
where 'a is either float or ()->float

Comb Splitter by Steve Harris <steve(at)plugin.org.uk>.

ladspa.const
(?id:string,?signal_amplitude:'a,
 source(audio='#b,video='#c,midi='#d))->
source(audio='#b,video='#c,midi='#d)
where 'a is either float or ()->float

Constant Signal Generator by Steve Harris <steve(at)plugin.org.uk>.

ladspa.crossoverdist
(?id:string,?crossover_amplitude:'a,?smoothing:'b,
 source(audio='#c,video='#d,midi='#e))->
source(audio='#c,video='#d,midi='#e)
where 'a, 'b is either float or ()->float

Crossover distortion by Steve Harris <steve(at)plugin.org.uk>.

ladspa.dcremove
(?id:string,source(audio='#a,video='#b,midi='#c))->
source(audio='#a,video='#b,midi='#c)

DC Offset Remover by Steve Harris <steve(at)plugin.org.uk>.

ladspa.decay
(?id:string,decay_time:'a,
 source(audio='#b,video='#c,midi='#d))->
source(audio='#b,video='#c,midi='#d)
where 'a is either float or ()->float

Exponential signal decay by Andy Wingo <wingo at pobox dot com>.

ladspa.decimator
(?id:string,?bit_depth:'a,?sample_rate:'b,
 source(audio='#c,video='#d,midi='#e))->
source(audio='#c,video='#d,midi='#e)
where 'a, 'b is either float or ()->float

Decimator by Steve Harris <steve(at)plugin.org.uk>.

ladspa.declip
(?id:string,source(audio='#a,video='#b,midi='#c))->
source(audio='#a,video='#b,midi='#c)

Declipper by Steve Harris <steve(at)plugin.org.uk>.

ladspa.delay_c
(?id:string,delay_time:'a,max_delay:'b,
 source(audio='#c,video='#d,midi='#e))->
source(audio='#c,video='#d,midi='#e)
where 'a, 'b is either float or ()->float

Simple delay line, cubic spline interpolation by Andy Wingo <wingo at pobox dot com>.

ladspa.delay_l
(?id:string,delay_time:'a,max_delay:'b,
 source(audio='#c,video='#d,midi='#e))->
source(audio='#c,video='#d,midi='#e)
where 'a, 'b is either float or ()->float

Simple delay line, linear interpolation by Andy Wingo <wingo at pobox dot com>.

ladspa.delay_n
(?id:string,delay_time:'a,max_delay:'b,
 source(audio='#c,video='#d,midi='#e))->
source(audio='#c,video='#d,midi='#e)
where 'a, 'b is either float or ()->float

Simple delay line, noninterpolating by Andy Wingo <wingo at pobox dot com>.

ladspa.delayorama
(?id:string,?amplitude_change:'a,?amplitude_random:'b,
 ?delay_change:'c,?delay_random:'d,?delay_range:'e,
 ?dry_wet_mix:'f,?feedback:'g,?first_delay:'h,
 ?input_gain:'i,?number_of_taps:'j,?random_seed:'k,
 source(audio='#l,video='#m,midi='#n))->
source(audio='#l,video='#m,midi='#n)
where
  'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h, 'i is either float or ()->float,
  'j, 'k is either int or ()->int

Delayorama by Steve Harris <steve(at)plugin.org.uk>.

ladspa.diode
(?id:string,?mode:'a,
 source(audio='#b,video='#c,midi='#d))->
source(audio='#b,video='#c,midi='#d)
where 'a is either float or ()->float

Diode Processor by Steve Harris <steve(at)plugin.org.uk>.

ladspa.divider
(?id:string,?denominator:'a,
 source(audio='#b,video='#c,midi='#d))->
source(audio='#b,video='#c,midi='#d)
where 'a is either int or ()->int

Audio Divider (Suboctave Generator) by Steve Harris <steve(at)plugin.org.uk>.

ladspa.dj_eq
(?id:string,?hi_gain:'a,?lo_gain:'b,?mid_gain:'c,
 source(audio=2,video=0,midi=0))->
source(audio=2,video=0,midi=0)
where 'a, 'b, 'c is either float or ()->float

DJ EQ by Steve Harris <steve(at)plugin.org.uk>.

ladspa.dj_eq_mono
(?id:string,?hi_gain:'a,?lo_gain:'b,?mid_gain:'c,
 source(audio='#d,video='#e,midi='#f))->
source(audio='#d,video='#e,midi='#f)
where 'a, 'b, 'c is either float or ()->float

DJ EQ (mono) by Steve Harris <steve(at)plugin.org.uk>.

ladspa.djflanger
(?id:string,?feedback:'a,?lfo_depth:'b,?lfo_period:'c,
 lfo_sync:'d,source(audio='#e,video='#f,midi='#g))->
source(audio='#e,video='#f,midi='#g)
where 'a, 'b, 'c, 'd is either float or ()->float

DJ flanger by Steve Harris <steve(at)plugin.org.uk>.

ladspa.dysoncompress
(?id:string,?compression_ratio:'a,
 ?fast_compression_ratio:'b,?peak_limit:'c,
 ?release_time:'d,source(audio='#e,video='#f,midi='#g))->
source(audio='#e,video='#f,midi='#g)
where 'a, 'b, 'c, 'd is either float or ()->float

Dyson compressor by Steve Harris <steve(at)plugin.org.uk>.

ladspa.faddelay
(?id:string,?delay:'a,?feedback:'b,
 source(audio='#c,video='#d,midi='#e))->
source(audio='#c,video='#d,midi='#e)
where 'a, 'b is either float or ()->float

Fractionally Addressed Delay Line by Steve Harris <steve(at)plugin.org.uk>.

ladspa.fastlookaheadlimiter
(?id:string,?input_gain:'a,?limit:'b,?release_time:'c,
 source(audio=2,video=0,midi=0))->
source(audio=2,video=0,midi=0)
where 'a, 'b, 'c is either float or ()->float

Fast Lookahead limiter by Steve Harris <steve(at)plugin.org.uk>.

ladspa.flanger
(?id:string,?delay_base:'a,?feedback:'b,
 ?lfo_frequency:'c,?max_slowdown:'d,
 source(audio='#e,video='#f,midi='#g))->
source(audio='#e,video='#f,midi='#g)
where 'a, 'b, 'c, 'd is either float or ()->float

Flanger by Steve Harris <steve(at)plugin.org.uk>.

ladspa.fmosc
(?id:string,?waveform:'a,
 source(audio='#b,video='#c,midi='#d))->
source(audio='#b,video='#c,midi='#d)
where 'a is either int or ()->int

FM Oscillator by Steve Harris <steve(at)plugin.org.uk>.

ladspa.foldover
(?id:string,?drive:'a,?skew:'b,
 source(audio='#c,video='#d,midi='#e))->
source(audio='#c,video='#d,midi='#e)
where 'a, 'b is either float or ()->float

Foldover distortion by Steve Harris <steve(at)plugin.org.uk>.

ladspa.fourbyfourpole
(?id:string,?feedback_1:'a,?feedback_2:'b,?feedback_3:'c,
 ?feedback_4:'d,?frequency_1:'e,?frequency_2:'f,
 ?frequency_3:'g,?frequency_4:'h,
 source(audio='#i,video='#j,midi='#k))->
source(audio='#i,video='#j,midi='#k)
where
  'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h is either float or ()->float

4 x 4 pole allpass by Steve Harris <steve(at)plugin.org.uk>.

ladspa.foverdrive
(?id:string,?drive_level:'a,
 source(audio='#b,video='#c,midi='#d))->
source(audio='#b,video='#c,midi='#d)
where 'a is either float or ()->float

Fast overdrive by Steve Harris <steve(at)plugin.org.uk>.

ladspa.freqtracker
(?id:string,?tracking_speed:'a,
 source(audio='#b,video='#c,midi='#d))->
source(audio='#b,video='#c,midi='#d)
where 'a is either float or ()->float

Frequency tracker by Steve Harris <steve(at)plugin.org.uk>.

ladspa.gate
(?id:string,?attack:'a,?decay:'b,?hf_key_filter:'c,
 ?hold:'d,?lf_key_filter:'e,?output_select:'f,?range:'g,
 ?threshold:'h,source(audio='#i,video='#j,midi='#k))->
source(audio='#i,video='#j,midi='#k)
where
  'a, 'b, 'c, 'd, 'e, 'g, 'h is either float or ()->float,
  'f is either int or ()->int

Gate by Steve Harris <steve(at)plugin.org.uk>.

ladspa.giantflange
(?id:string,?delay_1_range:'a,?delay_2_range:'b,
 double_delay:'c,?dry_wet_level:'d,?feedback:'e,
 ?lfo_frequency_1:'f,?lfo_frequency_2:'g,
 source(audio='#h,video='#i,midi='#j))->
source(audio='#h,video='#i,midi='#j)
where
  'a, 'b, 'c, 'd, 'e, 'f, 'g is either float or ()->float

Giant flange by Steve Harris <steve(at)plugin.org.uk>.

ladspa.gong
(?id:string,?inner_damping:'a,?inner_size_1:'b,
 ?inner_size_2:'c,?inner_size_3:'d,?inner_size_4:'e,
 ?inner_stiffness_1:'f,?inner_stiffness_1__:'g,
 ?inner_stiffness_2:'h,?inner_stiffness_2__:'i,
 ?inner_stiffness_3:'j,?inner_stiffness_3__:'k,
 ?inner_stiffness_4:'l,?inner_stiffness_4__:'m,
 ?mic_position:'n,?outer_damping:'o,?outer_size_1:'p,
 ?outer_size_2:'q,?outer_size_3:'r,?outer_size_4:'s,
 ?outer_stiffness_1:'t,?outer_stiffness_1__:'u,
 ?outer_stiffness_2:'v,?outer_stiffness_2__:'w,
 ?outer_stiffness_3:'x,?outer_stiffness_3__:'y,
 ?outer_stiffness_4:'z,?outer_stiffness_4__:'aa,
 source(audio='#ab,video='#ac,midi='#ad))->
source(audio='#ab,video='#ac,midi='#ad)
where
  'a, 'aa, 'b, 'c, 'd, 'e, 'f, 'g, 'h, 'i, 'j, 'k, 'l, 'm, 'n, 'o, 'p, 'q, 'r, 's, 't, 'u, 'v, 'w, 'x, 'y, 'z is either float or ()->float

Gong model by Steve Harris <steve(at)plugin.org.uk>.

ladspa.gongbeater
(?id:string,?impulse_gain:'a,?strike_duration:'b,
 ?strike_gain:'c,source(audio='#d,video='#e,midi='#f))->
source(audio='#d,video='#e,midi='#f)
where 'a, 'b, 'c is either float or ()->float

Gong beater by Steve Harris <steve(at)plugin.org.uk>.

ladspa.gsm
(?id:string,?dry_wet_mix:'a,?error_rate:'b,
 ?number_of_passes:'c,
 source(audio='#d,video='#e,midi='#f))->
source(audio='#d,video='#e,midi='#f)
where 'a, 'b is either float or ()->float,
  'c is either int or ()->int

GSM simulator by Steve Harris <steve(at)plugin.org.uk>.

ladspa.gverb
(?id:string,?damping:'a,?dry_signal_level:'b,
 ?early_reflection_level:'c,?input_bandwidth:'d,
 ?reverb_time:'e,?roomsize:'f,?tail_level:'g,
 source(audio=1,video=0,midi=0))->
source(audio=2,video=0,midi=0)
where
  'a, 'b, 'c, 'd, 'e, 'f, 'g is either float or ()->float

GVerb by Juhana Sadeharju <kouhia at nic.funet.fi>, LADSPAification by Steve Harris <steve(at)plugin.org.uk>.

ladspa.hardlimiter
(?id:string,?db_limit:'a,?residue_level:'b,?wet_level:'c,
 source(audio='#d,video='#e,midi='#f))->
source(audio='#d,video='#e,midi='#f)
where 'a, 'b, 'c is either float or ()->float

Hard Limiter by Marcus Andersson.

ladspa.harmonicgen
(?id:string,?_10th_harmonic_magnitude:'a,
 ?_2nd_harmonic_magnitude:'b,?_3rd_harmonic_magnitude:'c,
 ?_4th_harmonic_magnitude:'d,?_5th_harmonic_magnitude:'e,
 ?_6th_harmonic_magnitude:'f,?_7th_harmonic_magnitude:'g,
 ?_8th_harmonic_magnitude:'h,?_9th_harmonic_magnitude:'i,
 ?fundamental_magnitude:'j,
 source(audio='#k,video='#l,midi='#m))->
source(audio='#k,video='#l,midi='#m)
where
  'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h, 'i, 'j is either float or ()->float

Harmonic generator by Steve Harris <steve(at)plugin.org.uk>.

ladspa.hermesfilter
(?id:string,?band_1_gain:'a,?band_2_gain:'b,
 ?band_3_gain:'c,?delay1_feedback:'d,?delay1_length:'e,
 ?delay1_wetness:'f,?delay2_feedback:'g,
 ?delay2_length:'h,?delay2_wetness:'i,
 ?delay3_feedback:'j,?delay3_length:'k,
 ?delay3_wetness:'l,?dist1_drive:'m,?dist2_drive:'n,
 ?dist3_drive:'o,?filt1_freq:'p,?filt1_lfo1_level:'q,
 ?filt1_lfo2_level:'r,?filt1_q:'s,?filt1_resonance:'t,
 ?filt1_type:'u,?filt2_freq:'v,?filt2_lfo1_level:'w,
 ?filt2_lfo2_level:'x,?filt2_q:'y,?filt2_resonance:'z,
 ?filt2_type:'aa,?filt3_freq:'ab,?filt3_lfo1_level:'ac,
 ?filt3_lfo2_level:'ad,?filt3_q:'ae,?filt3_resonance:'af,
 ?filt3_type:'ag,?input_gain:'ah,?lfo1_freq:'ai,
 ?lfo1_wave:'aj,?lfo2_freq:'ak,?lfo2_wave:'al,
 ?osc1_freq:'am,?osc1_gain:'an,?osc1_wave:'ao,
 ?osc2_freq:'ap,?osc2_gain:'aq,?osc2_wave:'ar,
 ?ringmod_1_depth:'as,?ringmod_2_depth:'at,
 ?ringmod_3_depth:'au,?rm1_gain:'av,?rm2_gain:'aw,
 ?rm3_gain:'ax,?xover_lower_freq:'ay,
 ?xover_upper_freq:'az,
 source(audio='#ba,video='#bb,midi='#bc))->
source(audio='#ba,video='#bb,midi='#bc)
where
  'a, 'ab, 'ac, 'ad, 'ae, 'af, 'ah, 'ai, 'ak, 'am, 'an, 'ap, 'aq, 'as, 'at, 'au, 'av, 'aw, 'ax, 'ay, 'az, 'b, 'c, 'd, 'e, 'f, 'g, 'h, 'i, 'j, 'k, 'l, 'm, 'n, 'o, 'p, 'q, 'r, 's, 't, 'v, 'w, 'x, 'y, 'z is either float or ()->float,
  'aa, 'ag, 'aj, 'al, 'ao, 'ar, 'u is either int or ()->int

Hermes Filter by Steve Harris <steve(at)plugin.org.uk>.

ladspa.highpass_iir
(?id:string,?cutoff_frequency:'a,?stages:'b,
 source(audio='#c,video='#d,midi='#e))->
source(audio='#c,video='#d,midi='#e)
where 'a is either float or ()->float,
  'b is either int or ()->int

Glame Highpass Filter by Alexander Ehlert <mag(at)glame.de>.

ladspa.hilbert
(?id:string,source(audio=1,video=0,midi=0))->
source(audio=2,video=0,midi=0)

Hilbert transformer by Steve Harris <steve(at)plugin.org.uk>.

ladspa.imp
(?id:string,?gain:'a,?high_latency_mode:'b,
 ?impulse_id:'c,source(audio='#d,video='#e,midi='#f))->
source(audio='#d,video='#e,midi='#f)
where 'a is either float or ()->float,
  'b, 'c is either int or ()->int

Impulse convolver by Steve Harris <steve(at)plugin.org.uk>.

ladspa.impulse_fc
(?id:string,frequency:'a)->source(audio=1,video=0,midi=0)
where 'a is either float or ()->float

Nonbandlimited single-sample impulses (Frequency: Control) by Andy Wingo <wingo at pobox dot com>.

ladspa.inv
(?id:string,source(audio='#a,video='#b,midi='#c))->
source(audio='#a,video='#b,midi='#c)

Inverter by Steve Harris <steve(at)plugin.org.uk>.

ladspa.karaoke
(?id:string,?vocal_volume:'a,
 source(audio=2,video=0,midi=0))->
source(audio=2,video=0,midi=0)
where 'a is either float or ()->float

Karaoke by Steve Harris <steve(at)plugin.org.uk>.

ladspa.lcrdelay
(?id:string,?c_delay:'a,?c_level:'b,?dry_wet_level:'c,
 ?feedback:'d,?high_damp:'e,?l_delay:'f,?l_level:'g,
 ?low_damp:'h,?r_delay:'i,?r_level:'j,?spread:'k,
 source(audio=2,video=0,midi=0))->
source(audio=2,video=0,midi=0)
where
  'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h, 'i, 'j, 'k is either float or ()->float

L/C/R Delay by Steve Harris <steve(at)plugin.org.uk>.

ladspa.lfophaser
(?id:string,?feedback:'a,?lfo_depth:'b,?lfo_rate:'c,
 ?spread:'d,source(audio='#e,video='#f,midi='#g))->
source(audio='#e,video='#f,midi='#g)
where 'a, 'b, 'c, 'd is either float or ()->float

LFO Phaser by Steve Harris <steve(at)plugin.org.uk>.

ladspa.lowpass_iir
(?id:string,?cutoff_frequency:'a,?stages:'b,
 source(audio='#c,video='#d,midi='#e))->
source(audio='#c,video='#d,midi='#e)
where 'a is either float or ()->float,
  'b is either int or ()->int

Glame Lowpass Filter by Alexander Ehlert <mag(at)glame.de>.

ladspa.lsfilter
(?id:string,?cutoff_frequency:'a,?filter_type:'b,
 ?resonance:'c,source(audio='#d,video='#e,midi='#f))->
source(audio='#d,video='#e,midi='#f)
where 'a, 'c is either float or ()->float,
  'b is either int or ()->int

LS Filter by Steve Harris <steve(at)plugin.org.uk>.

ladspa.matrixmsst
(?id:string,?width:'a,source(audio=2,video=0,midi=0))->
source(audio=2,video=0,midi=0)
where 'a is either float or ()->float

Matrix: MS to Stereo by Steve Harris <steve(at)plugin.org.uk>.

ladspa.matrixspatialiser
(?id:string,?width:'a,source(audio=2,video=0,midi=0))->
source(audio=2,video=0,midi=0)
where 'a is either int or ()->int

Matrix Spatialiser by Joern Nettingsmeier <nettings(at)folkwang-hochschule.de>.

ladspa.matrixstms
(?id:string,source(audio=2,video=0,midi=0))->
source(audio=2,video=0,midi=0)

Matrix: Stereo to MS by Steve Harris <steve(at)plugin.org.uk>.

ladspa.mbeq
(?id:string,?_10000hz_gain:'a,?_100hz_gain:'b,
 ?_1250hz_gain:'c,?_156hz_gain:'d,?_1750hz_gain:'e,
 ?_20000hz_gain:'f,?_220hz_gain:'g,?_2500hz_gain:'h,
 ?_311hz_gain:'i,?_3500hz_gain:'j,?_440hz_gain:'k,
 ?_5000hz_gain:'l,?_50hz_gain:'m,?_622hz_gain:'n,
 ?_880hz_gain:'o,source(audio='#p,video='#q,midi='#r))->
source(audio='#p,video='#q,midi='#r)
where
  'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h, 'i, 'j, 'k, 'l, 'm, 'n, 'o is either float or ()->float

Multiband EQ by Steve Harris <steve(at)plugin.org.uk>.

ladspa.moddelay
(?id:string,?base_delay:'a,
 source(audio=2,video=0,midi=0))->
source(audio=1,video=0,midi=0)
where 'a is either float or ()->float

Modulatable delay by Steve Harris <steve(at)plugin.org.uk>.

ladspa.multivoicechorus
(?id:string,?delay_base:'a,?detune:'b,?lfo_frequency:'c,
 ?number_of_voices:'d,?output_attenuation:'e,
 ?voice_separation:'f,
 source(audio='#g,video='#h,midi='#i))->
source(audio='#g,video='#h,midi='#i)
where 'a, 'b, 'c, 'e, 'f is either float or ()->float,
  'd is either int or ()->int

Multivoice Chorus by Steve Harris <steve(at)plugin.org.uk>.

ladspa.notch_iir
(?id:string,?bandwidth:'a,?center_frequency:'b,
 ?stages:'c,source(audio='#d,video='#e,midi='#f))->
source(audio='#d,video='#e,midi='#f)
where 'a, 'b is either float or ()->float,
  'c is either int or ()->int

Mag's Notch Filter by Alexander Ehlert <mag(at)glame.de>.

ladspa.pitchscale
(?id:string,?pitch_co_efficient:'a,
 source(audio='#b,video='#c,midi='#d))->
source(audio='#b,video='#c,midi='#d)
where 'a is either float or ()->float

Pitch Scaler by Steve Harris <steve(at)plugin.org.uk>.

ladspa.pitchscalehq
(?id:string,?pitch_co_efficient:'a,
 source(audio='#b,video='#c,midi='#d))->
source(audio='#b,video='#c,midi='#d)
where 'a is either float or ()->float

Higher Quality Pitch Scaler by Steve Harris <steve(at)plugin.org.uk>.

ladspa.plate
(?id:string,?damping:'a,?dry_wet_mix:'b,?reverb_time:'c,
 source(audio=1,video=0,midi=0))->
source(audio=2,video=0,midi=0)
where 'a, 'b, 'c is either float or ()->float

Plate reverb by Steve Harris <steve(at)plugin.org.uk>.

ladspa.pointercastdistortion
(?id:string,?dry_wet_mix:'a,?effect_cutoff_freq:'b,
 source(audio='#c,video='#d,midi='#e))->
source(audio='#c,video='#d,midi='#e)
where 'a, 'b is either float or ()->float

Pointer cast distortion by Steve Harris <steve(at)plugin.org.uk>.

ladspa.rateshifter
(?id:string,?rate:'a,
 source(audio='#b,video='#c,midi='#d))->
source(audio='#b,video='#c,midi='#d)
where 'a is either float or ()->float

Rate shifter by Steve Harris <steve(at)plugin.org.uk>.

ladspa.retroflange
(?id:string,?average_stall:'a,?flange_frequency:'b,
 source(audio='#c,video='#d,midi='#e))->
source(audio='#c,video='#d,midi='#e)
where 'a, 'b is either float or ()->float

Retro Flanger by Steve Harris <steve(at)plugin.org.uk>.

ladspa.revdelay
(?id:string,?crossfade_samples:'a,?delay_time:'b,
 ?dry_level:'c,?feedback:'d,?wet_level:'e,
 source(audio='#f,video='#g,midi='#h))->
source(audio='#f,video='#g,midi='#h)
where 'b, 'c, 'd, 'e is either float or ()->float,
  'a is either int or ()->int

Reverse Delay (5s max) by Jesse Chappell <jesse at essej dot net>.

ladspa.ringmod_1i1o1l
(?id:string,?frequency:'a,?modulation_depth:'b,
 ?sawtooth_level:'c,?sine_level:'d,?square_level:'e,
 ?triangle_level:'f,source(audio='#g,video='#h,midi='#i))->
source(audio='#g,video='#h,midi='#i)
where 'a, 'b, 'c, 'd, 'e, 'f is either float or ()->float

Ringmod with LFO by Steve Harris <steve(at)plugin.org.uk>.

ladspa.ringmod_2i1o
(?id:string,?modulation_depth:'a,
 source(audio=2,video=0,midi=0))->
source(audio=1,video=0,midi=0)
where 'a is either float or ()->float

Ringmod with two inputs by Steve Harris <steve(at)plugin.org.uk>.

ladspa.satanmaximiser
(?id:string,?decay_time:'a,?knee_point:'b,
 source(audio='#c,video='#d,midi='#e))->
source(audio='#c,video='#d,midi='#e)
where 'a, 'b is either float or ()->float

Barry's Satan Maximiser by Steve Harris <steve(at)plugin.org.uk>.

ladspa.sc1
(?id:string,?attack_time:'a,?knee_radius:'b,
 ?makeup_gain:'c,?ratio:'d,?release_time:'e,
 ?threshold_level:'f,
 source(audio='#g,video='#h,midi='#i))->
source(audio='#g,video='#h,midi='#i)
where 'a, 'b, 'c, 'd, 'e, 'f is either float or ()->float

SC1 by Steve Harris <steve(at)plugin.org.uk>.

ladspa.sc2
(?id:string,?attack_time:'a,?knee_radius:'b,
 ?makeup_gain:'c,?ratio:'d,?release_time:'e,
 ?threshold_level:'f,source(audio=2,video=0,midi=0))->
source(audio=1,video=0,midi=0)
where 'a, 'b, 'c, 'd, 'e, 'f is either float or ()->float

SC2 by Steve Harris <steve(at)plugin.org.uk>.

ladspa.sc3
(?id:string,?attack_time:'a,?chain_balance:'b,
 ?knee_radius:'c,?makeup_gain:'d,?ratio:'e,
 ?release_time:'f,?threshold_level:'g,
 source(audio=3,video=0,midi=0))->
source(audio=2,video=0,midi=0)
where
  'a, 'b, 'c, 'd, 'e, 'f, 'g is either float or ()->float

SC3 by Steve Harris <steve(at)plugin.org.uk>.

ladspa.sc4
(?id:string,?attack_time:'a,?knee_radius:'b,
 ?makeup_gain:'c,?ratio:'d,?release_time:'e,?rms_peak:'f,
 ?threshold_level:'g,source(audio=2,video=0,midi=0))->
source(audio=2,video=0,midi=0)
where
  'a, 'b, 'c, 'd, 'e, 'f, 'g is either float or ()->float

SC4 by Steve Harris <steve(at)plugin.org.uk>.

ladspa.sc4m
(?id:string,?attack_time:'a,?knee_radius:'b,
 ?makeup_gain:'c,?ratio:'d,?release_time:'e,?rms_peak:'f,
 ?threshold_level:'g,
 source(audio='#h,video='#i,midi='#j))->
source(audio='#h,video='#i,midi='#j)
where
  'a, 'b, 'c, 'd, 'e, 'f, 'g is either float or ()->float

SC4 mono by Steve Harris <steve(at)plugin.org.uk>.

ladspa.se4
(?id:string,?attack_time:'a,?attenuation:'b,
 ?knee_radius:'c,?ratio:'d,?release_time:'e,?rms_peak:'f,
 ?threshold_level:'g,source(audio=2,video=0,midi=0))->
source(audio=2,video=0,midi=0)
where
  'a, 'b, 'c, 'd, 'e, 'f, 'g is either float or ()->float

SE4 by Steve Harris <steve(at)plugin.org.uk>.

ladspa.shaper
(?id:string,?waveshape:'a,
 source(audio='#b,video='#c,midi='#d))->
source(audio='#b,video='#c,midi='#d)
where 'a is either float or ()->float

Wave shaper by Steve Harris <steve(at)plugin.org.uk>.

ladspa.sifter
(?id:string,?sift_size:'a,
 source(audio='#b,video='#c,midi='#d))->
source(audio='#b,video='#c,midi='#d)
where 'a is either float or ()->float

Signal sifter by Steve Harris <steve(at)plugin.org.uk>.

ladspa.sincos
(?id:string,?base_frequency:'a,?pitch_offset:'b)->
source(audio=2,video=0,midi=0)
where 'a, 'b is either float or ()->float

Sine + cosine oscillator by Steve Harris <steve(at)plugin.org.uk>.

ladspa.singlepara
(?id:string,?bandwidth:'a,?frequency:'b,?gain:'c,
 source(audio='#d,video='#e,midi='#f))->
source(audio='#d,video='#e,midi='#f)
where 'a, 'b, 'c is either float or ()->float

Single band parametric by Steve Harris <steve(at)plugin.org.uk>.

ladspa.sinuswavewrapper
(?id:string,?wrap_degree:'a,
 source(audio='#b,video='#c,midi='#d))->
source(audio='#b,video='#c,midi='#d)
where 'a is either float or ()->float

Sinus wavewrapper by Steve Harris <steve(at)plugin.org.uk>.

ladspa.smoothdecimate
(?id:string,?resample_rate:'a,?smoothing:'b,
 source(audio='#c,video='#d,midi='#e))->
source(audio='#c,video='#d,midi='#e)
where 'a, 'b is either float or ()->float

Smooth Decimator by Steve Harris <steve(at)plugin.org.uk>.

ladspa.split
(?id:string,source(audio=1,video=0,midi=0))->
source(audio=2,video=0,midi=0)

Mono to Stereo splitter by Frank Neumann <franky(at)users.sourceforge.net>.

ladspa.stepmuxer
(?id:string,?crossfade_time:'a,
 source(audio=9,video=0,midi=0))->
source(audio=1,video=0,midi=0)
where 'a is either float or ()->float

Step Demuxer by Steve Harris <steve(at)plugin.org.uk>.

ladspa.surroundencoder
(?id:string,source(audio=4,video=0,midi=0))->
source(audio=2,video=0,midi=0)

Surround matrix encoder by Steve Harris <steve(at)plugin.org.uk>.

ladspa.svf
(?id:string,?filter_freq:'a,?filter_q:'b,
 ?filter_resonance:'c,?filter_type:'d,
 source(audio='#e,video='#f,midi='#g))->
source(audio='#e,video='#f,midi='#g)
where 'a, 'b, 'c is either float or ()->float,
  'd is either int or ()->int

State Variable Filter by Steve Harris <steve(at)plugin.org.uk>.

ladspa.tapedelay
(?id:string,?dry_level:'a,?tap_1_distance:'b,
 ?tap_1_level:'c,?tap_2_distance:'d,?tap_2_level:'e,
 ?tap_3_distance:'f,?tap_3_level:'g,?tap_4_distance:'h,
 ?tap_4_level:'i,?tape_speed:'j,
 source(audio='#k,video='#l,midi='#m))->
source(audio='#k,video='#l,midi='#m)
where
  'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h, 'i, 'j is either float or ()->float

Tape Delay Simulation by Steve Harris <steve(at)plugin.org.uk>.

ladspa.transient
(?id:string,?attack_speed:'a,?sustain_time:'b,
 source(audio='#c,video='#d,midi='#e))->
source(audio='#c,video='#d,midi='#e)
where 'a, 'b is either float or ()->float

Transient mangler by Steve Harris <steve(at)plugin.org.uk>.

ladspa.triplepara
(?id:string,?band_1_bandwidth:'a,?band_1_frequency:'b,
 ?band_1_gain:'c,?band_2_bandwidth:'d,
 ?band_2_frequency:'e,?band_2_gain:'f,
 ?band_3_bandwidth:'g,?band_3_frequency:'h,
 ?band_3_gain:'i,?high_shelving_frequency:'j,
 ?high_shelving_gain:'k,?high_shelving_slope:'l,
 ?low_shelving_frequency:'m,?low_shelving_gain:'n,
 ?low_shelving_slope:'o,
 source(audio='#p,video='#q,midi='#r))->
source(audio='#p,video='#q,midi='#r)
where
  'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h, 'i, 'j, 'k, 'l, 'm, 'n, 'o is either float or ()->float

Triple band parametric with shelves by Steve Harris <steve(at)plugin.org.uk>.

ladspa.valve
(?id:string,?distortion_character:'a,
 ?distortion_level:'b,
 source(audio='#c,video='#d,midi='#e))->
source(audio='#c,video='#d,midi='#e)
where 'a, 'b is either float or ()->float

Valve saturation by Steve Harris <steve(at)plugin.org.uk>.

ladspa.valverect
(?id:string,?distortion:'a,?sag_level:'b,
 source(audio='#c,video='#d,midi='#e))->
source(audio='#c,video='#d,midi='#e)
where 'a, 'b is either float or ()->float

Valve rectifier by Steve Harris <steve(at)plugin.org.uk>.

ladspa.vocoder
(?id:string,band_10_level:'a,band_11_level:'b,
 band_12_level:'c,band_13_level:'d,band_14_level:'e,
 band_15_level:'f,band_16_level:'g,band_1_level:'h,
 band_2_level:'i,band_3_level:'j,band_4_level:'k,
 band_5_level:'l,band_6_level:'m,band_7_level:'n,
 band_8_level:'o,band_9_level:'p,left_right:'q,
 number_of_bands:'r,source(audio=2,video=0,midi=0))->
source(audio=2,video=0,midi=0)
where
  'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h, 'i, 'j, 'k, 'l, 'm, 'n, 'o, 'p is either float or ()->float,
  'q, 'r is either int or ()->int

Vocoder by Achim Settelmeier <settel-linux(at)sirlab.de> (adapted by Josh Green and Hexasoft).

ladspa.vynil
(?id:string,?crackle:'a,?rpm:'b,?surface_warping:'c,
 ?wear:'d,?year:'e,source(audio=2,video=0,midi=0))->
source(audio=2,video=0,midi=0)
where 'a, 'b, 'c, 'd, 'e is either float or ()->float

VyNil (Vinyl Effect) by Steve Harris <steve(at)plugin.org.uk>.

ladspa.waveterrain
(?id:string,source(audio=2,video=0,midi=0))->
source(audio=1,video=0,midi=0)

Wave Terrain Oscillator by Steve Harris <steve(at)plugin.org.uk>.

ladspa.xfade
(?id:string,?crossfade:'a,source(audio=4,video=0,midi=0))->
source(audio=2,video=0,midi=0)
where 'a is either float or ()->float

Crossfade by Steve Harris <steve(at)plugin.org.uk>.

ladspa.xfade4
(?id:string,?crossfade:'a,source(audio=4,video=0,midi=0))->
source(audio=4,video=0,midi=0)
where 'a is either float or ()->float

Crossfade (4 outs) by Steve Harris <steve(at)plugin.org.uk>.

ladspa.zm1
(?id:string,source(audio='#a,video='#b,midi='#c))->
source(audio='#a,video='#b,midi='#c)

z-1 by Steve Harris <steve(at)plugin.org.uk>.

limit
(?id:string,?attack:'a,?gain:'b,?knee:'c,?ratio:float,
 ?release:'d,?rms_window:float,?threshold:'e,
 source(audio='#f,video='#g,midi='#h))->
source(audio='#f,video='#g,midi='#h)
where 'a, 'b, 'c, 'd, 'e is either float or ()->float

Limit the signal.

mic_filter
(source(audio='#a,video='#b,midi='#c))->
source(audio='#a,video='#b,midi='#c)

Remove low frequencies often produced by microphones.

mix
(?id:string,[source(audio='#a,video='#b,midi='#c)])->
source(audio='#a,video='#b,midi='#c)

Mixing table controllable via the telnet interface.

normalize
(?id:string,?gain_max:'a,?gain_min:'b,?k_down:'c,
 ?k_up:'d,?target:'e,?threshold:'f,?window:float,
 source(audio='#g,video='#h,midi='#i))->
source(audio='#g,video='#h,midi='#i)
where 'a, 'b, 'c, 'd, 'e, 'f is either float or ()->float

Normalize the signal. Dynamic normalization of the signal is sometimes the only option, and can make a listening experience much nicer. However, its dynamic aspect implies some limitations which can go as far as creating saturation in some extreme cases. If possible, consider using some track-based normalization techniques such as those based on replay gain. See the documentation for more details.

nrj
(source(audio='#a,video='#b,midi='#c))->
source(audio='#a,video='#b,midi='#c)

Compress and normalize, producing a more uniform and “full” sound.

pipe
(?id:string,?buffer:float,?max:float,process:string,
 ?restart:bool,?restart_on_error:bool,
 source(audio='#a+1,video=0,midi=0))->
source(audio='#b+1,video=0,midi=0)

Process audio signal through a given process stdin/stdout.

sky
(source(audio='#a,video='#b,midi=0))->
source(audio='#a,video='#b,midi=0)

Multiband-compression.

smart_cross
(?id:string,?active:bool,?conservative:bool,
 ?duration:float,?inhibit:float,?minimum:float,
 ?width:float,
 ((float,float,[(string*string)],[(string*string)],
   source(audio='#a+1,video=0,midi=0),
   source(audio='#a+1,video=0,midi=0))->
  source(audio='#a+1,video=0,midi=0)),
 source(audio='#a+1,video=0,midi=0))->
source(audio='#a+1,video=0,midi=0)

Cross operator, allowing the composition of the N last seconds of a track with the beginning of the next track, using a transition function depending on the relative power of the signal before and after the end of track.

stereo.ms.decode
(?id:string,?width:float,source(audio=2,video=0,midi=0))->
source(audio=2,video=0,midi=0)

Decode mid+side stereo (M/S) to left+right stereo.

stereo.ms.encode
(?id:string,source(audio=2,video=0,midi=0))->
source(audio=2,video=0,midi=0)

Encode left+right stereo to mid+side stereo (M/S).

stereo.pan
(?id:string,?field:'a,?pan:'b,
 source(audio=2,video=0,midi=0))->
source(audio=2,video=0,midi=0)
where 'a, 'b is either float or ()->float

Pan a stereo sound.

stretch
(?id:string,?active:bool,ratio:'a,
 source(audio='#b+1,video=0,midi=0))->
source(audio='#c+1,video=0,midi=0)
where 'a is either float or ()->float

Slow down or accelerate an audio stream by stretching (sounds lower) or squeezing it (sounds higher).

Source / Sound Synthesis

synth.all.saw
(?id:string,?attack:float,?decay:float,?envelope:bool,
 ?release:float,?sustain:float,
 source(audio='#a+1,video='#b,midi='#c+16))->
source(audio='#a+1,video='#b,midi='#c+16)

Saw synthesizer. It creates one synthesizer for each channel.

synth.all.sine
(?id:string,?attack:float,?decay:float,?envelope:bool,
 ?release:float,?sustain:float,
 source(audio='#a+1,video='#b,midi='#c+16))->
source(audio='#a+1,video='#b,midi='#c+16)

Sine synthesizer. It creates one synthesizer for each channel.

synth.all.square
(?id:string,?attack:float,?decay:float,?envelope:bool,
 ?release:float,?sustain:float,
 source(audio='#a+1,video='#b,midi='#c+16))->
source(audio='#a+1,video='#b,midi='#c+16)

Square synthesizer. It creates one synthesizer for each channel.

synth.saw
(?id:string,?attack:float,?channel:int,?decay:float,
 ?envelope:bool,?release:float,?sustain:float,
 ?volume:float,source(audio='#a+1,video='#b,midi='#c+1))->
source(audio='#a+1,video='#b,midi='#c+1)

Saw synthesizer.

synth.sine
(?id:string,?attack:float,?channel:int,?decay:float,
 ?envelope:bool,?release:float,?sustain:float,
 ?volume:float,source(audio='#a+1,video='#b,midi='#c+1))->
source(audio='#a+1,video='#b,midi='#c+1)

Sine synthesizer.

synth.square
(?id:string,?attack:float,?channel:int,?decay:float,
 ?envelope:bool,?release:float,?sustain:float,
 ?volume:float,source(audio='#a+1,video='#b,midi='#c+1))->
source(audio='#a+1,video='#b,midi='#c+1)

Square synthesizer.

Source / Track Processing

append
(?id:string,?insert_missing:bool,?merge:bool,source('a),
 (([(string*string)])->source('a)))->source('a)

Append an extra track to every track. Set the metadata 'liq_append' to 'false' to inhibit appending on one track.

at
((()->bool),source('a))->source('a)

Restrict a source to play only when a predicate is true.

crossfade
(?id:string,?conservative:bool,?start_next:float,
 ?fade_in:float,?fade_out:float,
 source(audio='#a,video='#b,midi=0))->
source(audio='#a,video='#b,midi=0)

Simple crossfade.

cue_cut
(?id:string,?cue_in_metadata:string,
 ?cue_out_metadata:string,
 source(audio='#a,video='#b,midi='#c))->
source(audio='#a,video='#b,midi='#c)

Start track after a cue in point and stop it at cue out point. The cue points are given as metadata, in seconds from the begining of tracks.

delay
(?id:string,?initial:bool,float,source('a))->source('a)

Prevents the child from being ready again too fast after a end of track

drop_metadata
(source('a))->source('a)

Removes all metadata coming from a source.

eat_blank
(?id:string,?at_beginning:bool,?max_blank:float,
 ?min_noise:float,?start_blank:bool,?threshold:float,
 ?track_sensitive:bool,
 source(audio='#a,video='#b,midi='#c))->
source(audio='#a,video='#b,midi='#c)

Eat blanks, i.e., drop the contents of the stream until it is not blank anymore.

fallback
(?id:string,?replay_metadata:bool,?track_sensitive:'a,
 ?transitions:[(source('b),source('b))->source('b)],
 [source('b)])->source('b)
where 'a is either bool or ()->bool

At the beginning of each track, select the first ready child.

fallback.skip
(input:source('a),source('a))->source('a)

Special track insensitive fallback that always skips current song before switching.

insert_metadata
(?id:string,source('a))->
((([(string*string)])->unit)*source('a))

Dynamically insert metadata in a stream. Returns a pair (f,s) where s is a new source and f is a function of type (metadata)->unit, used to insert metadata in s.

map_metadata
(?id:string,?insert_missing:bool,?strip:bool,
 ?update:bool,(([(string*string)])->[(string*string)]),
 source('a))->source('a)

Rewrite metadata on the fly using a function.

merge_tracks
(?id:string,source('a))->source('a)

Merge consecutive tracks from the input source.

mksafe
(?id:string,source('a))->source('a)

Turn a source into an infaillible source by adding blank when the source is not available.

notify_metadata
(?urgency:string,?icon:string,?time:int,
 ?display:(([(string*string)])->string),?title:string,
 source('a))->source('a)

Use notify to display metadata info.

on_blank
(?id:string,?max_blank:float,?min_noise:float,
 ?on_noise:(()->unit),?start_blank:bool,?threshold:float,
 ?track_sensitive:bool,(()->unit),
 source(audio='#a,video='#b,midi='#c))->
source(audio='#a,video='#b,midi='#c)

Calls a given handler when detecting a blank.

on_end
(?id:string,?delay:float,
 ((float,[(string*string)])->unit),source('a))->
source('a)

Call a given handler when there is less than a given amount of time remaining before then end of track.

on_metadata
(?id:string,(([(string*string)])->unit),source('a))->
source('a)

Call a given handler on metadata packets.

on_offset
(?id:string,?force:bool,?offset:float,?override:string,
 ((float,[(string*string)])->unit),source('a))->
source('a)

Call a given handler when position in track is equal or more than a given amount of time.

on_track
(?id:string,(([(string*string)])->unit),source('a))->
source('a)

Call a given handler on new tracks.

once
(source('a))->source('a)

Creates a source that plays only one track of the input source.

osd_metadata
(?color:string,?position:string,?font:string,
 ?display:(([(string*string)])->string),source('a))->
source('a)

Use X On Screen Display to display metadata info.

overlap_sources
(?id:string,?normalize:bool,?start_next:string,
 ?weights:[int],[source(audio='#a,video='#b,midi=0)])->
source(audio='#a,video='#b,midi=0)

Rotate between overlapping sources. Next track starts according to 'liq_start_next' offset metadata.

playlist.merge
(?id:string,?random:bool,string)->source('a)

Play the whole playlist as one track.

prepend
(?id:string,?merge:bool,
 source(audio='#a,video='#b,midi='#c),
 (([(string*string)])->
  source(audio='#a,video='#b,midi='#c)))->
source(audio='#a,video='#b,midi='#c)

Prepend an extra track before every track. Set the metadata 'liq_prepend' to 'false' to inhibit prepending on one track.

random
(?id:string,?replay_metadata:bool,?track_sensitive:'a,
 ?transitions:[(source('b),source('b))->source('b)],
 ?weights:[int],[source('b)])->source('b)
where 'a is either bool or ()->bool

At the beginning of every track, select a random ready child.

rewrite_metadata
([(string*string)],?insert_missing:bool,?update:bool,
 ?strip:bool,source('a))->source('a)

Rewrite metadata on the fly using a list of (target,rules).

rotate
(?id:string,?replay_metadata:bool,?track_sensitive:'a,
 ?transitions:[(source('b),source('b))->source('b)],
 ?weights:[int],[source('b)])->source('b)
where 'a is either bool or ()->bool

Rotate between the sources.

rotate.merge
(?id:string,?track_sensitive:bool,
 ?transitions:[(source('a),source('a))->source('a)],
 ?weights:[int],[source('a)])->source('a)

Same operator as rotate but merges tracks from each sources. For instance, rotate.merge([intro,main,outro]) creates a source that plays a sequence [intro,main,outro] as single track and loops back.

say_metadata
(source(?A),?pattern:string)->source(?A)

Append speech-synthesized tracks reading the metadata.

sequence
(?id:string,?merge:bool,[source('a)])->source('a)

Play only one track of every successive source, except for the last one which is played as much as available. Sources are released after being used, allowing them to shutdown cleanly and free their resources.

server.insert_metadata
(?id:string,source('a))->source('a)

Register a server/telnet command to update a source's metadata. Returns a new source, which will receive the updated metadata. The command has the following format: insert key1=“val1”,key2=“val2”,...

skip_blank
(?id:string,?threshold:float,?max_blank:float,
 ?min_noise:float,?track_sensitive:bool,
 source(audio='#a,video='#b,midi='#c))->
source(audio='#a,video='#b,midi='#c)

Skip track when detecting a blank.

smart_crossfade
(?start_next:float,?fade_in:float,?fade_out:float,
 ?default:((source(audio='#a+1,video=0,midi=0),
            source(audio='#a+1,video=0,midi=0))->
           source(audio='#a+1,video=0,midi=0)),
 ?high:float,?medium:float,?margin:float,?width:float,
 ?conservative:bool,source(audio='#a+1,video=0,midi=0))->
source(audio='#a+1,video=0,midi=0)

Crossfade between tracks, taking the respective volume levels into account in the choice of the transition.

smooth_add
(?delay:float,?p:float,
 normal:source(audio='#a,video='#b,midi=0),
 special:source(audio='#a,video='#b,midi=0))->
source(audio='#a,video='#b,midi=0)

Mixes two streams, with faded transitions between the state when only the normal stream is available and when the special stream gets added on top of it.

source.dynamic
(?id:string,(()->[source('a)]))->source('a)

WARNING: This is only EXPERIMENTAL!

Dynamically change the underlying source.

store_metadata
(?id:string,?size:int,source('a))->source('a)

Keep track of the last N metadata packets in the stream, and make the history available via a server command.

strip_blank
(?id:string,?max_blank:float,?min_noise:float,
 ?start_blank:bool,?threshold:float,
 ?track_sensitive:bool,
 source(audio='#a,video='#b,midi='#c))->
active_source(audio='#a,video='#b,midi='#c)

Make the source unavailable when it is streaming blank.

switch
(?id:string,?replay_metadata:bool,?single:[bool],
 ?track_sensitive:'a,
 ?transitions:[(source('b),source('b))->source('b)],
 [((()->bool)*source('b))])->source('b)
where 'a is either bool or ()->bool

At the beginning of a track, select the first source whose predicate is true.

Source / Video Processing

video.add_image
(?id:string,?width:int,?height:int,?x:int,?y:int,file:'a,
 source(audio='#b,video='#c,midi=0))->
source(audio='#b,video='#c,midi=0)

Add a static image on the first video channel.

video.add_text.gstreamer
(?id:string,?color:int,?cycle:bool,?font:string,
 ?metadata:string,?size:int,?speed:int,?x:int,?y:int,'a,
 source(audio='#b,video='#c+1,midi='#d))->
source(audio='#b,video='#c+1,midi='#d)
where 'a is either string or ()->string

Display a text (using the SDL library).

video.fade.final
(?id:string,?duration:float,?transition:string,
 ?type:string,source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

Fade a stream to black.

video.fade.in
(?id:string,?duration:float,?override:string,
 ?transition:string,?type:string,
 source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

Fade the beginning of tracks. Metadata 'liq_video_fade_in' can be used to set the duration for a specific track (float in seconds).

video.fade.initial
(?id:string,?duration:float,?transition:string,
 ?type:string,source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

Fade the beginning of a stream.

video.fade.out
(?id:string,?duration:float,?override:string,
 ?transition:string,?type:string,
 source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

Fade the end of tracks. Metadata 'liq_video_fade_out' can be used to set the duration for a specific track (float in seconds).

video.fill
(?id:string,?color:int,
 source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

Fill frame with a color.

video.frei0r._3_point_color_balance
(?id:string,?black_color:int,?gray_color:int,
 ?source_image_on_left_side:bool,?split_preview:bool,
 ?white_color:int,source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

Adjust color balance with 3 color points (by Maksim Golovkin).

video.frei0r._3dflippo
(?id:string,?center_position:'a,?center_position:'b,
 ?don't_blank_mask:bool,?fill_with_image_or_black:bool,
 ?invert_rotation_assignment:bool,?x_axis_rotation:'c,
 ?x_axis_rotation_rate:'d,?y_axis_rotation:'e,
 ?y_axis_rotation_rate:'f,?z_axis_rotation:'g,
 ?z_axis_rotation_rate:'h,
 source(audio='#i,video='#j+1,midi='#k))->
source(audio='#i,video='#j+1,midi='#k)
where
  'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h is either float or ()->float

Frame rotation in 3d-space (by c.e. prelz AS FLUIDO <fluido(at)fluido.as>).

video.frei0r.addition
(?id:string,source(audio='#a,video='#b+1,midi='#c),
 source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

Perform an RGB[A] addition operation of the pixel sources (by Jean-Sebastien Senecal).

video.frei0r.addition_alpha
(?id:string,source(audio='#a,video='#b+1,midi='#c),
 source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

Perform an RGB[A] addition_alpha operation of the pixel sources (by Jean-Sebastien Senecal).

video.frei0r.alpha0ps
(?id:string,?display:'a,?display_input_alpha:bool,
 ?invert:bool,?operation:'b,?shrink_grow_blur_amount:'c,
 ?threshold:'d,source(audio='#e,video='#f+1,midi='#g))->
source(audio='#e,video='#f+1,midi='#g)
where 'a, 'b, 'c, 'd is either float or ()->float

Display and manipulation of the alpha channel (by Marko Cebokli).

video.frei0r.alpha_injection
(?id:string,source(audio='#a,video='#b+1,midi='#c),
 source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

Averages Input 1 and uses this as Alpha Channel on Input 2 (by Richard Spindler).

video.frei0r.alphaatop
(?id:string,source(audio='#a,video='#b+1,midi='#c),
 source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

The alpha ATOP operation (by Jean-Sebastien Senecal).

video.frei0r.alphagrad
(?id:string,?max:'a,?min:'b,?operation:'c,?position:'d,
 ?tilt:'e,?transition_width:'f,
 source(audio='#g,video='#h+1,midi='#i))->
source(audio='#g,video='#h+1,midi='#i)
where 'a, 'b, 'c, 'd, 'e, 'f is either float or ()->float

Fills alpha channel with a gradient (by Marko Cebokli).

video.frei0r.alphain
(?id:string,source(audio='#a,video='#b+1,midi='#c),
 source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

The alpha IN operation (by Jean-Sebastien Senecal).

video.frei0r.alphaout
(?id:string,source(audio='#a,video='#b+1,midi='#c),
 source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

The alpha OUT operation (by Jean-Sebastien Senecal).

video.frei0r.alphaover
(?id:string,source(audio='#a,video='#b+1,midi='#c),
 source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

The alpha OVER operation (by Jean-Sebastien Senecal).

video.frei0r.alphaspot
(?id:string,?max:'a,?min:'b,?operation:'c,?position_x:'d,
 ?position_y:'e,?shape:'f,?size_x:'g,?size_y:'h,?tilt:'i,
 ?transition_width:'j,
 source(audio='#k,video='#l+1,midi='#m))->
source(audio='#k,video='#l+1,midi='#m)
where
  'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h, 'i, 'j is either float or ()->float

Draws simple shapes into the alpha channel (by Marko Cebokli).

video.frei0r.alphaxor
(?id:string,source(audio='#a,video='#b+1,midi='#c),
 source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

The alpha XOR operation (by Jean-Sebastien Senecal).

video.frei0r.b
(?id:string,source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

Extracts Blue from Image (by Richard Spindler).

video.frei0r.baltan
(?id:string,source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

Delayed alpha smoothed blit of time (by Kentaro, Jaromil).

video.frei0r.blend
(?id:string,?blend:'a,
 source(audio='#b,video='#c+1,midi='#d),
 source(audio='#b,video='#c+1,midi='#d))->
source(audio='#b,video='#c+1,midi='#d)
where 'a is either float or ()->float

Perform a blend operation between two sources (by Jean-Sebastien Senecal).

video.frei0r.bluescreen0r
(?id:string,?color:int,?distance:'a,
 source(audio='#b,video='#c+1,midi='#d))->
source(audio='#b,video='#c+1,midi='#d)
where 'a is either float or ()->float

Color to alpha (blit SRCALPHA) (by Hedde Bosman).

video.frei0r.brightness
(?id:string,?brightness:'a,
 source(audio='#b,video='#c+1,midi='#d))->
source(audio='#b,video='#c+1,midi='#d)
where 'a is either float or ()->float

Adjusts the brightness of a source image (by Jean-Sebastien Senecal).

video.frei0r.burn
(?id:string,source(audio='#a,video='#b+1,midi='#c),
 source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

Perform an RGB[A] dodge operation between the pixel sources, using the generalised algorithm: D = saturation of 255 or depletion of 0, of ((255 - A) * 256) / (B + 1) (by Jean-Sebastien Senecal).

video.frei0r.bw0r
(?id:string,source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

Turns image black/white (by coma(at)gephex.org).

video.frei0r.c0rners
(?id:string,?alpha_operation:'a,?corner_1_x:'b,
 ?corner_1_y:'c,?corner_2_x:'d,?corner_2_y:'e,
 ?corner_3_x:'f,?corner_3_y:'g,?corner_4_x:'h,
 ?corner_4_y:'i,?enable_stretch:bool,?feather_alpha:'j,
 ?interpolator:'k,?stretch_x:'l,?stretch_y:'m,
 ?transparent_background:bool,
 source(audio='#n,video='#o+1,midi='#p))->
source(audio='#n,video='#o+1,midi='#p)
where
  'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h, 'i, 'j, 'k, 'l, 'm is either float or ()->float

Four corners geometry engine (by Marko Cebokli).

video.frei0r.cartoon
(?id:string,?diffspace:'a,?triplevel:'b,
 source(audio='#c,video='#d+1,midi='#e))->
source(audio='#c,video='#d+1,midi='#e)
where 'a, 'b is either float or ()->float

Cartoonify video, do a form of edge detect (by Dries Pruimboom, Jaromil).

video.frei0r.color_distance
(?id:string,?color:int,
 source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

Calculates the distance between the selected color and the current pixel and uses that value as new pixel value (by Richard Spindler).

video.frei0r.color_only
(?id:string,source(audio='#a,video='#b+1,midi='#c),
 source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

Perform a conversion to color only of the source input1 using the hue and saturation values of input2 (by Jean-Sebastien Senecal).

video.frei0r.coloradj_rgb
(?id:string,?action:'a,?alpha_controlled:bool,?b:'b,
 ?g:'c,?keep_luma:bool,?luma_formula:'d,?r:'e,
 source(audio='#f,video='#g+1,midi='#h))->
source(audio='#f,video='#g+1,midi='#h)
where 'a, 'b, 'c, 'd, 'e is either float or ()->float

Simple color adjustment (by Marko Cebokli).

video.frei0r.colorhalftone
(?id:string,?cyan_angle:'a,?dot_radius:'b,
 ?magenta_angle:'c,?yellow_angle:'d,
 source(audio='#e,video='#f+1,midi='#g))->
source(audio='#e,video='#f+1,midi='#g)
where 'a, 'b, 'c, 'd is either float or ()->float

Filters image to resemble a halftone print in which tones are represented as variable sized dots (by Janne Liljeblad).

video.frei0r.colorize
(?id:string,?hue:'a,?lightness:'b,?saturation:'c,
 source(audio='#d,video='#e+1,midi='#f))->
source(audio='#d,video='#e+1,midi='#f)
where 'a, 'b, 'c is either float or ()->float

Colorizes image to selected hue, saturation and lightness (by Janne Liljeblad).

video.frei0r.colortap
(?id:string,?table:string,
 source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

Applies a pre-made color effect to image (by Janne Liljeblad).

video.frei0r.composition
(?id:string,source(audio='#a,video='#b+1,midi='#c),
 source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

Composites Image 2 onto Image 1 according to its Alpha Channel (by Richard Spindler).

video.frei0r.contrast0r
(?id:string,?contrast:'a,
 source(audio='#b,video='#c+1,midi='#d))->
source(audio='#b,video='#c+1,midi='#d)
where 'a is either float or ()->float

Adjusts the contrast of a source image (by Jean-Sebastien Senecal).

video.frei0r.darken
(?id:string,source(audio='#a,video='#b+1,midi='#c),
 source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

Perform a darken operation between two sources (minimum value of both sources) (by Jean-Sebastien Senecal).

video.frei0r.defish0r
(?id:string,?amount:'a,?aspect_type:'b,?defish:bool,
 ?interpolator:'c,?manual_aspect:'d,?manual_scale:'e,
 ?scaling:'f,?type:'g,
 source(audio='#h,video='#i+1,midi='#j))->
source(audio='#h,video='#i+1,midi='#j)
where
  'a, 'b, 'c, 'd, 'e, 'f, 'g is either float or ()->float

Non rectilinear lens mappings (by Marko Cebokli).

video.frei0r.delay0r
(?id:string,?delaytime:'a,
 source(audio='#b,video='#c+1,midi='#d))->
source(audio='#b,video='#c+1,midi='#d)
where 'a is either float or ()->float

Video delay (by Martin Bayer).

video.frei0r.delaygrab
(?id:string,source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

Delayed frame blitting mapped on a time bitmap (by Bill Spinhover, Andreas Schiffler, Jaromil).

video.frei0r.difference
(?id:string,source(audio='#a,video='#b+1,midi='#c),
 source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

Perform an RGB[A] difference operation between the pixel sources (by Jean-Sebastien Senecal).

video.frei0r.distort0r
(?id:string,?amplitude:'a,?frequency:'b,
 source(audio='#c,video='#d+1,midi='#e))->
source(audio='#c,video='#d+1,midi='#e)
where 'a, 'b is either float or ()->float

Plasma (by Gephex crew).

video.frei0r.dither
(?id:string,?levels:'a,?matrixid:'b,
 source(audio='#c,video='#d+1,midi='#e))->
source(audio='#c,video='#d+1,midi='#e)
where 'a, 'b is either float or ()->float

Dithers the image and reduces the number of available colors (by Janne Liljeblad).

video.frei0r.divide
(?id:string,source(audio='#a,video='#b+1,midi='#c),
 source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

Perform an RGB[A] divide operation between the pixel sources: input1 is the numerator, input2 the denominator (by Jean-Sebastien Senecal).

video.frei0r.dodge
(?id:string,source(audio='#a,video='#b+1,midi='#c),
 source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

Perform an RGB[A] dodge operation between the pixel sources, using the generalised algorithm: D = saturation of 255 or (A * 256) / (256 - B) (by Jean-Sebastien Senecal).

video.frei0r.edgeglow
(?id:string,?lredscale:'a,?lthresh:'b,?lupscale:'c,
 source(audio='#d,video='#e+1,midi='#f))->
source(audio='#d,video='#e+1,midi='#f)
where 'a, 'b, 'c is either float or ()->float

Edgeglow filter (by Salsaman).

video.frei0r.emboss
(?id:string,?azimuth:'a,?elevation:'b,?width45:'c,
 source(audio='#d,video='#e+1,midi='#f))->
source(audio='#d,video='#e+1,midi='#f)
where 'a, 'b, 'c is either float or ()->float

Creates embossed relief image of source image (by Janne Liljeblad).

video.frei0r.equaliz0r
(?id:string,source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

Equalizes the intensity histograms (by Jean-Sebastien Senecal (Drone)).

video.frei0r.flippo
(?id:string,?x_axis:bool,?y_axis:bool,
 source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

Flipping in x and y axis (by Carlo Emilio, Jean-Sebastien Senecal).

video.frei0r.g
(?id:string,source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

Extracts Green from Image (by Richard Spindler).

video.frei0r.gamma
(?id:string,?gamma:'a,
 source(audio='#b,video='#c+1,midi='#d))->
source(audio='#b,video='#c+1,midi='#d)
where 'a is either float or ()->float

Adjusts the gamma value of a source image (by Jean-Sebastien Senecal).

video.frei0r.glow
(?id:string,?blur:'a,
 source(audio='#b,video='#c+1,midi='#d))->
source(audio='#b,video='#c+1,midi='#d)
where 'a is either float or ()->float

Creates a Glamorous Glow (by Richard Spindler).

video.frei0r.grain_extract
(?id:string,source(audio='#a,video='#b+1,midi='#c),
 source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

Perform an RGB[A] grain-extract operation between the pixel sources (by Jean-Sebastien Senecal).

video.frei0r.grain_merge
(?id:string,source(audio='#a,video='#b+1,midi='#c),
 source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

Perform an RGB[A] grain-merge operation between the pixel sources (by Jean-Sebastien Senecal).

video.frei0r.hardlight
(?id:string,source(audio='#a,video='#b+1,midi='#c),
 source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

Perform an RGB[A] hardlight operation between the pixel sources (by Jean-Sebastien Senecal).

video.frei0r.hqdn3d
(?id:string,?spatial:'a,?temporal:'b,
 source(audio='#c,video='#d+1,midi='#e))->
source(audio='#c,video='#d+1,midi='#e)
where 'a, 'b is either float or ()->float

High quality 3D denoiser from Mplayer (by Marko Cebokli, Daniel Moreno).

video.frei0r.hue
(?id:string,source(audio='#a,video='#b+1,midi='#c),
 source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

Perform a conversion to hue only of the source input1 using the hue of input2 (by Jean-Sebastien Senecal).

video.frei0r.hueshift0r
(?id:string,?hue:'a,
 source(audio='#b,video='#c+1,midi='#d))->
source(audio='#b,video='#c+1,midi='#d)
where 'a is either float or ()->float

Shifts the hue of a source image (by Jean-Sebastien Senecal).

video.frei0r.iir_blur
(?id:string,?amount:'a,?edge:bool,?type:'b,
 source(audio='#c,video='#d+1,midi='#e))->
source(audio='#c,video='#d+1,midi='#e)
where 'a, 'b is either float or ()->float

Three types of fast IIR blurring (by Marko Cebokli).

video.frei0r.invert0r
(?id:string,source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

Inverts all colors of a source image (by Gephex crew).

video.frei0r.ising0r
(?id:string,?border_growth:'a,?spontaneous_growth:'b,
 ?temperature:'c)->source(audio=0,video=1,midi=0)
where 'a, 'b, 'c is either float or ()->float

Generates ising noise (by Gephex crew).

video.frei0r.k_means_clustering
(?id:string,?dist_weight:'a,?num:'b,
 source(audio='#c,video='#d+1,midi='#e))->
source(audio='#c,video='#d+1,midi='#e)
where 'a, 'b is either float or ()->float

Clusters of a source image by color and spatial distance (by binarymillenium).

video.frei0r.lens_correction
(?id:string,?brightness:'a,?correctionnearcenter:'b,
 ?correctionnearedges:'c,?xcenter:'d,?ycenter:'e,
 source(audio='#f,video='#g+1,midi='#h))->
source(audio='#f,video='#g+1,midi='#h)
where 'a, 'b, 'c, 'd, 'e is either float or ()->float

Allows compensation of lens distortion (by Richard Spindler).

video.frei0r.letterb0xed
(?id:string,?border_width:'a,?transparency:bool,
 source(audio='#b,video='#c+1,midi='#d))->
source(audio='#b,video='#c+1,midi='#d)
where 'a is either float or ()->float

Adds Black Borders at top and bottom for Cinema Look (by Richard Spindler).

video.frei0r.levels
(?id:string,?black_output:'a,?channel:'b,?gamma:'c,
 ?histogram_position:'d,?input_black_level:'e,
 ?input_white_level:'f,?show_histogram:bool,
 ?white_output:'g,source(audio='#h,video='#i+1,midi='#j))->
source(audio='#h,video='#i+1,midi='#j)
where
  'a, 'b, 'c, 'd, 'e, 'f, 'g is either float or ()->float

Adjust luminance or color channel intensity (by Maksim Golovkin).

video.frei0r.light_graffiti
(?id:string,?backgroundweight:'a,?blackreference:'b,
 ?dim:'c,?longalpha:'d,?loweroverexposure:'e,
 ?nonlineardim:'f,?reset:'g,?saturation:'h,
 ?sensitivity:'i,?statsbrightness:'j,?statsdifference:'k,
 ?statsdiffsum:'l,?thresholdbrightness:'m,
 ?thresholddifference:'n,?thresholddiffsum:'o,
 ?transparentbackground:'p,
 source(audio='#q,video='#r+1,midi='#s))->
source(audio='#q,video='#r+1,midi='#s)
where
  'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h, 'i, 'j, 'k, 'l, 'm, 'n, 'o, 'p is either float or ()->float

Creates light graffitis from a video by keeping the brightest spots (by Simon A. Eugster (Granjow)).

video.frei0r.lighten
(?id:string,source(audio='#a,video='#b+1,midi='#c),
 source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

Perform a lighten operation between two sources (maximum value of both sources) (by Jean-Sebastien Senecal).

video.frei0r.lissajous0r
(?id:string,?ratiox:'a,?ratioy:'b)->
source(audio=0,video=1,midi=0)
where 'a, 'b is either float or ()->float

Generates Lissajous0r images (by Martin Bayer).

video.frei0r.luminance
(?id:string,source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

Creates a luminance map of the image (by Richard Spindler).

video.frei0r.mask0mate
(?id:string,?blur:'a,?bottom:'b,?invert:bool,?left:'c,
 ?right:'d,?top:'e,
 source(audio='#f,video='#g+1,midi='#h))->
source(audio='#f,video='#g+1,midi='#h)
where 'a, 'b, 'c, 'd, 'e is either float or ()->float

Creates an square alpha-channel mask (by Richard Spindler).

video.frei0r.medians
(?id:string,?size:'a,?type:string,
 source(audio='#b,video='#c+1,midi='#d))->
source(audio='#b,video='#c+1,midi='#d)
where 'a is either float or ()->float

Implements several median-type filters (by Marko Cebokli).

video.frei0r.multiply
(?id:string,source(audio='#a,video='#b+1,midi='#c),
 source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

Perform an RGB[A] multiply operation between the pixel sources (by Jean-Sebastien Senecal).

video.frei0r.nervous
(?id:string,source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

Flushes frames in time in a nervous way (by Tannenbaum, Kentaro, Jaromil).

video.frei0r.nikon_d90_stairstepping_fix
(?id:string,source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

Removes the Stairstepping from Nikon D90 videos (720p only) by interpolation (by Simon A. Eugster (Granjow)).

video.frei0r.nois0r
(?id:string)->source(audio=0,video=1,midi=0)

Generates white noise images (by Martin Bayer).

video.frei0r.nosync0r
(?id:string,?hsync:'a,
 source(audio='#b,video='#c+1,midi='#d))->
source(audio='#b,video='#c+1,midi='#d)
where 'a is either float or ()->float

Broken tv (by Martin Bayer).

video.frei0r.onecol0r
(?id:string,?color:int)->source(audio=0,video=1,midi=0)

Image with just one color (by Martin Bayer).

video.frei0r.overlay
(?id:string,source(audio='#a,video='#b+1,midi='#c),
 source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

Perform an RGB[A] overlay operation between the pixel sources, using the generalised algorithm: D = A * (B + (2 * B) * (255 - A)) (by Jean-Sebastien Senecal).

video.frei0r.partik0l
(?id:string,?down:'a,?up:'b)->
source(audio=0,video=1,midi=0)
where 'a, 'b is either float or ()->float

Particles generated on prime number sinusoidal blossoming (by Jaromil).

video.frei0r.perspective
(?id:string,?bottom_left:(float*float),
 ?bottom_right:(float*float),?top_left:(float*float),
 ?top_right:(float*float),
 source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

Distorts the image for a pseudo perspective (by Richard Spindler).

video.frei0r.pixeliz0r
(?id:string,?blocksizex:'a,?blocksizey:'b,
 source(audio='#c,video='#d+1,midi='#e))->
source(audio='#c,video='#d+1,midi='#e)
where 'a, 'b is either float or ()->float

Pixelize input image (by Gephex crew).

video.frei0r.plasma
(?id:string,?_1_move:'a,?_1_speed:'b,?_2_move:'c,
 ?_2_speed:'d,?_3_speed:'e,?_4_speed:'f)->
source(audio=0,video=1,midi=0)
where 'a, 'b, 'c, 'd, 'e, 'f is either float or ()->float

Demo scene 8bit plasma (by Jaromil).

video.frei0r.posterize
(?id:string,?levels:'a,
 source(audio='#b,video='#c+1,midi='#d))->
source(audio='#b,video='#c+1,midi='#d)
where 'a is either float or ()->float

Posterizes image by reducing the number of colors used in image (by Janne Liljeblad).

video.frei0r.pr0be
(?id:string,?_256_scale:bool,?big_window:bool,
 ?measurement:'a,?show_alpha:bool,?x:'b,?x_size:'c,?y:'d,
 ?y_size:'e,source(audio='#f,video='#g+1,midi='#h))->
source(audio='#f,video='#g+1,midi='#h)
where 'a, 'b, 'c, 'd, 'e is either float or ()->float

Measure video values (by Marko Cebokli).

video.frei0r.pr0file
(?id:string,?_256_scale:bool,?alpha_trace:bool,
 ?b_trace:bool,?channel:'a,?color:'b,?crosshair_color:'c,
 ?display_average:bool,?display_maximum:bool,
 ?display_minimum:bool,?display_rms:bool,?g_trace:bool,
 ?length:'d,?marker_1:'e,?marker_2:'f,?pb_trace:bool,
 ?pr_trace:bool,?r_trace:bool,?tilt:'g,?x:'h,?y:'i,
 ?y_trace:bool,source(audio='#j,video='#k+1,midi='#l))->
source(audio='#j,video='#k+1,midi='#l)
where
  'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h, 'i is either float or ()->float

2D video oscilloscope (by Marko Cebokli).

video.frei0r.primaries
(?id:string,?factor:'a,
 source(audio='#b,video='#c+1,midi='#d))->
source(audio='#b,video='#c+1,midi='#d)
where 'a is either float or ()->float

Reduce image to primary colors (by Hedde Bosman).

video.frei0r.r
(?id:string,source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

Extracts Red from Image (by Richard Spindler).

video.frei0r.rgbnoise
(?id:string,?noise:'a,
 source(audio='#b,video='#c+1,midi='#d))->
source(audio='#b,video='#c+1,midi='#d)
where 'a is either float or ()->float

Adds RGB noise to image (by Janne Liljeblad).

video.frei0r.saturat0r
(?id:string,?saturation:'a,
 source(audio='#b,video='#c+1,midi='#d))->
source(audio='#b,video='#c+1,midi='#d)
where 'a is either float or ()->float

Adjusts the saturation of a source image (by Jean-Sebastien Senecal).

video.frei0r.saturation
(?id:string,source(audio='#a,video='#b+1,midi='#c),
 source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

Perform a conversion to saturation only of the source input1 using the saturation level of input2 (by Jean-Sebastien Senecal).

video.frei0r.scanline0r
(?id:string,source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

Interlaced blak lines (by Martin Bayer).

video.frei0r.screen
(?id:string,source(audio='#a,video='#b+1,midi='#c),
 source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

Perform an RGB[A] screen operation between the pixel sources, using the generalised algorithm: D = 255 - (255 - A) * (255 - B) (by Jean-Sebastien Senecal).

video.frei0r.select0r
(?id:string,?color_to_select:int,?delta_b___i___i:'a,
 ?delta_g___b___chroma:'b,?delta_r___a___hue:'c,
 ?edge_mode:'d,?invert_selection:bool,?operation:'e,
 ?selection_subspace:'f,?slope:'g,?subspace_shape:'h,
 source(audio='#i,video='#j+1,midi='#k))->
source(audio='#i,video='#j+1,midi='#k)
where
  'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h is either float or ()->float

Color based alpha selection (by Marko Cebokli).

video.frei0r.sharpness
(?id:string,?amount:'a,?size:'b,
 source(audio='#c,video='#d+1,midi='#e))->
source(audio='#c,video='#d+1,midi='#e)
where 'a, 'b is either float or ()->float

Unsharp masking (port from Mplayer) (by Marko Cebokli, Remi Guyomarch).

video.frei0r.sigmoidaltransfer
(?id:string,?brightness:'a,?sharpness:'b,
 source(audio='#c,video='#d+1,midi='#e))->
source(audio='#c,video='#d+1,midi='#e)
where 'a, 'b is either float or ()->float

Desaturates image and creates a particular look that could be called Stamp, Newspaper or Photocopy (by Janne Liljeblad).

video.frei0r.sobel
(?id:string,source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

Sobel filter (by Jean-Sebastien Senecal (Drone)).

video.frei0r.softglow
(?id:string,?blur:'a,?blurblend:'b,?brightness:'c,
 ?sharpness:'d,source(audio='#e,video='#f+1,midi='#g))->
source(audio='#e,video='#f+1,midi='#g)
where 'a, 'b, 'c, 'd is either float or ()->float

Does softglow effect on highlights (by Janne Liljeblad).

video.frei0r.softlight
(?id:string,source(audio='#a,video='#b+1,midi='#c),
 source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

Perform an RGB[A] softlight operation between the pixel sources (by Jean-Sebastien Senecal).

video.frei0r.sop_sat
(?id:string,?aoffset:'a,?apower:'b,?aslope:'c,
 ?boffset:'d,?bpower:'e,?bslope:'f,?goffset:'g,
 ?gpower:'h,?gslope:'i,?roffset:'j,?rpower:'k,?rslope:'l,
 ?saturation:'m,source(audio='#n,video='#o+1,midi='#p))->
source(audio='#n,video='#o+1,midi='#p)
where
  'a, 'b, 'c, 'd, 'e, 'f, 'g, 'h, 'i, 'j, 'k, 'l, 'm is either float or ()->float

Slope/Offset/Power and Saturation color corrections according to the ASC CDL (Color Decision List) (by Simon A. Eugster (Granjow)).

video.frei0r.spillsupress
(?id:string,?supresstype:'a,
 source(audio='#b,video='#c+1,midi='#d))->
source(audio='#b,video='#c+1,midi='#d)
where 'a is either float or ()->float

Remove green or blue spill light from subjects shot in front of green or blue screen (by Janne Liljeblad).

video.frei0r.squareblur
(?id:string,?kernel_size:'a,
 source(audio='#b,video='#c+1,midi='#d))->
source(audio='#b,video='#c+1,midi='#d)
where 'a is either float or ()->float

Variable-size square blur (by Drone).

video.frei0r.subtract
(?id:string,source(audio='#a,video='#b+1,midi='#c),
 source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

Perform an RGB[A] subtract operation of the pixel source input2 from input1 (by Jean-Sebastien Senecal).

video.frei0r.tehroxx0r
(?id:string,?interval:'a,
 source(audio='#b,video='#c+1,midi='#d))->
source(audio='#b,video='#c+1,midi='#d)
where 'a is either float or ()->float

Something videowall-ish (by Coma).

video.frei0r.test_pat_b
(?id:string,?aspect_type:'a,?manual_aspect:'b,?type:'c)->
source(audio=0,video=1,midi=0)
where 'a, 'b, 'c is either float or ()->float

Generates test card lookalikes (by Marko Cebokli).

video.frei0r.test_pat_c
(?id:string,?color_space:'a,?cross_section:'b,
 ?fullscreen:bool,?third_axis_value:'c)->
source(audio=0,video=1,midi=0)
where 'a, 'b, 'c is either float or ()->float

Generates cross sections of color spaces (by Marko Cebokli).

video.frei0r.test_pat_g
(?id:string,?aspect_type:'a,?manual_aspect:'b,
 ?negative:bool,?size_1:'c,?size_2:'d,?type:'e)->
source(audio=0,video=1,midi=0)
where 'a, 'b, 'c, 'd, 'e is either float or ()->float

Generates geometry test pattern images (by Marko Cebokli).

video.frei0r.test_pat_i
(?id:string,?amplitude:'a,?channel:'b,?negative:bool,
 ?tilt:'c,?type:'d,?width:'e)->
source(audio=0,video=1,midi=0)
where 'a, 'b, 'c, 'd, 'e is either float or ()->float

Generates spatial impulse and step test patterns (by Marko Cebokli).

video.frei0r.test_pat_l
(?id:string,?channel:'a,?type:'b)->
source(audio=0,video=1,midi=0)
where 'a, 'b is either float or ()->float

Generates linearity checking patterns (by Marko Cebokli).

video.frei0r.test_pat_r
(?id:string,?amplitude:'a,?aspect_type:'b,?channel:'c,
 ?freq_1:'d,?freq_2:'e,?lin_p_swp:bool,?manual_aspect:'f,
 ?type:'g)->source(audio=0,video=1,midi=0)
where
  'a, 'b, 'c, 'd, 'e, 'f, 'g is either float or ()->float

Generates resolution test patterns (by Marko Cebokli).

video.frei0r.threelay0r
(?id:string,source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

Dynamic 3 level thresholding (by Hedde Bosman).

video.frei0r.threshold0r
(?id:string,?threshold:'a,
 source(audio='#b,video='#c+1,midi='#d))->
source(audio='#b,video='#c+1,midi='#d)
where 'a is either float or ()->float

Thresholds a source image (by Jean-Sebastien Senecal).

video.frei0r.timeout_indicator
(?id:string,?color:int,?time:'a,?transparency:'b,
 source(audio='#c,video='#d+1,midi='#e))->
source(audio='#c,video='#d+1,midi='#e)
where 'a, 'b is either float or ()->float

Timeout indicators e.g. for slides (by Simon A. Eugster).

video.frei0r.tint0r
(?id:string,?map_black_to:int,?map_white_to:int,
 ?tint_amount:'a,source(audio='#b,video='#c+1,midi='#d))->
source(audio='#b,video='#c+1,midi='#d)
where 'a is either float or ()->float

Tint a source image with specified color (by Maksim Golovkin).

video.frei0r.transparency
(?id:string,?transparency:'a,
 source(audio='#b,video='#c+1,midi='#d))->
source(audio='#b,video='#c+1,midi='#d)
where 'a is either float or ()->float

Tunes the alpha channel (by Richard Spindler).

video.frei0r.twolay0r
(?id:string,source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

Dynamic thresholding (by Martin Bayer).

video.frei0r.uv_map
(?id:string,source(audio='#a,video='#b+1,midi='#c),
 source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

Uses Input 1 as UV Map to distort Input 2 (by Richard Spindler).

video.frei0r.value
(?id:string,source(audio='#a,video='#b+1,midi='#c),
 source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

Perform a conversion to value only of the source input1 using the value of input2 (by Jean-Sebastien Senecal).

video.frei0r.vertigo
(?id:string,?phaseincrement:'a,?zoomrate:'b,
 source(audio='#c,video='#d+1,midi='#e))->
source(audio='#c,video='#d+1,midi='#e)
where 'a, 'b is either float or ()->float

Alpha blending with zoomed and rotated images (by Fukuchi Kentarou).

video.frei0r.vignette
(?id:string,?aspect:'a,?clearcenter:'b,?soft:'c,
 source(audio='#d,video='#e+1,midi='#f))->
source(audio='#d,video='#e+1,midi='#f)
where 'a, 'b, 'c is either float or ()->float

Lens vignetting effect, applies natural vignetting (by Simon A. Eugster (Granjow)).

video.frei0r.white_balance
(?id:string,?color_temperature:'a,?neutral_color:int,
 source(audio='#b,video='#c+1,midi='#d))->
source(audio='#b,video='#c+1,midi='#d)
where 'a is either float or ()->float

Do simple color correction, in a physically meaningful way (by Steinar H. Gunderson).

video.frei0r.xfade0r
(?id:string,?fader:'a,
 source(audio='#b,video='#c+1,midi='#d),
 source(audio='#b,video='#c+1,midi='#d))->
source(audio='#b,video='#c+1,midi='#d)
where 'a is either float or ()->float

A simple xfader (by Martin Bayer).

video.greyscale
(?id:string,source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

Convert video to greyscale.

video.invert
(?id:string,source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

Invert video.

video.lomo
(?id:string,source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

Emulate the “Lomo effect”.

video.opacity
(?id:string,float,source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

Scale opacity of video.

video.opacity.blur
(?id:string,source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

Blur opacity of video.

video.rotate
(?id:string,?angle:'a,?speed:'b,
 source(audio='#c,video='#d+1,midi='#e))->
source(audio='#c,video='#d+1,midi='#e)
where 'a, 'b is either float or ()->float

Rotate video.

video.scale
(?id:string,?scale:float,?x:int,?xscale:float,?y:int,
 ?yscale:float,source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

Scale and translate video.

video.sepia
(?id:string,source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

Convert video to sepia.

video.tile
(?id:string,?normalize:bool,?proportional:bool,
 ?weights:[int],[source(audio='#a,video='#b+1,midi='#c)])->
source(audio='#a,video='#b+1,midi='#c)

Tile sources (same as add but produces tiles of videos).

video.transparent
(?id:string,?color:int,?precision:float,
 source(audio='#a,video='#b+1,midi='#c))->
source(audio='#a,video='#b+1,midi='#c)

Set a color to be transparent.

Source / Visualization

peak
(?id:string,?duration:'a,
 source(audio='#b,video='#c,midi='#d))->
((()->float)*source(audio='#b,video='#c,midi='#d))
where 'a is either float or ()->float

Get current peak volume of the source. Returns a pair (f,s) where s is a new source and f is a function of type () -> float and returns the current peak volume of the source.

peak.stereo
(?id:string,?duration:'a,
 source(audio='#b+2,video='#c,midi='#d))->
((()->(float*float))*
 source(audio='#b+2,video='#c,midi='#d))
where 'a is either float or ()->float

Get current peak volume of the source. Returns a pair (f,s) where s is a new source and f is a function of type () -> float and returns the current peak volume of the source.

rms
(?id:string,?duration:'a,
 source(audio='#b,video='#c,midi='#d))->
((()->float)*source(audio='#b,video='#c,midi='#d))
where 'a is either float or ()->float

Get current RMS volume of the source. Returns a pair (f,s) where s is a new source and f is a function of type () -> float and returns the current RMS volume of the source.

rms.stereo
(?id:string,?duration:'a,
 source(audio='#b+2,video='#c,midi='#d))->
((()->(float*float))*
 source(audio='#b+2,video='#c,midi='#d))
where 'a is either float or ()->float

Get current RMS volume of the source. Returns a pair (f,s) where s is a new source and f is a function of type () -> float and returns the current RMS volume of the source.

server.rms
(?id:string,source(audio='#a,video='#b,midi='#c))->
source(audio='#a,video='#b,midi='#c)

Register a command that outputs the RMS of the returned source.

video.volume
(?id:string,source(audio='#a+1,video=0,midi=0))->
source(audio='#a+1,video=1,midi=0)

Graphical visualization of the sound.

vumeter
(?id:string,?scroll:bool,
 source(audio='#a+1,video='#b,midi='#c))->
source(audio='#a+1,video='#b,midi='#c)

VU meter (display the audio volume).

Bool

!=
('a,'a)->bool where 'a is an orderable type

Comparison of comparable values.

<
('a,'a)->bool where 'a is an orderable type

Comparison of comparable values.

<=
('a,'a)->bool where 'a is an orderable type

Comparison of comparable values.

==
('a,'a)->bool where 'a is an orderable type

Comparison of comparable values.

>
('a,'a)->bool where 'a is an orderable type

Comparison of comparable values.

>=
('a,'a)->bool where 'a is an orderable type

Comparison of comparable values.

and
(bool,bool)->bool

Return the conjunction of its arguments

not
(bool)->bool

Returns the negation of its argument.

or
(bool,bool)->bool

Return the disjunction of its arguments

random.bool
()->bool

Generate a random value.

Control

add_timeout
(?fast:bool,float,(()->float))->unit

Call a function in N seconds. If the result of the function is positive or null, the task will be scheduled again after this amount of time (in seconds).

ignore
('a)->unit

Convert anything to unit, preventing warnings.

Interaction

add_skip_command
(source('a))->unit

Add a skip function to a source when it does not have one by default.

http.delete
(?headers:[(string*string)],?timeout:float,string)->
((((string*int)*string)*[(string*string)])*string)

Perform a full Http DELETE request and return (status,headers),data.

http.get
(?headers:[(string*string)],?timeout:float,string)->
((((string*int)*string)*[(string*string)])*string)

Perform a full Http GET request and return (status,headers),data.

http.head
(?headers:[(string*string)],?timeout:float,string)->
((((string*int)*string)*[(string*string)])*string)

Perform a full Http HEAD request and return (status,headers),data.

http.post
(?data:string,?headers:[(string*string)],?timeout:float,
 string)->
((((string*int)*string)*[(string*string)])*string)

Perform a full Http POST request and return (status,headers),data.

http.put
(?data:string,?headers:[(string*string)],?timeout:float,
 string)->
((((string*int)*string)*[(string*string)])*string)

Perform a full Http PUT request and return (status,headers),data.

http_codes
[(string*string)]

List of HTTP response codes and statuses.

http_response
(?protocol:string,?code:int,?headers:[(string*string)],
 ?data:string)->string

Create a HTTP response string

https.delete
(?headers:[(string*string)],?timeout:float,string)->
((((string*int)*string)*[(string*string)])*string)

Perform a full https DELETE request and return (status,headers),data.

https.get
(?headers:[(string*string)],?timeout:float,string)->
((((string*int)*string)*[(string*string)])*string)

Perform a full https GET request and return (status,headers),data.

https.head
(?headers:[(string*string)],?timeout:float,string)->
((((string*int)*string)*[(string*string)])*string)

Perform a full https HEAD request and return (status,headers),data.

https.post
(?data:string,?headers:[(string*string)],?timeout:float,
 string)->
((((string*int)*string)*[(string*string)])*string)

Perform a full https POST request and return (status,headers),data.

https.put
(?data:string,?headers:[(string*string)],?timeout:float,
 string)->
((((string*int)*string)*[(string*string)])*string)

Perform a full https PUT request and return (status,headers),data.

icy.update_metadata
(?host:string,?port:int,?user:string,?password:string,
 ?mount:string,?icy_id:int,?protocol:string,
 ?encoding:string,?headers:[(string*string)],
 [(string*string)])->unit

Update metata on an icecast mountpoint using the ICY protocol.

interactive.bool
(string,bool)->()->bool

Read a boolean from an interactive input.

interactive.float
(string,float)->()->float

Read a float from an interactive input.

interactive.string
(string,string)->()->string

Read a string from an interactive input.

print
(?newline:bool,'a)->unit

Print on standard output.

server.register
(?namespace:string,?description:string,?usage:string,
 string,((string)->string))->unit

Register a command. You can then execute this function through the server, either telnet or socket.

Liquidsoap

add_decoder
(name:string,description:string,?mimes:[string],
 test:((string)->int),string)->unit

Register an external decoder. The encoder should output in WAV format to his standard output (stdout) and read data from its standard input (stdin).

add_metadata_resolver
(string,((string)->[(string*string)]))->unit

Register an external file metadata decoder.

add_oblivious_decoder
(name:string,description:string,test:((string)->int),
 ?buffer:float,((string)->string))->unit

Register an external file decoder. The encoder should output in WAV format to his standard output (stdout) and read data from the file it receives. The estimated remaining duration for this decoder will be unknown until the buffer last seconds of the file. If possible, it is recommended to decode from stdin and use add_decoder.

add_playlist_parser
(format:string,strict:bool,
 ((?pwd:string,string)->[([(string*string)]*string)]))->
unit

Register a new playlist parser.

add_protocol
(?temporary:bool,?static:bool,?syntax:string,?doc:string,
 string,
 ((rlog:((string)->unit),maxtime:float,string)->[string]))->
unit

Register a new protocol.

clock
(?sync:bool,?id:string,source('a))->source('a)

Assign a new clock to the given source (and to other time-dependent sources) and return the source. It is a conveniency wrapper around clock.assign_new(), allowing more concise scripts in some cases.

clock.assign_new
(?id:string,?sync:bool,[source('a)])->unit

Create a new clock and assign it to a list of sources.

clock.unify
([source('a)])->unit

Enforce that a list of sources all belong to the same clock.

configure.default_font
string

Liquidsoap's default font file.

configure.libdir
string

Liquidsoap's library directory.

configure.logdir
string

Liquidsoap's logging directory.

configure.rundir
string

Liquidsoap's PID file directory.

enable_external_faad_decoder
()->unit

Enable or disable external FAAD (AAC/AAC+/M4A) decoders. Requires faad binary in the path for audio decoding and metaflac binary for metadata. Does not work on Win32. Please note that built-in support for faad is available in liquidsoap if compiled and should be preferred over the external decoder.

enable_external_flac_decoder
()->unit

Enable external FLAC decoders. Requires flac binary in the path for audio decoding and metaflac binary for metadata. Default: disabled. Please note that built-in support for FLAC is available in liquidsoap if compiled and should be preferred over the external decoder.

enable_external_mpc_decoder
()->unit

Enable external Musepack decoder. Requires the mpcdec binary in the path.

enable_replaygain_metadata
(?extract_replaygain:string)->unit

Enable replay gain metadata resolver. This resolver will process any file decoded by liquidsoap and add a replay_gain metadata when this value could be computed. For a finer-grained replay gain processing, use the replay_gain protocol.

file.duration
(string)->float

Compute the duration in seconds of audio data contained in a file. The computation may be expensive. Returns -1. if computation failed, typically if the file was not recognized as valid audio.

garbage_collect
()->unit

Trigger full major garbage collection.

get
(default:'a,string)->'a
where 'a is unit, bool, int, float, string or [string]

Get a setting's value.

get_clock_status
()->[(string*int)]

Get the current time for all allocated clocks.

harbor.http.register
(port:int,method:string,string,
 ((protocol:string,data:string,headers:[(string*string)],
   string)->string))->unit

Register a HTTP handler on the harbor. The given function receives as argument the full requested uri (e.g. “foo?var=bar”), http protocol version, possible input data and the list of HTTP headers and returns the answer sent to the client, including HTTP headers. Registered uri can be regular expressions (e.g. “.+\.php”) and can override default metadata handlers.

harbor.http.remove
(method:string,port:int,string)->unit

Remove a registered HTTP handler on the harbor.

harbor.https.register
(port:int,method:string,string,
 ((protocol:string,data:string,headers:[(string*string)],
   string)->string))->unit

Register a HTTPS handler on the harbor. The given function receives as argument the full requested uri (e.g. “foo?var=bar”), http protocol version, possible input data and the list of HTTP headers and returns the answer sent to the client, including HTTP headers. Registered uri can be regular expressions (e.g. “.+\.php”) and can override default metadata handlers.

harbor.https.remove
(method:string,port:int,string)->unit

Remove a registered HTTPS handler on the harbor.

liquidsoap.version
string

Liquidsoap version string.

log
(?label:string,?level:int,string)->unit

Log a message.

log_clocks
(?delay:float,?interval:float,string)->unit

Create a log of clock times for all the clocks initially present. The log is in a simple format which you can directly use with gnuplot.

metadata.export
([(string*string)])->[(string*string)]

Filter-out internal metadata.

mutexify
('a)->'a

Protect functions with a mutex to avoid concurrent calls, return original value otherwise.

playlist.parse
(string)->[([(string*string)]*string)]

Try to parse a local playlist. Return a list of (metadata,URI) items, where metadata is a list of (key,value) bindings.

process_uri
(extname:'a,?uri:string,string)->string

Create a process: uri, replacing : with $(colon)

register
(name:string,?descr:string,string,'a)->unit
where 'a is unit, bool, int, float, string or [string]

Register a new setting.

register_flow
(?server:string,?user:string,?password:string,
 ?email:string,radio:string,website:string,
 description:string,genre:string,
 streams:[(string*string)],source('a))->source('a)

Register a radio on Liquidsoap Flows.

request.create
(?indicators:[string],?persistent:bool,string)->
request('a)

Create a request. Creation may fail if there is no available RID, which cannot be detected currently: in that case one will obtain a request that will fail to be resolved.

request.create.raw
(?indicators:[string],?persistent:bool,string)->
request(audio=0,video=0,midi=0)

Create a raw request, i.e. for files that should not be decoded for streaming. Creation may fail if there is no available RID, which cannot be detected currently: in that case one will obtain a request that will fail to be resolved.

request.destroy
(?force:bool,request('a))->unit

Destroying a request causes any temporary associated file to be deleted, and releases its RID. Persistent requests resist to destroying, unless forced.

request.filename
(request('a))->string

Return a valid local filename if the request is ready, and the empty string otherwise.

request.log
(request('a))->string

Get log data associated to a request.

request.metadata
(request('a))->[(string*string)]

Get the metadata associated to a request.

request.ready
(request('a))->bool

Check if a request is ready, i.e. is associated to a valid local file. Unless the initial URI was such a file, a request has to be resolved before being ready.

request.resolve
(?timeout:float,request('a))->bool

Resolve a request, i.e. attempt to get a valid local file. The operation can take some time. Return true if the resolving was successful, false otherwise (timeout or invalid URI).

server.execute
(string,?string)->[string]

Execute a liquidsoap server command.

set
(string,'a)->unit
where 'a is unit, bool, int, float, string or [string]

Change some setting. Use liquidsoap --conf-descr and liquidsoap --conf-descr-key KEY on the command-line to get some information about available settings.

source.fallible
(source('a))->bool

Indicate if a source may fail, i.e. may not be ready to stream.

source.id
(source('a))->string

Get one source's identifier.

source.init
([source(audio=*,video=*,midi=*)])->
[source(audio=*,video=*,midi=*)]

Simultaneously initialize sources, return the sublist of sources that failed to initialized.

source.is_ready
(source('a))->bool

Indicate if a source is ready to stream, or currently streaming.

source.remaining
(source('a))->float

Estimation of remaining time in the current track.

source.seek
(source('a),float)->float

Seek forward, in seconds. Returns the amount of time effectively seeked.

source.shutdown
(source('a))->unit

Desactivate a source.

source.skip
(source('a))->unit

Skip to the next track.

List

_[_]
(string,[(string*string)])->string

l[k] returns the first v such that (k,v) is in the list l (or “” if no such v exists).

list.add
('a,['a])->['a]

Add an element at the top of a list.

list.append
(['a],['a])->['a]

Catenate two lists.

list.assoc
(default:'a,'b,[('b*'a)])->'a

Generalized l[k] with default value.

list.filter
((('a)->bool),['a])->['a]

Filter a list according to a filtering function.

list.filter_assoc
('a,[('a*'b)])->[('a*'b)] where 'a is an orderable type

list.filter_assoc(key,l) returns all the elements of the form (key, value) from l.

list.fold
((('a,'b)->'a),'a,['b])->'a

Fold a function on every element of a list: list.fold(f,x1,[e1,..,en]) is f(...f(f(x1,e1),e2)...,en).

list.hd
(default:'a,['a])->'a

Return the head (first element) of a list, or 'default' if the list is empty.

list.iter
((('a)->unit),['a])->unit

Call a function on every element of a list.

list.length
(['a])->int

Get the length of a list, i.e. its number of elements.

list.map
((('a)->'b),['a])->['b]

Map a function on every element of a list.

list.mapi
(((int,'a)->'b),['a])->['b]

Map a function on every element of a list, along with its index.

list.mem
('a,['a])->bool where 'a is an orderable type

Check if an element belongs to a list.

list.mem_assoc
('a,[('a*'b)])->bool where 'a is an orderable type

list.mem_assoc(key,l) returns true if l contains a pair (key,value)

list.nth
(default:'a,['a],int)->'a

Get the n-th element of a list (the first element is at position 0), or'default' if element does not exist.

list.randomize
(['a])->['a]

Shuffle the content of a list.

list.remove
('a,['a])->['a]

Remove a value from a list.

list.remove_assoc
('a,[('a*'c)])->[('a*'c)]

Remove the first pair from an associative list.

list.rev
(['a])->['a]

Revert list order.

list.sort
((('a,'a)->int),['a])->['a]

Sort a list according to a comparison function.

list.tl
(['a])->['a]

Return the list without its first element.

Math

*
('a,'a)->'a where 'a is a number type

Multiplication of numbers.

+
('a,'a)->'a where 'a is a number type

Addition of numbers.

-
('a,'a)->'a where 'a is a number type

Substraction of numbers.

/
('a,'a)->'a where 'a is a number type

Division of numbers.

abs
('a)->'a where 'a is a number type

Absolute value.

bool_of_float
(float)->bool

Convert a float to a bool.

bool_of_int
(int)->bool

Convert an int to a bool.

dB_of_lin
(float)->float

Convert linear scale into decibels.

float_of_int
(int)->float

Convert an int to a float.

int_of_float
(float)->int

Convert a float to a int.

lin_of_dB
(float)->float

Convert decibels into linear scale.

mod
(int,int)->int

Integer remainder. If y is not zero, x == (x / y) * y + x mod y, and abs(x mod y) <= abs(y)-1.

pow
('a,'a)->'a where 'a is a number type

Exponentiation of numbers.

random.float
(?min:float,?max:float)->float

Generate a random value.

random.int
(?min:float,?max:float)->int

Generate a random value.

~-
('a)->'a where 'a is a number type

Returns the opposite of its argument.

Pair

fst
(('a*'b))->'a

Get the first component of a pair.

snd
(('a*'b))->'b

Get the second component of a pair.

String

%
(string,[(string*string)])->string

pattern % [...,(k,v),...] changes in the pattern occurences of: - $(k) into v; - $(if $(k2),"a","b") into “a” if k2 is found in the list, “b” otherwise.

^
(string,string)->string

Concatenate strings.

base64.decode
(string)->string

Decode a Base64 encoded string.

base64.encode
(string)->string

Encode a string in Base64.

bool_of_string
(?default:bool,string)->bool

Convert a string to a bool.

float_of_string
(?default:float,string)->float

Convert a string to a float.

int_of_string
(?default:int,string)->int

Convert a string to a int.

json_of
(?compact:bool,'a)->string

Convert a value to a json string.

of_json
(default:'a,string)->'a

Parse a json string into a liquidsoap value.

quote
(string)->string

Escape shell metacharacters.

string.capitalize
(?capitalize:bool,?space_sensitive:bool,string)->string

Return a string with the first character set to upper case (capitalize), or to lower case (uncapitalize).

string.case
(?lower:bool,string)->string

Convert a string to lower or upper case.

string.concat
(?separator:string,[string])->string

Concatenate strings.

string.escape
(?special_chars:[string],?escape_char:((string)->string),
 string)->string

Escape special charaters in a string. String is parsed char by char. See string.utf8.escape for an UTF8-aware parsing function.

string.extract
(pattern:string,string)->[(string*string)]

Extract substrings from a string. Perl compatible regular expressions are recognized. Hence, special characters should be escaped. Returns a list of (index,value). If the list does not have a pair associated to some index, it means that the corresponding pattern was not found.

string.length
(string)->int

Get the length of a string.

string.match
(pattern:string,string)->bool

Match a string with an expression. Perl compatible regular expressions are recognized. Hence, special characters should be escaped.

string.recode
(?in_enc:string,?out_enc:string,string)->string

Convert a string. Effective only if Camomile is enabled.

string.replace
(pattern:string,((string)->string),string)->string

Replace substrings in a string. Will replace all substrings matched in the pattern by the string returned by the replace function.

string.split
(separator:string,string)->[string]

Split a string at 'separator'. Perl compatible regular expressions are recognized. Hence, special characters should be escaped.

string.sub
(string,start:int,length:int)->string

Get a substring of a string. Returns “” if no such substring exists.

string.trim
(string)->string

Return a string without leading and trailing whitespace.

string.utf8.escape
(?special_chars:[string],?escape_char:((string)->string),
 string)->string

Escape special charaters in an UTF8 string.

string_of
('a)->string

Return the representation of a value.

string_of_metadata
([(string*string)])->string

Standard function for displaying metadata. Shows artist and title, using “Unknown” when a field is empty.

url.decode
(?plus:bool,string)->string

Decode an encoded url (e.g. “%20” becomes “ ”).

url.encode
(?plus:bool,string)->string

Encode an url (e.g. “ ” becomes “%20”).

url.split
(string)->(string*[(string*string)])

Split an url of the form foo?arg=bar&arg2=bar2 into (“foo”,[(“arg”,“bar”),(“arg2”,“bar2”)]).

url.split_args
(string)->[(string*string)]

Split the arguments of an url of the form arg=bar&arg2=bar2 into [(“arg”,“bar”),(“arg2”,“bar2”)].

System

argv
(?default:string,int)->string

Get command-line parameters.

basename
(string)->string

Get the base name of a path.

dirname
(string)->string

Get the directory name of a path.

environment
()->[(string*string)]

Return the process environment.

exe_ext
string

Executable file extension.

exec_at
(?freq:float,pred:(()->bool),(()->unit))->unit

Execute a given action when a predicate is true. This will be run in background.

exit
(int)->unit

Immediately stop the application. This should only be used in extreme cases or to specify an exit value. The recommended way of stopping Liquidsoap is to use shutdown.

file.contents
(string)->string

Read the whole contents of a file.

file.exists
(string)->bool

Returns true if the file or directory exists.

file.extension
(?dir_sep:string,string)->string

Returns a file's extension.

file.is_directory
(string)->bool

Returns true if the file exists and is a directory.

file.mime_default
('a)->string

Dummy implementation of file.mime

file.temp
(string,string)->string

Return a fresh temporary filename in the temporary directory.

file.watch
(string,(()->unit))->()->unit

Call a function when a file is modified. Returns unwatch function.

get_mime
(string)->string

Generic mime test. First try to use file.mime if it exist. Otherwise try to get the value using the file binary. Returns “” (empty string) if no value can be found.

get_process_lines
(?timeout:float,?env:[(string*string)],?inherit_env:bool,
 string)->[string]

Perform a shell call and return the list of its output lines.

get_process_output
(?timeout:float,?env:[(string*string)],?inherit_env:bool,
 string)->string

Perform a shell call and return its output.

getenv
(string)->string

Get the value associated to a variable in the process environment. Return “” if variable is not set.

getopt
(?default:string,string)->string

Parse command line options: getopt("-o") returns “1” if “-o” was passed without any parameter, “0” otherwise. getopt(default="X","-o") returns “Y” if “-o Y” was passed, “X” otherwise. The result is removed from the list of arguments, affecting subsequent calls to argv() and getopt().

getpid
()->int

Get the process' pid.

gettimeofday
()->float

Return the current time since 00:00:00 GMT, Jan. 1, 1970, in seconds.

is_directory
(string)->bool

Returns true if the directory exists.

on_shutdown
((()->unit))->unit

Register a function to be called when Liquidsoap shuts down.

os.type
string

Type of OS running liquidsoap.

path.concat
(string,string)->string

Concatenate two paths, using the appropriate directory separator.

read
(?hide:bool)->string

Read some value from standard input (console).

reopen.stderr
(string)->unit

Reopen standard error on the given file

reopen.stdin
(string)->unit

Reopen standard input on the given file

reopen.stdout
(string)->unit

Reopen standard output on the given file

restart
()->unit

Restart the application.

run_process
(?env:[(string*string)],?inherit_env:bool,?timeout:float,
 string)->((string*string)*(string*string))

Run a process in a shell environment. Returns: ((stdout,stderr),status) where status is one of: ("exit","<code>"), ("killed","<signal number>"), ("stopped","<signal number>"), ("exception","<exception description>", (“timeout”,“<run time>”). * <code>env</code> (<code>[(string*string)]</code> -- defaults to <code>[]</code>): Process environment * <code>inherit_env</code> (<code>bool</code> -- defaults to <code>true</code>): Inherit calling process's environment when env parameter is empty. * <code>timeout</code> (<code>float</code> -- defaults to <code>-1.0</code>): Cancel process after timeout has elapsed. Ignored if negative. * <code>(unlabeled)</code> (<code>string</code>): Command to run h5setenv. setenv

(string,string)->unit

Set the value associated to a variable in the process environment.

shutdown
()->unit

Shutdown the application.

source.is_up
(source('a))->bool

Check whether a source is up.

source.on_shutdown
(source('a),(()->unit))->unit

Register a function to be called when source shuts down.

system
(string)->unit

Shell command call. Set verbose to true to log process' output and errors.

test_process
(?timeout:float,?env:[(string*string)],?inherit_env:bool,
 string)->bool

Return true if process exited with 0 code.

which
(string)->string

which(“progname”) searches for an executable named “progname” using directories from the PATH environment variable and returns “” if it could not find one.