|
|
See pages to the right -> |
|
|
\ No newline at end of file |
|
|
# **Audio Server**
|
|
|
|
|
|
The **Audio Server** solves a variety of audio routing problems for radio stations.
|
|
|
|
|
|
#### Including:
|
|
|
|
|
|
- **Mixing audio sources:** Play audio from any combination of microphone inputs, live streams, and audio files.
|
|
|
|
|
|
- **Streaming:** Send audio to a live stream (Icecast or Shoutcast).
|
|
|
|
|
|
- **Recording:** Record the audio output to a file.
|
|
|
|
|
|
- **Programmable Control:** Easily control the server with anything that does HTTP requests, like JavaScript.
|
|
|
|
|
|
---
|
|
|
|
|
|
### Technical Overview
|
|
|
|
|
|
- The Audio Server takes a set of **audio sources** (file, stream, audio input device), and sends them to a set of **audio outputs** (file, stream, audio output device).
|
|
|
|
|
|
- Written in C++ with the [JUCE framework](https://juce.com).
|
|
|
|
|
|
- Includes HTTP server (like [Crow](https://github.com/ipkn/crow)) allowing control through a REST API.
|
|
|
|
|
|
- Two ways to use it:
|
|
|
|
|
|
- Run it as a command line server with no GUI.
|
|
|
|
|
|
- Run it as a standard Mac or Windows application, with a window that displays a minimal "server status" UI.
|
|
|
|
|
|
- Stores settings in JSON config files.
|
|
|
|
|
|
- Launches **multiple instances** of the Audio Server for each config file (see **Example Config Files** below).
|
|
|
|
|
|
- Each instance is controlled by the same REST API, and has its own set of audio sources and audio outputs.
|
|
|
|
|
|
- If possible, compiled as one single binary with no dependencies.
|
|
|
|
|
|
- Target platforms: Linux, Mac, and Windows.
|
|
|
|
|
|
# Contents
|
|
|
|
|
|
#### Example Usage
|
|
|
|
|
|
- [**Configuration file**](https://labs.creek.fm/open/audio-server/wikis/Examples/Config) — Initializing the server from JSON configuration files.
|
|
|
|
|
|
- [**REST API**](https://labs.creek.fm/open/audio-server/wikis/Examples/Control) — Controlling the server through HTTP requests.
|
|
|
|
|
|
#### Structure: Internal API
|
|
|
|
|
|
- [**Sources**](https://labs.creek.fm/open/audio-server/wikis/Structure/Sources) — Audio Input Device, File, HTTP Stream
|
|
|
|
|
|
- [**Outputs**](https://labs.creek.fm/open/audio-server/wikis/Structure/Outputs) — Audio Output Device, File, HTTP Stream
|
|
|
|
|
|
#### Control: REST API
|
|
|
|
|
|
- [**Sources**](https://labs.creek.fm/open/audio-server/wikis/Control/Config) — List or edit sources.
|
|
|
|
|
|
- [**Outputs**](https://labs.creek.fm/open/audio-server/wikis/Control/Config) — List or edit outputs.
|
|
|
|
|
|
- [**Config**](https://labs.creek.fm/open/audio-server/wikis/Control/Config) — Save JSON config file (config.json), or refresh from JSON file.
|
|
|
|
|
|
#### Status
|
|
|
|
|
|
- [**System**](https://labs.creek.fm/open/audio-server/wikis/Status/System) — Status of system, and disk space.
|
|
|
|
|
|
|