Skip to content
Snippets Groups Projects
README.md 5.53 KiB
Newer Older
  • Learn to ignore specific revisions
  • David Trattnig's avatar
    David Trattnig committed
    # Aura Engine
    
    David Trattnig's avatar
    David Trattnig committed
    
    
    David Trattnig's avatar
    David Trattnig committed
    <img src="https://gitlab.servus.at/autoradio/meta/-/raw/master/images/aura-engine.png" width="250" align="right" />
    
    David Trattnig's avatar
    David Trattnig committed
    
    
    David Trattnig's avatar
    David Trattnig committed
    Aura Engine is a play-out engine as part of [Aura Radio Software Suite](#About),
    
    David Trattnig's avatar
    David Trattnig committed
    specifically build for the requirements of community radios.
    
    
    David Trattnig's avatar
    David Trattnig committed
    <!-- TOC -->
    
    
    David Trattnig's avatar
    David Trattnig committed
    - [Aura Engine](#aura-engine)
    
    David Trattnig's avatar
    David Trattnig committed
        - [Features](#features)
        - [Architecture](#architecture)
    
    David Trattnig's avatar
    David Trattnig committed
        - [Requirements](#requirements)
    
    David Trattnig's avatar
    David Trattnig committed
        - [Installation](#installation)
        - [Start the Engine](#start-the-engine)
    
    David Trattnig's avatar
    David Trattnig committed
        - [Logging](#logging)
    
    David Trattnig's avatar
    David Trattnig committed
        - [About](#about)
    
    David Trattnig's avatar
    David Trattnig committed
        - [Resources](#resources)
    
    <!-- /TOC -->
    
    David Trattnig's avatar
    David Trattnig committed
    
    
    David Trattnig's avatar
    David Trattnig committed
    - Play audio from multiple sources
    - Dynamic switching of sources
    - Record output to filesystem
    - Stream output to an Icecast Server
    - Multichannel Line-out
    - Blank Detenction / Silence Detecter
    - Auto Pilot a.k.a. Fallback Handling
    
    - API to query Track-Service
    
    - API to query monthly reports
    - API to query data for a studio clock
    - Web Application for displaying the Track-Service
    - Web Application for displaying the studio clock
    
    David Trattnig's avatar
    David Trattnig committed
    Read more on the [Engine Features](docs/engine-features.md) page.
    
    
    ## Architecture
    
    AURA Engine as part of the AURA Radio Suite uses an modulear architecture
    based on a REST API. All external information is retrieved using JSON data-structures.
    
    
    David Trattnig's avatar
    David Trattnig committed
    To learn more, checkout the [Engine Developer Guide](docs/developer-guide.md) or visit
     the [Aura Meta](https://gitlab.servus.at/autoradio/meta) repository.
    
    David Trattnig's avatar
    David Trattnig committed
    ## Requirements
    
    David Trattnig's avatar
    David Trattnig committed
    **Hardware Requirements:** This depends on how many audio sources and targets you are
     going to use, but for the most common scenarios any current hardware should be sufficient.
     For the audio devices it is required to use an interface which has supported ALSA drivers.
    
    **Operating System:** Any linux system with ALSA, PulseAudio or Jack2 support should work. 
    It is tested and coded on Debian Stretch and Ubuntu 18.0 with Python 3.6+.
    
    
    David Trattnig's avatar
    David Trattnig committed
    ## Installation
    
    git clone https://gitlab.servus.at/autoradio/engine
    
    **Install System Libraries:**
    
    Aura Engine requires at least Node 13 and Python 3.7.
    
        python3.7 python3.7-pip python3.7-dev \
    
    David Trattnig's avatar
    David Trattnig committed
        libsndfile1 ffmpeg \
    
        liquidsoap liquidsoap-plugin-icecast \
        mariadb-server libmariadbclient-dev \
        quelcom \
    
    David Trattnig's avatar
    David Trattnig committed
        liquidsoap-plugin-alsa liquidsoap-plugin-pulseaudio \
    
    **Install Engine Packages:**
    
    Gottfried Gaisbauer's avatar
    Gottfried Gaisbauer committed
    ```bash
    
    sudo ./install.sh
    
    David Trattnig's avatar
    David Trattnig committed
    **Setup Database:**
    
    Gottfried Gaisbauer's avatar
    Gottfried Gaisbauer committed
    ```bash
    
    Gottfried Gaisbauer's avatar
    Gottfried Gaisbauer committed
    CREATE DATABASE aura_engine CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;  
    CREATE USER 'aura'@'localhost' IDENTIFIED BY 'secure-password';  
    GRANT ALL PRIVILEGES ON aura_engine.* TO 'aura'@'localhost';  
    
    Gottfried Gaisbauer's avatar
    Gottfried Gaisbauer committed
    ```
    
    David Trattnig's avatar
    David Trattnig committed
    **Configuration:**
    
    This creates the folder */var/audio* and copies some default configuration
    to */etc/aura/engine.ini*
    
    David Trattnig's avatar
    David Trattnig committed
    After that, you have to edit the settings in */etc/aura/engine.ini*. Ensure to take
    your time to carefully review those settings!
    
    David Trattnig's avatar
    David Trattnig committed
    Read more about detailed settings in the [Configuration Guide](docs/configuration-guide.md).
    
    David Trattnig's avatar
    David Trattnig committed
    ## Start the Engine
    
    
    **Development:** While developing there is a simple convencience script `run.sh`
    to get you started. Call the engine's components in following order:
    
    ```shell
        ./run.sh      # Starts the engine-core component
        ./run.sh lqs  # Starts the engine-liquidsoap component
        ./run.sh api  # Starts the engine-api component
    ```
    
    **Production:** In production the process is slightly different to ensure the
    engine's components are always running i.e. restart themselves after some system
    restart or crash. Therefore they are executed using a system service:
    
    David Trattnig's avatar
    David Trattnig committed
    ```bash
      systemctl start aura-engine  
    
      systemctl start aura-lqs
      systemctl start aura-api
    
    David Trattnig's avatar
    David Trattnig committed
    ```
    
    David Trattnig's avatar
    David Trattnig committed
    ```bash
      systemctl enable aura-engine
    
      systemctl enable aura-lqs
    
    David Trattnig's avatar
    David Trattnig committed
    ```
    
    David Trattnig's avatar
    David Trattnig committed
    ## Logging
    
    David Trattnig's avatar
    David Trattnig committed
    You can access the service logs using one of:
    
    David Trattnig's avatar
    David Trattnig committed
    ```
    
        journalctl -u aura-lqs
        journalctl -u aura-engine
    
    David Trattnig's avatar
    David Trattnig committed
    ```
    
    David Trattnig's avatar
    David Trattnig committed
    ## About
    
    <img src="https://gitlab.servus.at/autoradio/meta/-/raw/master/images/aura-logo.png" width="150" />
    
    Aura Engine is the play-out engine of the Aura Radio Software Suite. Aura stands for Automated Radio and is a swiss army knife for community radios. 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/autoradio/meta) repository or on the specific project pages.
    
    | [<img src="https://gitlab.servus.at/autoradio/meta/-/raw/master/images/aura-steering.png" width="150" align="left" />](https://gitlab.servus.at/autoradio/pv)  |  [<img src="https://gitlab.servus.at/autoradio/meta/-/raw/master/images/aura-dashboard.png" width="150" align="left" />](https://gitlab.servus.at/autoradio/dashboard)  |  [<img src="https://gitlab.servus.at/autoradio/meta/-/raw/master/images/aura-tank.png" width="150" align="left" />](https://gitlab.servus.at/autoradio/tank) | [<img src="https://gitlab.servus.at/autoradio/meta/-/raw/master/images/aura-engine.png" width="150" align="left" />](https://gitlab.servus.at/autoradio/engine)  |
    |---|---|---|---|
    | [Steering](https://gitlab.servus.at/autoradio/pv)  | [Dashboard](https://gitlab.servus.at/autoradio/dashboard)  | [Tank](https://gitlab.servus.at/autoradio/tank)  | [Engine](https://gitlab.servus.at/autoradio/engine)  |
    
    
    
    ## Resources ##
    
    * **Python**: https://docs.python.org/
    * **Redis**: https://redis.io/
    * **Liquidsoap**: https://www.liquidsoap.info/doc-1.4.0/
    * **Jack Audio**: https://jackaudio.org/