diff --git a/.gitignore b/.gitignore index 1dee62c21a02bb437262c74620777032a46d36bc..23da2e726f5cfe677f2cfe41358d3e3109bd8f35 100644 --- a/.gitignore +++ b/.gitignore @@ -8,7 +8,7 @@ scripts/.engine.install-db.lock .engine.install-db.lock config/systemd/dev/ env.list -audio/source +audio config/docker/engine.ini src/liquidsoap/engine.sock python diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f2dd755f087d438f2fb9e1e7bab9afe6312d8cb8..6db85619f2f365f21441a48037b824184fa871b7 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -5,17 +5,10 @@ stages: before_script: - apt-get -qq update - - apt-cache search libmariadb - - apt-get install -y python3-virtualenv virtualenv opam libev4 libev-dev libsndfile1 quelcom # mariadb-server libmariadbclient-dev - - /usr/bin/virtualenv venv - - . venv/bin/activate - - python3 -V + - apt-get install -y python3-virtualenv virtualenv + - /usr/bin/virtualenv python + - . python/bin/activate - pip3 install -r requirements.txt - - mkdir /etc/aura - - mkdir /var/log/aura - - mkdir -p /opt/aura/engine/src/liquidsoap - - mkdir -p /opt/aura/engine/logs - - pwd - cp config/sample-production.engine.ini config/engine.ini run_test_cases: diff --git a/config/blank.flac b/config/blank.flac deleted file mode 100644 index a9129964141c1060143080fef369eea781233b70..0000000000000000000000000000000000000000 Binary files a/config/blank.flac and /dev/null differ diff --git a/requirements.txt b/requirements.txt index 06a4cda53f61117020297f699b6b37df4fc7bca3..540c26ce44a52626854a3fb5fca9bd6c1cb75a46 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,5 +4,4 @@ Flask==1.1.2 Flask_SQLAlchemy==2.4.3 mysqlclient==1.3.12 validators==0.12.1 -accessify==0.3.1 http-parser==0.9.0 \ No newline at end of file diff --git a/scripts/install-opam-packages.sh b/scripts/install-opam-packages.sh deleted file mode 100755 index e0341fe15aab40c1f42bbeba84411d06bb3be813..0000000000000000000000000000000000000000 --- a/scripts/install-opam-packages.sh +++ /dev/null @@ -1,9 +0,0 @@ -#!/bin/bash - -opam update -y -opam init -y -opam switch create 4.08.0 -opam install depext -y -opam depext taglib mad lame vorbis flac opus cry samplerate pulseaudio bjack alsa ssl liquidsoap -y -opam install taglib mad lame vorbis flac opus cry samplerate pulseaudio bjack alsa ssl liquidsoap -y -eval $(opam env) diff --git a/src/liquidsoap/__init__.py b/src/liquidsoap/__init__.py deleted file mode 100644 index 8b137891791fe96927ad78e64b0aad7bded08bdc..0000000000000000000000000000000000000000 --- a/src/liquidsoap/__init__.py +++ /dev/null @@ -1 +0,0 @@ - diff --git a/src/liquidsoap/archive/unused_fallback.liq b/src/liquidsoap/archive/unused_fallback.liq deleted file mode 100644 index 1e531b2f04dcb01b5f0514ad87019e037bf7374d..0000000000000000000000000000000000000000 --- a/src/liquidsoap/archive/unused_fallback.liq +++ /dev/null @@ -1,248 +0,0 @@ -# -# Aura Engine (https://gitlab.servus.at/aura/engine) -# -# Copyright (C) 2017-2020 - The Aura Engine Team. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - - - - - -# Crossfade between tracks, -# taking the respective volume levels -# into account in the choice of the -# transition. -# @category Source / Track Processing -# @param ~start_next Crossing duration, if any. -# @param ~fade_in Fade-in duration, if any. -# @param ~fade_out Fade-out duration, if any. -# @param ~width Width of the volume analysis window. -# @param ~conservative Always prepare for -# a premature end-of-track. -# @param s The input source. -def crossfade (~start_next=5.,~fade_in=3., - ~fade_out=3., ~width=2., - ~conservative=false,s) - high = -20. - medium = -32. - margin = 4. - fade.out = fade.out(type="sin",duration=fade_out) - fade.in = fade.in(type="sin",duration=fade_in) - add = fun (a,b) -> add(normalize=false,[b,a]) - log = log(label="crossfade") - - def transition(a,b,ma,mb,sa,sb) - - list.iter(fun(x)-> - log(level=4,"Before: #{x}"),ma) - list.iter(fun(x)-> - log(level=4,"After : #{x}"),mb) - - if - # If A and B and not too loud and close, - # fully cross-fade them. - a <= medium and - b <= medium and - abs(a - b) <= margin - then - log("Transition: crossed, fade-in, fade-out.") - add(fade.out(sa),fade.in(sb)) - - elsif - # If B is significantly louder than A, - # only fade-out A. - # We don't want to fade almost silent things, - # ask for >medium. - b >= a + margin and a >= medium and b <= high - then - log("Transition: crossed, fade-out.") - add(fade.out(sa),sb) - - elsif - # Do not fade if it's already very low. - b >= a + margin and a <= medium and b <= high - then - log("Transition: crossed, no fade-out.") - add(sa,sb) - - elsif - # Opposite as the previous one. - a >= b + margin and b >= medium and a <= high - then - log("Transition: crossed, fade-in.") - add(sa,fade.in(sb)) - - # What to do with a loud end and - # a quiet beginning ? - # A good idea is to use a jingle to separate - # the two tracks, but that's another story. - - else - # Otherwise, A and B are just too loud - # to overlap nicely, or the difference - # between them is too large and - # overlapping would completely mask one - # of them. - log("No transition: just sequencing.") - sequence([sa, sb]) - end - end - - cross(width=width, duration=start_next, - conservative=conservative, - transition,s) -end - -# Custom crossfade to deal with jingles. -# def smarter_crossfade (~start_next=5.,~fade_in=3.,~fade_out=3., -# ~default=(fun (a,b) -> sequence([a, b])), -# ~high=-15., ~medium=-32., ~margin=4., -# ~width=2.,~conservative=false,s) -# fade.out = fade.out(type="sin",duration=fade_out) -# fade.in = fade.in(type="sin",duration=fade_in) -# add = fun (a,b) -> add(normalize=false,[b, a]) -# log = log(label="smarter_crossfade") - -# def transition(a,b,ma,mb,sa,sb) - -# list.iter(fun(x)-> log(level=4,"Before: #{x}"),ma) -# list.iter(fun(x)-> log(level=4,"After : #{x}"),mb) - -# if ma["type"] == "jingles" or mb["type"] == "jingles" then -# log("Old or new file is a jingle: sequenced transition.") -# sequence([sa, sb]) -# elsif -# # If A and B are not too loud and close, fully cross-fade them. -# a <= medium and b <= medium and abs(a - b) <= margin -# then -# log("Old <= medium, new <= medium and |old-new| <= margin.") -# log("Old and new source are not too loud and close.") -# log("Transition: crossed, fade-in, fade-out.") -# add(fade.out(sa),fade.in(sb)) - -# elsif -# # If B is significantly louder than A, only fade-out A. -# # We don't want to fade almost silent things, ask for >medium. -# b >= a + margin and a >= medium and b <= high -# then -# log("new >= old + margin, old >= medium and new <= high.") -# log("New source is significantly louder than old one.") -# log("Transition: crossed, fade-out.") -# add(fade.out(sa),sb) - -# elsif -# # Opposite as the previous one. -# a >= b + margin and b >= medium and a <= high -# then -# log("old >= new + margin, new >= medium and old <= high") -# log("Old source is significantly louder than new one.") -# log("Transition: crossed, fade-in.") -# add(sa,fade.in(sb)) - -# elsif -# # Do not fade if it's already very low. -# b >= a + margin and a <= medium and b <= high -# then -# log("new >= old + margin, old <= medium and new <= high.") -# log("Do not fade if it's already very low.") -# log("Transition: crossed, no fade.") -# add(sa,sb) - -# # What to do with a loud end and a quiet beginning ? -# # A good idea is to use a jingle to separate the two tracks, -# # but that's another story. - -# else -# # Otherwise, A and B are just too loud to overlap nicely, -# # or the difference between them is too large and overlapping would -# # completely mask one of them. -# log("No transition: using default.") -# default(sa, sb) -# end -# end - -# #smart_cross(width=width, duration=start_next, conservative=conservative, transition, s) -# smart_crossfade(duration=start_next, fade_in=fade_in, fade_out=fade_out, width=width, conservative=conservative, transition, s) -# end - -# create a pool -def fallback_create(~skip=true, name, requestor) - log("Creating channel #{name}") - - # Create the request.dynamic source - # Set conservative to true to queue several songs in advance - #source = request.dynamic(conservative=true, length=50., id="pool_"^name, requestor, timeout=60.) - source = request.dynamic(length=50., id="pool_"^name, requestor, timeout=60.) - - # Apply normalization using replaygain information - source = amplify(1., override="replay_gain", source) - - # Skip blank when asked to - source = - if skip then - skip_blank(max_blank=fallback_max_blank, min_noise=fallback_min_noise, threshold=fallback_threshold, source) - else - source - end - - # Tell the system when a new track is played - def do_meta(meta) = - filename = meta["filename"] - # artist = meta["artist"] - # title = meta["title"] - system('#{list.assoc(default="", "install_dir", ini)}/guru.py --on_play "#{filename}"') - end - source = on_metadata(do_meta, source) - - - log("channel created") - - # Finally apply a smart crossfading - #smarter_crossfade(source) - crossfade(source) -end - -def create_dynamic_playlist(next) - request.create(list.hd(default="", next)) -end - -def create_playlist() = - log("requesting next song for PLAYLIST") - result = get_process_lines('#{list.assoc(default="", "install_dir", ini)}/guru.py --get-next-file-for "playlist" --quiet') - create_dynamic_playlist(result) -end - -def create_station_fallback() = - result = get_process_lines('#{list.assoc(default="", "install_dir", ini)}/guru.py --get-next-file-for station --quiet') - log("next song for STATION fallback is: #{result}") - create_dynamic_playlist(result) -end - -def create_show_fallback() = - result = get_process_lines('#{list.assoc(default="", "install_dir", ini)}/guru.py --get-next-file-for show --quiet') - log("next song for SHOW fallback is: #{result}") - create_dynamic_playlist(result) -end - -def create_timeslot_fallback() = - result = get_process_lines('#{list.assoc(default="", "install_dir", ini)}/guru.py --get-next-file-for timeslot --quiet') - log("next song for TIMESLOT fallback is: #{result}") - create_dynamic_playlist(result) -end - -# create fallbacks -timeslot_fallback = fallback_create(skip=true, "timeslot_fallback", create_timeslot_fallback) -station_fallback = fallback_create(skip=true, "station_fallback", create_station_fallback) -show_fallback = fallback_create(skip=true, "show_fallback", create_show_fallback) \ No newline at end of file diff --git a/src/liquidsoap/archive/unused_out_filesystem.liq b/src/liquidsoap/archive/unused_out_filesystem.liq deleted file mode 100644 index 28b055ef3adcb848f8004342ddca3b098f3c8505..0000000000000000000000000000000000000000 --- a/src/liquidsoap/archive/unused_out_filesystem.liq +++ /dev/null @@ -1,94 +0,0 @@ -# -# Aura Engine (https://gitlab.servus.at/aura/engine) -# -# Copyright (C) 2017-2020 - The Aura Engine Team. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - - - -r0_enable = list.assoc(default="", "rec_0", ini) == "y" -r1_enable = list.assoc(default="", "rec_1", ini) == "y" -r2_enable = list.assoc(default="", "rec_2", ini) == "y" -r3_enable = list.assoc(default="", "rec_3", ini) == "y" -r4_enable = list.assoc(default="", "rec_4", ini) == "y" - -r0_folder = list.assoc(default="", "rec_0_folder", ini) -r0_duration = int_of_string(list.assoc(default="", "rec_0_duration", ini)) -r0_encoding = list.assoc(default="", "rec_0_encoding", ini) -r0_bitrate = int_of_string(list.assoc(default="", "rec_0_bitrate", ini)) -r0_channels = list.assoc(default="", "rec_0_channels", ini) -r0_filenamepattern = r0_folder^"/%Y-%m-%d/%Y-%m-%d-%H-%M."^r0_encoding - -r1_folder = list.assoc(default="", "rec_1_folder", ini) -r1_duration = int_of_string(list.assoc(default="", "rec_1_duration", ini)) -r1_encoding = list.assoc(default="", "rec_1_encoding", ini) -r1_bitrate = int_of_string(list.assoc(default="", "rec_1_bitrate", ini)) -r1_channels = list.assoc(default="", "rec_1_channels", ini) -r1_filenamepattern = r1_folder^"/%Y-%m-%d/%Y-%m-%d-%H-%M."^r1_encoding - -r2_folder = list.assoc(default="", "rec_2_folder", ini) -r2_duration = int_of_string(list.assoc(default="", "rec_2_duration", ini)) -r2_encoding = list.assoc(default="", "rec_2_encoding", ini) -r2_bitrate = int_of_string(list.assoc(default="", "rec_2_bitrate", ini)) -r2_channels = list.assoc(default="", "rec_2_channels", ini) -r2_filenamepattern = r2_folder^"/%Y-%m-%d/%Y-%m-%d-%H-%M."^r2_encoding - -r3_folder = list.assoc(default="", "rec_3_folder", ini) -r3_duration = int_of_string(list.assoc(default="", "rec_3_duration", ini)) -r3_encoding = list.assoc(default="", "rec_3_encoding", ini) -r3_bitrate = int_of_string(list.assoc(default="", "rec_3_bitrate", ini)) -r3_channels = list.assoc(default="", "rec_3_channels", ini) -r3_filenamepattern = r3_folder^"/%Y-%m-%d/%Y-%m-%d-%H-%M."^r3_encoding - -r4_folder = list.assoc(default="", "rec_4_folder", ini) -r4_duration = int_of_string(list.assoc(default="", "rec_4_duration", ini)) -r4_encoding = list.assoc(default="", "rec_4_encoding", ini) -r4_bitrate = int_of_string(list.assoc(default="", "rec_4_bitrate", ini)) -r4_channels = list.assoc(default="", "rec_4_channels", ini) -r4_filenamepattern = r4_folder^"/%Y-%m-%d/%Y-%m-%d-%H-%M."^r4_encoding - -r0_is_recording = ref false -r1_is_recording = ref false -r2_is_recording = ref false -r3_is_recording = ref false -r4_is_recording = ref false - -if r0_enable == true then - # enable recording status for that recorder - server.register(namespace="out_filesystem_0", "recording", fun (s) -> begin if !r0_is_recording == false then "false" else "true" end end) - - # start the recorder - start_recorder(r0_folder, r0_duration, r0_encoding, r0_bitrate, r0_channels, r0_filenamepattern, r0_is_recording, output_source, "0") -end - -if r1_enable == true then - server.register(namespace="out_filesystem_1", "recording", fun (s) -> begin if !r1_is_recording == false then "false" else "true" end end) - start_recorder(r1_folder, r1_duration, r1_encoding, r1_bitrate, r1_channels, r1_filenamepattern, r1_is_recording, output_source, "1") -end - -if r2_enable == true then - server.register(namespace="out_filesystem_2", "recording", fun (s) -> begin if !r2_is_recording == false then "false" else "true" end end) - start_recorder(r2_folder, r2_duration, r2_encoding, r2_bitrate, r2_channels, r2_filenamepattern, r2_is_recording, output_source, "2") -end - -if r3_enable == true then - server.register(namespace="out_filesystem_3", "recording", fun (s) -> begin if !r3_is_recording == false then "false" else "true" end end) - start_recorder(r3_folder, r3_duration, r3_encoding, r3_bitrate, r3_channels, r3_filenamepattern, r3_is_recording, output_source, "3") -end - -if r4_enable == true then - server.register(namespace="out_filesystem_4", "recording", fun (s) -> begin if !r4_is_recording == false then "false" else "true" end end) - start_recorder(r4_folder, r4_duration, r4_encoding, r4_bitrate, r4_channels, r4_filenamepattern, r4_is_recording, output_source, "4") -end \ No newline at end of file diff --git a/src/liquidsoap/archive/unused_record.liq b/src/liquidsoap/archive/unused_record.liq deleted file mode 100644 index b9cd1a08c67b32a7c6a3e7c904f5e41684820449..0000000000000000000000000000000000000000 --- a/src/liquidsoap/archive/unused_record.liq +++ /dev/null @@ -1,178 +0,0 @@ -# -# Aura Engine (https://gitlab.servus.at/aura/engine) -# -# Copyright (C) 2017-2020 - The Aura Engine Team. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - - -# %include "readini.liq" -# ini = read_ini("/etc/aura/engine.ini") - -# %include "settings.liq" - -# TELNET SETTINGS -# set("server.telnet", true) -# set("server.telnet.bind_addr", "0.0.0.0") -# set("server.telnet.port", 2345) - -inst = if argv(1) != "" then string_of(argv(1)) else 'record' end -instance = ref inst - -audiobase = if !instance == 'record' then list.assoc(default="", "audiobase", ini) else list.assoc(default="", "altaudiobase", ini) end -rec_filetype = list.assoc(default="", "rec_filetype", ini) - -filenamepattern = ref audiobase^"/%Y-%m-%d/%Y-%m-%d-%H-%M.flac" - -# Der aktuelle Dateiname für die Aufnahme -recordingfile = ref "" - -# wir definieren eine Referenz für die Stop-Funktion, die aber bisher noch nichts tun kann -stop_f = ref (fun () -> ()) - -# bewahre uns davor, dass zweimal gleichzeitig die gleiche Date aufgenommen wird -is_record_active = ref false - -# Stop dump - wir definieren die Funktion, die stop_f ausführt -def stop_dump() = - f = !stop_f - f () -end - -def on_start() - recordingfile := list.hd(default="", get_process_lines("date +#{!filenamepattern}")) -end - -# Wav header fixen und ggf. die Aufzeichnung beenden -def on_close(filename) - # es darf wieder aufgenommen werden - is_record_active := false - - # if list.assoc(default="", "rec_filetype", ini) == 'wav' - # # Korrekten WAV-Header schreiben - # system("qwavheaderdump -F #{filename}") - - # Naechsten Dateinamen vormerken - recordingfile := list.hd(default="", get_process_lines("date +#{!filenamepattern}")) -end - -# Der input wie oben definiert -def get_input() - output_source - # input.alsa() -end - -def get_output() - input = get_input() - d = int_of_string(list.assoc(default="", "rec_duration", ini)) - if rec_filetype == 'flac' then - log("output file type is FLAC") - output.file( - id="recorder", - %flac(samplerate=44100, channels=2, compression=5, bits_per_sample=16), - perm = 0o664, - on_start=on_start, - !filenamepattern, - on_close=on_close, - reopen_when={ if !instance == 'record' then int_of_float(gettimeofday()/60.) mod 30 == 0 else false end }, - input - ) - else - # record in WAV - log("output file type is WAV") - output.file( - id="recorder", - %wav(stereo=true, channels=2, samplesize=16, header=true), - perm = 0o664, - on_start=on_start, - !filenamepattern, - on_close=on_close, - reopen_when={ if !instance == 'record' then int_of_float(gettimeofday()/60.) mod d == 0 else false end }, - input - ) - end -end - -# Funktion gibt Auskunft welches File aktuell ist und wieviel Prozent bereits aufgenommen werden -def currecording() - curfile = !recordingfile - if curfile != "" then - percent_done = default="", get_process_lines("echo $(($(stat -c%s "^curfile^")/3174777))")) - "#{curfile}, #{percent_done}%" - else - "Nothing is being recorded now" - end -end - -#Funktion zum Start der Aufzeichnung -def start_dump() = - log('start dump') - - # don't record twice is_record_active - if !is_record_active == false then - is_record_active := true - - log('starting to record') - - record = get_output() - - log('record defined') - # Die Stopfunkton zeigt nun auf die Shutdown-Funktion der aktuellen Source - stop_f := fun () -> begin - log('stop recording') - # Aufnahme sauber beenden - ignore(server.execute('recorder.stop')) - # Source zerstören - source.shutdown(record) - # Variable zurücksetzen - recordingfile := "" - end - else - log("recorder already active") - end -end - - -# Der Server wird durch 3 Funktionen bereichert -# Der User darf die Aufzeichnung manuell starten -server.register(namespace="record", - description="Start recording.", - usage="start", - "start", - fun (s) -> begin start_dump() "OK" end) - -# Der User darf die Aufzeichnung manuell stoppen -server.register(namespace="record", - description="Stop recording.", - usage="stop", - "stop", - fun (s) -> begin stop_dump() "OK" end) - -if !instance != 'record' then - # Der User darf einen Dateinamen für die Aufnahme definieren - server.register(namespace="record", - description="Define filename for output.", - usage="setfilename", - "setfilename", - fun (s) -> begin filenamepattern := audiobase^"/"^string_of(s) "OK" end) -end - -# Der User kann sich über den Fortschritt der Aufnahme informieren -server.register(namespace="record", - description="Show current file.", - usage="curfile", - "curfile", - fun (s) -> currecording() ) - -output.dummy(blank(id="serve")) diff --git a/src/liquidsoap/archive/unused_recorder.liq b/src/liquidsoap/archive/unused_recorder.liq deleted file mode 100644 index b62ca5c448f21359248ff73adabe4688fd72153d..0000000000000000000000000000000000000000 --- a/src/liquidsoap/archive/unused_recorder.liq +++ /dev/null @@ -1,244 +0,0 @@ -# -# Aura Engine (https://gitlab.servus.at/aura/engine) -# -# Copyright (C) 2017-2020 - The Aura Engine Team. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - - -# define file name pattern -filenamepattern = ref audiobase^"/%Y-%m-%d/%Y-%m-%d-%H-%M.flac" - -# Der aktuelle Dateiname für die Aufnahme -recordingfile = ref "" - -# bewahre uns davor, dass zweimal gleichzeitig die gleiche Date aufgenommen wird -is_record_active = ref false - -#wir definieren eine Referenz für die Stop-Funktion, die aber bisher noch nichts tun kann -stop_f = ref (fun () -> ()) - - - -def start_wav_output(recfile, filenamepattern, recorder_number) - duration = int_of_string(list.assoc(default="", "rec_"^recorder_number^"_duration", ini)) - channels = int_of_string(list.assoc(default="", "rec_"^recorder_number^"_channels", ini)) - samplesize = int_of_string(list.assoc(default="", "rec_"^recorder_number^"_samplesize", ini)) - - ignore(duration) - ignore(channels) - ignore(samplesize) - -# def on_start() -# recfile := list.hd(default="", get_process_lines("date +#{!filenamepattern}")) -# end -# def on_close(filename) -# recordingfile := list.hd(default="", get_process_lines("date +#{!filenamepattern}")) -# end - - print(channels) - print(samplesize) - #out_wav = output.file(id="recorder", perm = 0o664, on_start=on_start, on_close=on_close, reopen_when={ int_of_float(gettimeofday()/60.) mod duration == 0 }) - #out_wav(%wav(stereo=true, channels=2, samplesize=8, header=true, !filenamepattern, output_source) - #ignore(out_wav) - - output.dummy(id="wav_dummy_recording", blank()) - -# if channels == 2 then -# output.file(id="recorder", %wav(stereo=true, channels=2, samplesize=8, header=true), perm = 0o664, on_start=on_start, on_close=on_close, reopen_when={ int_of_float(gettimeofday()/60.) mod duration == 0 }, !filenamepattern, audio_to_stereo(output_source)) -## out_wav(output_source) -# else -# output.file(id="recorder", %wav(stereo=true, channels=1, samplesize=8, header=true), perm = 0o664, on_start=on_start, on_close=on_close, reopen_when={ int_of_float(gettimeofday()/60.) mod duration == 0 }, !filenamepattern, output_source) - # out_wav(output_source) -# end - - #if channels == 2 then - # if samplesize < 12 then - # ignore(out_wav(%wav(stereo=true, channels=2, samplesize=8, header=true), !filenamepattern, output_source)) - # else - # ignore(out_wav(%wav(stereo=true, channels=2, samplesize=16, header=true), !filenamepattern, output_source)) - # end - #else - # if samplesize < 12 then - # ignore(out_wav(%wav(stereo=true, channels=1, samplesize=8, header=true), !filenamepattern, output_source)) - # else - # ignore(out_wav(%wav(stereo=true, channels=1, samplesize=16, header=true), !filenamepattern, output_source)) - # end - #end -end - -def start_flac_output(recorder_number, filenamepattern, duration) -# duration = int_of_string(list.assoc(default="", "rec_"^recorder_number^"_samplerate", ini)) -# samplerate = list.assoc(default="", "rec_"^recorder_number^"_samplerate", ini) - channels = int_of_string(list.assoc(default="", "rec_"^recorder_number^"_channels", ini)) -# compression = int_of_string(list.assoc(default="", "rec_"^recorder_number^"_compression", ini)) -# bits_per_sample = int_of_string(list.assoc(default="", "rec_"^recorder_number^"_bits_per_sample", ini)) - #output.file(id="recorder", %flac(samplerate=44100, channels=1, compression=7, bits_per_sample=32), perm = 0o664, on_start=on_start, !filenamepattern, on_close=on_close, reopen_when={ int_of_float(gettimeofday()/60.) mod duration == 0 }, output_source) - - recfile = ref '' - - def on_start() - recfile := list.hd(default="", get_process_lines("date +#{filenamepattern}")) - end - def on_close(filename) - recfile := list.hd(default="", get_process_lines("date +#{filenamepattern}")) - end - - # dumbass liquidsoap cannot handle one output definition for mono and stereo - output_filesystem_mono = output.file(id="recorder", perm = 0o664, on_start=on_start, on_close=on_close, reopen_when={ int_of_float(gettimeofday()/60.) mod duration == 0 }) - output_filesystem_stereo = output.file(id="recorder", perm = 0o664, on_start=on_start, on_close=on_close, reopen_when={ int_of_float(gettimeofday()/60.) mod duration == 0 }) - - ignore(output_filesystem_mono) - ignore(output_filesystem_stereo) - - if channels == 2 then - output.dummy(id="flac_dummy_recording_stereo", blank()) -# output_stereof(%flac(samplerate=44100, channels=1, compression=1, bits_per_sample=16), !filenamepattern, output_source) - else - output.dummy(id="flac_dummy_recording_mono", blank()) -# output_icecast_monof(%flac(samplerate=44100, channels=1, compression=1, bits_per_sample=16), !filenamepattern, output_source) - end - - -end - - - - - -def enable_stop_function(record) - # Die Stopfunkton zeigt nun auf die Shutdown-Funktion der aktuellen Source - stop_f := fun () -> begin - log('stop recording') - # Aufnahme sauber beenden - ignore(server.execute('recorder.stop')) - # Source zerstören - source.shutdown(record) - # Variable zurücksetzen - recordingfile := "" - end -end - -def set_recorder_output(rec_filetype, recorder_number) - # flac output - if rec_filetype == 'flac' then - log("output file type is FLAC") - record = start_flac_output(recorder_number) - enable_stop_function(record) - - # WAV output - else - log("output file type is WAV") - record = start_wav_output(recorder_number) - enable_stop_function(record) - end -end - -# shows current file and how many bytes were written so far -def currecording() - curfile = !recordingfile - if curfile != "" then - bytes_written = list.hd(default="", get_process_lines("echo $(($(stat -c%s "^curfile^")))")) - "#{curfile}, #{bytes_written}B" - else - "" - end -end - - - -### LIBRARY ### - - -######################## -# record to filesystem # -######################## - -# shows current file and how many bytes were written so far -def currecording(recfile) - if recfile != "" then - bytes_written = list.hd(default="", get_process_lines("echo $(($(stat -c%s "^recfile^")))")) - "#{recfile}, #{bytes_written}B" - else - "" - end -end - -def start_recorder(folder, duration, encoding, bitrate, channels, filenamepattern, is_recording, stream, recorder_number) = - source = ref stream - stereo = (int_of_string(channels) >= 2) - - # define on_start, on_close (good case) and on_stop (error case) - recfile = ref '' - def on_start() - is_recording := true - recfile := list.hd(default="", get_process_lines("date +#{filenamepattern}")) - end - def on_close(filename) - is_recording := false - recfile := list.hd(default="", get_process_lines("date +#{filenamepattern}")) - end - def on_stop() - is_recording := false - end - - # register server function - server.register(namespace="recorder_"^recorder_number, description="Show current file.", usage="curfile", "curfile", fun (s) -> currecording(!recfile) ) - - # dumbass liquidsoap cannot handle one output definition for mono and stereo - output_filesystem_mono = output.file(id="recorder_"^recorder_number, perm = 0o664, on_start=on_start, on_close=on_close, on_stop=on_stop, reopen_when={ int_of_float(gettimeofday()/60.) mod duration == 0 }) - output_filesystem_stereo = output.file(id="recorder_"^recorder_number, perm = 0o664, on_start=on_start, on_close=on_close, on_stop=on_stop, reopen_when={ int_of_float(gettimeofday()/60.) mod duration == 0 }) - -# %ifencoder %aac - # if encoding == "aac" then - # log("ENABLING aac recorder to filesystem") - # %include "outgoing_recordings/aac.liq" - # end -# %endif - -# %ifencoder %flac - if encoding == "flac" then - log("ENABLING flac recorder to filesystem") - %include "outgoing_recordings/flac.liq" - end -# %endif - -# %ifencoder %mp3 - if encoding == "mp3" then - log("ENABLING mp3 recorder to filesystem") - %include "outgoing_recordings/mp3.liq" - end -# %endif - -# %ifencoder %vorbis - if encoding == "ogg" then - log("ENABLING ogg recorder to filesystem") - %include "outgoing_recordings/ogg.liq" - end -# %endif - -# %ifencoder %opus - if encoding == "opus" then - log("ENABLING opus recorder to filesystem") - %include "outgoing_recordings/opus.liq" - end -# %endif - -# %ifencoder %wav - if encoding == "wav" then - log("ENABLING wav recorder to filesystem") - %include "outgoing_recordings/wav.liq" - end -# %endif -end diff --git a/src/liquidsoap/archive/unused_stream.liq b/src/liquidsoap/archive/unused_stream.liq deleted file mode 100644 index 5440446a6434250d229d043fd7f681ce7bd4361b..0000000000000000000000000000000000000000 --- a/src/liquidsoap/archive/unused_stream.liq +++ /dev/null @@ -1,143 +0,0 @@ -# -# Aura Engine (https://gitlab.servus.at/aura/engine) -# -# Copyright (C) 2017-2020 - The Aura Engine Team. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - - -def get_icecast_mp3_stream(number) - stream_bitrate = int_of_string(list.assoc(default="", "stream_#{number}_bitrate", ini)) - stream_mountpoint = list.assoc(default="", "stream_#{number}_mountpoint", ini) - stream_host = list.assoc(default="", "stream_#{number}_host", ini) - stream_port = int_of_string(list.assoc(default="", "stream_#{number}_port", ini)) - stream_name = list.assoc(default="", "stream_#{number}_name", ini) - stream_url = list.assoc(default="", "stream_#{number}_url", ini) - stream_genre = list.assoc(default="", "stream_#{number}_genre", ini) - stream_description = list.assoc(default="", "stream_#{number}_description", ini) - stream_user = list.assoc(default="", "stream_#{number}_user", ini) - stream_password = list.assoc(default="", "stream_#{number}_password", ini) - - - - if stream_bitrate == 24 then - icecast_stream = output.icecast(%mp3(bitrate = 24, samplerate = 22050), mount=stream_mountpoint, host=stream_host, port=stream_port, name=stream_name, url=stream_url, genre=stream_genre, description=stream_description, user=stream_user, password=stream_password, icy_metadata="true", fallible=true, buffer(output_source)) - clock.assign_new(id="stream_#{number}", - [icecast_stream] - ) - icecast_stream - else - icecast_stream = output.icecast(%mp3(samplerate = 44100), mount=stream_mountpoint, host=stream_host, port=stream_port, name=stream_name, url=stream_url, genre=stream_genre, description=stream_description, user=stream_user, password=stream_password, icy_metadata="true", fallible=true, buffer(output_source)) - clock.assign_new(id="stream_#{number}", - [icecast_stream] - ) - icecast_stream - end -end - -def get_icecast_ogg_stream(number) - stream_quality = float_of_string(list.assoc(default="", "stream_#{number}_quality", ini)) - - stream_mountpoint = list.assoc(default="", "stream_#{number}_mountpoint", ini) - stream_host = list.assoc(default="", "stream_#{number}_host", ini) - stream_port = int_of_string(default="", list.assoc("stream_#{number}_port", ini)) - stream_name = list.assoc(default="", "stream_#{number}_name", ini) - stream_url = list.assoc(default="", "stream_#{number}_url", ini) - stream_genre = list.assoc(default="", "stream_#{number}_genre", ini) - stream_description = list.assoc(default="", "stream_#{number}_description", ini) - stream_user = list.assoc(default="", "stream_#{number}_user", ini) - stream_password = list.assoc(default="", "stream_#{number}_password", ini) - - if stream_quality >= 0.5 then - icecast_stream = output.icecast(%vorbis(quality = 1.0), mount=stream_mountpoint, host=stream_host, port=stream_port, name=stream_name, url=stream_url, genre=stream_genre, description=stream_description, user=stream_user, password=stream_password, icy_metadata="true", fallible=true, buffer(output_source)) - clock.assign_new(id="stream_#{number}", - [icecast_stream] - ) - icecast_stream - else - icecast_stream = output.icecast(%vorbis(quality = 0.1), mount=stream_mountpoint, host=stream_host, port=stream_port, name=stream_name, url=stream_url, genre=stream_genre, description=stream_description, user=stream_user, password=stream_password, icy_metadata="true", fallible=true, buffer(output_source)) - clock.assign_new(id="stream_#{number}", - [icecast_stream] - ) - icecast_stream - end -end - -def get_harbour_mp3_stream(number) - - stream_bitrate = int_of_string(list.assoc(default="", "stream_#{number}_bitrate", ini)) - stream_user = list.assoc(default="", "stream_#{number}_user", ini) - stream_password = list.assoc(default="", "stream_#{number}_password", ini) - stream_port = int_of_string(list.assoc(default="", "stream_#{number}_port", ini)) - stream_url = list.assoc(default="", "stream_#{number}_url", ini) - stream_mountpoint = list.assoc(default="", "stream_#{number}_mountpoint", ini) - - if stream_bitrate == 24 then - harbourstream = output.harbor(%mp3(bitrate = 24, samplerate = 22050), user=stream_user, password=stream_password, id="stream", port=stream_port, url=stream_url, mount=stream_mountpoint, icy_metadata="true", fallible=true, buffer(output_source)) - clock.assign_new(id="stream_#{number}", - [harbourstream] - ) - harbourstream - else - harbourstream = output.harbor(%mp3, user=stream_user, password=stream_password, id="stream", port=stream_port, url=stream_url, mount=stream_mountpoint, icy_metadata="true", fallible=true, buffer(output_source)) - clock.assign_new(id="stream_#{number}", - [harbourstream] - ) - harbourstream - end -end - -def get_stream(number) - stream = list.assoc(default="", "stream_#{number}", ini) - stream_type = list.assoc(default="", "stream_#{number}_type", ini) - stream_format = list.assoc(default="", "stream_#{number}_format", ini) - - # is stream enabled? - if stream == "y" then - log("activating stream #{number}") - if stream_type == "icecast" then - log("its an icecast stream") - if stream_format == "mp3" then - log("filled with mp3") - get_icecast_mp3_stream(number) - elsif stream_format == "vorbis" then - log("filled with ogg") - get_icecast_ogg_stream(number) - else - output.dummy(id="no_valid_stream_format_DUMMY_ICECAST", blank()) - end - - elsif stream_type == "harbor" then - log("its an harbor stream") - if stream_format == "mp3" then - get_harbour_mp3_stream(number) - else - output.dummy(id="no_valid_stream_format_DUMMY_HARBOUR", blank()) - end - else - output.dummy(id="no_valid_stream_type_DUMMY", blank()) - end - else - output.dummy(id="no_stream_enabled_DUMMY", blank()) - end -end - -def set_streams() - stream_0 = get_stream(0) - #stream_1 = get_stream(1) - #stream_2 = get_stream(2) - #stream_3 = get_stream(3) - #stream_4 = get_stream(4) -end - diff --git a/src/liquidsoap/engine.liq b/src/liquidsoap/engine.liq deleted file mode 100644 index d628869fec23c8b369d231910983dea4cbd7af57..0000000000000000000000000000000000000000 --- a/src/liquidsoap/engine.liq +++ /dev/null @@ -1,137 +0,0 @@ -#!/usr/bin/liquidsoap - -# -# Aura Engine (https://gitlab.servus.at/aura/engine) -# -# Copyright (C) 2017-2020 - The Aura Engine Team. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - - - -icecast_vorbis_metadata = false -inputs = ref [] - -# Load settings from ini file -%include "settings.liq" - -# Include some functions -%include "library.liq" - -##################################### -# EVENTS # -##################################### - -# Called when some new metadata info is available -def on_metadata_notification(meta) = - filename = meta["filename"] - track_duration = request.duration(filename) - json_data = json_of(meta) - json_data = '{ "action": "on_metadata", "data": #{json_data}, "track_duration": "#{track_duration}" }' - # There's currently an issue with Liquidsoap http.post requests: - # headers = [("Content-Type","application/json; charset=utf-8")] - # ignore(http.post(headers=headers, data="#{json_data}", "http://localhost:1337")) - ignore(system("curl -X POST -H 'Content-Type: application/json' --data '#{json_data}' localhost:1337")) -end - -##################################### -# INPUTS # -##################################### - -# Enable queue sources -%include "in_queue.liq" - -# Enable fallback sources -%include "in_fallback.liq" - -# Enable stream overtakes -%include "in_stream.liq" - -# Enabled line in from soundcard -%include "in_soundcard.liq" - - -##################################### -# ROUTING # -##################################### - - -# When some regular playout is happening and it is returned to the fallback, -# we don't want to resume the previous fallback track: -def on_track_change(s) = - source.skip(station_playlist) - source.skip(station_folder) -end - - -mixer = mix(id="mixer", - list.append( - [ - input_filesystem_0, - input_filesystem_1, - input_http_0, - input_http_1, - input_https_0, - input_https_1 - ], - !inputs - ) - ) - -stripped_stream = strip_blank( - id="strip_blank", - track_sensitive=false, - max_blank=fallback_max_blank, - min_noise=fallback_min_noise, - threshold=fallback_threshold, - mixer - ) - -stripped_stream = on_track(on_track_change, stripped_stream) - -fallback_one = fallback( - id="fallback-scheduled", - track_sensitive=false, - replay_metadata=true, - [ stripped_stream, stripped_fallback_mixer]) - -fallback_one = on_track(on_track_change, fallback_one) - -fallback_two = fallback( - id="fallback-station-playlist", - track_sensitive=false, - replay_metadata=true, - [ fallback_one, station_playlist]) - -fallback_three = fallback( - id="fallback-station-folder", - track_sensitive=false, - replay_metadata=true, - [ fallback_two, station_folder]) - -output_source = fallback_three - -##################################### -# OUTPUTS # -##################################### - -# create soundcard output -%include "out_soundcard.liq" - -# stream output -%include "out_stream.liq" - -# enable socket functions -%include "serverfunctions.liq" - diff --git a/src/liquidsoap/helpers/__init__.py b/src/liquidsoap/helpers/__init__.py deleted file mode 100644 index 9df7513dceb652132e543a42460edae0571c19ec..0000000000000000000000000000000000000000 --- a/src/liquidsoap/helpers/__init__.py +++ /dev/null @@ -1,3 +0,0 @@ - -import os -import sys diff --git a/src/liquidsoap/helpers/silence.sh b/src/liquidsoap/helpers/silence.sh deleted file mode 100755 index 9d6ef4209f1d9a90cc14fea82e6704a36e08f24b..0000000000000000000000000000000000000000 --- a/src/liquidsoap/helpers/silence.sh +++ /dev/null @@ -1,33 +0,0 @@ -#!/bin/bash - -pack_int(){ printf "%08X\n" $1 | sed 's/\([0-9A-F]\{2\}\)\([0-9A-F]\{2\}\)\([0-9A-F]\{2\}\)\([0-9A-F]\{2\}\)/\\\\\\x\4\\\\\\x\3\\\\\\x\2\\\\\\x\1/I' | xargs printf; } - -pack_short(){ printf "%04X\n" $1 | sed 's/\([0-9A-F]\{2\}\)\([0-9A-F]\{2\}\)/\\\\\\x\2\\\\\\x\1/I' | xargs printf; } - -duration=1800 -if [[ $# -eq 1 ]]; then - duration=$1 -fi - -channels=2 -bps=16 -sample=44100 -Subchunk1Size=18 -Subchunk2Size=$(echo "$duration*$sample*$channels*$bps/8" | bc) -ChunkSize=$((20 + $Subchunk1Size + $Subchunk2Size)) - -echo -n RIFF -pack_int $ChunkSize -echo -n "WAVEfmt " -pack_int $Subchunk1Size -pack_short 1 -pack_short $channels -pack_int $sample -pack_int $((bps/8 * channels * sample)) -pack_short $((bps/8 * channels)) -pack_short $bps -pack_short 0 -echo -n data -pack_int $Subchunk2Size - -dd if=/dev/zero bs=1 count=$Subchunk2Size 2>/dev/null diff --git a/src/liquidsoap/in_fallback.liq b/src/liquidsoap/in_fallback.liq deleted file mode 100644 index 4d9e31b89c1ef6c94da434140daaddf2725eb6ed..0000000000000000000000000000000000000000 --- a/src/liquidsoap/in_fallback.liq +++ /dev/null @@ -1,139 +0,0 @@ -# -# Aura Engine (https://gitlab.servus.at/aura/engine) -# -# Copyright (C) 2017-2020 - The Aura Engine Team. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - - -fallback_inputs = ref [] - -##################################### -# FALLBACK SOURCES # -##################################### - - -# Create Sources -input_fallback_scheduled_0 = request.equeue(id="in_fallback_scheduled_0") -input_fallback_scheduled_1 = request.equeue(id="in_fallback_scheduled_1") - -station_playlist = playlist( - id="station_playlist", - fallback_station_playlist_path, - mode="randomize", - reload_mode="watch", - reload=0) - -station_folder = mksafe( - playlist(id="station_folder", - fallback_station_dir, - mode="randomize", - reload=fallback_station_dir_reload, - reload_mode="seconds")) - -# Apply ReplayGain Normalization -input_fallback_scheduled_0 = amplify(id="in_fallback_scheduled_0", 1., override="replay_gain", input_fallback_scheduled_0) -input_fallback_scheduled_1 = amplify(id="in_fallback_scheduled_1", 1., override="replay_gain", input_fallback_scheduled_1) -station_playlist = amplify(id="station_playlist", 1., override="replay_gain", station_playlist) -station_folder = amplify(id="station_folder", 1., override="replay_gain", station_folder) - -# Add Event Handlers -input_fallback_scheduled_0 = on_metadata(id="in_fallback_scheduled_0", on_metadata_notification, input_fallback_scheduled_0) -input_fallback_scheduled_1 = on_metadata(id="in_fallback_scheduled_1", on_metadata_notification, input_fallback_scheduled_1) -station_playlist = on_metadata(id="station_playlist", on_metadata_notification, station_playlist) -station_folder = on_metadata(id="station_folder", on_metadata_notification, station_folder) - -# Mixer for more control of scheduled fallbacks -fallback_mixer = mix(id="mixer_fallback", - list.append( - [ - input_fallback_scheduled_0, - input_fallback_scheduled_1 - ], - !fallback_inputs - ) - ) - -stripped_fallback_mixer = strip_blank( - id="fallback_strip_blank", - track_sensitive=false, - max_blank=fallback_max_blank, - min_noise=fallback_min_noise, - threshold=fallback_threshold, - fallback_mixer - ) - -##################################### -# SERVER FUNCTIONS # -##################################### - - - -# Clear Fallback Queue A -server.register(namespace=source.id(input_fallback_scheduled_0), - description="Clear all items of the scheduled fallback queue A.", - usage="clear", - "clear", - - fun (s) -> - begin - source.skip(input_fallback_scheduled_0) - clear_queue(input_fallback_scheduled_0) - "Clearing done." - end - ) - -# Clear Fallback Queue B -server.register(namespace=source.id(input_fallback_scheduled_1), - description="Clear all items of the scheduled fallback queue B.", - usage="clear", - "clear", - - fun (s) -> - begin - source.skip(input_fallback_scheduled_1) - clear_queue(input_fallback_scheduled_1) - "Clearing done." - end - ) - -# Seek Fallback Queue A -server.register(namespace = source.id(input_fallback_scheduled_0), - description="Seek to relative position in #{source.id(input_fallback_scheduled_0)}", - usage = "seek <duration in seconds>", - "seek", - - fun (t) -> - begin - log("Seeking #{t} sec") - t = float_of_string(default=0.,t) - ret = source.seek(input_fallback_scheduled_0, t) - "Seeked #{ret} seconds." - end - ) - -# Seek Fallback Queue B -server.register(namespace = source.id(input_fallback_scheduled_1), - description="Seek to relative position in #{source.id(input_fallback_scheduled_1)}", - usage = "seek <duration in seconds>", - "seek", - - fun (t) -> - begin - log("Seeking #{t} sec") - t = float_of_string(default=0.,t) - ret = source.seek(input_fallback_scheduled_1, t) - "Seeked #{ret} seconds." - end - ) \ No newline at end of file diff --git a/src/liquidsoap/in_queue.liq b/src/liquidsoap/in_queue.liq deleted file mode 100644 index 6181080b0376f0eac09be39dad01a7702e10c061..0000000000000000000000000000000000000000 --- a/src/liquidsoap/in_queue.liq +++ /dev/null @@ -1,97 +0,0 @@ -# -# Aura Engine (https://gitlab.servus.at/aura/engine) -# -# Copyright (C) 2017-2020 - The Aura Engine Team. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - - - -##################################### -# QUEUE SOURCES # -##################################### - -# Create Sources -input_filesystem_0 = request.equeue(id="in_filesystem_0") -input_filesystem_1 = request.equeue(id="in_filesystem_1") - -# Apply ReplayGain Normalization -input_filesystem_0 = amplify(id="in_filesystem_0", 1., override="replay_gain", input_filesystem_0) -input_filesystem_1 = amplify(id="in_filesystem_1", 1., override="replay_gain", input_filesystem_1) - -# Add Event Handlers -input_filesystem_0 = on_metadata(id="in_filesystem_0", on_metadata_notification, input_filesystem_0) -input_filesystem_1 = on_metadata(id="in_filesystem_1", on_metadata_notification, input_filesystem_1) - - -##################################### -# SERVER FUNCTIONS # -##################################### - - -# Clear Default Queue A -server.register(namespace=source.id(input_filesystem_0), - description="Clear all items of the default queue A.", - usage="clear", - "clear", - - fun (s) -> - begin - clear_queue(input_filesystem_0) - "Clearing done." - end - ) - -# Clear Default Queue B -server.register(namespace=source.id(input_filesystem_1), - description="Clear all items of the default queue B.", - usage="clear", - "clear", - - fun (s) -> - begin - clear_queue(input_filesystem_1) - "Clearing done." - end - ) - -# Seek Filesystem Queue A -server.register(namespace = source.id(input_filesystem_0), - description="Seek to relative position in #{source.id(input_filesystem_0)}", - usage = "seek <duration in seconds>", - "seek", - - fun (t) -> - begin - log("Seeking #{t} sec") - t = float_of_string(default=0.,t) - ret = source.seek(input_filesystem_0, t) - "Seeked #{ret} seconds." - end - ) - -# Seek Filesystem Queue B -server.register(namespace = source.id(input_filesystem_1), - description="Seek to relative position in #{source.id(input_filesystem_1)}", - usage = "seek <duration in seconds>", - "seek", - - fun (t) -> - begin - log("Seeking #{t} sec") - t = float_of_string(default=0.,t) - ret = source.seek(input_filesystem_1, t) - "Seeked #{ret} seconds." - end - ) diff --git a/src/liquidsoap/in_soundcard.liq b/src/liquidsoap/in_soundcard.liq deleted file mode 100644 index cf98414216676389dc8c55f0fefa6fc6d21e4701..0000000000000000000000000000000000000000 --- a/src/liquidsoap/in_soundcard.liq +++ /dev/null @@ -1,44 +0,0 @@ -# -# Aura Engine (https://gitlab.servus.at/aura/engine) -# -# Copyright (C) 2017-2020 - The Aura Engine Team. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - - - -if a0_in != "" then - # we can ignore the result, since it is stored in the list 'inputs' - set_input(a0_in, "linein_0") -end - -if a1_in != "" then - ignore(set_input(a1_in, "linein_1")) -end - -if a2_in != "" then - ignore(set_input(a2_in, "linein_2")) -end - -if a3_in != "" then - ignore(set_input(a3_in, "linein_3")) -end - -if a4_in != "" then - ignore(set_input(a4_in, "linein_4")) - -# input_4 = ref output.dummy(blank()) -# set_input(input_4, a4_in, "linein_4") -# inputs := list.append([!input_4], !inputs) -end \ No newline at end of file diff --git a/src/liquidsoap/in_stream.liq b/src/liquidsoap/in_stream.liq deleted file mode 100644 index 129510607d1417e39577440dd3414557a2ad5712..0000000000000000000000000000000000000000 --- a/src/liquidsoap/in_stream.liq +++ /dev/null @@ -1,47 +0,0 @@ -# -# Aura Engine (https://gitlab.servus.at/aura/engine) -# -# Copyright (C) 2017-2020 - The Aura Engine Team. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - - - - -# Pre-population of stream input sources, as Liquidsoap needs it to initialize this input. -# This is overwritten as soon as some other Stream is scheduled. - -# http_starturl = "http://stream01.kapper.net:8001/live.mp3" -# http_starturl = "http://stream.fro.at/fro-128.ogg" -http_starturl = "http://trance.out.airtime.pro:8000/trance_a" -# http_starturl = "http://chill.out.airtime.pro:8000/chill_a" -# http_starturl = "http://212.89.182.114:8008/frf" - -https_starturl = "https://securestream.o94.at/live.mp3" -# https_starturl = "https://live.helsinki.at:8088/live160.ogg" -# https_starturl = "https://stream.fro.at/fro-128.ogg" - - - -input_http_0 = input.http(id="in_http_0", buffer=input_stream_buffer, max=60.0, timeout=60.0, autostart=false, http_starturl) -input_http_1 = input.http(id="in_http_1", buffer=input_stream_buffer, max=60.0, timeout=60.0, autostart=false, http_starturl) -input_https_0 = input.https(id="in_https_0", buffer=input_stream_buffer, max=60.0, timeout=60.0, autostart=false, https_starturl) -input_https_1 = input.https(id="in_https_1", buffer=input_stream_buffer, max=60.0, timeout=60.0, autostart=false, https_starturl) - -# Route input stream to an dummy output to avoid buffer-overrun messages -# output.dummy(id="SPAM_HTTP_OUTPUT_0", fallible=true, input_http_0) -# output.dummy(id="SPAM_HTTP_OUTPUT_1", fallible=true, input_http_1) -# output.dummy(id="SPAM_HTTPS_OUTPUT_0", fallible=true, input_https_0) -# output.dummy(id="SPAM_HTTPS_OUTPUT_1", fallible=true, input_https_1) -# output.dummy(blank()) \ No newline at end of file diff --git a/src/liquidsoap/library.liq b/src/liquidsoap/library.liq deleted file mode 100644 index 8791b53f036d9be3650c225c67816f92e2eb706c..0000000000000000000000000000000000000000 --- a/src/liquidsoap/library.liq +++ /dev/null @@ -1,161 +0,0 @@ -# -# Aura Engine (https://gitlab.servus.at/aura/engine) -# -# Copyright (C) 2017-2020 - The Aura Engine Team. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - - - - -##################################### -# CLEAR SOURCE # -##################################### - -def clear_items(ns) = - ret = server.execute("#{source.id(ns)}.primary_queue") - ret = list.hd(default="", ret) - if ret == "" then - log("Queue cleared.") - (-1.) - else - log("There are still items in the queue, trying skip ...") - source.skip(ns) - (0.1) - end -end - -def clear_queue(ns) = - add_timeout(fast=false, 0.5, {clear_items(ns)}) -end - - -##################################### -# DYNAMIC SOURCES # -##################################### - -def create_dynamic_source(~skip=true, name) - log("Creating dynamic source '#{name}'") - track = get_process_lines("cat "^string.quote("next-track.txt")) - track = list.hd(default="", track) - dyn_source = request.dynamic.list( - { [request.create(track)] }) - dyn_source -end - - -##################### -# stream to icecast # -##################### - -def stream_to_icecast(id, encoding, bitrate, host, port, pass, mount_point, url, description, genre, user, stream, streamnumber, connected, name, channels) = - source = ref stream - - def on_error(msg) - connected := "false" - log(msg) - 5. - end - def on_connect() - connected := "true" - log("Successfully connected to stream_#{streamnumber}") - end - - stereo = (int_of_string(channels) >= 2) - - user_ref = ref user - if user == "" then - user_ref := "source" - end - - # Liquidsoap cannot handle one output definition for mono and stereo - output_icecast_mono = output.icecast(id = id, host = host, port = port, password = pass, mount = mount_point, fallible = true, url = url, description = description, name = name, genre = genre, user = !user_ref, on_error = on_error, on_connect = on_connect, icy_metadata = "true") - output_icecast_stereo = output.icecast(id = id, host = host, port = port, password = pass, mount = mount_point, fallible = true, url = url, description = description, name = name, genre = genre, user = !user_ref, on_error = on_error, on_connect = on_connect, icy_metadata = "true") - -# %ifencoder %aac -# if encoding == "aac" then -# log("ENABLING AAC to ICECAST") -# %include "outgoing_streams/aac.liq" -# end -# %endif -# -# %ifencoder %flac -# if encoding == "flac" then -# log("ENABLING FLAC to ICECAST") -# %include "outgoing_streams/flac.liq" -# end -# %endif - - if encoding == "mp3" then - log("ENABLING Mp3 to ICECAST") - %include "outgoing_streams/mp3.liq" - end - - if encoding == "ogg" then - log("ENABLING OGG to ICECAST") - %include "outgoing_streams/ogg.liq" - end - -# %ifencoder %opus -# if encoding == "opus" then -# log("ENABLING OPUS to ICECAST") -# %include "outgoing_streams/opus.liq" -# end -# %endif -end - -########### -# line in # -########### - -def set_input(device, name) = - if use_alsa == true then - alsa_in = input.alsa(id=name, device=a0_in, clock_safe=false, bufferize = false) - inputs := list.append([alsa_in], !inputs) - - elsif use_jack == true then - jack_in = input.jack(id=name, clock_safe=false) - inputs := list.append([jack_in], !inputs) - - else - pulse_in = input.pulseaudio(id=name, client="AuraEngine Line IN") - inputs := list.append([pulse_in], !inputs) - end -end - -############ -# line out # -############ - -def get_output(source, device, name) = - if device != "" then - if use_alsa == true then - log("--- Set ALSA Output ---") - if device == "default" then - output.alsa(id="lineout", bufferize = false, source) - else - output.alsa(id=name, device=device, bufferize = false, source) - end - elsif use_jack == true then - log("--- Set JACK AUDIO Output ---") - output.jack(id=name, source) - else - log("--- Set PULSE AUDIO Output ---") - output.pulseaudio(id=name, client="AuraEngine Line OUT", source) - end - else - log("OUTPUT DUMMY") - output.dummy(id=name^"_DUMMY", blank()) - end -end diff --git a/src/liquidsoap/out_soundcard.liq b/src/liquidsoap/out_soundcard.liq deleted file mode 100644 index 5e073cb35eb7e211aaabedc83ebb785f219ed16d..0000000000000000000000000000000000000000 --- a/src/liquidsoap/out_soundcard.liq +++ /dev/null @@ -1,45 +0,0 @@ -# -# Aura Engine (https://gitlab.servus.at/aura/engine) -# -# Copyright (C) 2017-2020 - The Aura Engine Team. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - - - -if a0_out != "" then - ignore(get_output(output_source, a0_out, "lineout_0")) -end - -if a1_out != "" then - ignore(get_output(output_source, a1_out, "lineout_1")) -end - -if a2_out != "" then - ignore(get_output(output_source, a2_out, "lineout_2")) -end - -if a3_out != "" then - ignore(get_output(output_source, a3_out, "lineout_3")) -end - -if a4_out != "" then - ignore(get_output(output_source, a4_out, "lineout_4")) - - #output_4 = ref output.dummy(blank()) - #get_output(output_4, output_source, a4_out, "lineout_4") - - #output_4 := get_output(output_source, a4_out, "lineout_4") - #get_output(output_source, a4_out, "aura_lineout_4") -end diff --git a/src/liquidsoap/out_stream.liq b/src/liquidsoap/out_stream.liq deleted file mode 100644 index f5ca38e22c67d69273a90bfafcd7816596763b90..0000000000000000000000000000000000000000 --- a/src/liquidsoap/out_stream.liq +++ /dev/null @@ -1,126 +0,0 @@ -# -# Aura Engine (https://gitlab.servus.at/aura/engine) -# -# Copyright (C) 2017-2020 - The Aura Engine Team. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - - - -# Output streaming settings -# What a mess... -s0_enable = list.assoc(default="", "stream_0", ini) == "y" -s1_enable = list.assoc(default="", "stream_1", ini) == "y" -s2_enable = list.assoc(default="", "stream_2", ini) == "y" -s3_enable = list.assoc(default="", "stream_3", ini) == "y" -s4_enable = list.assoc(default="", "stream_4", ini) == "y" - -s0_encoding = list.assoc(default="", "stream_0_encoding", ini) -s0_bitrate = int_of_string(list.assoc(default="", "stream_0_bitrate", ini)) -s0_host = list.assoc(default="", "stream_0_host", ini) -s0_port = int_of_string(list.assoc(default="", "stream_0_port", ini)) -s0_user = list.assoc(default="", "stream_0_user", ini) -s0_pass = list.assoc(default="", "stream_0_password", ini) -s0_mount = list.assoc(default="", "stream_0_mountpoint", ini) -s0_url = list.assoc(default="", "stream_0_displayurl", ini) -s0_desc = list.assoc(default="", "stream_0_description", ini) -s0_genre = list.assoc(default="", "stream_0_genre", ini) -s0_name = list.assoc(default="", "stream_0_name", ini) -s0_channels = list.assoc(default="", "stream_0_channels", ini) - -s1_encoding = list.assoc(default="", "stream_1_encoding", ini) -s1_bitrate = int_of_string(list.assoc(default="", "stream_1_bitrate", ini)) -s1_host = list.assoc(default="", "stream_1_host", ini) -s1_port = int_of_string(list.assoc(default="", "stream_1_port", ini)) -s1_user = list.assoc(default="", "stream_1_user", ini) -s1_pass = list.assoc(default="", "stream_1_password", ini) -s1_mount = list.assoc(default="", "stream_1_mountpoint", ini) -s1_url = list.assoc(default="", "stream_1_displayurl", ini) -s1_desc = list.assoc(default="", "stream_1_description", ini) -s1_genre = list.assoc(default="", "stream_1_genre", ini) -s1_name = list.assoc(default="", "stream_1_name", ini) -s1_channels = list.assoc(default="", "stream_1_channels", ini) - -s2_encoding = list.assoc(default="", "stream_2_encoding", ini) -s2_bitrate = int_of_string(list.assoc(default="", "stream_2_bitrate", ini)) -s2_host = list.assoc(default="", "stream_2_host", ini) -s2_port = int_of_string(list.assoc(default="", "stream_2_port", ini)) -s2_user = list.assoc(default="", "stream_2_user", ini) -s2_pass = list.assoc(default="", "stream_2_password", ini) -s2_mount = list.assoc(default="", "stream_2_mountpoint", ini) -s2_url = list.assoc(default="", "stream_2_displayurl", ini) -s2_desc = list.assoc(default="", "stream_2_description", ini) -s2_genre = list.assoc(default="", "stream_2_genre", ini) -s2_name = list.assoc(default="", "stream_2_name", ini) -s2_channels = list.assoc(default="", "stream_2_channels", ini) - -s3_encoding = list.assoc(default="", "stream_3_encoding", ini) -s3_bitrate = int_of_string(list.assoc(default="", "stream_3_bitrate", ini)) -s3_host = list.assoc(default="", "stream_3_host", ini) -s3_port = int_of_string(list.assoc(default="", "stream_3_port", ini)) -s3_user = list.assoc(default="", "stream_3_user", ini) -s3_pass = list.assoc(default="", "stream_3_password", ini) -s3_mount = list.assoc(default="", "stream_3_mountpoint", ini) -s3_url = list.assoc(default="", "stream_3_displayurl", ini) -s3_desc = list.assoc(default="", "stream_3_description", ini) -s3_genre = list.assoc(default="", "stream_3_genre", ini) -s3_name = list.assoc(default="", "stream_3_name", ini) -s3_channels = list.assoc(default="", "stream_3_channels", ini) - -s4_encoding = list.assoc(default="", "stream_4_encoding", ini) -s4_bitrate = int_of_string(list.assoc(default="", "stream_4_bitrate", ini)) -s4_host = list.assoc(default="", "stream_4_host", ini) -s4_port = int_of_string(list.assoc(default="", "stream_4_port", ini)) -s4_user = list.assoc(default="", "stream_4_user", ini) -s4_pass = list.assoc(default="", "stream_4_password", ini) -s4_mount = list.assoc(default="", "stream_4_mountpoint", ini) -s4_url = list.assoc(default="", "stream_4_displayurl", ini) -s4_desc = list.assoc(default="", "stream_4_description", ini) -s4_genre = list.assoc(default="", "stream_4_genre", ini) -s4_name = list.assoc(default="", "stream_4_name", ini) -s4_channels = list.assoc(default="", "stream_4_channels", ini) - -s0_connected = ref '' -s1_connected = ref '' -s2_connected = ref '' -s3_connected = ref '' -s4_connected = ref '' - -if s0_enable == true then - # enable connection status for that stream - server.register(namespace="out_http_0", "connected", fun (s) -> begin !s0_connected end) - - # aaand stream - stream_to_icecast("out_http_0", s0_encoding, s0_bitrate, s0_host, s0_port, s0_pass, s0_mount, s0_url, s0_desc, s0_genre, s0_user, output_source, "0", s0_connected, s0_name, s0_channels) -end - -if s1_enable == true then - server.register(namespace="out_http_1", "connected", fun (s) -> begin !s1_connected end) - stream_to_icecast("out_http_1", s1_encoding, s1_bitrate, s1_host, s1_port, s1_pass, s1_mount, s1_url, s1_desc, s1_genre, s1_user, output_source, "1", s1_connected, s1_name, s1_channels) -end - -if s2_enable == true then - server.register(namespace="out_http_2", "connected", fun (s) -> begin !s2_connected end) - stream_to_icecast("out_http_2", s2_encoding, s2_bitrate, s2_host, s2_port, s2_pass, s2_mount, s2_url, s2_desc, s2_genre, s2_user, output_source, "2", s2_connected, s2_name, s2_channels) -end - -if s3_enable == true then - server.register(namespace="out_http_3", "connected", fun (s) -> begin !s3_connected end) - stream_to_icecast("out_http_3", s3_encoding, s3_bitrate, s3_host, s3_port, s3_pass, s3_mount, s3_url, s3_desc, s3_genre, s3_user, output_source, "3", s3_connected, s3_name, s3_channels) -end - -if s4_enable == true then - server.register(namespace="out_http_4", "connected", fun (s) -> begin !s4_connected end) - stream_to_icecast("out_http_4", s4_encoding, s4_bitrate, s4_host, s4_port, s4_pass, s4_mount, s4_url, s4_desc, s4_genre, s4_user, output_source, "4", s4_connected, s4_name, s4_channels) -end diff --git a/src/liquidsoap/outgoing_recordings/aac.liq b/src/liquidsoap/outgoing_recordings/aac.liq deleted file mode 100644 index 428af918ae341d89d95bbbe41dfec2f8b3d26882..0000000000000000000000000000000000000000 --- a/src/liquidsoap/outgoing_recordings/aac.liq +++ /dev/null @@ -1,87 +0,0 @@ -# -# Aura Engine (https://gitlab.servus.at/aura/engine) -# -# Copyright (C) 2017-2020 - The Aura Engine Team. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - - -if bitrate == 24 then -# if stereo then - ignore(output_filesystem_stereo(%fdkaac(bitrate = 24, channels = 2), filenamepattern, !source)) -# else -# ignore(output_filesystem_mono(%fdkaac(bitrate = 24, channels = 1), filenamepattern, mean(!source))) -# end -elsif bitrate == 32 then -# if stereo then - ignore(output_filesystem_stereo(%fdkaac(bitrate = 32, channels = 2), filenamepattern, !source)) -# else -# ignore(output_filesystem_mono(%fdkaac(bitrate = 32, channels = 1), filenamepattern, mean(!source))) -# end -elsif bitrate == 48 then -# if stereo then - ignore(output_filesystem_stereo(%fdkaac(bitrate = 48, channels = 2), filenamepattern, !source)) -# else -# ignore(output_filesystem_mono(%fdkaac(bitrate = 48, channels = 1), filenamepattern, mean(!source))) -# end -elsif bitrate == 64 then -# if stereo then - ignore(output_filesystem_stereo(%fdkaac(bitrate = 64, channels = 2), filenamepattern, !source)) -# else -# ignore(output_filesystem_mono(%fdkaac(bitrate = 64, channels = 1), filenamepattern, mean(!source))) -# end -elsif bitrate == 96 then -# if stereo then - ignore(output_filesystem_stereo(%fdkaac(bitrate = 96, channels = 2), filenamepattern, !source)) -# else -# ignore(output_filesystem_mono(%fdkaac(bitrate = 96, channels = 1), filenamepattern, mean(!source))) -# end -elsif bitrate == 128 then -# if stereo then - ignore(output_filesystem_stereo(%fdkaac(bitrate = 128, channels = 2), filenamepattern, !source)) -# else -# ignore(output_filesystem_mono(%fdkaac(bitrate = 128, channels = 1), filenamepattern, mean(!source))) -# end -elsif bitrate == 160 then -# if stereo then - ignore(output_filesystem_stereo(%fdkaac(bitrate = 160, channels = 2), filenamepattern, !source)) -# else -# ignore(output_filesystem_mono(%fdkaac(bitrate = 160, channels = 1), filenamepattern, mean(!source))) -# end -elsif bitrate == 192 then -# if stereo then - ignore(output_filesystem_stereo(%fdkaac(bitrate = 192, channels = 2), filenamepattern, !source)) -# else -# ignore(output_filesystem_mono(%fdkaac(bitrate = 192, channels = 1), filenamepattern, mean(!source))) -# end -elsif bitrate == 224 then -# if stereo then - ignore(output_filesystem_stereo(%fdkaac(bitrate = 224, channels = 2), filenamepattern, !source)) -# else -# ignore(output_filesystem_mono(%fdkaac(bitrate = 224, channels = 1), filenamepattern, mean(!source))) -# end -elsif bitrate == 256 then -# if stereo then - ignore(output_filesystem_stereo(%fdkaac(bitrate = 256, channels = 2), filenamepattern, !source)) -# else -# ignore(output_filesystem_mono(%fdkaac(bitrate = 256, channels = 1), filenamepattern, mean(!source))) -# end -elsif bitrate == 320 then -# if stereo then - ignore(output_filesystem_stereo(%fdkaac(bitrate = 320, channels = 2), filenamepattern, !source)) -# else -# ignore(output_filesystem_mono(%fdkaac(bitrate = 320, channels = 1), filenamepattern, mean(!source))) -# end -end - diff --git a/src/liquidsoap/outgoing_recordings/flac.liq b/src/liquidsoap/outgoing_recordings/flac.liq deleted file mode 100644 index ac497c7ef56dec596c48322085c07d08119257b9..0000000000000000000000000000000000000000 --- a/src/liquidsoap/outgoing_recordings/flac.liq +++ /dev/null @@ -1,75 +0,0 @@ -# -# Aura Engine (https://gitlab.servus.at/aura/engine) -# -# Copyright (C) 2017-2020 - The Aura Engine Team. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - - -if bitrate == 24 or bitrate == 32 or bitrate == 48 then - if stereo then - ignore(output_filesystem_stereo(%flac(samplerate=44100, channels = 2, compression = 7, bits_per_sample=8), filenamepattern, !source)) - else - ignore(output_filesystem_mono(%flac(samplerate=44100, channels = 1, compression = 7, bits_per_sample=8), filenamepattern, mean(!source))) - end -elsif bitrate == 64 then - if stereo then - ignore(output_filesystem_stereo(%flac(samplerate=44100, channels = 2, compression = 7, bits_per_sample=8), filenamepattern, !source)) - else - ignore(output_filesystem_mono(%flac(samplerate=44100, channels = 1, compression = 7, bits_per_sample=8), filenamepattern, mean(!source))) - end -elsif bitrate == 96 then - if stereo then - ignore(output_filesystem_stereo(%flac(samplerate=44100, channels = 2, compression = 7, bits_per_sample=8), filenamepattern, !source)) - else - ignore(output_filesystem_mono(%flac(samplerate=44100, channels = 1, compression = 7, bits_per_sample=8), filenamepattern, mean(!source))) - end -elsif bitrate == 128 then - if stereo then - ignore(output_filesystem_stereo(%flac(samplerate=44100, channels = 2, compression = 6, bits_per_sample=16), filenamepattern, !source)) - else - ignore(output_filesystem_mono(%flac(samplerate=44100, channels = 1, compression = 6, bits_per_sample=16), filenamepattern, mean(!source))) - end -elsif bitrate == 160 then - if stereo then - ignore(output_filesystem_stereo(%flac(samplerate=44100, channels = 2, compression = 5, bits_per_sample=16), filenamepattern, !source)) - else - ignore(output_filesystem_mono(%flac(samplerate=44100, channels = 1, compression = 5, bits_per_sample=16), filenamepattern, mean(!source))) - end -elsif bitrate == 192 then - if stereo then - ignore(output_filesystem_stereo(%flac(samplerate=44100, channels = 2, compression = 4, bits_per_sample=16), filenamepattern, !source)) - else - ignore(output_filesystem_mono(%flac(samplerate=44100, channels = 1, compression = 4, bits_per_sample=16), filenamepattern, mean(!source))) - end -elsif bitrate == 224 then - if stereo then - ignore(output_filesystem_stereo(%flac(samplerate=44100, channels = 2, compression = 3, bits_per_sample=32), filenamepattern, !source)) - else - ignore(output_filesystem_mono(%flac(samplerate=44100, channels = 1, compression = 3, bits_per_sample=32), filenamepattern, mean(!source))) - end -elsif bitrate == 256 then - if stereo then - ignore(output_filesystem_stereo(%flac(samplerate=44100, channels = 2, compression = 2, bits_per_sample=32), filenamepattern, !source)) - else - ignore(output_filesystem_mono(%flac(samplerate=44100, channels = 1, compression = 2, bits_per_sample=32), filenamepattern, mean(!source))) - end -elsif bitrate == 320 then - if stereo then - ignore(output_filesystem_stereo(%flac(samplerate=44100, channels = 2, compression = 1, bits_per_sample=32), filenamepattern, !source)) - else - ignore(output_filesystem_mono(%flac(samplerate=44100, channels = 1, compression = 1, bits_per_sample=32), filenamepattern, mean(!source))) - end -end - diff --git a/src/liquidsoap/outgoing_recordings/mp3.liq b/src/liquidsoap/outgoing_recordings/mp3.liq deleted file mode 100644 index 3c315a0a0f6a087b2d647ade7e5fe8c07e5d1c41..0000000000000000000000000000000000000000 --- a/src/liquidsoap/outgoing_recordings/mp3.liq +++ /dev/null @@ -1,87 +0,0 @@ -# -# Aura Engine (https://gitlab.servus.at/aura/engine) -# -# Copyright (C) 2017-2020 - The Aura Engine Team. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - - -if bitrate == 24 then - if stereo then - ignore(output_filesystem_stereo(%mp3(bitrate = 24, stereo = true), filenamepattern, !source)) - else - ignore(output_filesystem_mono(%mp3(bitrate = 24, stereo = false), filenamepattern, mean(!source))) - end -elsif bitrate == 32 then - if stereo then - ignore(output_filesystem_stereo(%mp3(bitrate = 32, stereo = true), filenamepattern, !source)) - else - ignore(output_filesystem_mono(%mp3(bitrate = 32, stereo = false), filenamepattern, mean(!source))) - end -elsif bitrate == 48 then - if stereo then - ignore(output_filesystem_stereo(%mp3(bitrate = 48, stereo = true), filenamepattern, !source)) - else - ignore(output_filesystem_mono(%mp3(bitrate = 48, stereo = false), filenamepattern, mean(!source))) - end -elsif bitrate == 64 then - if stereo then - ignore(output_filesystem_stereo(%mp3(bitrate = 64, stereo = true), filenamepattern, !source)) - else - ignore(output_filesystem_mono(%mp3(bitrate = 64, stereo = false), filenamepattern, mean(!source))) - end -elsif bitrate == 96 then - if stereo then - ignore(output_filesystem_stereo(%mp3(bitrate = 96, stereo = true), filenamepattern, !source)) - else - ignore(output_filesystem_mono(%mp3(bitrate = 96, stereo = false), filenamepattern, mean(!source))) - end -elsif bitrate == 128 then - if stereo then - ignore(output_filesystem_stereo(%mp3(bitrate = 128, stereo = true), filenamepattern, !source)) - else - ignore(output_filesystem_mono(%mp3(bitrate = 128, stereo = false), filenamepattern, mean(!source))) - end -elsif bitrate == 160 then - if stereo then - ignore(output_filesystem_stereo(%mp3(bitrate = 160, stereo = true), filenamepattern, !source)) - else - ignore(output_filesystem_mono(%mp3(bitrate = 160, stereo = false), filenamepattern, mean(!source))) - end -elsif bitrate == 192 then - if stereo then - ignore(output_filesystem_stereo(%mp3(bitrate = 192, stereo = true), filenamepattern, !source)) - else - ignore(output_filesystem_mono(%mp3(bitrate = 192, stereo = false), filenamepattern, mean(!source))) - end -elsif bitrate == 224 then - if stereo then - ignore(output_filesystem_stereo(%mp3(bitrate = 224, stereo = true), filenamepattern, !source)) - else - ignore(output_filesystem_mono(%mp3(bitrate = 224, stereo = false), filenamepattern, mean(!source))) - end -elsif bitrate == 256 then - if stereo then - ignore(output_filesystem_stereo(%mp3(bitrate = 256, stereo = true), filenamepattern, !source)) - else - ignore(output_filesystem_mono(%mp3(bitrate = 256, stereo = false), filenamepattern, mean(!source))) - end -elsif bitrate == 320 then - if stereo then - ignore(output_filesystem_stereo(%mp3(bitrate = 320, stereo = true), filenamepattern, !source)) - else - ignore(output_filesystem_mono(%mp3(bitrate = 320, stereo = false), filenamepattern, mean(!source))) - end -end - diff --git a/src/liquidsoap/outgoing_recordings/ogg.liq b/src/liquidsoap/outgoing_recordings/ogg.liq deleted file mode 100644 index 2d39bb4ba70947a33cfa364a1771ea373c7fbf83..0000000000000000000000000000000000000000 --- a/src/liquidsoap/outgoing_recordings/ogg.liq +++ /dev/null @@ -1,75 +0,0 @@ -# -# Aura Engine (https://gitlab.servus.at/aura/engine) -# -# Copyright (C) 2017-2020 - The Aura Engine Team. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - - -if bitrate == 24 or bitrate == 32 or bitrate == 48 then - if stereo then - ignore(output_filesystem_stereo(%vorbis(quality=-0.1, channels = 2), filenamepattern, !source)) - else - ignore(output_filesystem_mono(%vorbis(quality=-0.1, channels = 1), filenamepattern, mean(!source))) - end -elsif bitrate == 64 then - if stereo then - ignore(output_filesystem_stereo(%vorbis(quality=0, channels = 2), filenamepattern, !source)) - else - ignore(output_filesystem_mono(%vorbis(quality=0, channels = 1), filenamepattern, mean(!source))) - end -elsif bitrate == 96 then - if stereo then - ignore(output_filesystem_stereo(%vorbis(quality=0.2, channels = 2), filenamepattern, !source)) - else - ignore(output_filesystem_mono(%vorbis(quality=0.2, channels = 1), filenamepattern, mean(!source))) - end -elsif bitrate == 128 then - if stereo then - ignore(output_filesystem_stereo(%vorbis(quality=0.4, channels = 2), filenamepattern, !source)) - else - ignore(output_filesystem_mono(%vorbis(quality=0.4, channels = 1), filenamepattern, mean(!source))) - end -elsif bitrate == 160 then - if stereo then - ignore(output_filesystem_stereo(%vorbis(quality=0.5, channels = 2), filenamepattern, !source)) - else - ignore(output_filesystem_mono(%vorbis(quality=0.5, channels = 1), filenamepattern, mean(!source))) - end -elsif bitrate == 192 then - if stereo then - ignore(output_filesystem_stereo(%vorbis(quality=0.6, channels = 2), filenamepattern, !source)) - else - ignore(output_filesystem_mono(%vorbis(quality=0.6, channels = 1), filenamepattern, mean(!source))) - end -elsif bitrate == 224 then - if stereo then - ignore(output_filesystem_stereo(%vorbis(quality=0.7, channels = 2), filenamepattern, !source)) - else - ignore(output_filesystem_mono(%vorbis(quality=0.7, channels = 1), filenamepattern, mean(!source))) - end -elsif bitrate == 256 then - if stereo then - ignore(output_filesystem_stereo(%vorbis(quality=0.8, channels = 2), filenamepattern, !source)) - else - ignore(output_filesystem_mono(%vorbis(quality=0.8, channels = 1), filenamepattern, mean(!source))) - end -elsif bitrate == 320 then - if stereo then - ignore(output_filesystem_stereo(%vorbis(quality=0.9, channels = 2), filenamepattern, !source)) - else - ignore(output_filesystem_mono(%vorbis(quality=0.9, channels = 1), filenamepattern, mean(!source))) - end -end - diff --git a/src/liquidsoap/outgoing_recordings/opus.liq b/src/liquidsoap/outgoing_recordings/opus.liq deleted file mode 100644 index 799e8d1f0c45fa2f733bae5ace3dead73610daee..0000000000000000000000000000000000000000 --- a/src/liquidsoap/outgoing_recordings/opus.liq +++ /dev/null @@ -1,87 +0,0 @@ -# -# Aura Engine (https://gitlab.servus.at/aura/engine) -# -# Copyright (C) 2017-2020 - The Aura Engine Team. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - - -if bitrate == 24 then - if stereo then - ignore(output_filesystem_stereo(%opus(bitrate = 24, channels = 2, signal="music", application="audio", complexity=10, vbr="constrained"), filenamepattern, !source)) - else - ignore(output_filesystem_mono(%opus(bitrate = 24, channels = 1, signal="music", application="audio", complexity=10, vbr="constrained"), filenamepattern, mean(!source))) - end -elsif bitrate == 32 then - if stereo then - ignore(output_filesystem_stereo(%opus(bitrate = 32, channels = 2, signal="music", application="audio", complexity=10, vbr="constrained"), filenamepattern, !source)) - else - ignore(output_filesystem_mono(%opus(bitrate = 32, channels = 1, signal="music", application="audio", complexity=10, vbr="constrained"), filenamepattern, mean(!source))) - end -elsif bitrate == 48 then - if stereo then - ignore(output_filesystem_stereo(%opus(bitrate = 48, channels = 2, signal="music", application="audio", complexity=10, vbr="constrained"), filenamepattern, !source)) - else - ignore(output_filesystem_mono(%opus(bitrate = 48, channels = 1, signal="music", application="audio", complexity=10, vbr="constrained"), filenamepattern, mean(!source))) - end -elsif bitrate == 64 then - if stereo then - ignore(output_filesystem_stereo(%opus(bitrate = 64, channels = 2, signal="music", application="audio", complexity=10, vbr="constrained"), filenamepattern, !source)) - else - ignore(output_filesystem_mono(%opus(bitrate = 64, channels = 1, signal="music", application="audio", complexity=10, vbr="constrained"), filenamepattern, mean(!source))) - end -elsif bitrate == 96 then - if stereo then - ignore(output_filesystem_stereo(%opus(bitrate = 96, channels = 2, signal="music", application="audio", complexity=10, vbr="constrained"), filenamepattern, !source)) - else - ignore(output_filesystem_mono(%opus(bitrate = 96, channels = 1, signal="music", application="audio", complexity=10, vbr="constrained"), filenamepattern, mean(!source))) - end -elsif bitrate == 128 then - if stereo then - ignore(output_filesystem_stereo(%opus(bitrate = 128, channels = 2, signal="music", application="audio", complexity=10, vbr="constrained"), filenamepattern, !source)) - else - ignore(output_filesystem_mono(%opus(bitrate = 128, channels = 1, signal="music", application="audio", complexity=10, vbr="constrained"), filenamepattern, mean(!source))) - end -elsif bitrate == 160 then - if stereo then - ignore(output_filesystem_stereo(%opus(bitrate = 160, channels = 2, signal="music", application="audio", complexity=10, vbr="constrained"), filenamepattern, !source)) - else - ignore(output_filesystem_mono(%opus(bitrate = 160, channels = 1, signal="music", application="audio", complexity=10, vbr="constrained"), filenamepattern, mean(!source))) - end -elsif bitrate == 192 then - if stereo then - ignore(output_filesystem_stereo(%opus(bitrate = 192, channels = 2, signal="music", application="audio", complexity=10, vbr="constrained"), filenamepattern, !source)) - else - ignore(output_filesystem_mono(%opus(bitrate = 192, channels = 1, signal="music", application="audio", complexity=10, vbr="constrained"), filenamepattern, mean(!source))) - end -elsif bitrate == 224 then - if stereo then - ignore(output_filesystem_stereo(%opus(bitrate = 224, channels = 2, signal="music", application="audio", complexity=10, vbr="constrained"), filenamepattern, !source)) - else - ignore(output_filesystem_mono(%opus(bitrate = 224, channels = 1, signal="music", application="audio", complexity=10, vbr="constrained"), filenamepattern, mean(!source))) - end -elsif bitrate == 256 then - if stereo then - ignore(output_filesystem_stereo(%opus(bitrate = 256, channels = 2, signal="music", application="audio", complexity=10, vbr="constrained"), filenamepattern, !source)) - else - ignore(output_filesystem_mono(%opus(bitrate = 256, channels = 1, signal="music", application="audio", complexity=10, vbr="constrained"), filenamepattern, mean(!source))) - end -elsif bitrate == 320 then - if stereo then - ignore(output_filesystem_stereo(%opus(bitrate = 320, channels = 2, signal="music", application="audio", complexity=10, vbr="constrained"), filenamepattern, !source)) - else - ignore(output_filesystem_mono(%opus(bitrate = 320, channels = 1, signal="music", application="audio", complexity=10, vbr="constrained"), filenamepattern, mean(!source))) - end -end - diff --git a/src/liquidsoap/outgoing_recordings/wav.liq b/src/liquidsoap/outgoing_recordings/wav.liq deleted file mode 100644 index 39e86002fb5d9b3361a714b924eed137d49da614..0000000000000000000000000000000000000000 --- a/src/liquidsoap/outgoing_recordings/wav.liq +++ /dev/null @@ -1,32 +0,0 @@ -# -# Aura Engine (https://gitlab.servus.at/aura/engine) -# -# Copyright (C) 2017-2020 - The Aura Engine Team. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - - -if bitrate <= 128 then - if stereo then - ignore(output_filesystem_stereo(%wav(stereo=true, channels=2, samplesize=8, header=true, duration=30.), filenamepattern, !source)) - else - ignore(output_filesystem_mono(%wav(stereo=false, channels=1, samplesize=8, header=true, duration=30.), filenamepattern, mean(!source))) - end -else - if stereo then - ignore(output_filesystem_stereo(%wav(stereo=true, channels=2, samplesize=16, header=true, duration=30.), filenamepattern, !source)) - else - ignore(output_filesystem_mono(%wav(stereo=false, channels=1, samplesize=16, header=true, duration=30.), filenamepattern, mean(!source))) - end -end \ No newline at end of file diff --git a/src/liquidsoap/outgoing_streams/aac.liq b/src/liquidsoap/outgoing_streams/aac.liq deleted file mode 100644 index 20df42397b0d8761a9a767ac9ab9b64065c2b2d4..0000000000000000000000000000000000000000 --- a/src/liquidsoap/outgoing_streams/aac.liq +++ /dev/null @@ -1,87 +0,0 @@ -# -# Aura Engine (https://gitlab.servus.at/aura/engine) -# -# Copyright (C) 2017-2020 - The Aura Engine Team. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - - -if bitrate == 24 then - if stereo then - ignore(output_icecast_stereo(%aac(bitrate = 24, channels = 2), !source)) - else - ignore(output_icecast_mono(%aac(bitrate = 24, channels = 1), mean(!source))) - end -elsif bitrate == 32 then - if stereo then - ignore(output_icecast_stereo(%aac(bitrate = 32, channels = 2), !source)) - else - ignore(output_icecast_mono(%aac(bitrate = 32, channels = 1), mean(!source))) - end -elsif bitrate == 48 then - if stereo then - ignore(output_icecast_stereo(%aac(bitrate = 48, channels = 2), !source)) - else - ignore(output_icecast_mono(%aac(bitrate = 48, channels = 1), mean(!source))) - end -elsif bitrate == 64 then - if stereo then - ignore(output_icecast_stereo(%aac(bitrate = 64, channels = 2), !source)) - else - ignore(output_icecast_mono(%aac(bitrate = 64, channels = 1), mean(!source))) - end -elsif bitrate == 96 then - if stereo then - ignore(output_icecast_stereo(%aac(bitrate = 96, channels = 2), !source)) - else - ignore(output_icecast_mono(%aac(bitrate = 96, channels = 1), mean(!source))) - end -elsif bitrate == 128 then - if stereo then - ignore(output_icecast_stereo(%aac(bitrate = 128, channels = 2), !source)) - else - ignore(output_icecast_mono(%aac(bitrate = 128, channels = 1), mean(!source))) - end -elsif bitrate == 160 then - if stereo then - ignore(output_icecast_stereo(%aac(bitrate = 160, channels = 2), !source)) - else - ignore(output_icecast_mono(%aac(bitrate = 160, channels = 1), mean(!source))) - end -elsif bitrate == 192 then - if stereo then - ignore(output_icecast_stereo(%aac(bitrate = 192, channels = 2), !source)) - else - ignore(output_icecast_mono(%aac(bitrate = 192, channels = 1), mean(!source))) - end -elsif bitrate == 224 then - if stereo then - ignore(output_icecast_stereo(%aac(bitrate = 224, channels = 2), !source)) - else - ignore(output_icecast_mono(%aac(bitrate = 224, channels = 1), mean(!source))) - end -elsif bitrate == 256 then - if stereo then - ignore(output_icecast_stereo(%aac(bitrate = 256, channels = 2), !source)) - else - ignore(output_icecast_mono(%aac(bitrate = 256, channels = 1), mean(!source))) - end -elsif bitrate == 320 then - if stereo then - ignore(output_icecast_stereo(%aac(bitrate = 320, channels = 2), !source)) - else - ignore(output_icecast_mono(%aac(bitrate = 320, channels = 1), mean(!source))) - end -end - diff --git a/src/liquidsoap/outgoing_streams/flac.liq b/src/liquidsoap/outgoing_streams/flac.liq deleted file mode 100644 index 2ddd248d887dd427bad4d9d29425d9c70b80d113..0000000000000000000000000000000000000000 --- a/src/liquidsoap/outgoing_streams/flac.liq +++ /dev/null @@ -1,79 +0,0 @@ -# -# Aura Engine (https://gitlab.servus.at/aura/engine) -# -# Copyright (C) 2017-2020 - The Aura Engine Team. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - - -if not icecast_vorbis_metadata then - source := add(normalize=false, [amplify(0.00001, noise()), !source]) -end - -if bitrate == 24 or bitrate == 32 or bitrate == 48 then - if stereo then - ignore(output_icecast_stereo(%flac(samplerate=44100, channels = 2, compression = 7, bits_per_sample=8), !source)) - else - ignore(output_icecast_mono(%flac(samplerate=44100, channels = 1, compression = 7, bits_per_sample=8), mean(!source))) - end -elsif bitrate == 64 then - if stereo then - ignore(output_icecast_stereo(%flac(samplerate=44100, channels = 2, compression = 7, bits_per_sample=8), !source)) - else - ignore(output_icecast_mono(%flac(samplerate=44100, channels = 1, compression = 7, bits_per_sample=8), mean(!source))) - end -elsif bitrate == 96 then - if stereo then - ignore(output_icecast_stereo(%flac(samplerate=44100, channels = 2, compression = 7, bits_per_sample=8), !source)) - else - ignore(output_icecast_mono(%flac(samplerate=44100, channels = 1, compression = 7, bits_per_sample=8), mean(!source))) - end -elsif bitrate == 128 then - if stereo then - ignore(output_icecast_stereo(%flac(samplerate=44100, channels = 2, compression = 6, bits_per_sample=16), !source)) - else - ignore(output_icecast_mono(%flac(samplerate=44100, channels = 1, compression = 6, bits_per_sample=16), mean(!source))) - end -elsif bitrate == 160 then - if stereo then - ignore(output_icecast_stereo(%flac(samplerate=44100, channels = 2, compression = 5, bits_per_sample=16), !source)) - else - ignore(output_icecast_mono(%flac(samplerate=44100, channels = 1, compression = 5, bits_per_sample=16), mean(!source))) - end -elsif bitrate == 192 then - if stereo then - ignore(output_icecast_stereo(%flac(samplerate=44100, channels = 2, compression = 4, bits_per_sample=16), !source)) - else - ignore(output_icecast_mono(%flac(samplerate=44100, channels = 1, compression = 4, bits_per_sample=16), mean(!source))) - end -elsif bitrate == 224 then - if stereo then - ignore(output_icecast_stereo(%flac(samplerate=44100, channels = 2, compression = 3, bits_per_sample=32), !source)) - else - ignore(output_icecast_mono(%flac(samplerate=44100, channels = 1, compression = 3, bits_per_sample=32), mean(!source))) - end -elsif bitrate == 256 then - if stereo then - ignore(output_icecast_stereo(%flac(samplerate=44100, channels = 2, compression = 2, bits_per_sample=32), !source)) - else - ignore(output_icecast_mono(%flac(samplerate=44100, channels = 1, compression = 2, bits_per_sample=32), mean(!source))) - end -elsif bitrate == 320 then - if stereo then - ignore(output_icecast_stereo(%flac(samplerate=44100, channels = 2, compression = 1, bits_per_sample=32), !source)) - else - ignore(output_icecast_mono(%flac(samplerate=44100, channels = 1, compression = 1, bits_per_sample=32), mean(!source))) - end -end - diff --git a/src/liquidsoap/outgoing_streams/mp3.liq b/src/liquidsoap/outgoing_streams/mp3.liq deleted file mode 100644 index 70218feb23b94ce3dd6bf6615353864656e5e96a..0000000000000000000000000000000000000000 --- a/src/liquidsoap/outgoing_streams/mp3.liq +++ /dev/null @@ -1,87 +0,0 @@ -# -# Aura Engine (https://gitlab.servus.at/aura/engine) -# -# Copyright (C) 2017-2020 - The Aura Engine Team. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - - -if bitrate == 24 then - if stereo then - ignore(output_icecast_stereo(%mp3(bitrate = 24, stereo = true), !source)) - else - ignore(output_icecast_mono(%mp3(bitrate = 24, stereo = false), mean(!source))) - end -elsif bitrate == 32 then - if stereo then - ignore(output_icecast_stereo(%mp3(bitrate = 32, stereo = true), !source)) - else - ignore(output_icecast_mono(%mp3(bitrate = 32, stereo = false), mean(!source))) - end -elsif bitrate == 48 then - if stereo then - ignore(output_icecast_stereo(%mp3(bitrate = 48, stereo = true), !source)) - else - ignore(output_icecast_mono(%mp3(bitrate = 48, stereo = false), mean(!source))) - end -elsif bitrate == 64 then - if stereo then - ignore(output_icecast_stereo(%mp3(bitrate = 64, stereo = true), !source)) - else - ignore(output_icecast_mono(%mp3(bitrate = 64, stereo = false), mean(!source))) - end -elsif bitrate == 96 then - if stereo then - ignore(output_icecast_stereo(%mp3(bitrate = 96, stereo = true), !source)) - else - ignore(output_icecast_mono(%mp3(bitrate = 96, stereo = false), mean(!source))) - end -elsif bitrate == 128 then - if stereo then - ignore(output_icecast_stereo(%mp3(bitrate = 128, stereo = true), !source)) - else - ignore(output_icecast_mono(%mp3(bitrate = 128, stereo = false), mean(!source))) - end -elsif bitrate == 160 then - if stereo then - ignore(output_icecast_stereo(%mp3(bitrate = 160, stereo = true), !source)) - else - ignore(output_icecast_mono(%mp3(bitrate = 160, stereo = false), mean(!source))) - end -elsif bitrate == 192 then - if stereo then - ignore(output_icecast_stereo(%mp3(bitrate = 192, stereo = true), !source)) - else - ignore(output_icecast_mono(%mp3(bitrate = 192, stereo = false), mean(!source))) - end -elsif bitrate == 224 then - if stereo then - ignore(output_icecast_stereo(%mp3(bitrate = 224, stereo = true), !source)) - else - ignore(output_icecast_mono(%mp3(bitrate = 224, stereo = false), mean(!source))) - end -elsif bitrate == 256 then - if stereo then - ignore(output_icecast_stereo(%mp3(bitrate = 256, stereo = true), !source)) - else - ignore(output_icecast_mono(%mp3(bitrate = 256, stereo = false), mean(!source))) - end -elsif bitrate == 320 then - if stereo then - ignore(output_icecast_stereo(%mp3(bitrate = 320, stereo = true), !source)) - else - ignore(output_icecast_mono(%mp3(bitrate = 320, stereo = false), mean(!source))) - end -end - diff --git a/src/liquidsoap/outgoing_streams/ogg.liq b/src/liquidsoap/outgoing_streams/ogg.liq deleted file mode 100644 index a8a6e624ef82c7c7be5018b2482ebe5014c2c948..0000000000000000000000000000000000000000 --- a/src/liquidsoap/outgoing_streams/ogg.liq +++ /dev/null @@ -1,79 +0,0 @@ -# -# Aura Engine (https://gitlab.servus.at/aura/engine) -# -# Copyright (C) 2017-2020 - The Aura Engine Team. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - - -if not icecast_vorbis_metadata then - source := add(normalize=false, [amplify(0.00001, noise()), !source]) -end - -if bitrate == 24 or bitrate == 32 or bitrate == 48 then - if stereo then - ignore(output_icecast_stereo(%vorbis(quality=-0.1, channels = 2), !source)) - else - ignore(output_icecast_mono(%vorbis(quality=-0.1, channels = 1), mean(!source))) - end -elsif bitrate == 64 then - if stereo then - ignore(output_icecast_stereo(%vorbis(quality=0, channels = 2), !source)) - else - ignore(output_icecast_mono(%vorbis(quality=0, channels = 1), mean(!source))) - end -elsif bitrate == 96 then - if stereo then - ignore(output_icecast_stereo(%vorbis(quality=0.2, channels = 2), !source)) - else - ignore(output_icecast_mono(%vorbis(quality=0.2, channels = 1), mean(!source))) - end -elsif bitrate == 128 then - if stereo then - ignore(output_icecast_stereo(%vorbis(quality=0.4, channels = 2), !source)) - else - ignore(output_icecast_mono(%vorbis(quality=0.4, channels = 1), mean(!source))) - end -elsif bitrate == 160 then - if stereo then - ignore(output_icecast_stereo(%vorbis(quality=0.5, channels = 2), !source)) - else - ignore(output_icecast_mono(%vorbis(quality=0.5, channels = 1), mean(!source))) - end -elsif bitrate == 192 then - if stereo then - ignore(output_icecast_stereo(%vorbis(quality=0.6, channels = 2), !source)) - else - ignore(output_icecast_mono(%vorbis(quality=0.6, channels = 1), mean(!source))) - end -elsif bitrate == 224 then - if stereo then - ignore(output_icecast_stereo(%vorbis(quality=0.7, channels = 2), !source)) - else - ignore(output_icecast_mono(%vorbis(quality=0.7, channels = 1), mean(!source))) - end -elsif bitrate == 256 then - if stereo then - ignore(output_icecast_stereo(%vorbis(quality=0.8, channels = 2), !source)) - else - ignore(output_icecast_mono(%vorbis(quality=0.8, channels = 1), mean(!source))) - end -elsif bitrate == 320 then - if stereo then - ignore(output_icecast_stereo(%vorbis(quality=0.9, channels = 2), !source)) - else - ignore(output_icecast_mono(%vorbis(quality=0.9, channels = 1), mean(!source))) - end -end - diff --git a/src/liquidsoap/outgoing_streams/opus.liq b/src/liquidsoap/outgoing_streams/opus.liq deleted file mode 100644 index 0787671dc43701d10507f6e3ed1c114ad5907877..0000000000000000000000000000000000000000 --- a/src/liquidsoap/outgoing_streams/opus.liq +++ /dev/null @@ -1,87 +0,0 @@ -# -# Aura Engine (https://gitlab.servus.at/aura/engine) -# -# Copyright (C) 2017-2020 - The Aura Engine Team. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - - -if bitrate == 24 then - if stereo then - ignore(output_icecast_stereo(%opus(bitrate = 24, channels = 2, signal="music", application="audio", complexity=10, vbr="constrained"), !source)) - else - ignore(output_icecast_mono(%opus(bitrate = 24, channels = 1, signal="music", application="audio", complexity=10, vbr="constrained"), mean(!source))) - end -elsif bitrate == 32 then - if stereo then - ignore(output_icecast_stereo(%opus(bitrate = 32, channels = 2, signal="music", application="audio", complexity=10, vbr="constrained"), !source)) - else - ignore(output_icecast_mono(%opus(bitrate = 32, channels = 1, signal="music", application="audio", complexity=10, vbr="constrained"), mean(!source))) - end -elsif bitrate == 48 then - if stereo then - ignore(output_icecast_stereo(%opus(bitrate = 48, channels = 2, signal="music", application="audio", complexity=10, vbr="constrained"), !source)) - else - ignore(output_icecast_mono(%opus(bitrate = 48, channels = 1, signal="music", application="audio", complexity=10, vbr="constrained"), mean(!source))) - end -elsif bitrate == 64 then - if stereo then - ignore(output_icecast_stereo(%opus(bitrate = 64, channels = 2, signal="music", application="audio", complexity=10, vbr="constrained"), !source)) - else - ignore(output_icecast_mono(%opus(bitrate = 64, channels = 1, signal="music", application="audio", complexity=10, vbr="constrained"), mean(!source))) - end -elsif bitrate == 96 then - if stereo then - ignore(output_icecast_stereo(%opus(bitrate = 96, channels = 2, signal="music", application="audio", complexity=10, vbr="constrained"), !source)) - else - ignore(output_icecast_mono(%opus(bitrate = 96, channels = 1, signal="music", application="audio", complexity=10, vbr="constrained"), mean(!source))) - end -elsif bitrate == 128 then - if stereo then - ignore(output_icecast_stereo(%opus(bitrate = 128, channels = 2, signal="music", application="audio", complexity=10, vbr="constrained"), !source)) - else - ignore(output_icecast_mono(%opus(bitrate = 128, channels = 1, signal="music", application="audio", complexity=10, vbr="constrained"), mean(!source))) - end -elsif bitrate == 160 then - if stereo then - ignore(output_icecast_stereo(%opus(bitrate = 160, channels = 2, signal="music", application="audio", complexity=10, vbr="constrained"), !source)) - else - ignore(output_icecast_mono(%opus(bitrate = 160, channels = 1, signal="music", application="audio", complexity=10, vbr="constrained"), mean(!source))) - end -elsif bitrate == 192 then - if stereo then - ignore(output_icecast_stereo(%opus(bitrate = 192, channels = 2, signal="music", application="audio", complexity=10, vbr="constrained"), !source)) - else - ignore(output_icecast_mono(%opus(bitrate = 192, channels = 1, signal="music", application="audio", complexity=10, vbr="constrained"), mean(!source))) - end -elsif bitrate == 224 then - if stereo then - ignore(output_icecast_stereo(%opus(bitrate = 224, channels = 2, signal="music", application="audio", complexity=10, vbr="constrained"), !source)) - else - ignore(output_icecast_mono(%opus(bitrate = 224, channels = 1, signal="music", application="audio", complexity=10, vbr="constrained"), mean(!source))) - end -elsif bitrate == 256 then - if stereo then - ignore(output_icecast_stereo(%opus(bitrate = 256, channels = 2, signal="music", application="audio", complexity=10, vbr="constrained"), !source)) - else - ignore(output_icecast_mono(%opus(bitrate = 256, channels = 1, signal="music", application="audio", complexity=10, vbr="constrained"), mean(!source))) - end -elsif bitrate == 320 then - if stereo then - ignore(output_icecast_stereo(%opus(bitrate = 320, channels = 2, signal="music", application="audio", complexity=10, vbr="constrained"), !source)) - else - ignore(output_icecast_mono(%opus(bitrate = 320, channels = 1, signal="music", application="audio", complexity=10, vbr="constrained"), mean(!source))) - end -end - diff --git a/src/liquidsoap/readini.liq b/src/liquidsoap/readini.liq deleted file mode 100644 index 757116e058365fa6a6c117c9f4fc3d2d4f6f1c0d..0000000000000000000000000000000000000000 --- a/src/liquidsoap/readini.liq +++ /dev/null @@ -1,149 +0,0 @@ -# -# Aura Engine (https://gitlab.servus.at/aura/engine) -# -# Copyright (C) 2017-2020 - The Aura Engine Team. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - - - -################# -# Read INI File # -################# - - - -debug = false - -def read_ini(file) - # read ini file - settings_file_content = get_process_lines("cat "^file ) - # one entry stored as ["setting_name", "setting"] - settings_map = list.map(string.split(separator="="), settings_file_content) - - def filter_pair(setting_pair) = - if debug then - print(" +++ IN FILTER_PAIR +++") - end - - # get head of settings_pair - setting_name = list.hd(default="", setting_pair) - if debug then - print(" -- setting_name:") - print(setting_name) - end - - # settings in ini are with '"', so read them with high comma - setting_unfiltered = list.nth(default="", setting_pair, 1) - if debug then - print(" -- setting_unfiltered:") - print(setting_unfiltered) - end - - # filter high comma out. why the hell comes an array ["1", setting] returned? - # the filter patterns are perl regex - setting = string.extract(pattern='"(.*)"', setting_unfiltered) - if debug then - print(" -- setting ( after string.extract):") - print(setting['1']) - end - - filtered_pair = [(setting_name, setting['1'])] - if debug then - print(" -- filter_pair returning: --") - print(filtered_pair) - end - - # return filtered_pair - filtered_pair - end - - def filter_map(filled_list, next_element) = -# if debug then -# print(" +++ IN FILTER_MAP +++") -# print(" .. length of filled_list: ") -# print(list.length(filled_list)) -# print(" .. next_element") -# print(next_element) -# end - - # the normal case: settingname and its setting - if list.length(next_element) >= 2 then - if debug then - print(" ===> LENGTH list to insert in settings_list is equal TWO! <===") - print(" -- next_element") - print(next_element) - end - - setting_pair = filter_pair(next_element) - - # add settings_pair to liquidsoap list - #list.add(setting_pair, filled_list) - list.append(setting_pair, filled_list) - else - if list.length(next_element) >= 1 then - if debug then - print(" ===> LENGTH of list to insert in settings_list is equal ONE! <===") - print(" -- next_element") - print(next_element) - end - - # - list.append([(list.hd(default="",next_element), "")], filled_list) - else - - if debug then - print(" ===> LENGTH of list to insert in settings_list is greater then two or less than one <===") - print(" -- next_element") - print(next_element) - end - - # return the list as is - filled_list - end - end - end - - # get install dir - pwd = get_process_lines("pwd") # returns an array - absolute_path = list.hd(default="", pwd) # grabs head of array (pwd only returns one line which is our desired result) - install_dir = '"' ^ path.dirname(path.dirname(absolute_path)) ^ '"' # pre and append " for filter_pair function. otherwise this setting would be lost through regex and fold function below would be imho much more difficult to read - - # add installdir to the loaded settings from ini file - #settings_map = list.add(["install_dir", install_dir], settings_map) - - # list.fold param description: - # f(a,b,c) - # a) a function which is fold - # b) the list which is to be filled (optional with already containing elements) - # c) from this list every element is taken, function applied and inserted into b - - # fold function without pre and appended " - settings = list.fold(filter_map, [("install_dir", install_dir)], settings_map) - - #settings = list.fold(filter_map, [], settings_map) - - if debug then - print(settings) - end - - settings -end - -if debug then - ini = read_ini("/etc/aura/engine.ini") - print(ini) - - print(list.assoc(default="", "install_dir", ini)) -end diff --git a/src/liquidsoap/serverfunctions.liq b/src/liquidsoap/serverfunctions.liq deleted file mode 100644 index 73e51d6599558bfb62648113cde7cf7c35a46e95..0000000000000000000000000000000000000000 --- a/src/liquidsoap/serverfunctions.liq +++ /dev/null @@ -1,235 +0,0 @@ -# -# Aura Engine (https://gitlab.servus.at/aura/engine) -# -# Copyright (C) 2017-2020 - The Aura Engine Team. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - - - -def icy_update(v) = - - # Parse the argument - l = string.split(separator=",",v) - def split(l,v) = - v = string.split(separator="=",v) - if list.length(v) >= 2 then - list.append(l,[(list.nth(v,0,default=""),list.nth(v,1,default=""))]) - else - l - end - end - meta = list.fold(split,[],l) - - # Update metadata - if s0_enable == true then - icy.update_metadata( - mount=s0_mount, - user=s0_user, - password=s0_pass, - host=s0_host, - port=s0_port, - meta - ) - end - - if s1_enable == true then - icy.update_metadata( - mount=s1_mount, - user=s1_user, - password=s1_pass, - host=s1_host, - port=s1_port, - meta - ) - end - - if s2_enable == true then - icy.update_metadata( - mount=s2_mount, - user=s2_user, - password=s2_pass, - host=s2_host, - port=s2_port, - meta - ) - end - - if s3_enable == true then - icy.update_metadata( - mount=s3_mount, - user=s3_user, - password=s3_pass, - host=s3_host, - port=s3_port, - meta - ) - end - - if s4_enable == true then - icy.update_metadata( - mount=s4_mount, - user=s4_user, - password=s4_pass, - host=s4_host, - port=s4_port, - meta - ) - end - - "Done!" -end - -server.register("update", namespace="metadata", - description="Update metadata", - usage="update title=foo,album=bar, ...", - icy_update) - - -# shutdown server function -#server.register(namespace='server', -# description="shutdown server", -# usage="stop", -# "stop", -# fun(x,y) -> shutdown ) - - - -# -# to reduce complexity of lqs => query 'mixer.inputs' over socket and parse it in python -#server.register(namespace="auraengine", -# "enabled_lineins", -# fun (s) -> begin -# log("auraengine.enabled_lineins") -# "0:#{!linein_0_enabled}, 1:#{!linein_1_enabled}, 2:#{!linein_2_enabled}, 3:#{!linein_3_enabled}, 4:#{!linein_4_enabled}" -# end -#) - -#server.register(namespace="auraengine", -# "enabled_lineouts", -# fun(s) -> begin -# log("auraengine.enabled_lineouts") -# "0:#{!lineout_0_enabled}, 1:#{!lineout_1_enabled}, 2:#{!lineout_2_enabled}, 3:#{!lineout_3_enabled}, 4:#{!lineout_4_enabled}" -# end -#) - -# are outgoing streams connected? -server.register(namespace="auraengine", - description="returns if outgoing streams are connected", - usage="out_streams_connected", - "out_streams_connected", - fun (s) -> begin - log("streams.connection_status") - "0:#{!s0_connected}, 1:#{!s1_connected}, 2:#{!s2_connected}, 3:#{!s3_connected}, 4:#{!s4_connected}" - end -) - -# return a state of the inputs/outputs of the soundserver as JSON -server.register(namespace = "auraengine", - description="returns enabled lineouts/lineins, connected outgoing streams, and recorder. Also returns fallbacksettings.", - usage="state", - "state", - fun(s) -> begin - log("auraengine.state") - - ret = '{' - ret = ret^'"streams": {' - ret = ret^'"stream_0": {"enabled": #{s0_enable}, "connected": #{!s0_connected}},' - ret = ret^'"stream_1": {"enabled": #{s1_enable}, "connected": #{!s1_connected}},' - ret = ret^'"stream_2": {"enabled": #{s2_enable}, "connected": #{!s2_connected}},' - ret = ret^'"stream_3": {"enabled": #{s3_enable}, "connected": #{!s3_connected}},' - ret = ret^'"stream_4": {"enabled": #{s4_enable}, "connected": #{!s4_connected}}' - ret = ret^'},' - ret = ret^'"linein": {' - ret = ret^'"linein_0": {"enabled": #{a0_in != ""}},' - ret = ret^'"linein_1": {"enabled": #{a1_in != ""}},' - ret = ret^'"linein_2": {"enabled": #{a2_in != ""}},' - ret = ret^'"linein_3": {"enabled": #{a3_in != ""}},' - ret = ret^'"linein_4": {"enabled": #{a4_in != ""}}' - ret = ret^'},' - ret = ret^'"lineout": {' - ret = ret^'"lineout_0": {"enabled": #{a0_out != ""}},' - ret = ret^'"lineout_1": {"enabled": #{a1_out != ""}},' - ret = ret^'"lineout_2": {"enabled": #{a2_out != ""}},' - ret = ret^'"lineout_3": {"enabled": #{a3_out != ""}},' - ret = ret^'"lineout_4": {"enabled": #{a4_out != ""}}' - ret = ret^'}' - ret = ret^'}' - ret - - # outgoing streams enabled? - #ret = "stream_0_enabled:#{!s0_enable}, stream_1_enabled:#{!s1_enable}, stream_2_enabled:#{!s2_enable}, stream_3_enabled:#{!s3_enable}, stream_4_enabled:#{!s4_enable}, " - #ret = ret^"linein_0_enabled:#{a0_in != ''}, linein_1_enabled:#{a1_in != ''}, linein_2_enabled:#{a2_in != ''}, linein_3_enabled:#{a3_in != ''}, linein_4_enabled:#{a4_in != ''}, " - #ret = ret^"lineout_0_enabled:#{a0_out != ''}, lineout_1_enabled:#{a1_out != ''}, lineout_2_enabled:#{a2_out != ''}, lineout_3_enabled:#{a3_out != ''}, lineout_4_enabled:#{a4_out != ''}, " - #ret = ret^"fallback_max_blank:#{fallback_max_blank}, fallback_min_noise:#{fallback_min_noise}, fallback_threshold:#{fallback_threshold}" - - end -) - - -def fadeTo(source_number) = - if source_number == "" then - print(source_number) - "Usage: mixer.fadeto <source nb> #{source_number}" - else - r = server.execute("mixer.select #{source_number} true") - print(r) - "Donee!" - end -end - -# enable fadeTo for the mixer -server.register(namespace = "mixer", - description = "is fading from one mixer input to another", - usage = "fadeto <source number>", - "fadeto", - fadeTo -) - -ignore(fade_in_time) -ignore(fade_out_time) - - -# Activate a source by selecting it and setting the volume to 100 (or vice versa) - -def activate(p) = - params=string.split(separator=" ", p) - if list.length(params) < 2 then - print(p) - "Usage: mixer.activate <source nb> <true|false>" - else - source_number = list.nth(default="0", params, 0) - source_enable = list.nth(default="false", params, 1) - - if source_enable == "true" then - r = server.execute("mixer.select #{source_number} true") - print(r) - r = server.execute("mixer.volume #{source_number} 100") - print(r) - else - r = server.execute("mixer.volume #{source_number} 0") - print(r) - r = server.execute("mixer.select #{source_number} false") - print(r) - end - "Done!" - end -end - -server.register(namespace = "mixer", - description = "is selecting a source and setting the volume to 100", - usage = "activate <source nb> <true|false>", - "activate", - activate -) diff --git a/src/liquidsoap/settings.liq b/src/liquidsoap/settings.liq deleted file mode 100644 index eff5ac42fcacabd200c79adbc213d7e9711933c8..0000000000000000000000000000000000000000 --- a/src/liquidsoap/settings.liq +++ /dev/null @@ -1,128 +0,0 @@ -# -# Aura Engine (https://gitlab.servus.at/aura/engine) -# -# Copyright (C) 2017-2020 - The Aura Engine Team. -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU Affero General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU Affero General Public License for more details. -# -# You should have received a copy of the GNU Affero General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - - -# READ INI FILE -%include "readini.liq" -default_config = "../../config/engine.ini" -config = list.hd(default=default_config, get_process_lines("ls /etc/aura/engine.ini")) -log("Config file used: #{config}") -ini = read_ini(config) -engine_config_folder = string.split(separator="/engine.ini", config) -engine_config_folder = list.nth(default="../../config/", engine_config_folder, 0) - -# ALLOW LIQUIDSOAP RUN AS ROOT -lqs_allow_root = list.assoc(default="false", "liquidsoap_as_root", ini) -if lqs_allow_root == "true" then - set("init.allow_root", true) -end - -# BASICS -set("console.colorize","always") - -# TELNET SETTINGS -set("server.telnet", true) -set("server.telnet.bind_addr", "0.0.0.0") -set("server.telnet.port", 1234) - -# LOG FILE SETTINGS -log_dir = list.assoc(default="", "logdir", ini) -set("log.file.path", "#{log_dir}/engine-lqs.log") - -# SOCKET SETTINGS -set("server.socket", true) -set("server.socket.path", "./<script>.sock") - -#set("request.grace_time",2.) - -# SOUND CARD SETTINGS -#print(ini) -#a0_in = ini['input_device_0'][0] -a0_in = list.assoc(default="", "input_device_0", ini) -a1_in = list.assoc(default="", "input_device_1", ini) -a2_in = list.assoc(default="", "input_device_2", ini) -a3_in = list.assoc(default="", "input_device_3", ini) -a4_in = list.assoc(default="", "input_device_4", ini) -a0_out = list.assoc(default="", "output_device_0", ini) -a1_out = list.assoc(default="", "output_device_1", ini) -a2_out = list.assoc(default="", "output_device_2", ini) -a3_out = list.assoc(default="", "output_device_3", ini) -a4_out = list.assoc(default="", "output_device_4", ini) - -input_stream_buffer = float_of_string(list.assoc(default="3.0", "input_stream_buffer", ini)) - -# AUDIO AND PLAYLIST SOURCES -audio_playlist_folder = "#{engine_config_folder}/playlists" -audio_playlist_folder = list.assoc(default=audio_playlist_folder, "audio_playlist_folder", ini) - -# FALLBACK SETTINGS -fallback_station_playlist_name = "station-fallback-playlist.m3u" -fallback_station_playlist_name = list.assoc(default=fallback_station_playlist_name, "fallback_music_playlist", ini) -fallback_station_playlist_path = "#{audio_playlist_folder}/#{fallback_station_playlist_name}" - -fallback_station_dir = list.assoc(default="/var/audio/station", "fallback_music_folder", ini) -fallback_station_dir_reload = int_of_string(list.assoc(default="300", "fallback_music_folder_reload", ini)) -fallback_max_blank = float_of_string(list.assoc(default="", "fallback_max_blank", ini)) -fallback_min_noise = float_of_string(list.assoc(default="", "fallback_min_noise", ini)) -fallback_threshold = float_of_string(list.assoc(default="", "fallback_threshold", ini)) - -# FADING SETTINGS -fade_in_time = list.assoc(default="", "fade_in_time", ini) #int_of_string(list.assoc(default="", "fade_in_time", ini)) -fade_out_time = list.assoc(default="", "fade_out_time", ini) #int_of_string(list.assoc(default="", "fade_out_time", ini)) - -# ALSA / pulse settings -soundsystem = list.assoc(default="", "soundsystem", ini) -use_alsa = soundsystem == "alsa" -use_jack = soundsystem == "jack" - -if use_alsa then - frame_duration = float_of_string(list.assoc(default="", "frame_duration", ini)) - frame_size = int_of_string(list.assoc(default="", "frame_size", ini)) - alsa_buffer = int_of_string(list.assoc(default="", "alsa_buffer", ini)) - alsa_buffer_length = int_of_string(list.assoc(default="", "alsa_buffer_length", ini)) - alsa_periods = int_of_string(list.assoc(default="", "alsa_periods", ini)) - - if frame_duration > 0.0 then - print("setting frame.duration to #{frame_duration}s") - set("frame.duration", frame_duration) - end - if frame_size > 0 then - print("setting frame.size to #{frame_size}") - set("frame.audio.size", frame_size) - end - if alsa_buffer > 0 then - print("setting alsa.buffer to #{alsa_buffer}") - set("alsa.alsa_buffer", alsa_buffer) - end - if alsa_buffer > 0 then - print("setting alsa.buffer_length to #{alsa_buffer_length}") - set("alsa.buffer_length", alsa_buffer_length) - end - if alsa_periods > 0 then - print("setting alsa.periods to #{alsa_periods}") - set("alsa.periods", alsa_periods) # assertion error when setting periods other than 0 => alsa default - end -end - -print("**************************************************************************************") -print(" AURA ENGINE - LIQUIDSOAP SETTINGS ") -print("**************************************************************************************") -print(" Engine Configuration Folder: #{engine_config_folder}") -print(" Station Fallback Playlist: #{fallback_station_playlist_path}") -print(" Station Fallback Directory: #{fallback_station_dir}") -print("**************************************************************************************") diff --git a/tests/content/License.md b/tests/content/License.md deleted file mode 100644 index 06e0520a972618c15f08d1e1365ad247968b79e9..0000000000000000000000000000000000000000 --- a/tests/content/License.md +++ /dev/null @@ -1,4 +0,0 @@ -File: ernie_mayne_sugar.mp3 -Title: Sugar, Performed by Ernie Mayne -License: Public Domain -Source: http://www.digitalhistory.uh.edu/music/music.cfm \ No newline at end of file diff --git a/tests/content/ernie_mayne_sugar.mp3 b/tests/content/ernie_mayne_sugar.mp3 deleted file mode 100644 index 18e64df55b783810a6b6a10466c8026c5bbdee67..0000000000000000000000000000000000000000 Binary files a/tests/content/ernie_mayne_sugar.mp3 and /dev/null differ diff --git a/tests/liquidsoap/test_alsa_mixer.liq b/tests/liquidsoap/test_alsa_mixer.liq deleted file mode 100644 index 8a913448302bfc6dbbca75984b0f420a7228ae69..0000000000000000000000000000000000000000 --- a/tests/liquidsoap/test_alsa_mixer.liq +++ /dev/null @@ -1,48 +0,0 @@ -# -# engine -# -# Playout Daemon for autoradio project -# -# -# Copyright (C) 2017-2018 Gottfried Gaisbauer <gottfried.gaisbauer@servus.at> -# -# This file is part of engine. -# -# engine is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# any later version. -# -# engine is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with engine. If not, see <http://www.gnu.org/licenses/>. -# - -set("log.file.path", "./<script>.log") - -set("server.telnet", true) -set("server.telnet.bind_addr", "0.0.0.0") -set("server.telnet.port", 1234) - -# ALSA / pulse settings -# durch ausprobieren herausgefunden für asus xonar dgx 5.1 -# chip: CMI8788 -# driver: snd_oxygen - -set("frame.duration", 0.30) -set("alsa.alsa_buffer", 8192) # 7168) # 6144) # 8192) # 10240) #15876 -set("alsa.buffer_length", 25) -set("alsa.periods", 0) # assertion error when setting periods other than 0 => alsa default - -input_linein = input.alsa(id="linein", bufferize = false) -#input_fs = single(id="fs", "/var/audio/fallback/output.flac") -#input_http = input.http(id="http", "http://stream.fro.at/fro-128.ogg") - -#mixer = mix(id="mixer", [input_fs, input_http, input_linein]) - -#output.alsa(id="lineout", bufferize = false, mixer) - diff --git a/tests/liquidsoap/test_alsa_settings.liq b/tests/liquidsoap/test_alsa_settings.liq deleted file mode 100644 index f1a4490728962206820c7796ccb13d19cdea12e6..0000000000000000000000000000000000000000 --- a/tests/liquidsoap/test_alsa_settings.liq +++ /dev/null @@ -1,48 +0,0 @@ -# -# engine -# -# Playout Daemon for autoradio project -# -# -# Copyright (C) 2017-2018 David Trattnig <david@subsquare.at> -# -# This file is part of engine. -# -# engine is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# any later version. -# -# engine is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with engine. If not, see <http://www.gnu.org/licenses/>. -# - -set("log.file.path", "./<script>.log") - -set("server.telnet", true) -set("server.telnet.bind_addr", "0.0.0.0") -set("server.telnet.port", 1234) - -set("frame.duration", 0.30) -set("alsa.alsa_buffer", 8192) -set("alsa.buffer_length", 25) -set("alsa.periods", 0) # assertion error when setting periods other than 0 => alsa default - -#input_linein = input.alsa(id="linein", bufferize = false) - -audio1 = single(id="fs1", "./sources/1.flac") -audio2 = single(id="fs2", "./sources/2.flac") - -#input_http = input.http(id="http", "http://stream.fro.at/fro-128.ogg") - -#mixer = mix(id="mixer", [audio1, audio2]) -#mixer = mix(id="mixer", [input_fs, input_http, input_linein]) - -mixed = add([audio1, audio2]) -output.alsa(id="lineout", bufferize = false, mixed) - diff --git a/tests/liquidsoap/test_icecast_output.liq b/tests/liquidsoap/test_icecast_output.liq deleted file mode 100644 index 04c9a0da82f3e5bf2eb9ca6ae6d0e753a7c48d32..0000000000000000000000000000000000000000 --- a/tests/liquidsoap/test_icecast_output.liq +++ /dev/null @@ -1,24 +0,0 @@ -set("log.file.path", "./<script>.log") - -#%include "readini.liq" -#ini = read_ini("/etc/aura/engine.ini") - -# output_source = mksafe(blank()) - -# %include "stream.liq" - -# stream = get_stream(0) - -# output_stream = input.external("arecord -f S16_LE -c2 -r44100 -t raw -D dsnoop:1,0 -") - -output.icecast( - %vorbis(quality = 0.5), - mount="aura-test.ogg", - host="develop.servus.at", - port=8000, - name="LQSTest", - user="source", - password="A7E7tst1", - fallible=true, - input.alsa(device="pcm.plugj") -)