view makeWebAudio.sh @ 510:0a75c953c3c8 build-default-216

Add the Pugwash theme, aka the Trumpet Hornpipe. I've checked this against YouTube and the first episode, and corrected an obvious wrong note in Paul Hardy's version. But I've kept his descending triplets in the last line of the B tune - the original has the same note, with descending chords, but changing the triplets to remain on G doesn't sound right.
author Jim Hague <jim.hague@acm.org>
date Fri, 01 Aug 2014 23:41:42 +0100
parents f1c4abe4fc75
children cb7a4eff9d5b
line wrap: on
line source

#!/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

# Make MP3 and OGG files for the input .abc. Since we're listening to
# a doorbell playing the tunes, go for lowest quality (and hence smallest)
# MP3 and OGG.
makeaudiofiles()
{
    name=`basename $1 .abc`

    abc2midi $1 -o $builddir/${name}.mid
    timidity -OwM -o $builddir/${name}.wav $builddir/${name}.mid
    lame -m m -V 9 --quiet $builddir/${name}.wav $builddir/${name}.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/${name}.ogg $builddir/${name}.wav

    rm $builddir/${name}.wav
}

# Make audio for a new tempo for the abc file $1, giving the output files
# the same name with a prefix $2. The new tempo is the original tempo
# (120 used if not specified), multiplied by $3 and divided by $4.
makeaudiofortempo()
{
    name=`basename $filename .abc`
    newspeedfilename="$2-${name}.abc"

    # Prepare new speed audio files.
    # The tempo is either a plain number, or <notelen>=<number>.
    tempo=`$dir/abcfield.py --field Q $1`
    if [ -z $tempo ]; then
        echo "Warning: $1 has no tempo. Using 120."
        tempo="120"
    fi
    pos=`expr index $tempo '='`
    numtempo=${tempo:pos}
    notelenprefix=${tempo:0:pos}
    # Calculate new tempo.
    newtempo=$(( ( $numtempo * $3 ) / $4 ))
    # 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}" $1 > $builddir/$newspeedfilename
    makeaudiofiles $builddir/$newspeedfilename
    rm $builddir/$newspeedfilename
}

# Generate audio files and slow speed (currently half speed) audio files.
find $booke -name "*.abc" | sort |
    while read filename
    do
        makeaudiofiles $filename

        # Now make 1/4, 1/2 and 3/4 speed audio.
        makeaudiofortempo $filename "veryslow" 1 4
        makeaudiofortempo $filename "slow" 1 2
        makeaudiofortempo $filename "littleslow" 3 4
    done