Hi, I'm looking for some code help. I plan to control 8x LED strips with MIDI, via Teensy LC. I have so far managed to write the code so that each LED strip is individually controlled via a MIDI note on / note off, and that the velocity of the note is related to the brightness of the LED.
But, ideally what I would like to achieve is that the LED trigger is controlled via note on/off, but the brightness is controlled by a separate MIDI cc, such as the mod wheel or an expression pedal. Could someone point me in the right direction to achieve this?
This is what I have so far:
But, ideally what I would like to achieve is that the LED trigger is controlled via note on/off, but the brightness is controlled by a separate MIDI cc, such as the mod wheel or an expression pedal. Could someone point me in the right direction to achieve this?
This is what I have so far:
Code:
int DSLLPin = 16;
int DSLCPin = 17;
int DSRCPin = 20;
int DSRRPin = 22;
int USLLPin = 23;
int USLCPin = 3;
int USRCPin = 4;
int USRRPin = 6;
void myNoteOn(byte channel, byte note, byte velocity) {
velocity = velocity * 2;
if (note == 60) {
analogWrite(DSLLPin, velocity);
}
if (note == 62) {
analogWrite(DSLCPin, velocity);
}
if (note == 64) {
analogWrite(DSRCPin, velocity);
}
if (note == 65) {
analogWrite(DSRRPin, velocity);
}
if (note == 67) {
analogWrite(USLLPin, velocity);
}
if (note == 69) {
analogWrite(USLCPin, velocity);
}
if (note == 71) {
analogWrite(USRCPin, velocity);
}
if (note == 72) {
analogWrite(USRRPin, velocity);
}
}
void myNoteOff(byte channel, byte note, byte velocity) {
velocity = velocity * 2;
if (note == 60) {
analogWrite(DSLLPin, 0);
}
if (note == 62) {
analogWrite(DSLCPin, 0);
}
if (note == 64) {
analogWrite(DSRCPin, 0);
}
if (note == 65) {
analogWrite(DSRRPin, 0);
}
if (note == 67) {
analogWrite(USLLPin, 0);
}
if (note == 69) {
analogWrite(USLCPin, 0);
}
if (note == 71) {
analogWrite(USRCPin, 0);
}
if (note == 72) {
analogWrite(USRRPin, 0);
}
}
void setup() {
pinMode(DSLLPin, OUTPUT);
usbMIDI.setHandleNoteOff(myNoteOff) ;
usbMIDI.setHandleNoteOn(myNoteOn) ;
analogWrite(DSLLPin, 256);
delay(400);
analogWrite(DSLLPin, 0);
pinMode(DSLCPin, OUTPUT);
usbMIDI.setHandleNoteOff(myNoteOff) ;
usbMIDI.setHandleNoteOn(myNoteOn) ;
analogWrite(DSLCPin, 256);
delay(400);
analogWrite(DSLCPin, 0);
pinMode(DSRCPin, OUTPUT);
usbMIDI.setHandleNoteOff(myNoteOff) ;
usbMIDI.setHandleNoteOn(myNoteOn) ;
analogWrite(DSRCPin, 256);
delay(400);
analogWrite(DSRCPin, 0);
pinMode(DSRRPin, OUTPUT);
usbMIDI.setHandleNoteOff(myNoteOff) ;
usbMIDI.setHandleNoteOn(myNoteOn) ;
analogWrite(DSRRPin, 256);
delay(400);
analogWrite(DSRRPin, 0);
pinMode(USLLPin, OUTPUT);
usbMIDI.setHandleNoteOff(myNoteOff) ;
usbMIDI.setHandleNoteOn(myNoteOn) ;
analogWrite(USLLPin, 256);
delay(400);
analogWrite(USLLPin, 0);
pinMode(USLCPin, OUTPUT);
usbMIDI.setHandleNoteOff(myNoteOff) ;
usbMIDI.setHandleNoteOn(myNoteOn) ;
analogWrite(USLCPin, 256);
delay(400);
analogWrite(USLCPin, 0);
pinMode(USRCPin, OUTPUT);
usbMIDI.setHandleNoteOff(myNoteOff) ;
usbMIDI.setHandleNoteOn(myNoteOn) ;
analogWrite(USRCPin, 256);
delay(400);
analogWrite(USRCPin, 0);
pinMode(USRRPin, OUTPUT);
usbMIDI.setHandleNoteOff(myNoteOff) ;
usbMIDI.setHandleNoteOn(myNoteOn) ;
analogWrite(USRRPin, 256);
delay(400);
analogWrite(USRRPin, 0);
}
void loop() {
usbMIDI.read(16);
}