Bonjour !
Je réalise un contrôleur midi dans le but de l'utiliser avec le logiciel Ableton Live 9.
Au niveau du montage :
(Ce schéma est magnifique)
J'ai trouvé/modifié un code qui fonctionne parfaitement pour les 7 boutons :
#include <MIDI.h>
MIDI_CREATE_DEFAULT_INSTANCE();
int mem[] = { 0, 0, 0, 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);
pinMode(6, INPUT_PULLUP);
pinMode(7, INPUT_PULLUP);
pinMode(8, INPUT_PULLUP);
}
void loop() {
int sensorVal[] = {
!digitalRead(2), !digitalRead(3),
!digitalRead(4), !digitalRead(5),
!digitalRead(6), !digitalRead(7), !digitalRead(8)
};
for (int j = 0; j < 7; 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);
}
}
}
}
Cependant j'essaye de faire fonctionner l'interrupteur de façon à pouvoir utiliser les boutons de 2 façons différentes (Selon la position de l'interrupteur) pour avoir 14 possibilités de mappage midi mais ça ne fonctionne pas du tout :
#include <MIDI.h>
MIDI_CREATE_DEFAULT_INSTANCE();
int mem[] = { 0, 0, 0, 0, 0, 0, 0 };
int interA;
int interB;
void setup()
{
MIDI.begin(MIDI_CHANNEL_OMNI);
pinMode(2, INPUT_PULLUP);
pinMode(3, INPUT_PULLUP);
pinMode(4, INPUT_PULLUP);
pinMode(5, INPUT_PULLUP);
pinMode(6, INPUT_PULLUP);
pinMode(7, INPUT_PULLUP);
pinMode(8, INPUT_PULLUP);
pinMode(9, INPUT_PULLUP);
pinMode(10, INPUT);
interA = HIGH;
interB = LOW;
}
void loop() {
int sensorVal[] = {
!digitalRead(2), !digitalRead(3),
!digitalRead(4), !digitalRead(5),
!digitalRead(6), !digitalRead(7),
!digitalRead(8),
};
interA = { !digitalRead(9) } ;
interB = { !digitalRead(10) };
if (interA = LOW)
{
for (int j = 0; j < 7; 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);
}
}
}
}
if (interB = LOW)
{
for (int j = 0; j < 7; j++) {
if (sensorVal [j] != mem [j]) {
mem [j] = sensorVal [j];
if (mem[j]) {
MIDI.sendNoteOn(j + 80, 64, 1);
} else {
MIDI.sendNoteOff(j + 80, 64, 1);
}
}
}
}
}
Est-ce que vous avez une idée de comment le faire fonctionner ?
Merci d'avance pour votre aide !