makeWebAudio.sh
author Jim Hague <jim.hague@acm.org>
Wed, 28 Aug 2013 11:54:45 +0100
changeset 369 e5f59f0e7dd5
parent 223 0ef955669a9a
child 393 c5d404bf68a3
permissions -rwxr-xr-x
Add audio player to tune web page. Add an <audio> tag to the bottom centre of the tune web page. Give it options for MP3 and OGG files. Most browsers will play MP3, and the ones that won't (Firefox) will play OGG. Since we now have to generate OGGs, add a download link as well.

#!/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 -Ow -o $builddir/${tmpname}.wav $builddir/${tmpname}.mid
        lame --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 -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