Removed songs I really don't like or rarely do.
[songbook.git] / web / songbook.js
index 331ed31..036a4a2 100644 (file)
@@ -1,21 +1,28 @@
 // Javascript functions for controlling audio
-starttime = null;
-endtime   = null;
+starttime = 0;
+endtime   = 0;
+song      = null;
+interval  = null;
 
 // Keycodes
 spacebar       = 32;
 leftarrow      = 37;
-uparrow        = 38;
 rightarrow     = 39;
-downarrow      = 40;
 seta           = 65;
-backfewsecs    = 66;
+setb           = 66;
 cleara         = 67;
-forwardfewsecs = 70;
 return2start   = 82;
 
 howmanysecs    = 10;
 
+function loop() {
+  // If endtime is not set then we can't loop
+  if (endtime == 0) return;
+
+  // if we're past the endtime then it's time to start back at the A marker
+  if (song.currentTime > endtime) song.currentTime = starttime;
+} // loop
+
 window.onload = function() {
   song = document.getElementById('song');
 
@@ -23,6 +30,11 @@ window.onload = function() {
   endtime   = song.duration;
   body      = document.getElementsByTagName('body')[0]
 
+  if (!song.paused) {
+   // Set up loop
+   interval = setInterval(loop, 1000);
+  } // if
+
   body.onkeydown = 
     function(e) {
       var ev = e || event;
@@ -34,6 +46,8 @@ window.onload = function() {
         } // if
 
         if (playing) {
+          // Stop loop
+          clearInterval(interval)
           song.pause();
           playing = false;
         } else {
@@ -41,13 +55,16 @@ window.onload = function() {
             song.currentTime = starttime
           } // if
 
+          // Set up loop
+          interval = setInterval(loop, 1000);
+
           song.play();
           playing = true;
         } // if
 
         e.preventDefault();
         return;
-      } else if (ev.keyCode == return2start || ev.keyCode == uparrow) {
+      } else if (ev.keyCode == return2start) {
         if (starttime != null) {
           song.currentTime = starttime;
         } else {
@@ -55,22 +72,37 @@ window.onload = function() {
         } // if
 
         return;
-      } else if (ev.keyCode == backfewsecs || ev.keyCode == leftarrow) {
+      } else if (ev.keyCode == leftarrow) {
         song.currentTime -= howmanysecs;
         song.play()
 
         return;
-      } else if (ev.keyCode == forwardfewsecs || ev.keyCode == rightarrow) {
+      } else if (ev.keyCode == rightarrow) {
         song.currentTime += howmanysecs;
         song.play();
 
         return;
       } else if (ev.keyCode == seta) {
+        // Reset endtime if setting a new A marker
+        if (endtime != song.duration) endtime = song.duration;
+
         starttime = song.currentTime;
 
+        // Translate seconds to timecode
+        document.getElementById('a').innerHTML = Math.floor(starttime / 60) + ':' + Math.floor(starttime % 60);
+
         return;
+      } else if (ev.keyCode == setb) {
+        if (song.currentTime > starttime) {
+          endtime = song.currentTime;
+          document.getElementById('b').innerHTML = Math.floor(endtime / 60) + ':' + Math.floor(endtime % 60);
+        } // if
       } else if (ev.keyCode == cleara) {
         starttime = 0;
+        endtime   = song.duration;
+
+        document.getElementById('a').innerHTML = '<font color=#666><i>not set</i></font>';
+        document.getElementById('b').innerHTML = '<font color=#666><i>not set</i></font>';
 
         return;
       } // if