Newer
Older
#
# 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-core.ini"
config = list.hd(default=default_config, get_process_lines("ls /etc/aura/engine-core.ini"))
log("Config file used: #{config}")
ini = read_ini(config)
engine_config_folder = string.split(separator="/engine-core.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)
# LOGGING SETTINGS
set("log.stdout", true)
set("log.file", true)
log_level = int_of_string(list.assoc(default="3", "log_level", ini))
set("log.level", log_level)
log_dir = list.assoc(default="../logs", "logdir", ini)
set("log.file.path", "#{log_dir}/engine-core.log")
# SOCKET SETTINGS
set("server.socket", true)
socket_dir = list.assoc(default="../socket", "socketdir", ini)
set("server.socket.path", "#{socket_dir}/<script>.sock")
engine_control = list.assoc(default="localhost:1337", "engine_control_host", ini)
set("audio.converter.samplerate.converters",["ffmpeg","libsamplerate","native"])
set("decoder.file_decoders",["META","WAV","AIFF","FLAC","AAC","MP4","OGG","MAD"])
#print(ini)
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_type = list.assoc(default="folder", "fallback_type", ini)
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"
print("**************************************************************************************")
print(" AURA ENGINE:CORE - LIQUIDSOAP SETTINGS ")
print("**************************************************************************************")
alsa_use_buffer := bool_of_string(list.assoc(default="true", "alsa_use_buffer", ini))
print("ALSA: I/O bufferize=#{!alsa_use_buffer}")
alsa_sample_rate = int_of_string(list.assoc(default="", "alsa_sample_rate", ini))
alsa_frame_duration = float_of_string(list.assoc(default="", "alsa_frame_duration", ini))
alsa_frame_size = int_of_string(list.assoc(default="", "alsa_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 alsa_sample_rate > 0 then
print("ALSA: 'frame.audio.samplerate' to #{alsa_sample_rate}Hz")
set("frame.audio.samplerate", alsa_sample_rate)
if alsa_frame_duration > 0.0 then
print("ALSA: 'frame.duration' = #{alsa_frame_duration}s")
set("frame.duration", alsa_frame_duration)
if alsa_frame_size > 0 then
print("ALSA: 'frame.audio.size' = #{alsa_frame_size}")
set("frame.audio.size", alsa_frame_size)
print("ALSA: 'alsa.alsa_buffer' = #{alsa_buffer}")
set("alsa.alsa_buffer", alsa_buffer)
end
print("ALSA: 'alsa.buffer_length' = #{alsa_buffer_length}")
set("alsa.buffer_length", alsa_buffer_length)
end
if alsa_periods > 0 then
print("ALSA: 'alsa.periods' = #{alsa_periods}")
set("alsa.periods", alsa_periods)
print("Engine Configuration Folder: '#{engine_config_folder}'")
print("Station Fallback Playlist: '#{fallback_station_playlist_path}'")
print("Station Fallback Directory: '#{fallback_station_dir}'")
print("**************************************************************************************")