osamc.de/archiv/abcnotation/scripts/midi2flac.sh

34 lines
715 B
Bash

#!/bin/bash
SOUNDFONT="${MIDI2FLAC_GMFONT:-/usr/share/soundfonts/FluidR3_GM.sf2}"
SAMPLERATE=44100
SAMPLEFORMAT="s16"
if [[ -e "$1" ]]; then
MIDI="$1"
elif [[ -e "$1.mid" ]]; then
MIDI="$1.mid"
fi
if [[ -e "${MIDI%.*}.fluid" ]]; then
OPTS="${MIDI%.*}.fluid"
elif [[ -e "midi2flac.fluid" ]]; then
OPTS="midi2flac.fluid"
fi
TMP="${TMP:-/tmp}"
AUDIO_TMP="$(mktemp "$TMP/midi2flac-XXXXXX.wav")"
BASENAME="${MIDI##*/}"
FLAC="${BASENAME%.*}.flac"
fluidsynth -nil \
-r ${SAMPLERATE} \
-O ${SAMPLEFORMAT} \
-F "$AUDIO_TMP" \
${OPTS:+-f $OPTS} \
"$SOUNDFONT" \
"$MIDI" && \
flac -f -o "$FLAC" "$AUDIO_TMP" && \
rm -f "$AUDIO_TMP" && \
echo "FLAC output file written to '$FLAC'."