Files
pulse-soundboard/start_soundboard.sh

41 lines
1.1 KiB
Bash
Executable File

#!/usr/bin/env bash
set -e
STATE="$HOME/.soundboard"
mkdir -p "$STATE"
# Defaults
MIC=$(pactl get-default-source)
# 1. Create a null sink (soundboard mixer)
if ! pactl list short sinks | grep -q soundboard_sink; then
SINK_ID=$(pactl load-module module-null-sink \
sink_name=soundboard_sink \
sink_properties=device.description=SoundboardSink)
echo "$SINK_ID" > "$STATE/nullsink.id"
fi
# 2. Create virtual microphone
if ! pactl list short sources | grep -q soundboard_mic; then
SRC_ID=$(pactl load-module module-remap-source \
master=soundboard_sink.monitor \
source_name=soundboard_mic \
source_properties=device.description=SoundboardMic)
echo "$SRC_ID" > "$STATE/remap.id"
fi
# 3. Route REAL mic into the mixer
if ! pactl list short modules | grep -q "module-loopback.*$MIC"; then
LOOP_ID=$(pactl load-module module-loopback \
source="$MIC" \
sink=soundboard_sink \
latency_msec=5)
echo "$LOOP_ID" > "$STATE/micloop.id"
fi
# 4. Set virtual mic as default
pactl set-default-source soundboard_mic
echo "Soundboard ready."
echo "Select 'SoundboardMic' in apps if needed."