Chargement...
 
Skip to main content

6 - Le MIDI


Codage pour microcontrôleur Arduino [Résolu]

Bonjour,
Je suis sur Librazik3.
Je voudrais midifier un clavier avec ma carte arduino 2560 en utilisant chaque pin pour une note distincte.
En utilisant hairless-midiserial avec QjackCtl, ce sketch que je téléverse avec l'IDE d'Arduino fonctionne bien, mais il n'est pas exploitable avec un instrument virtuel. Le message qui s'affiche sur Gmidimonitor lorsque je connecte GND aux pins 2,3,4 ou 5 est:
Channel 1 / Message: Program change, 0 (acoustic piano)...

Pouvez-vous m'aider à écrire le code pour que chacun de mes pins envoie une note différente à mon ordinateur et qu'elles puissent être jouées par un instrument virtuel ?

Copy to clipboard
#include <MIDI.h> MIDI_CREATE_DEFAULT_INSTANCE(); int mem [] = { 0, 0, 0, 0 }; void setup() { MIDI.begin(MIDI_CHANNEL_OMNI); pinMode(2, INPUT_PULLUP); pinMode(3, INPUT_PULLUP); pinMode(4, INPUT_PULLUP); pinMode(5, INPUT_PULLUP); } void loop() { int sensorVal [] = { !digitalRead(2), !digitalRead(3), !digitalRead(4), !digitalRead(5) }; for (int j = 0; j < 4; j++) { if (sensorVal[j] != mem [j]) { mem[j] = sensorVal[j]; if (mem[j]) { MIDI.sendNoteOn(j + 48, 64, 1); } else { MIDI.sendNoteOff(j + 48, 64, 1); } } } }

France
Pourrais-tu préciser comment les 'composants' (Arduino, midiserial, Qjack, Gmidimonitor,...) sont reliés entre-eux ? Les messages reçus par midiserial sont bien ceux attendus ?
Voici une image de ma configuration...

Arduino Jack GMidiMon
Merci ça marche!
J'ai du rajouté le taux de transmission dans la configuration:

Copy to clipboard
void setup() { MIDI.begin(MIDI_CHANNEL_OMNI); Serial.begin(38400); pinMode(2, INPUT_PULLUP); pinMode(3, INPUT_PULLUP); pinMode(4, INPUT_PULLUP); pinMode(5, INPUT_PULLUP); }


Je suis en train de midifier deux claviers d'orgue de 61 touches. Il me reste à tout brancher et à injecter le code dans mes deux arduino mega!

Après ça je jouerai comme un malade...

Merci