Have learner tunes play only the melody.
authorJim Hague <jim.hague@acm.org>
Tue, 06 Sep 2016 20:48:32 +0100
changeset 567 cb7a4eff9d5b
parent 566 912d53652d8d
child 568 c6568aedca9e
Have learner tunes play only the melody. Do this by telling timidity to mute all tracks but the first.
dottes.html.learnertune
makeWebAudio.sh
--- a/dottes.html.learnertune	Tue Sep 06 20:27:01 2016 +0100
+++ b/dottes.html.learnertune	Tue Sep 06 20:48:32 2016 +0100
@@ -21,8 +21,8 @@
 
     <div class="grid_12 dottes-body">
       <div class="dottes-tune-display">
-        <img src="../img/learner.png">Work out the tune or play along
-        with these audio players. They play the tune repeatedly. There's
+        <img src="../img/learner.png">Work out the melody or play along
+        with these audio players. They play the melody repeatedly. There's
         a variety of speeds to choose from. You can also download the
         audio files.
       </div>
@@ -59,14 +59,14 @@
             </div>
             <div class="dottes-tune-footer-centre">
               <audio controls loop>
-                <source src="../@MASTERBOOKE@/@TUNE@.mp3" type="audio/mpeg" />
-                <source src="../@MASTERBOOKE@/@TUNE@.ogg" type="audio/ogg" />
+                <source src="../@MASTERBOOKE@/normal-@TUNE@.mp3" type="audio/mpeg" />
+                <source src="../@MASTERBOOKE@/normal-@TUNE@.ogg" type="audio/ogg" />
                 <object classid="clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95">
-                  <param name="FileName" value="@TUNE@.mp3" />
+                  <param name="FileName" value="normal-@TUNE@.mp3" />
                   <param name="autoStart" value="false" />
                   <param name="autoplay" value="false" />
                   <param name="playCount" value="100000" />
-                  <object type="audio/mpeg" data="@TUNE@.mp3">
+                  <object type="audio/mpeg" data="normal-@TUNE@.mp3">
                     <param name="controller" value="true" />
                     <param name="autoplay" value="false" />
                     <param name="playCount" value="100000" />
--- a/makeWebAudio.sh	Tue Sep 06 20:27:01 2016 +0100
+++ b/makeWebAudio.sh	Tue Sep 06 20:48:32 2016 +0100
@@ -18,13 +18,13 @@
 
 # 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.
+# MP3 and OGG. $1 is the input filename, $2 is optional args for timidity.
 makeaudiofiles()
 {
     name=`basename $1 .abc`
 
     abc2midi $1 -o $builddir/${name}.mid
-    timidity -OwM -o $builddir/${name}.wav $builddir/${name}.mid
+    timidity -OwM $2 -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
@@ -38,6 +38,9 @@
 # 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.
+# These audio files are for Learner use; I've found that having the
+# chords thumping away can make it hard to distinguish the melody, so
+# arrange for timidity to mute everything except the melody track.
 makeaudiofortempo()
 {
     name=`basename $filename .abc`
@@ -58,7 +61,7 @@
     # 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
+    makeaudiofiles $builddir/$newspeedfilename --mute=0,-1
     rm $builddir/$newspeedfilename
 }
 
@@ -70,6 +73,7 @@
 
         # Now make 1/4, 1/2 and 3/4 speed audio.
         makeaudiofortempo $filename "veryslow" 1 4
-        makeaudiofortempo $filename "slow" 1 2
+        makeaudiofortempo $filename "slow" 2 4
         makeaudiofortempo $filename "littleslow" 3 4
+        makeaudiofortempo $filename "normal" 4 4
     done