From Opendigitalradio
Revision as of 22:33, 27 March 2014 by Hb9egm (Talk | contribs)

Jump to: navigation, search

Toolame is an open source implementation of MPEG-1/2 Layer II audio coding. Toolame-dab is a slightly modified version that supports the MPEG ZMQ input from ODR-DabMux.

It also supports the necessary options to add a DAB PAD field on every frame, and work is ongoing to make it compatible with mot-encoder from fdk-aac-dabplus for MOT Slideshow and DLS support.


Basic Usage

-s <kHz>: sampling rate in kHz
-D <bytes>: add x PAD bytes to every MPEG frame for DAB support
-b <bitrate>: output bitrate in kbit/s


toolame -h

for detailed information

Example with alsa input using sox:

sox -t alsa $ALSASRC -b 16 -t raw - rate 48k channels 2 | \
   ../toolame/toolame \
   -s 48 -D 4 -b $BITRATE /dev/stdin $DST

where $DST is of the form

tcp://<some host running odr-dabmux>:<port>

Taken from this script

Example with stdout as output:

toolame -s 48 -D 4 -b 128 /dev/stdin /dev/stdout

Read linear stream from standard input, encode it at 128kbit/s, add 4bytes for DAB PAD and output stream to standard output (this command is typically used, "piped" with other commands for live encoding in a DAB transmission)

Source code

To get zmq output, retrieve toolame-dab from

git clone
cd toolame-dab
sudo make install

The installed executable is called toolame

The original source for toolame-02l is

Warning !

A more recent fork called twolame exists. Despite the fact that the code has been cleaned, twolame has lost DAB support that was present in toolame. So be careful to install toolame and not twolame for DAB tests.

JACK version (non-working)

Matthias Brändli has modified the latest version of toolame (version 02l) to support JACK Audio Connection Kit input. It can be found here: File:Toolame-02l-jack-2.tar.bz2 This version is unstable, not maintained because of lack of interest, and cannot be used for 24/7 operation. Interested developers are welcome to send patches !

Notes on compilation: There are some flags in the Makefile that have to be defined before compiling. An appropriate architecture must be specified, which depends on whether your system is 32bit or 64bit. You can use -march=pentium for the former (All 32-bit Intel and AMD processor), and -march=core2 for 64bit intel processors (core2 and newer, maybe also works for AMD processors)

This version will compile to an executable called toolame-jack, which supports two additional options:

-j             Enable JACK input
-n <name>      Specify JACK name

All other options are unchanged. Example:

toolame-jack -j -n toolame-1 examplefile.mp2

The mercurial repository for the modifications is located at

Personal tools