makeWebAudio.sh
author Jim Hague <jim.hague@acm.org>
Sun, 01 Sep 2013 22:24:58 +0100
changeset 393 c5d404bf68a3
parent 369 e5f59f0e7dd5
child 394 ae9c05d2aafd
permissions -rwxr-xr-x
Reduce size of generated audio files. Set Timidity to produce mono output and crank up the compression on MP3 and OGGs.

#!/bin/bash
#
# Make audio required for the website but not for the book.
# They go into web/<book>.
#

if [ $# != 1 ]; then
    echo "Usage: makeWebAudio.sh <book dir name>"
    exit 1
fi

dir=`pwd`

booke=$dir/$1
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.
find $booke -name "*.abc" | sort |
    while read filename
    do
        name=`basename $filename .abc`
        tmpname=${name}.tmp

        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
    done