diff --git a/src/utils/midiHelper.js b/src/utils/midiHelper.js index e93b078..c690bd6 100644 --- a/src/utils/midiHelper.js +++ b/src/utils/midiHelper.js @@ -9,6 +9,7 @@ let selectedMidiOutput = null; let selectedMidiInput = null; let onLogCallback = null; let onAllDumpReceivedCallback = null; +let selectedKeyboardInput = null; // Nouvelle fonction de rappel pour transmettre le dump reçu à Redux let onPatchReceivedCallback = null; @@ -80,6 +81,32 @@ export const changeMidiInputPort = (portId) => { }); }; +export const changeKeyboardInputPort = (portId) => { + if (!navigator.requestMIDIAccess) return; + + navigator.requestMIDIAccess({ sysex: true }).then((midiAccess) => { + const inputs = Array.from(midiAccess.inputs.values()); + const target = inputs.find(port => port.id === portId); + + if (selectedKeyboardInput) { + selectedKeyboardInput.onmidimessage = null; + } + + selectedKeyboardInput = target; + + if (selectedKeyboardInput) { + selectedKeyboardInput.onmidimessage = (event) => { + const data = Array.from(event.data); + + if (selectedMidiOutput) { + selectedMidiOutput.send(data); + logMidiActivity('out', '🎹 THRU', data); + } + }; + } + }); +}; + /** * Envoie une requête de "Current Parameter Dump" au microKORG */