This installs both the playback client (`syng client`) and a configuration GUI (`syng gui`).
This installs both the playback client (`syng client`) and a configuration GUI (`syng gui`).
...
@@ -37,7 +37,7 @@ Webclients should connect to the server using a room code, that can be configure
...
@@ -37,7 +37,7 @@ Webclients should connect to the server using a room code, that can be configure
You can either configure Syng using the GUI or via a text editor by editing `~/.config/syng/config.yaml`. There are the following settings:
You can either configure Syng using the GUI or via a text editor by editing `~/.config/syng/config.yaml`. There are the following settings:
*`server`: URL of the server to connect to.
*`server`: URL of the server to connect to.
*`room`: The room code for your karaoke event. Can be chose arbitrarily. _Note:_ Everyone, that has access to the room code can join the karaoke event.
*`room`: The room code for your karaoke event. Can be chosen arbitrarily, but must be unique. Unused rooms will be deleted after some time. _Note:_ Everyone, that has access to the room code can join the karaoke event.
*`secret`: The admin password for your karaoke event. If you want to reconnect with a playback client to a room, these must match. Additionally, this unlocks admin capabilities to a web client, when given under "Advanced" in the web client.
*`secret`: The admin password for your karaoke event. If you want to reconnect with a playback client to a room, these must match. Additionally, this unlocks admin capabilities to a web client, when given under "Advanced" in the web client.
*`waiting_room_policy`: One of `none`, `optional`, `forced`. When a performer wants to be added to the playback queue, but has already a song queued, they can be added to the _waiting room_. `none` disables this behavior and performers can have multiple songs in the queue, `optional` gives the performer a notification, and they can decide for themselves, and `forced` puts them in the waiting room every time. Once the current song of a performer leaves the queue, the song from the waiting room will be added to the queue.
*`waiting_room_policy`: One of `none`, `optional`, `forced`. When a performer wants to be added to the playback queue, but has already a song queued, they can be added to the _waiting room_. `none` disables this behavior and performers can have multiple songs in the queue, `optional` gives the performer a notification, and they can decide for themselves, and `forced` puts them in the waiting room every time. Once the current song of a performer leaves the queue, the song from the waiting room will be added to the queue.
*`last_song`: `none` or a time in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601). When a song is added to the queue, and its ending time exceeds this value, it is rejected.
*`last_song`: `none` or a time in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601). When a song is added to the queue, and its ending time exceeds this value, it is rejected.
...
@@ -48,16 +48,16 @@ In addition to the general config, has its own configuration under the `sources`
...
@@ -48,16 +48,16 @@ In addition to the general config, has its own configuration under the `sources`
### YouTube
### YouTube
Configuration is done under `sources`->`youtube` with the following settings:
Configuration is done under `sources`→`youtube` with the following settings:
*`enabled`: `true` or `false`.
*`enabled`: `true` or `false`.
*`channels`: list of youtube channels. If this is a nonempty list, Syng will only search these channels, otherwise YouTube will be searched as a whole.
*`channels`: list of YouTube channels. If this is a nonempty list, Syng will only search these channels, otherwise YouTube will be searched as a whole.
*`tmp_dir`: YouTube videos will be downloaded before playback. This sets the direcory, where YouTube videos are stored.
*`tmp_dir`: YouTube videos will be downloaded before playback. This sets the directory, where YouTube videos are stored.
*`start_streaming`: `true` or `false`. If `true`, videos will be streamed directly using `mpv`, if the video is not cached beforehand. Otherwise Syng waits for the video to be downloaded.
*`start_streaming`: `true` or `false`. If `true`, videos will be streamed directly using `mpv`, if the video is not cached beforehand. Otherwise, Syng waits for the video to be downloaded.
### S3
### S3
Configuration is done under `sources`->`s3` with the following settings:
Configuration is done under `sources`→`s3` with the following settings:
*`enabled`: `true` or `false`.
*`enabled`: `true` or `false`.
*`extensions`: List of extensions to be searched. For karaoke songs, that separate audio and video (e.g cdg files), you can use `mp3+cdg` to signify, that the audio part is a `mp3` file and the video is a `cdg` file. For karaoke songs, that do not separate this (e.g. mp4 files), you can simply use `mp4`.
*`extensions`: List of extensions to be searched. For karaoke songs, that separate audio and video (e.g cdg files), you can use `mp3+cdg` to signify, that the audio part is a `mp3` file and the video is a `cdg` file. For karaoke songs, that do not separate this (e.g. mp4 files), you can simply use `mp4`.
...
@@ -71,23 +71,58 @@ Configuration is done under `sources` -> `s3` with the following settings:
...
@@ -71,23 +71,58 @@ Configuration is done under `sources` -> `s3` with the following settings:
### Files
### Files
Configuration is done under `sources`->`files` with the following settings:
Configuration is done under `sources`→`files` with the following settings:
*`enabled`: `true` or `false`.
*`enabled`: `true` or `false`.
*`extensions`: List of extensions to be searched. For karaoke songs, that separate audio and video (e.g cdg files), you can use `mp3+cdg` to signify, that the audio part is a `mp3` file and the video is a `cdg` file. For karaoke songs, that do not separate this (e.g. mp4 files), you can simply use `mp4`.
*`extensions`: List of extensions to be searched. For karaoke songs, that separate audio and video (e.g. cdg files), you can use `mp3+cdg` to signify, that the audio part is a `mp3` file and the video is a `cdg` file. For karaoke songs, that do not separate this (e.g. mp4 files), you can simply use `mp4`.
*`dir`: Directory, where the karaoke files are stored.
*`dir`: Directory, where the karaoke files are stored.
*`index_file`: Cache file, that contains the filenames of the karaoke files in the s3.
*`index_file`: Cache file, that contains the filenames of the karaoke files in the s3.
### Default configuration
```
config:
key: ''
last_song: null
preview_duration: 3
room: <Random room code>
secret: <Random secret>
server: https://syng.rocks
waiting_room_policy: none
sources:
files:
dir: .
enabled: false
extensions:
- mp3+cdg
index_file: ~/.cache/syng/files-index
s3:
access_key: ''
bucket: ''
enabled: false
endpoint: ''
extensions:
- mp3+cdg
index_file: ~/.cache/syng/s3-index
secret_key: ''
secure: true
tmp_dir: /tmp/syng
youtube:
channels: []
enabled: true
start_streaming: false
tmp_dir: /tmp/syng
```
# Server
# Server
If you want to host your own Syng server, you can do that, but you can also ust the publicly available Syng instance at https://syng.rocks.
If you want to host your own Syng server, you can do that, but you can also use the publicly available Syng instance at https://syng.rocks.