piano.sh: added
This commit is contained in:
parent
63d320854f
commit
08c55bd439
70
src/dot_local/bin/executable_piano.sh
Normal file
70
src/dot_local/bin/executable_piano.sh
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# Script to set up the digital piano synth without a GUI.
|
||||||
|
#
|
||||||
|
# Requires an instrument sample pack, which can be obtained from:
|
||||||
|
# - https://freepats.zenvoid.org/Piano/acoustic-grand-piano.html
|
||||||
|
# - https://linuxsampler.org/instruments.html
|
||||||
|
# This script also requires manual PipeWire configuration using, for example, qpwgraph,
|
||||||
|
# to hook the MIDI input to LinuxSampler, and then LinuxSampler to your audio output.
|
||||||
|
# Once configured, save your PipeWire patchbay as "~/.config/piano_patch.qpwgraph".
|
||||||
|
#
|
||||||
|
# Depends on: linuxsampler, netcat, pipewire-jack, qpwgraph
|
||||||
|
#
|
||||||
|
# Examples:
|
||||||
|
#
|
||||||
|
# piano.sh ~/samples/maestro_concert_grand.gig
|
||||||
|
# piano.sh ~/samples/salamander.sfz
|
||||||
|
#
|
||||||
|
# The file extension is used to recognize the file format, so it is necessary that it is correct.
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
die() {
|
||||||
|
echo "$@" > /dev/stderr
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
if [ -z "$PIANO_PATCH" ]; then
|
||||||
|
PIANO_PATCH="$HOME"/.config/piano_patch.qpwgraph
|
||||||
|
fi
|
||||||
|
PIANO_PATCH=$(realpath "$PIANO_PATCH")
|
||||||
|
|
||||||
|
INSTRUMENT="$1"
|
||||||
|
INSTRUMENT=$(realpath "$INSTRUMENT")
|
||||||
|
|
||||||
|
if [ -z "$INSTRUMENT" ]; then
|
||||||
|
die "No instrument sample pack provided. See script source for more information."
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$INSTRUMENT" in
|
||||||
|
*.gig) FORMAT="gig" ;;
|
||||||
|
*.sfz) FORMAT="sfz" ;;
|
||||||
|
*.sf2) FORMAT="sf2" ;;
|
||||||
|
*) die "Unknown format for instrument: $INSTRUMENT" ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
pw-jack linuxsampler &
|
||||||
|
|
||||||
|
cat << EOF | nc localhost 8888
|
||||||
|
|
||||||
|
SET ECHO 1
|
||||||
|
|
||||||
|
CREATE AUDIO_OUTPUT_DEVICE JACK
|
||||||
|
CREATE MIDI_INPUT_DEVICE ALSA
|
||||||
|
ADD CHANNEL
|
||||||
|
LOAD ENGINE $FORMAT 0
|
||||||
|
SET CHANNEL AUDIO_OUTPUT_DEVICE 0 0
|
||||||
|
SET CHANNEL MIDI_INPUT_DEVICE 0 0
|
||||||
|
LOAD INSTRUMENT '$INSTRUMENT' 0 0
|
||||||
|
GET CHANNEL INFO 0
|
||||||
|
QUIT
|
||||||
|
|
||||||
|
EOF
|
||||||
|
|
||||||
|
echo "Quit qpwgraph to gracefully stop piano.sh." > /dev/stderr
|
||||||
|
qpwgraph "$PIANO_PATCH"
|
||||||
|
echo "piano.sh stopping..." > /dev/stderr
|
||||||
|
|
||||||
|
# these processes love to linger around
|
||||||
|
killall -q ls-main
|
||||||
|
killall -q linuxsampler
|
Loading…
Reference in New Issue
Block a user