+ midi.onTouchOn = function(port, data, sample_idx) {
+ var sample_buffer = sample_buffers[sample_idx];
+ var nanotouch = $('.nanotouch')[sample_idx];
+ if (typeof(sample_buffer) != 'undefined') {
+ console.log(samples[sample_idx]);
+ if (typeof(samples[sample_idx]) != 'undefined' && samples[sample_idx].context.state == 'running') {
+ samples[sample_idx].stop(0);
+ samples[sample_idx] = undefined;
+ } else {
+ var sample = audioCtx.createBufferSource();
+ samples[sample_idx] = sample;
+ sample.loop = false;
+ sample.connect(gainNode);
+ sample.buffer = sample_buffer;
+ sample.onended = function() {
+ console.log('ended');
+ $(nanotouch).removeClass('playing');
+ samples[sample_idx] = undefined;
+ }
+ $(nanotouch).addClass('playing');
+ sample.start(0);
+ }
+ }
+ }
+