77 lines
2.3 KiB
Bash
77 lines
2.3 KiB
Bash
|
|
# MIT License
|
|
|
|
#Copyright (c) 2025 serifpersia
|
|
|
|
#!/bin/bash
|
|
|
|
# --- Configuration ---
|
|
SINK_NAME="TASCAM-US144MKII-OUT"
|
|
SOURCE_NAME="TASCAM-US144MKII-IN"
|
|
FIFO_PLAYBACK_PATH="/tmp/tascam-audio-playback"
|
|
FIFO_CAPTURE_PATH="/tmp/tascam-audio-capture"
|
|
RATE="48000"
|
|
CHANNELS="2"
|
|
STREAMER_BINARY="./tascam_streamer"
|
|
|
|
# Set format for PulseAudio modules. Playback is s24le.
|
|
# Capture is left as s24le but will not be used by the C program.
|
|
FORMAT="s24le"
|
|
|
|
# --- Cleanup Function ---
|
|
cleanup() {
|
|
echo ""
|
|
echo "--- Running cleanup... ---"
|
|
|
|
pkill -f "$STREAMER_BINARY" 2>/dev/null
|
|
sleep 0.5
|
|
|
|
echo "Unloading PulseAudio modules..."
|
|
pactl unload-module module-pipe-sink 2>/dev/null
|
|
pactl unload-module module-pipe-source 2>/dev/null
|
|
|
|
echo "Removing FIFO files..."
|
|
rm -f "$FIFO_PLAYBACK_PATH"
|
|
rm -f "$FIFO_CAPTURE_PATH"
|
|
|
|
echo "--- Cleanup complete. ---"
|
|
exit 0
|
|
}
|
|
|
|
# Trap signals to ensure cleanup runs
|
|
trap cleanup SIGINT TERM EXIT
|
|
|
|
echo "--- Starting TASCAM Streamer Automation (PLAYBACK ONLY) ---"
|
|
|
|
rm -f "$FIFO_PLAYBACK_PATH"
|
|
rm -f "$FIFO_CAPTURE_PATH"
|
|
echo "Creating playback FIFO at $FIFO_PLAYBACK_PATH..."
|
|
mkfifo "$FIFO_PLAYBACK_PATH"
|
|
echo "Creating (unused) capture FIFO at $FIFO_CAPTURE_PATH..."
|
|
mkfifo "$FIFO_CAPTURE_PATH"
|
|
|
|
echo "Loading PulseAudio pipe-sink module for playback (Format: $FORMAT)..."
|
|
SINK_MODULE_ID=$(pactl load-module module-pipe-sink file="$FIFO_PLAYBACK_PATH" sink_name="$SINK_NAME" format=$FORMAT rate=$RATE channels=$CHANNELS)
|
|
if [ -z "$SINK_MODULE_ID" ]; then
|
|
echo "Error: Failed to load PulseAudio pipe-sink module. Aborting."
|
|
exit 1
|
|
fi
|
|
echo "Playback Sink ('$SINK_NAME') loaded with ID: $SINK_MODULE_ID"
|
|
|
|
echo "Loading (unused) PulseAudio pipe-source module for capture (Format: $FORMAT)..."
|
|
SOURCE_MODULE_ID=$(pactl load-module module-pipe-source file="$FIFO_CAPTURE_PATH" source_name="$SOURCE_NAME" format=$FORMAT rate=$RATE channels=$CHANNELS)
|
|
if [ -z "$SOURCE_MODULE_ID" ]; then
|
|
echo "Error: Failed to load PulseAudio pipe-source module. Aborting."
|
|
exit 1
|
|
fi
|
|
echo "Capture Source ('$SOURCE_NAME') loaded with ID: $SOURCE_MODULE_ID"
|
|
echo "---------------------------------------------"
|
|
|
|
echo "Starting C streamer binary for PLAYBACK ONLY..."
|
|
sudo "$STREAMER_BINARY" \
|
|
-r "$RATE" \
|
|
--playback-pipe "$FIFO_PLAYBACK_PATH"
|
|
|
|
echo "Streamer exited. Waiting for cleanup..."
|
|
wait
|