RaspDAB/The RaspDAB contribution chain
Creating a contribution chain for a local radio DAB multiplex
Now we have shown how to use a Raspberry Pi to provide a DAB Multiplex stream to an EasyDAB v2 we can create a full contribution chain for a local radio DAB multiplex simply based on low cost Raspberry Pi's :
Picture of RaspDAB contribution chain
On top you see the EasyDAB modulator, which here stands for a full DAB transmitter based on the board, located at some (remote) transmitter site.
The transmitter receives the the DAB Multiplex stream from the RaspDAB Multiplexer unit, which can be located somewhere else (we call this the Multiplexer site). But it requires a reliable IP connection, preferably by cable/fiber. The 'IP routing' boxes indicate there is likely to be some sort of routing equipment on those IP connections, which should open the correct IP addresses and ports for the connection to be established. Especially if the IP connection is to be using the open Internet you should have some sort of firewall protection on both ends to avoid service interruption due to hacking attempts.
Also be aware that in the default RaspDAB setup the EasyDAB tries to establish a connection by searching for the IP address of the RaspDAB multiplexer. So you should establish a static IP address for the multiplexer and ensure the EasyDAB's request gets routed correctly to the RaspDAB unit. The same static IP address will be used by the ODR-audioenc program, but with a different port, to connect to the ODR-DABmux multiplexer as well. Each audio encoder requires a different port number, which will be indicated in the DABmux configuration file as well as the invocation of the ODR-audioenc software. They need to be identical ;o) ! For convenience, it might be a good idea to add the DABmultiplexer IP address to the /etc/hosts file, so you can refer to it by name in the configuration files.
The multiplexer Raspberry Pi can also be used to encode an audio stream of a locally produced station. It is actually quite likely that this unit will be placed at the studio of a local radio station, from which a dedicated IP connection to the transmitter site might already be available. No need to install a separate raspi for the audio encoding !
Other stations can be added by installing another Raspberry Pi with the ODR audio and PAD encoding software at the site of the playout equipment of those stations. Again, these should be connected to the multiplexer site with reliable IP connections, and the router settings should enable the audio encoders to connect to the multiplexer software.
While setting up a local DAB contribution chain I have noticed it is possible to run up to 4 ODR-audioenc and 4 ODR-padenc encoders simultaneously on one Raspberry Pi model B v3. As this will only load the Raspberry Pi to about 40%, it should be capable of handling more, but the limitation is the processor's temperature. Without a heath sink on the processor it is likely to get too hot, which wouldn't be good for reliable operation. The load can be reduced a bit if you can supply the audio streams at the correct sampling frequency already. This will avoid having to use the sample rate converter, which is also likely to introduce noticeable audio artefacts, especially when encoding to the lower bitrates. The ODR-DabMux doesn't load the processor very much, so if necessary it can run alongside the maximum 4 audio and pad encoders.
The audio and pad encoders actually are best located at the radio station's playout site, as this will enable dynamic PAD information to be provided, e.g. the artist and title of the current song, or the current temperature or road information. And having the audio stream created locally will also mean it shouldn't be a problem to have it available for encoding continuously. During the development of the RaspDAB chain receiving audio streams over the internet proved to be the most likely cause of service interruption, causing the encoders to halt operation as they couldn't re-establish the connection in time. Even the supervisor deamon wasn't able to ensure the service restarted, so manual intervention was required to bring the station back on air. One coarse solution is to include a crontab command to stop and restart the encoder at a fixed moment in time, but this will interrupt the service as well, so is best done during the night.
So if you would like to create a multiplex with e.g. 16 stations, you will need at least 4 Raspberry Pi's with the ODR software installed. All will run 4 audio and 4 PAD encoders, plus one of those will also run the DABmux software. But it is highly recommended investing in a separate Raspberry Pi for each station that is to be carried in the mux, such that problems with the audio encoder halting operation can be avoided.