]> de.git.xonotic.org Git - xonotic/mediasource.git/blobdiff - sound/weapons/tuba_loopnote_maker.sh
Klein bottle source by CuBeOwL ;)
[xonotic/mediasource.git] / sound / weapons / tuba_loopnote_maker.sh
index 2bdb3c190114daafb31845a2d2e2374577485dba..4e4ae0eda722c52213ee83dc903963589c6d18ec 100755 (executable)
@@ -1,46 +1,63 @@
 #!/bin/sh
 
-set -ex
+set -e
 
 (
        cd loopfinder
-       gcc -o findloop findloop.c -lfftw3 -Wall -Wextra -ffast-math -lsndfile -O3
+       gcc -o findloop findloop.c -lfftw3 -Wall -Wextra -ffast-math -lsndfile -lm -O3
 )
 
+t=`mktemp -dt loopfinder.XXXXXX`
+trap 'rm -rf "$t"' EXIT
+
 synth=$1; shift
 program=$1; shift
+velocity=$1; shift
+transpose=$1; shift
 tubaid=$1; shift
 
+delta=2
+fftsize=2048
+loopmin=0.5
+loopmax=1.5
+len=1.8
+
+perl tuba_loopnote_maker.mid.pl "$t"/tuba_loopnote_maker.mid $delta $program $velocity $transpose -18 -12 -6 0 6 12 18 24
+cp "$t"/tuba_loopnote_maker.mid tuba$tubaid.mid
+
 case "$synth" in
        timidity)
-               timidity -Ow -EI$program "$@" -o out.wav tuba_loopnote_maker.mid
-               normalize out.wav
+               timidity -Ow "$@" -o "$t"/out.wav "$t"/tuba_loopnote_maker.mid
                ;;
        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
+               fluidsynth -v -n -i -l -T wav -F "$t"/out.wav "$@" "$t"/tuba_loopnote_maker.mid
+               ;;
+       lmms)
+               echo "Import $t/tuba_loopnote_maker.mid into LMMS, set instrument, and export as $t/out.wav"
+               lmms
+               [ -f "$t"/out.wav ]
                ;;
 esac
 
+normalize --peak "$t"/out.wav
+
 start=0
-step=4
-loop=1.0
-len=1.5
+step=$(($delta*2))
 for note in -18 -12 -6 0 6 12 18 24; do
-       sox out.wav n$note.wav \
+       sox "$t"/out.wav "$t"/n$note.wav \
+               channels 1 \
                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
+       loopfinder/findloop "$t"/n$note.wav $fftsize $len $loopmin $loopmax "$t"/t$note.wav | while read -r SAMPLES SECONDS; do
+               oggenc -Q -q9 -o "$fn" -c "LOOP_START=$SAMPLES" "$t"/t$note.wav
        done
 
        # next!
        start=$(($start+$step))
 done
+
+exit 0