]> git.0d.be Git - nanofun.git/blobdiff - nanofun.js
limit file selector to audio files
[nanofun.git] / nanofun.js
index 9cf77735bcc10948e1f28040a878b22f32baa604..2a2a5dfbe736ec05559d9f91dde2a085aaca70ce 100644 (file)
@@ -316,8 +316,14 @@ var nanofun = function() {
 
   self.initUI = function() {
     var $nanopad = $('#nanopad');
+    var $nanotouch = $('.nanotouch');
+    for (var i=1; i<16; i++) {
+      var $new_touch = $nanotouch.clone();
+      $new_touch.attr('data-touch', i);
+      $new_touch.appendTo($nanopad);
+    }
 
-    $('.nanotouch input').on('change', function(ev) {
+    $('.nanotouch input[type=file]').on('change', function(ev) {
       var nanotouch = $(this).parent();
       var sample_idx = $nanopad.children().index(nanotouch);
       var reader = new FileReader();
@@ -342,8 +348,12 @@ var nanofun = function() {
     midi.onControlChange = function(port, data, control, value) {
       if (control > 7 && control < 16) return; /* range between sliders and pots */
       if (control > 23) return; /* after pots */
-      if (control >= 16) { control -= 8; }
-      $('.touch-gain[data-touch=' + control + ']').val(value).trigger('change');
+      if (control < 8) {
+        control += 8; /* sliders, control bottom pads (8-15) */
+      } else {
+        control -= 16; /* pots, control top pads (0-7) */
+      }
+      $('[data-touch=' + control + '] .touch-gain').val(value).trigger('change');
     }
 
     $(document).keypress(function(ev) {
@@ -360,7 +370,7 @@ var nanofun = function() {
 
     $('.touch-gain').on('change', function() {
       var fraction = parseInt(this.value) / parseInt(127);
-      var touchIdx = parseInt($(this).data('touch'));
+      var touchIdx = parseInt($(this).parent().data('touch'));
       self.touchGainNodes[touchIdx].gain.value = fraction * fraction;
     });
   }
@@ -380,7 +390,6 @@ var nanofun = function() {
         sample.connect(gainNode);
         sample.buffer = sample_buffer;
         sample.onended = function() {
-          console.log('ended');
           $(nanotouch).removeClass('playing');
           self.samples[sample_idx] = undefined;
         }
@@ -397,3 +406,15 @@ var nanofun = function() {
 }
 
 $(function() { nanofun(); });
+
+if ('serviceWorker' in navigator) {
+  window.addEventListener('load', function() {
+    navigator.serviceWorker.register('service-worker.js').then(function(registration) {
+      // Registration was successful
+      console.log('ServiceWorker registration successful with scope: ', registration.scope);
+    }).catch(function(err) {
+      // registration failed :(
+      console.log('ServiceWorker registration failed: ', err);
+    });
+  });
+}