Aura Engine

Aura Engine is a scheduling and play-out engine as part of Aura Radio Software Suite, specifically built for the requirements of community radio stations.
Functionality
In conjunction with other AURA components Engine provides several features:
- Scheduler to automatically broadcast your radio programme (see AURA Dashboard for a user interface to do scheduling)
- Analog input and outputs provided by Engine Core
- Streaming to an Icecast Server including Icy Metadata provided by Engine Core
- Autonomous playout by caching the schedule information pulled from Steering in a local database. This allows Engine be keep running, independently from any network or service outages. This enables the application of (High Availability infrastructure scenarios)[https://gitlab.servus.at/aura/meta/-/blob/master/docs/administration/installation-guide.md#high-availability].
- Auto DJ with Silcence Detector provided by Engine Core
- Web Application for a Track Service (see AURA Player)
- Web Application providing a Studio Clock (see Dashboard Clock)
-
Bulk and Timeslot Recorder (Not yet available, this will be provided after v1.1 by a planned
engine-recorder
component) - API to query Track-Service, monthly reports and information for displaying the Studio Clock (see Engine API)
Scheduler
Engine provide a scheduling functionality by polling external API endpoints frequently. Those API endpoints are provided by Steering to retrieve schedule information and Tank to retrieve playlist information. To define your schedule you'll also need AURA Dashboard which is an elegent web user interface to manage your shows, playlists and schedules.
Ideally any audio is scheduled some time before the actual, planned playout to avoid timing issues with buffering and preloading. Nonetheless, playlists can also be scheduled after a given calendar timeslot has started already. In such case the playout starts as soon it is preloaded.
If for some reason the playout is corrupted, stopped or too silent to make any sense, then this triggers a fallback using the silence detector (see chapter below).
Note: If you delete any existing timeslot in Dashboard/Steering this is only reflected in Engine until the start of the scheduling window. The scheduling window is defined by the start of the timeslot minus a configured offset in seconds (compare your Engine configuration).
Versatile playlists
It is possible to schedules playlists with music or pre-recorded shows stored on the file system, via external streams or live from an analog input in the studio. All types of sources can be mixed in a single playlist.
The switching between types of audio source is handled automatically, with configured fadings applied.
Note: Any live sources or streams not specifying a length property, are automatically expanded to the left duration of the timeslot.
Default playlists
While a timeslot can have a specific playlist assigned, it is also possible to define default playlists for schedules and shows:
-
Default Schedule Playlist: This playlist is defined on the level of some recurrence rules (Schedule). In case the timeslot doesn't have any specific playlist assigned, this playlist is broadcasted.
-
Default Show Playlist: This playlist can be assigned to some show. If neither the specific timeslot playlist nor the default schedule playlist is specified the default show playlist is broadcasted.
If none of these playlists have been specified the Auto DJ feature of Engine Core takes over (optional).
Heartbeat Monitoring
Instead of checking all status properties, the Heartbeat only validates the vital ones required to run the engine. If all of those are valid, a network socket request is sent to a defined server. This heartbeat is sent continuously based on the configured heartbeat_frequency
. The service receiving this heartbeat ticks can decide what to do with that information. One scenario could be switching to another Engine instance or any other custom failover scenario. Under contrib/heartbeat-monitor
you'll find some sample application digesting these heartbeat signals.
Logging
All Engine logs can be found in the local ./logs
directory. Adapt the log-level within your configuration to get more or less verbose log output. Whenever the Engine's status turns into some unhealthy state, additionally this is logged to Engine API. Also, when it returns to some valid state this is logged to the Engine API.
Getting started
Ensure that you have also dependencies such as steering
, tank
, dashboard
, engine-core
, and engine-api
up and running. There's a how-to in the Meta repository to get quickly started using Docker Compose.
For production we recommend running Engine using Docker Compose. If you want to install for AURA development or simply prefer to run natively, check out the Bare Metal Installation.
Using Docker
If you only want to run a single Engine Docker container, you can do this in a few, simple steps.
Before getting started copy the default configuration file to config/engine.docker.ini
:
cp config/sample-docker.engine.ini config/docker.engine.ini
You'll need update a few settings:
- The password
db_pass
for the local database holding scheduling information - The app secret
api_tank_secret
for connecting to AURA Tank - Also check the
ENV
variables defined in therun.sh
script.
At the moment production deployment using Docker and Docker Compose is work in progress.
If you would like to run the local codebase, starting Engine in Docker requires you to do a build first:
./run.sh docker:build
After your build has finished start the Engine with following command.
If no build is available it pulls the latest image from Docker Hub.
./run.sh docker:dev
Read more
About
Automated Radio (AURA) is a open source software suite for community radio stations. Learn more about AURA in the Meta repository.
![]() |
![]() |
![]() |
![]() |
---|---|---|---|
Steering |
Dashboard Dashboard Clock |
Tank |
Engine Engine Core Engine API |