Skip to content
Snippets Groups Projects

AURA Engine Core

AURA Engine Core is a play-out server for radio stations based on Liquidsoap.

For full utilization Engine Core might be combined with Engine providing a managment, monitoring and scheduling layer atop. Engine Core provides following features out of the box:

  • Play audio from various sources including files, streams and analog live audio
  • Analog audio or digital stream output which is able to connect to an Icecast Server. It allows to stream to multiple Icecast Servers simultaniousely including sending of meta information using the Icy protocol.
  • Auto DJ triggered by a silence detector to avoid Dead Air. Play randomized music from a folder or M3U playlist.
  • ReplayGain normalization done using passed ReplayGain meta data.
  • Track Service notifications when used in conjunction with Engine API

This project is part of Aura Radio Software Suite, specifically build for the requirements of community radio stations.

  1. AURA Engine Core
    1. Prerequisites
    2. Quickstart
    3. Audio Store
    4. Advanced Configuration
    5. Logging
    6. Other AURA Components
    7. Read more
    8. About

Prerequisites

To install the AURA Suite for testing or production we recommend using the Docker Compose installation instead. The following steps are aiming for developers.

You'll need to have following installed before proceeding:

  • git
  • apt-get install curl alsa-utils libasound2-dev libavcodec-dev libavdevice-dev libavformat-dev libavutil-dev libflac-dev libjack-dev libpulse-dev libswresample-dev libswscale-dev libssl-dev ffmpeg opam
  • Liquidsoap 2.0.x installed using OPAM (OCaml Package Manager) and these additional dependencies:
    • opam depext alsa pulseaudio bjack ffmpeg samplerate flac taglib mad lame vorbis flac opus cry ocurl liquidsoap -y
    • opam install alsa pulseaudio bjack ffmpeg samplerate flac taglib mad lame vorbis flac opus cry ocurl liquidsoap -y

Now clone this repository to your target instance.

Quickstart

Perform following commands inside the engine-core directory:

  1. Create an initial configuration file based on an sample config: cp config/sample-production.engine-core.ini config/engine-core.ini
  2. Create the folder structure ./audio/fallback/ in the project root and populate fallback with some music files. This folder is picked up as a so-called Station Fallback in case no other music is scheduled or if silence is detected.
  3. Execute ./run.sh to get the Engine Core server running. Voilá, you should hear some music!

If the audio device desired for playback is set as default, the Engine now should be ready to play sound. If you are not hearing any sound set a working output device for output_device_0 in engine-core.ini and carefully review the logs.

You can check the systems default audio hardware by executing aplay -L on the command line. If that's not the case you can set the default device in /etc/asound.conf. The most glitch-free experience you'll get when the PulseAudio Sound Server is set as you default ALSA device. For production you might want to check for any latency issues though.

After this is working you might be ready for a more sophisticated setup of the engine environment.

Audio Store

The aformentioned audio folder is the base for retrieving audio files. Engine Core is referencing three folders from this so-called Audio Store:

  • audio/fallback/: A local folder for any emergency playback, also called Station Fallback. All audio files inside are played in a randomized order, if no actually scheduled music is played by the engine. The folder is being watched for changes. So you can add/remove audio on the fly. This fallback feature is enabled by default.
  • audio/playlist/: Put a file station-fallback-playlist.m3u in here and it has the same effect as the fallback folder. he playlist is being watched for changes. Set fallback_type="playlist" to enable this instead of the fallback folder.
  • audio/source/: This is the location for audio files provided by Tank. Usually any audio files which are part of the scheduled programme are read from here to perform broadcasts. If you are running all AURA components on a single machine you should be fine with just creating a symbolic link to the relevant Tank folder (ln -s ../engine/audio ./audio). But in some distributed and redundant production scenario you might think about more advanced options on how to sync your audio files between machines. You can find some ideas in the doc " Setting up the Audio Store".

Advanced Configuration

By default only audio output is enabled using the systems default device. If you want to use another audio interface or enable live audio, check the Audio Device Configuration document.

Also review the other settings in your engine-core.ini to fine-tune the heart of your engine. If you are experiencing issues also check out the Frequently Asked Questions (FAQ).

Logging

The Engine Core logs can be found under ./logs.

Other AURA Components

After successfully running Engine Core you might look into getting started with the other Engine Components and AURA Web.

Read more

About