This commit is contained in:
Logan
2026-04-12 03:05:48 -04:00
parent 26d21d42e1
commit 33cad7ed24
7 changed files with 91 additions and 49 deletions
@@ -27,18 +27,25 @@ input = compress(input, attack = 2.0, gain = 0.0, knee = 13.0, ratio = 2.0, rele
input = normalize(input, gain_max = 6.0, gain_min = -6.0, target = -16.0, threshold = -65.0)
# ==========================================================
# OUTPUT: Referencing the new variables
# OUTPUTS
# ==========================================================
# Primary: PulseAudio null sink — used by edge-node for Discord streaming and call recording.
# The edge-node reads from the drb_sink.monitor source (set as PulseAudio default source).
output.pulseaudio(mean(input))
# Secondary: Icecast — for browser-based listening only (local node UI / server stream page).
# Do NOT use Icecast for recording or Discord; it introduces 2-5s buffering lag.
output.icecast(
%mp3(bitrate=16, samplerate=22050, stereo=false),
description=ICE_DESCRIPTION,
genre=ICE_GENRE,
url="",
fallible=false,
host=ICE_HOST,
port=ICE_PORT,
mount=ICE_MOUNT,
password=ICE_PASSWORD,
%mp3(bitrate=16, samplerate=22050, stereo=false),
description=ICE_DESCRIPTION,
genre=ICE_GENRE,
url="",
fallible=false,
host=ICE_HOST,
port=ICE_PORT,
mount=ICE_MOUNT,
password=ICE_PASSWORD,
mean(input)
)
"""
+2
View File
@@ -4,6 +4,8 @@
# The -D flag starts it as a daemon.
# The --exit-idle-time=-1 prevents it from automatically shutting down.
echo "Starting PulseAudio daemon..."
mkdir -p /run/pulse
chmod 777 /run/pulse
pulseaudio -D --exit-idle-time=-1 --system
# Wait a moment for PulseAudio to initialize
+12 -6
View File
@@ -1,16 +1,22 @@
# PulseAudio system daemon configuration for DRB containers.
# Allows anonymous connections so the edge-node container can read the audio monitor.
#
# Audio architecture:
# Liquidsoap (op25 container) → output.pulseaudio() → drb_sink (null sink)
# FFmpeg (edge-node container) → -f pulse -i default → drb_sink.monitor
#
# Icecast is a secondary output for browser listening only.
# PulseAudio is the primary path for Discord streaming and call recording.
.nofail
# Native protocol with anonymous auth — required for inter-container access
load-module module-native-protocol-unix socket=/run/pulse/native auth-anonymous=1
# Always provide a default sink even without audio hardware
load-module module-always-sink
# Named null sink — Liquidsoap outputs here; edge-node records from its monitor
load-module module-null-sink sink_name=drb_sink sink_properties=device.description=DRB-Sink
# Restore device/stream settings across restarts
load-module module-device-restore
load-module module-stream-restore
# Make the sink and its monitor the system defaults
set-default-sink drb_sink
set-default-source drb_sink.monitor
.fail