]> de.git.xonotic.org Git - xonotic/mediasource.git/blobdiff - sound/weapons/tuba_loopnote_maker.sh
add a primitive tuba loopnote maker for timidity to loopnote conversion
[xonotic/mediasource.git] / sound / weapons / tuba_loopnote_maker.sh
diff --git a/sound/weapons/tuba_loopnote_maker.sh b/sound/weapons/tuba_loopnote_maker.sh
new file mode 100755 (executable)
index 0000000..2bdb3c1
--- /dev/null
@@ -0,0 +1,46 @@
+#!/bin/sh
+
+set -ex
+
+(
+       cd loopfinder
+       gcc -o findloop findloop.c -lfftw3 -Wall -Wextra -ffast-math -lsndfile -O3
+)
+
+synth=$1; shift
+program=$1; shift
+tubaid=$1; shift
+
+case "$synth" in
+       timidity)
+               timidity -Ow -EI$program "$@" -o out.wav tuba_loopnote_maker.mid
+               normalize out.wav
+               ;;
+       fluidsynth)
+               {
+                       echo "program 0 $program"
+               } > in.cfg
+               fluidsynth -f in.cfg -n -i -l -T wav -F out.wav "$@" tuba_loopnote_maker.mid
+               normalize out.wav
+               ;;
+esac
+
+start=0
+step=4
+loop=1.0
+len=1.5
+for note in -18 -12 -6 0 6 12 18 24; do
+       sox out.wav n$note.wav \
+               trim $start $step \
+               silence 1 1s 0
+
+       fn=tuba"$tubaid"_loopnote"$note".ogg 
+
+       # now find loop point
+       loopfinder/findloop n$note.wav 4096 $len $loop t$note.wav | while read -r SAMPLES SECONDS; do
+               oggenc -q9 -o "$fn" -c "LOOP_START=$SAMPLES" t$note.wav
+       done
+
+       # next!
+       start=$(($start+$step))
+done