]> git.0d.be Git - nanofun.git/blobdiff - nanofun.js
add some knobs for effects
[nanofun.git] / nanofun.js
index fd4dcbddecc9bcd4c49f8cea5633f70ad910cd43..6b8ba95700f9c0c466e39e84c223081b626fd68a 100644 (file)
@@ -303,6 +303,21 @@ var nanofun = function() {
       self.touchGainNodes[i].connect(self.masterGainNode);
     }
     self.masterGainNode.connect(self.audioCtx.destination);
+
+    self.delay = self.audioCtx.createDelay(maxDelayTime=5);
+    self.delay.delayTime.value = 0.5;
+
+    self.feedback = self.audioCtx.createGain();
+    self.feedback.gain.value = 0.8;
+
+    self.filter = self.audioCtx.createBiquadFilter();
+    self.filter.frequency.value = 1000;
+
+    self.delay.connect(self.feedback);
+    self.feedback.connect(self.filter);
+    self.filter.connect(self.delay);
+
+    self.masterGainNode.connect(self.delay);
   }
 
   self.initMIDI = function() {
@@ -374,6 +389,24 @@ var nanofun = function() {
       self.masterGainNode.gain.value = fraction * fraction;
     });
 
+    $('#delay').on('change', function() {
+      var value = this.value;
+      if (value == 0) {
+        self.delay.disconnect();
+      } else {
+        self.delay.delayTime.value = value;
+        self.delay.connect(self.audioCtx.destination);
+      }
+    });
+
+    $('#feedback').on('change', function() {
+      self.feedback.gain.value = this.value;
+    });
+
+    $('#filter').on('change', function() {
+      self.filter.frequency.value = this.value;
+    });
+
     $('.touch-gain').on('change', function() {
       var fraction = parseInt(this.value) / parseInt(127);
       var touchIdx = parseInt($(this).parent().data('touch'));