# AURA Engine

This piece of Software is part of 'AURA - AUtomated RAdio'. 

AURA Engine does:
 * requesting the programme from an external Source
 * switches the soundserver at the correct time to a given source for a specific show 
 * records what is broadcasted

## Installation

### Software

#### Operating System

Any sound supporting linux system should work. It is tested and coded on a **debian stretch**

#### Packages

On a debian machine:

```bash
sudo apt install \
    git \
    python3 python3-pip \
    redis-server redis-tools \
    liquidsoap liquidsoap-plugin-alsa liquidsoap-plugin-flac liquidsoap-plugin-icecast liquidsoap-plugin-pulseaudio \
    libev4 libev-dev \
    mariadb-server libmariadbclient-dev
```


#### Python Packages

```bash
sudo pip3 install \
    Flask Flask-Babel Flask-SQLAlchemy Flask-WTF \
    mysqlclient redis simplejson mutagen
    pyev python-dateutil
```

#### get the code

git clone https://gitlab.servus.at/autoradio/engine

#### Set Up a database

```bash
mysql -u root -p

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';  
```

#### Files and Folders

Create the audio folder defined in your aura.ini

```bash
mkdir /var/audio
mkdir /etc/aura
cp {where you cloned the repo}/configuration/aura.ini /etc/aura/aura.ini
```

edit installation dir and database settings in aura.ini

#### aura.py

It is the server which is connected to the external programme source, to liquidsoap and is listening for redis pubsub messages.

#### Guru

The commandline tool for interacting with the server.

#### Liquidsoap

The heart of AURA Engine. It uses the built in mixer, to switch between different sources. A source can be a stream, the filesystem or linein 

### Hardware

#### Soundcard

AURA Engine ist tested with an ASUS Xonar DGX. It should work with every by ALSA supported soundcard. PulseAudio support is planned.

#### Hard/Soft

When you use ALSA, you will have to play around with ALSA settings. In the folder ./modules/liquidsoap is a scipt called alsa_settings_tester.liq. You can start it with 'liquidsoap -v --debug alsa_settings_tester.liq'. Changing and playing with settings can help you to find correct ALSA settings.