X-Git-Url: https://git.xonotic.org/?a=blobdiff_plain;f=sound%2Fweapons%2Ftuba_loopnote_maker.sh;h=4e4ae0eda722c52213ee83dc903963589c6d18ec;hb=437fe87026eb24fadee21ee2580ac6d104f3ec87;hp=ce9fd9bd24032c036a0b10175f186958a8034b6f;hpb=d560eeb0ae4d1c38ecff12ecb4f06108ff05e0a5;p=xonotic%2Fmediasource.git diff --git a/sound/weapons/tuba_loopnote_maker.sh b/sound/weapons/tuba_loopnote_maker.sh index ce9fd9b..4e4ae0e 100755 --- a/sound/weapons/tuba_loopnote_maker.sh +++ b/sound/weapons/tuba_loopnote_maker.sh @@ -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 "prog 0 $program" - } > in.cfg - fluidsynth -v -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