Ajouter src/utils/midiHelper.js
Deploy to home / deploy (push) Successful in 12s

This commit is contained in:
cvancau
2026-08-09 16:36:17 +02:00
parent d1079523e9
commit 68b4b9f5a9
+47
View File
@@ -0,0 +1,47 @@
// Stocke l'interface MIDI physique de sortie
let activeMidiOutput = null;
/**
* Initialise l'accès à la Web MIDI API du navigateur (Exige un contexte HTTPS ou localhost)
*/
export const initWebMidi = () => {
if (navigator.requestMIDIAccess) {
navigator.requestMIDIAccess({ sysex: true }) // REQUIS pour le SysEx du microKORG
.then((midiAccess) => {
const outputs = Array.from(midiAccess.outputs.values());
if (outputs.length > 0) {
activeMidiOutput = outputs[0]; // Sélectionne par défaut la première interface physique
console.log(`[MIDI ALAPATCH] Connecté au port de sortie : ${activeMidiOutput.name}`);
} else {
console.warn("[MIDI ALAPATCH] Aucune interface de sortie MIDI physique trouvée.");
}
})
.catch(err => console.error("[MIDI ALAPATCH] Accès refusé par le navigateur : ", err));
} else {
console.error("[MIDI ALAPATCH] Ce navigateur ne gère pas l'API Web MIDI.");
}
};
/**
* Transmet un message de changement de paramètre (Parameter Change) en SysEx
* @param {number} parameterId - L'adresse interne du bouton (ex: 0x1E pour le Cutoff)
* @param {number} value - La valeur du curseur (0 à 127)
*/
export const sendMicroKorgParam = (parameterId, value) => {
if (!activeMidiOutput) return; // Si aucune carte MIDI n'est branchée, on ignore
// Trame System Exclusive standard du protocole Korg microKORG Original (2002)
const sysExMessage = [
0xF0, // Début du message SysEx
0x42, // Identification du fabricant (Korg)
0x30, // Canal MIDI Global (0x30 = Canal 1)
0x58, // Identification du modèle (microKORG)
0x41, // Type de commande : Parameter Change
parameterId, // ID du potentiomètre ciblé (ex: 30 pour le Cutoff)
value, // Position du curseur (0-127)
0xF7 // Fin du message SysEx
];
// Envoi physique immédiat dans le câble USB-MIDI
activeMidiOutput.send(sysExMessage);
};