From 5a08c5c1b0cce072c68e65dfd189b4c46d081cf4 Mon Sep 17 00:00:00 2001 From: Jim Hague Date: Sun, 1 Sep 2013 23:13:06 +0100 Subject: [PATCH] Make slow speed web audio files. --- makeWebAudio.sh | 59 +++++++++++++++++++++++++++++++++++-------------- 1 file changed, 43 insertions(+), 16 deletions(-) diff --git a/makeWebAudio.sh b/makeWebAudio.sh index 95a478c..9bf017c 100755 --- a/makeWebAudio.sh +++ b/makeWebAudio.sh @@ -16,25 +16,52 @@ builddir=$dir/web/$1 mkdir -p $builddir -# Now, for each tune, make the tune bitmap and sound. Do this to temp -# files and rename into place to make updates as atomic as possible. +# Make MP3 and OGG files for the input .abc. In case we're generating +# to a live site (which we won't be), do this to temp files and rename +# into place to make updates as atomic as possible. +makeaudiofiles() +{ + name=`basename $1 .abc` + tmpname=${name}.tmp + + abc2midi $1 -o $builddir/${tmpname}.mid + timidity -OwM -o $builddir/${tmpname}.wav $builddir/${tmpname}.mid + lame -m m -V 9 --quiet $builddir/${tmpname}.wav $builddir/${tmpname}.mp3 + # Timidity can generate OGG directly. But we need to generate WAV + # for lame, and oggenc produces smaller output. OGG is needed for + # Firefox's audio tag. FF doesn't support MP3, some others support + # MP3 but not OGG. + oggenc -Q -q 0 -o $builddir/${tmpname}.ogg $builddir/${tmpname}.wav + + mv $builddir/${tmpname}.mid $builddir/${name}.mid + mv $builddir/${tmpname}.mp3 $builddir/${name}.mp3 + mv $builddir/${tmpname}.ogg $builddir/${name}.ogg + rm $builddir/${tmpname}.wav +} + +# Generate audio files and slow speed (currently half speed) audio files. find $booke -name "*.abc" | sort | while read filename do + makeaudiofiles $filename + name=`basename $filename .abc` - tmpname=${name}.tmp + slowspeedfilename="slowspeed-${name}.abc" - abc2midi $filename -o $builddir/${tmpname}.mid - timidity -OwM -o $builddir/${tmpname}.wav $builddir/${tmpname}.mid - lame -m m -V 9 --quiet $builddir/${tmpname}.wav $builddir/${tmpname}.mp3 - # Timidity can generate OGG directly. But we need to generate WAV - # for lame, and oggenc produces smaller output. OGG is needed for - # Firefox's audio tag. FF doesn't support MP3, some others support - # MP3 but not OGG. - oggenc -Q -q 0 -o $builddir/${tmpname}.ogg $builddir/${tmpname}.wav - - mv $builddir/${tmpname}.mid $builddir/${name}.mid - mv $builddir/${tmpname}.mp3 $builddir/${name}.mp3 - mv $builddir/${tmpname}.ogg $builddir/${name}.ogg - rm $builddir/${tmpname}.wav + # Prepare slow speed audio files. + # The tempo is either a plain number, or =. + tempo=`$dir/abcfield.py --field Q $filename` + if [ -z $tempo ]; then + echo "Warning: $filename has no tempo. Using 120." + tempo="120" + fi + pos=`expr index $tempo '='` + numtempo=${tempo:pos} + notelenprefix=${tempo:0:pos} + # Make new tempo half original speed. + newtempo=$(( $numtempo / 2 )) + # Insert new tempo and delete old. Old may not exist, + # so do this rather than overwrite. + sed -e "/^Q:/d" -e "/^K:/aQ: ${notelenprefix}${newtempo}" $filename > $builddir/$slowspeedfilename + makeaudiofiles $builddir/$slowspeedfilename done