Skip to content
Snippets Groups Projects
settings.liq 7.43 KiB
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, process.read.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)
# VERSION CHECK
liq_min_version = list.assoc(default="2.1", "liquidsoap_min_version", ini)
if not liquidsoap.version.at_least(liq_min_version) then
    print("AURA Engine Core requires at least Liquidsoap v#{liq_min_version}")
    exit(1)
end

# 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.)

# TELNET SETTINGS
server_timeout = float_of_string(list.assoc(default="60.", "server_timeout", ini))
settings.server.timeout.set(server_timeout)
settings.server.telnet.set(true)
settings.server.telnet.bind_addr.set("0.0.0.0")
settings.server.telnet.port.set(1234)
# LOGGING SETTINGS
settings.log.stdout.set(true)
settings.log.file.set(true)
David Trattnig's avatar
David Trattnig committed
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")

# SOCKET SETTINGS
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)

# SOUND CARD SETTINGS
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 SETTINGS
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 = ref (true)
if use_alsa then
    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)
    end
    if alsa_buffer > 0 then
        print("ALSA: 'alsa.alsa_buffer' = #{alsa_buffer}")
        settings.alsa.alsa_buffer.set(alsa_buffer)
    if alsa_buffer_length > 0 then
        print("ALSA: 'alsa.buffer_length' = #{alsa_buffer_length}")
        settings.alsa.buffer_length.set(alsa_buffer_length)
    end
    if alsa_periods > 0 then
        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}'")

# Metadata Configuration
engine_default_track_type = list.assoc(default="0", "default_track_type", ini)
engine_fallback_show_name = ref(list.assoc(default="Station Fallback", "fallback_show_name", ini))
engine_fallback_show_id = ref(list.assoc(default="-1", "fallback_show_id", ini))
engine_api_playlog = ref(list.assoc(default="http://127.0.0.1:8008/api/v1/playlog", "api_url_playlog", ini))
engine_id = ref(list.assoc(default="1", "engine_id", ini)) # "1" or "2" used for HA setups


print("######################################################################################")