--- /dev/null
+#!/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