This commit is contained in:
@@ -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);
|
||||
};
|
||||
Reference in New Issue
Block a user