# Liquidsoap

## audio stream generation

### Get help

Liquidsoap is a self-documented application, which means that it can provide help about several of its aspects. You will learn here how to get help by yourself, by asking liquidsoap. If you do not succeed in asking the tool, you can of course get help from humans, preferably on the mailing list `savonet-users@lists.sf.net`.

#### Scripting API

When scripting in liquidsoap, one uses functions that are either builtin (e.g. `fallback` or `output.icecast.vorbis`) or defined in the script library (e.g `out`). All these functions come with a documentation, that you can access by executing `liquidsoap -h FUNCTION` on the command-line. For example:

    $ liquidsoap -h sine
    *** One entry in scripting values:
    Generate a sine wave.
    Category: Source / Input
    Type: (?id:string, ?duration:float, ?float)->source
    Parameters:
    * id :: string (default "")
        Force the value of the source ID.
    * duration :: float (default 0.)
    * (unlabeled) :: float (default 440.)
        Frequency of the sine.

Of course if you do not know what function you need, you'd better go through the API reference.

#### Server commands

The server (cf. the server tutorial) offers some help about its commands. Once connected to it (either via a TCP or UNIX socket) the `help` command will give you a list of available commands together with a short usage line. You can then get more detailed information about a specific command by typing `help COMMAND`:

    $ telnet localhost 1234
    Trying 127.0.0.1...
    Connected to localhost.localdomain.
    Escape character is '^]'.
    help
    Available commands:
    [...]
    | queue.ignore <rid>
    | queue.push <uri>
    | queue.queue
    [...]
    Type "help <command>" for more information.
    END
    help queue.push

    Help for command queue.push.

    Usage: queue.push <uri>
      Push a new request in the queue.
    END

#### Settings

Liquidsoap scripts contain expression like `set("log.stdout",true)`. These are settings, global variables affecting the behaviour of the application. Here, the first parameter identifies a setting its path, and the second one specifies its new value.

You can have a list of available settings, with their documentation, by running `liquidsoap --conf-descr`. If you are interested in a particular settings section, for example server-related stuff, use `liquidsoap --conf-descr-key server`.

The output of these commands is a valid liquidsoap script, which you can edit to set the values that you want, and load it (implicitly or not) before you other scripts.

You can browse online the list of available settings.

#### All plugins

Several aspects of liquidsoap work with a notion of plugin: builtin scripting functions, audio decoders for files and streams, metadata decoders, protocols, etc. The list of plugins can be used to check that your build of liquidsoap has such or such feature, or simply to browse available functions – actually, the reference is built from that output.

You can get the pretty hairy list of all available plugins from the command `liquidsoap --list-plugins`, or `liquidsoap --list-plugins-xml` for a more parsable XML output.