Skip to content
Snippets Groups Projects
README.md 8.45 KiB
Newer Older
  • Learn to ignore specific revisions
  • David Trattnig's avatar
    David Trattnig committed
    
    
    # AURA Engine Core
    
    David Trattnig's avatar
    David Trattnig committed
    
    
    David Trattnig's avatar
    David Trattnig committed
    <img src="https://gitlab.servus.at/autoradio/meta/-/raw/master/assets/images/aura-engine.png" width="250" align="right" />
    
    David Trattnig's avatar
    David Trattnig committed
    
    
    AURA Engine Core is a play-out server for radio stations based on [Liquidsoap](https://www.liquidsoap.info/).
    
    For full utilization Engine Core might be combined with [Engine](https://gitlab.servus.at/aura/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](https://en.wikipedia.org/wiki/Dead_air). Play randomized music from a folder or M3U playlist.
    
    - **ReplayGain** normalization done using passed [ReplayGain](https://en.wikipedia.org/wiki/ReplayGain) meta data.
    - **Track Service** notifications when used in conjunction with [Engine API](https://gitlab.servus.at/aura/engine-api)
    
    
    This project is part of [Aura Radio Software Suite](https://gitlab.servus.at/aura/meta), specifically build for the requirements of community radio stations.
    
    David Trattnig's avatar
    David Trattnig committed
    
    
    David Trattnig's avatar
    David Trattnig committed
    <!-- TOC -->
    
    
    David Trattnig's avatar
    David Trattnig committed
    1. [AURA Engine Core](#aura-engine-core)
       1. [Prerequisites](#prerequisites)
       2. [Quickstart](#quickstart)
       3. [Audio Store](#audio-store)
       4. [Advanced Configuration](#advanced-configuration)
       5. [Other AURA Components](#other-aura-components)
       6. [Read more](#read-more)
       7. [About](#about)
    
    David Trattnig's avatar
    David Trattnig committed
    
    <!-- /TOC -->
    
    David Trattnig's avatar
    David Trattnig committed
    
    
    ## Prerequisites
    
    To [install the AURA Suite](https://gitlab.servus.at/aura/meta) we recommend using [Docker](https://www.docker.com/) and [Docker Compose](https://docs.docker.com/compose/).
    
    
    David Trattnig's avatar
    David Trattnig committed
    > IMPORTANT: For live audio input inside Docker there are currently buffer and latency issues. After the [move the Liquidsoap 2.0](https://gitlab.servus.at/aura/engine-core/-/issues/4) it should be somewhat better. Also looking for tips on how to solve these issues. Therefore we right now recommend to do a bare-metal installation for *Engine Core*. If you don't require analog audio input you can safely use Docker. All other AURA components can be deployed using Docker though.
    
    
    You'll need to have following installed before proceeding:
    
    David Trattnig's avatar
    David Trattnig committed
    - [git](https://git-scm.com/)
    
    David Trattnig's avatar
    David Trattnig committed
    - `apt-get install libasound2-dev libavcodec-dev libavdevice-dev libavformat-dev libavutil-dev libflac-dev libjack-dev libpulse-dev libswresample-dev libswscale-dev libssl-dev ffmpeg`
    - [Liquidsoap 1.4.4](https://www.liquidsoap.info/doc-1.4.4/install.html) installed using [OPAM (OCaml Package Manager)](https://opam.ocaml.org/) and these additional dependencies:
        - `opam depext alsa pulseaudio bjack ssl ffmpeg samplerate flac taglib mad lame vorbis flac opus cry -y`
        - `opam install alsa pulseaudio bjack ssl ffmpeg samplerate flac taglib mad lame vorbis flac opus cry -y`
    
    David Trattnig's avatar
    David Trattnig committed
    
    Download a zipped version from the [*Engine Core* repository](https://gitlab.servus.at/aura/engine-core) page or clone some specific branch or tag using `git` to a local `engine-core` directory. In order to allow easy updating we recommend the git approach.
    
    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](https://www.freedesktop.org/wiki/Software/PulseAudio/) Sound Server is set as you default [ALSA](https://www.alsa-project.org/) 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.
    
    David Trattnig's avatar
    David Trattnig committed
    The aformentioned `audio` folder is the base for retrieving audio files. Engine Core is referencing three folders from this so-called *Audio Store*:
    
    David Trattnig's avatar
    David Trattnig committed
    - **`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.
    
    David Trattnig's avatar
    David Trattnig committed
    - **`audio/source/`**: This is the location for audio files provided by [Tank](https://gitlab.servus.at/aura/tank). Usually any audio files which are part of the scheduled programme are read for their broadcast from here. 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](https://gitlab.servus.at/aura/meta/-/blob/master/docs/administration/installation-guide.md) 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](https://gitlab.servus.at/aura/meta/-/blob/master/docs/administration/setup-audio-store.md)".
    
    
    ## 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](docs/audio-device-configuration.md) 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)](docs/frequently-asked-questions.md).
    
    
    ## Other AURA Components
    
    After successfully running Engine Core you might look into getting started with [the other Engine Components](https://gitlab.servus.at/aura/engine) and [AURA Web](https://gitlab.servus.at/aura/meta).
    
    
    ## Read more
    
    
    - [Audio Device Configuration](docs/audio-device-configuration.md)
    
    David Trattnig's avatar
    David Trattnig committed
    - [Frequently Asked Questions (FAQ)](docs/frequently-asked-questions.md)
    
    David Trattnig's avatar
    David Trattnig committed
    ## About
    
    David Trattnig's avatar
    David Trattnig committed
    
    
    David Trattnig's avatar
    David Trattnig committed
    [<img src="https://gitlab.servus.at/autoradio/meta/-/raw/master/assets/images/aura-logo.png" width="150" />](https://gitlab.servus.at/aura/meta)
    
    David Trattnig's avatar
    David Trattnig committed
    
    
    AURA stands for Automated Radio and is a swiss army knife for community radio stations. Beside the Engine it provides Steering (Admin Interface for the radio station), Dashboard (Collaborative scheduling and programme coordination), Tank (Audio uploading, pre-processing and delivery). Read more in the [Aura Meta](https://gitlab.servus.at/aura/meta) repository or on the specific project pages.
    
    David Trattnig's avatar
    David Trattnig committed
    | [<img src="https://gitlab.servus.at/aura/meta/-/raw/master/assets/images/aura-steering.png" width="150" align="left" />](https://gitlab.servus.at/aura/steering)  |  [<img src="https://gitlab.servus.at/aura/meta/-/raw/master/assets/images/aura-dashboard.png" width="150" align="left" />](https://gitlab.servus.at/aura/dashboard)  |  [<img src="https://gitlab.servus.at/aura/meta/-/raw/master/assets/images/aura-tank.png" width="150" align="left" />](https://gitlab.servus.at/aura/tank) | [<img src="https://gitlab.servus.at/aura/meta/-/raw/master/assets/images/aura-engine.png" width="150" align="left" />](https://gitlab.servus.at/aura/engine)  |
    
    |---|---|---|---|
    
    | [Steering](https://gitlab.servus.at/aura/steering)  | [Dashboard](https://gitlab.servus.at/aura/dashboard)<br/>[Dashboard Clock](https://gitlab.servus.at/aura/dashboard-clock)  | [Tank](https://gitlab.servus.at/aura/tank)  | [Engine](https://gitlab.servus.at/aura/engine)<br/>[Engine Core](https://gitlab.servus.at/aura/engine-core)<br/>[Engine API](https://gitlab.servus.at/aura/engine-api)  |