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
settings.init.allow_root.set(true)
settings.console.colorize.set("always")
#settings.request.grace_time.set(2.)
settings.server.telnet.set(true)
settings.server.telnet.bind_addr.set("0.0.0.0")
settings.server.telnet.port.set(1234)
settings.log.stdout.set(true)
settings.log.file.set(true)
log_level = int_of_string(list.assoc(default="3", "log_level", ini))
settings.log.level.set(log_level)
log_dir = list.assoc(default="../logs", "logdir", ini)
settings.log.file.path.set("#{log_dir}/engine-core.log")
settings.server.socket.set(true)
socket_dir = list.assoc(default="../socket", "socketdir", ini)
settings.server.socket.path.set("#{socket_dir}/<script>.sock")
engine_control = list.assoc(default="localhost:1337", "engine_control_host", ini)
settings.audio.converter.samplerate.converters.set(["ffmpeg","libsamplerate","native"])
settings.decoder.decoders.set(["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_max_buffer = float_of_string(list.assoc(default="5.0", "input_stream_max_buffer", ini))
input_stream_timeout = float_of_string(list.assoc(default="10.0", "input_stream_timeout", 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/fallback", "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"
engine_version = process.read("cat ../VERSION")
print("**************************************************************************************")
print("AURA Engine:Core v#{engine_version} starting ...")
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")
settings.frame.audio.samplerate.set(alsa_sample_rate)
if alsa_frame_duration > 0.0 then
print("ALSA: 'frame.duration' = #{alsa_frame_duration}s")
settings.frame.duration.set(alsa_frame_duration)
if alsa_frame_size > 0 then
print("ALSA: 'frame.audio.size' = #{alsa_frame_size}")
settings.frame.audio.size.set(alsa_frame_size)
print("ALSA: 'alsa.alsa_buffer' = #{alsa_buffer}")
settings.alsa.alsa_buffer.set(alsa_buffer)
print("ALSA: 'alsa.buffer_length' = #{alsa_buffer_length}")
settings.alsa.buffer_length.set(alsa_buffer_length)
print("ALSA: 'alsa.periods' = #{alsa_periods}")
settings.alsa.periods.set(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("**************************************************************************************")