Mercurial > dottes
view makeWebAudio.sh @ 394:ae9c05d2aafd
Make slow speed web audio files.
author | Jim Hague <jim.hague@acm.org> |
---|---|
date | Sun, 01 Sep 2013 23:13:06 +0100 |
parents | c5d404bf68a3 |
children | aeef7b1ca0ad |
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. 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` slowspeedfilename="slowspeed-${name}.abc" # Prepare slow speed audio files. # The tempo is either a plain number, or <notelen>=<number>. 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