Hey there!
I updated everything to the teensy 4.1 and I have been having a lot of success, but I am running into road block with the LEDS using a MAX 7219.
The problem i am having is i can not get more than 2 LEDs to stay lit at any time, when I do more than 2, no LEDS light up. I know i have anough power, because I use the MAX with over 32 leds for my HUI project for Pro Tools no problem.
I just want to be able to use the MAX to get the LED feedback from Ableton Live so I can light up 16 LEDS for the Rec Buttons, and also the Transport, (REWIND, FF, STOP, PLAY REC)
Once i get That I may want to add other features, but once I understand how to properly code the MAX with the Control Surface Library, I will be able to move forward with more advance options.
Thank you for your help!! I really need it 
I should probably mention that my LEDS go LOW to be active.
Here is my code.
#include <Control_Surface.h>
// Instantiate a MIDI over USB interface.
USBMIDI_Interface midi;
MAX7219<1> max7219 {SPI, SS};
CD74HC4067 faderMux {
A0, // Analog input pin
{33, 34, 35, 36} // Address pins S0, S1, S2, S3
};
CD74HC4067 buttonMux {
A1, // Analog input pin
{2, 3, 4, 5} // Address pins S0, S1, S2, S3
};
CD74HC4067 transMux {
A2, // Analog input pin
{6, 7, 8, 9} // Address pins S0, S1, S2, S3
};
PBPotentiometer volumePotentiometers [] {
{faderMux.pin(0), {MCU::VOLUME_1, Cable_1}},
{faderMux.pin(1), {MCU::VOLUME_2, Cable_1}},
{faderMux.pin(2), {MCU::VOLUME_3, Cable_1}},
{faderMux.pin(3), {MCU::VOLUME_4, Cable_1}},
{faderMux.pin(4), {MCU::VOLUME_5, Cable_1}},
{faderMux.pin(5), {MCU::VOLUME_6, Cable_1}},
{faderMux.pin(6), {MCU::VOLUME_7, Cable_1}},
{faderMux.pin(7), {MCU::VOLUME_8, Cable_1}},
{faderMux.pin(8), {MCU::VOLUME_1, Cable_2}},
{faderMux.pin(9), {MCU::VOLUME_2, Cable_2}},
{faderMux.pin(10), {MCU::VOLUME_3, Cable_2}},
{faderMux.pin(11), {MCU::VOLUME_4, Cable_2}},
{faderMux.pin(12), {MCU::VOLUME_5, Cable_2}},
{faderMux.pin(13), {MCU::VOLUME_6, Cable_2}},
{faderMux.pin(14), {MCU::VOLUME_7, Cable_2}},
{faderMux.pin(15), {MCU::VOLUME_8, Cable_2}}
};
// Define the Record Ready buttons
NoteButton recbuttons[] = {
{buttonMux.pin(0), {MCU::REC_RDY_1, Channel_1, Cable_1}},
{buttonMux.pin(1), {MCU::REC_RDY_2, Channel_1, Cable_1}},
{buttonMux.pin(2), {MCU::REC_RDY_3, Channel_1, Cable_1}},
{buttonMux.pin(3), {MCU::REC_RDY_4, Channel_1, Cable_1}},
{buttonMux.pin(4), {MCU::REC_RDY_5, Channel_1, Cable_1}},
{buttonMux.pin(5), {MCU::REC_RDY_6, Channel_1, Cable_1}},
{buttonMux.pin(6), {MCU::REC_RDY_7, Channel_1, Cable_1}},
{buttonMux.pin(7), {MCU::REC_RDY_8, Channel_1, Cable_1}},
{buttonMux.pin(8), {MCU::REC_RDY_1, Channel_1, Cable_2}},
{buttonMux.pin(9), {MCU::REC_RDY_2, Channel_1, Cable_2}},
{buttonMux.pin(10), {MCU::REC_RDY_3, Channel_1, Cable_2}},
{buttonMux.pin(11), {MCU::REC_RDY_4, Channel_1, Cable_2}},
{buttonMux.pin(12), {MCU::REC_RDY_5, Channel_1, Cable_2}},
{buttonMux.pin(13), {MCU::REC_RDY_6, Channel_1, Cable_2}},
{buttonMux.pin(14), {MCU::REC_RDY_7, Channel_1, Cable_2}},
{buttonMux.pin(15), {MCU::REC_RDY_8, Channel_1, Cable_2}}
};
// Define the transport control buttons
NoteButton transportbuttons[] = {
{transMux.pin(0), {MCU::REWIND, Channel_1, Cable_1}},
{transMux.pin(1), {MCU::FAST_FWD, Channel_1, Cable_1}},
{transMux.pin(2), {MCU::STOP, Channel_1, Cable_1}},
{transMux.pin(3), {MCU::PLAY, Channel_1, Cable_1}},
{transMux.pin(4), {MCU::RECORD, Channel_1, Cable_1}}
};
NoteLED leds[] = {
{max7219.pin(0), {MCU::REC_RDY_1}},
{max7219.pin(1), {MCU::REC_RDY_2}},
{max7219.pin(2), {MCU::REC_RDY_3}},
{max7219.pin(3), {MCU::REC_RDY_4}},
{max7219.pin(4), {MCU::REC_RDY_5}},
{max7219.pin(5), {MCU::REC_RDY_6}},
{max7219.pin(6), {MCU::REC_RDY_7}},
{max7219.pin(7), {MCU::REC_RDY_8}}
};
// NoteButton button {
// A4, // Push button on pin 5
// {{MCU::REC_RDY_4}} // Note C4 on MIDI channel 1
// };
void setup() {
Control_Surface.begin(); // Initialize Control Surface
Button::setDebounceTime(50); // Set debounce time to 50 milliseconds
}
void loop() {
Control_Surface.loop(); // Update the Control Surface
//start of loop Robojax code for LCD with I2C
}