]> de.git.xonotic.org Git - xonotic/mediasource.git/blob - sound/weapons/tuba_loopnote_maker.sh
ce9fd9bd24032c036a0b10175f186958a8034b6f
[xonotic/mediasource.git] / sound / weapons / tuba_loopnote_maker.sh
1 #!/bin/sh
2
3 set -ex
4
5 (
6         cd loopfinder
7         gcc -o findloop findloop.c -lfftw3 -Wall -Wextra -ffast-math -lsndfile -O3
8 )
9
10 synth=$1; shift
11 program=$1; shift
12 tubaid=$1; shift
13
14 case "$synth" in
15         timidity)
16                 timidity -Ow -EI$program "$@" -o out.wav tuba_loopnote_maker.mid
17                 normalize out.wav
18                 ;;
19         fluidsynth)
20                 {
21                         echo "prog 0 $program"
22                 } > in.cfg
23                 fluidsynth -v -f in.cfg -n -i -l -T wav -F out.wav "$@" tuba_loopnote_maker.mid
24                 normalize out.wav
25                 ;;
26 esac
27
28 start=0
29 step=4
30 loop=1.0
31 len=1.5
32 for note in -18 -12 -6 0 6 12 18 24; do
33         sox out.wav n$note.wav \
34                 trim $start $step \
35                 silence 1 1s 0
36
37         fn=tuba"$tubaid"_loopnote"$note".ogg 
38
39         # now find loop point
40         loopfinder/findloop n$note.wav 4096 $len $loop t$note.wav | while read -r SAMPLES SECONDS; do
41                 oggenc -q9 -o "$fn" -c "LOOP_START=$SAMPLES" t$note.wav
42         done
43
44         # next!
45         start=$(($start+$step))
46 done