2026 Migration to Pipewire + BitWig.

This commit is contained in:
2026-06-10 14:16:02 -05:00
parent ee169b0e01
commit a75257a7b0
39 changed files with 256 additions and 1236 deletions
-11
View File
@@ -1,11 +0,0 @@
#!/bin/bash
for filename in worship.wavex altar.wavex; do
name=${filename%.wavex}
ffmpeg -i "$filename" -filter_complex 'channelsplit=channel_layout=4.1[L][R][B][X][Y]' \
-map '[L]' "${name}-m48.wav" \
-map '[R]' "${name}-drums.wav" \
-map '[X]' "${name}-synth-L.wav" \
-map '[Y]' "${name}-synth-R.wav" \
-map '[B]' "${name}-bass.wav"
done
-9
View File
@@ -1,9 +0,0 @@
#!/bin/bash
for filename in worship.wavex altar.wavex; do
name=${filename%.wavex}
ffmpeg -i "$filename" -filter_complex 'channelsplit=channel_layout=2.1[L][R][B]' \
-map '[L]' "${name}-m48.wav" \
-map '[R]' "${name}-drums.wav" \
-map '[B]' "${name}-bass.wav"
done
-2
View File
@@ -1,2 +0,0 @@
#!/bin/bash
jack_capture --channels 3 --port system:capture_3 --port system:capture_4 --port system:capture_1 "$@"
-2
View File
@@ -1,2 +0,0 @@
#!/bin/bash
jack_capture -jt --channels 1 --port system:capture_3 sermon.wavex
-18
View File
@@ -1,18 +0,0 @@
#!/bin/bash
# Worship
jack_capture --channels 3 \
--port system:capture_3 \
--port system:capture_4 \
--port system:capture_1 \
worship.wavex
# sermon
jack_capture --channels 1 --port system:capture_3 sermon.wavex
# altar
jack_capture --channels 3 \
--port system:capture_3 \
--port system:capture_4 \
--port system:capture_1 \
altar.wavex
-10
View File
@@ -1,10 +0,0 @@
#!/bin/bash
# Worship
jack_capture --channels 5 --port system:capture_3 --port system:capture_4 --port system:capture_1 --port yoshimi:left --port yoshimi:right worship.wavex
# sermon
jack_capture --channels 1 --port system:capture_3 sermon.wavex
# altar
jack_capture --channels 5 --port system:capture_3 --port system:capture_4 --port system:capture_1 --port yoshimi:left --port yoshimi:right altar.wavex
-4
View File
@@ -1,4 +0,0 @@
#!/bin/bash
name=${1%.wavex}
avconv -i "$1" -filter_complex 'channelsplit=channel_layout=2.1[L][R][B]' -map '[L]' "${name}-m48.wav" -map '[R]' "${name}-drums.wav" -map '[B]' "${name}-bass.wav"
+82
View File
@@ -0,0 +1,82 @@
#!/usr/bin/env bash
set -euo pipefail
usage() {
cat <<'USAGE'
Usage: ./set-pipewire-latency.sh COMMAND [QUANTUM] [RATE]
Commands:
status Show current PipeWire clock/quantum settings.
on [Q] [RATE] Force a low-latency graph quantum. Defaults: Q=128 RATE=48000.
off Clear forced quantum/rate and return to normal PipeWire behavior.
Useful quantum values at 48 kHz:
256 about 5.3 ms per block, safer
128 about 2.7 ms per block, good stage starting point
64 about 1.3 ms per block, lower latency but higher dropout risk
USAGE
}
metadata() {
pw-metadata -n settings "$@"
}
status() {
local output
output="$(pw-metadata -n settings)"
printf '%s\n' "$output" | grep -E "clock\\.(rate|quantum|min-quantum|max-quantum|force-quantum|force-rate)" || true
local rate quantum forced_quantum
rate="$(printf '%s\n' "$output" | awk -F"'" '/clock.rate/ { print $4; exit }')"
quantum="$(printf '%s\n' "$output" | awk -F"'" '/clock.quantum/ { print $4; exit }')"
forced_quantum="$(printf '%s\n' "$output" | awk -F"'" '/clock.force-quantum/ { print $4; exit }')"
if [[ -n "$rate" && -n "$quantum" ]]; then
awk -v q="$quantum" -v r="$rate" 'BEGIN { printf "\nCurrent block latency: %.2f ms at %s Hz\n", (q / r) * 1000, r }'
fi
if [[ "${forced_quantum:-0}" != "0" ]]; then
printf 'Low-latency override: ON\n'
else
printf 'Low-latency override: OFF\n'
fi
}
set_low_latency() {
local quantum="${1:-128}"
local rate="${2:-48000}"
if ! [[ "$quantum" =~ ^[0-9]+$ && "$rate" =~ ^[0-9]+$ ]]; then
printf 'Quantum and rate must be numeric.\n' >&2
exit 2
fi
metadata 0 clock.force-rate "$rate" >/dev/null
metadata 0 clock.force-quantum "$quantum" >/dev/null
awk -v q="$quantum" -v r="$rate" 'BEGIN { printf "Forced PipeWire quantum %s at %s Hz, about %.2f ms per block\n", q, r, (q / r) * 1000 }'
}
clear_low_latency() {
metadata 0 clock.force-quantum 0 >/dev/null
metadata 0 clock.force-rate 0 >/dev/null
printf 'Cleared PipeWire forced quantum/rate.\n'
}
case "${1:-}" in
status)
status
;;
on)
set_low_latency "${2:-128}" "${3:-48000}"
;;
off)
clear_low_latency
;;
-h|--help|help|'')
usage
;;
*)
usage >&2
exit 2
;;
esac
-12
View File
@@ -1,12 +0,0 @@
#!/bin/bash
qjackctl -s -p Church48K &
echo "Waiting 4sec to let JACK start."
sleep 4.0s
jack-rack -s bass /home/music/projects/music-production/jack-rack-presets/newlife/yamaha-trb &
jack-rack -s mix /home/music/projects/music-production/jack-rack-presets/newlife/m48-mix &
jack-rack -s mix_drums /home/music/projects/music-production/jack-rack-presets/newlife/drums &
jack-rack -s headphones /home/music/projects/music-production/jack-rack-presets/newlife/headphones &
meterbridge -n meter -t dpm x x x x x &
echo "Waiting 2 sec to let all the apps start."
sleep 2.0s
devilspie &
@@ -1,15 +0,0 @@
#!/bin/bash
qjackctl -s -p Church48K &
echo "Waiting 4sec to let JACK start."
sleep 4.0s
jack-rack -s bass /home/music/projects/music-production/jack-rack-presets/newlife/yamaha-trb &
jack-rack -s mix /home/music/projects/music-production/jack-rack-presets/newlife/m48-mix &
jack-rack -s mix_drums /home/music/projects/music-production/jack-rack-presets/newlife/drums &
jack-rack -s headphones /home/music/projects/music-production/jack-rack-presets/newlife/headphones &
meterbridge -n meter_bass -t dpm x x x x &
meterbridge -n meter_m48 -t dpm x x &
yoshimi -c &
a2jmidid &
echo "Waiting 2 sec to let all the apps start."
sleep 2.0s
devilspie &
-16
View File
@@ -1,16 +0,0 @@
#!/bin/bash
qjackctl -s -p Church48K &
echo "Waiting 4sec to let JACK start."
sleep 4.0s
jack-rack -s bass /home/music/projects/music-production/jack-rack-presets/newlife/yamaha-trb &
jack-rack -s bass2 /home/music/projects/music-production/jack-rack-presets/newlife/bass2 &
jack-rack -s mix /home/music/projects/music-production/jack-rack-presets/newlife/m48-mix &
jack-rack -s mix_drums /home/music/projects/music-production/jack-rack-presets/newlife/drums &
jack-rack -s headphones /home/music/projects/music-production/jack-rack-presets/newlife/headphones &
jack-rack -s headphones2 /home/music/projects/music-production/jack-rack-presets/newlife/headphones2 &
meterbridge -n meter_bass -t dpm x x x &
meterbridge -n meter_bass2 -t dpm x x x &
meterbridge -n meter_m48 -t dpm x x &
echo "Waiting 2 sec to let all the apps start."
sleep 2.0s
devilspie &
-9
View File
@@ -1,9 +0,0 @@
#!/bin/bash
qjackctl -s -p Onboard48K &
echo "Waiting 4sec to let JACK start."
sleep 4.0s
jack-rack -s bass /home/music/projects/music-production/jack-rack-presets/home/yamaha-trb &
#jack-rack -s mix /home/music/projects/music-production/jack-rack-presets/M48-Mix &
#jack-rack -s mix_drums /home/music/projects/music-production/jack-rack-presets/M48-Mix-Drums &
jack-rack -s headphones /home/music/projects/music-production/jack-rack-presets/home/headphones &
j2amidi_bridge &
-8
View File
@@ -1,8 +0,0 @@
#!/bin/bash
qjackctl -s -p Onboard48K &
echo "Waiting 4sec to let JACK start."
sleep 4.0s
jack-rack -s bass /home/music/projects/music-production/jack-rack-presets/onboard/yamaha-trb &
#jack-rack -s mix /home/music/projects/music-production/jack-rack-presets/M48-Mix &
#jack-rack -s mix_drums /home/music/projects/music-production/jack-rack-presets/M48-Mix-Drums &
jack-rack -s headphones /home/music/projects/music-production/jack-rack-presets/onboard/headphones &