From 795e1064ed498457dfc122b5ef91f4b2496a62e1 Mon Sep 17 00:00:00 2001 From: Jules Laplace Date: Thu, 9 Aug 2018 15:40:39 +0200 Subject: woo it generates midi --- client/index.js | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) (limited to 'client/index.js') diff --git a/client/index.js b/client/index.js index 65e7ddd..da07d12 100644 --- a/client/index.js +++ b/client/index.js @@ -1,4 +1,5 @@ import Tone from 'tone' +import WebMidi from 'webmidi' import 'nexusui' import keys from './lib/keys' import color from './lib/color' @@ -8,20 +9,43 @@ import { mod, browser, requestAudioContext } from './lib/util' const nx = window.nx -const noteCount = browser.isMobile ? 18 : 24 +const noteCount = browser.isMobile ? 18 : 36 const stepCount = 16 const cellSize = browser.isMobile ? 20 : 27 const baseTone = browser.isMobile ? 8 : 12 -let grid +let grid, midi + +WebMidi.enable(midi_ready) + +function midi_ready(err) { + if (err) { + console.error('webmidi failed to initialize') + return + } + if (!WebMidi.outputs.length) { + console.error('no MIDI output found') + } + console.log(WebMidi.inputs) + console.log(WebMidi.outputs) + midi = WebMidi.outputs[0] +} var loop = new Tone.Sequence(function(time, col){ var column = grid.matrix[col] grid.jumpToCol(col) for (var i = 0; i < noteCount; i++){ if (column[i] === 1){ - const freq = scales.current().index(noteCount - i - baseTone) - kalimba.play(freq) + const index = noteCount - i - baseTone + const freq = scales.current().index(index) + const midi_note = Tone.Frequency.ftom(freq) + const midi_freq = Tone.Frequency.mtof(midi_note) + console.log(midi_note, freq, midi_freq, freq - midi_freq) + if (midi) { + midi.playNote(Tone.Frequency(midi_note, "midi").toNote(), 3, { duration: 90000 / Tone.Transport.bpm.value }) + } else { + kalimba.play(freq) + } } } }, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15], "16n") -- cgit v1.2.3-70-g09d2