Hello people I was working on a prototype for a MIDI controller for Ableton Live Before ..
The project had a lot of mess and everything was super complicated and I had a lot of noise in the signal
I adjusted the design again and made everything modular so it can be replaceable and tested every single component in the whole circuit .. but this time noise in the signal is too much and even buttons are distorted for no reason and after programming the LEDs to respond to certain notes .. once the device is plugged in all LEDs turn on for no reason and keep on all time while they should turn on only when I press the note button
Note : the chip itself sends random messages whenever something gets closer to it even without connecting any wires or buttons
Note : I downgraded the VCC from 5V to 3V3 and it's sending noisy signals
The Device : -
8 instruments with volumes, AUXs, 2 control knobs for decay or else, 16 step sequencer, 2 FX control & 6 buttons for navigation and general control
The Code
#include <Control_Surface.h>
HairlessMIDI_Interface midi;
CD74HC4067 M1 = { A4, {2, 4, 6, 8} }; //Analog Input
CD74HC4067 M2 = { A6, {2, 4, 6, 8} }; //Analog Input
CD74HC4067 M3 = { A8, {2, 4, 6, 8} }; //Analog Input
CD74HC4067 M4 = { A2, {2, 4, 6, 8} }; //Digital Input (Sequencer)
CD74HC4067 M5 = { A0, {2, 4, 6, 8} }; //Digital Input (Banks & Instruments)
CCPotentiometer Potentiometers[] = {
{ M1.pin(0), {MIDI_CC::General_Purpose_Controller_1, CHANNEL_1} },
{ M1.pin(1), {MIDI_CC::General_Purpose_Controller_2, CHANNEL_1} },
{ M1.pin(2), {MIDI_CC::General_Purpose_Controller_3, CHANNEL_1} },
{ M1.pin(3), {MIDI_CC::General_Purpose_Controller_4, CHANNEL_1} },
{ M1.pin(4), {MIDI_CC::General_Purpose_Controller_5, CHANNEL_1} },
{ M1.pin(5), {MIDI_CC::General_Purpose_Controller_6, CHANNEL_1} },
{ M1.pin(6), {MIDI_CC::General_Purpose_Controller_7, CHANNEL_1} },
{ M1.pin(7), {MIDI_CC::General_Purpose_Controller_8, CHANNEL_1} },
{ M1.pin(8), {MIDI_CC::General_Purpose_Controller_1, CHANNEL_2} },
{ M1.pin(9), {MIDI_CC::General_Purpose_Controller_2, CHANNEL_2} },
{ M1.pin(10), {MIDI_CC::General_Purpose_Controller_3, CHANNEL_2} },
{ M1.pin(11), {MIDI_CC::General_Purpose_Controller_4, CHANNEL_2} },
{ M1.pin(12), {MIDI_CC::General_Purpose_Controller_5, CHANNEL_2} },
{ M1.pin(13), {MIDI_CC::General_Purpose_Controller_6, CHANNEL_2} },
{ M1.pin(14), {MIDI_CC::General_Purpose_Controller_7, CHANNEL_2} },
{ M1.pin(15), {MIDI_CC::General_Purpose_Controller_8, CHANNEL_2} },
{ M2.pin(0), {MIDI_CC::General_Purpose_Controller_1, CHANNEL_3} },
{ M2.pin(1), {MIDI_CC::General_Purpose_Controller_2, CHANNEL_3} },
{ M2.pin(2), {MIDI_CC::General_Purpose_Controller_3, CHANNEL_3} },
{ M2.pin(3), {MIDI_CC::General_Purpose_Controller_4, CHANNEL_3} },
{ M2.pin(4), {MIDI_CC::General_Purpose_Controller_5, CHANNEL_3} },
{ M2.pin(5), {MIDI_CC::General_Purpose_Controller_6, CHANNEL_3} },
{ M2.pin(6), {MIDI_CC::General_Purpose_Controller_7, CHANNEL_3} },
{ M2.pin(7), {MIDI_CC::General_Purpose_Controller_8, CHANNEL_3} },
{ M2.pin(8), {MIDI_CC::General_Purpose_Controller_1, CHANNEL_4} },
{ M2.pin(9), {MIDI_CC::General_Purpose_Controller_2, CHANNEL_4} },
{ M2.pin(10), {MIDI_CC::General_Purpose_Controller_3, CHANNEL_4} },
{ M2.pin(11), {MIDI_CC::General_Purpose_Controller_4, CHANNEL_4} },
{ M2.pin(12), {MIDI_CC::General_Purpose_Controller_5, CHANNEL_4} },
{ M2.pin(13), {MIDI_CC::General_Purpose_Controller_6, CHANNEL_4} },
{ M2.pin(14), {MIDI_CC::General_Purpose_Controller_7, CHANNEL_4} },
{ M2.pin(15), {MIDI_CC::General_Purpose_Controller_8, CHANNEL_4} },
{ M3.pin(0), {MIDI_CC::General_Purpose_Controller_1, CHANNEL_5} },
{ M3.pin(1), {MIDI_CC::General_Purpose_Controller_2, CHANNEL_5} },
{ M3.pin(2), {MIDI_CC::General_Purpose_Controller_3, CHANNEL_5} },
{ M3.pin(3), {MIDI_CC::General_Purpose_Controller_4, CHANNEL_5} },
{ M3.pin(4), {MIDI_CC::General_Purpose_Controller_5, CHANNEL_5} },
{ M3.pin(5), {MIDI_CC::General_Purpose_Controller_6, CHANNEL_5} },
{ M3.pin(6), {MIDI_CC::General_Purpose_Controller_7, CHANNEL_5} },
{ M3.pin(7), {MIDI_CC::General_Purpose_Controller_8, CHANNEL_5} },
{ M3.pin(8), {MIDI_CC::General_Purpose_Controller_1, CHANNEL_6} },
{ M3.pin(9), {MIDI_CC::General_Purpose_Controller_2, CHANNEL_6} },
{ M3.pin(10), {MIDI_CC::General_Purpose_Controller_3, CHANNEL_6} },
{ M3.pin(11), {MIDI_CC::General_Purpose_Controller_4, CHANNEL_6} },
{ M3.pin(12), {MIDI_CC::General_Purpose_Controller_5, CHANNEL_6} },
{ M3.pin(13), {MIDI_CC::General_Purpose_Controller_6, CHANNEL_6} },
{ M3.pin(14), {MIDI_CC::General_Purpose_Controller_7, CHANNEL_6} },
{ M3.pin(15), {MIDI_CC::General_Purpose_Controller_8, CHANNEL_6} },
{ A10, {MIDI_CC::Foot_Controller , CHANNEL_1} }, //PEDAL
};
NoteButton buttons[] = {
{ M4.pin(0),{10, CHANNEL_1} }, // Step 1
{ M4.pin(1),{11, CHANNEL_1} }, // Step 2
{ M4.pin(2),{12, CHANNEL_1} }, // Step 3
{ M4.pin(3),{13, CHANNEL_1} }, // Step 4
{ M4.pin(4),{14, CHANNEL_1} }, // Step 5
{ M4.pin(5),{15, CHANNEL_1} }, // Step 6
{ M4.pin(6),{16, CHANNEL_1} }, // Step 7
{ M4.pin(7),{17, CHANNEL_1} }, // Step 8
{ M4.pin(8),{18, CHANNEL_1} }, // Step 9
{ M4.pin(9),{19, CHANNEL_1} }, // Step 10
{ M4.pin(10),{20, CHANNEL_1} }, // Step 11
{ M4.pin(11),{21, CHANNEL_1} }, // Step 12
{ M4.pin(12),{22, CHANNEL_1} }, // Step 13
{ M4.pin(13),{23, CHANNEL_1} }, // Step 14
{ M4.pin(14),{24, CHANNEL_1} }, // Step 15
{ M4.pin(15),{25, CHANNEL_1} }, // Step 16
{ M5.pin(0),{35, CHANNEL_2} }, //Instrument 1
{ M5.pin(1),{36, CHANNEL_2} }, //Instrument 2
{ M5.pin(2),{37, CHANNEL_2} }, //Instrument 3
{ M5.pin(3),{38, CHANNEL_2} }, //Instrument 4
{ M5.pin(4),{39, CHANNEL_2} }, //Instrument 5
{ M5.pin(5),{40, CHANNEL_2} }, //Instrument 6
{ M5.pin(6),{41, CHANNEL_2} }, //Instrument 7
{ M5.pin(7),{42, CHANNEL_2} }, //Instrument 8
};
CCButton Buttons[] = {
{ M5.pin(8), {MIDI_CC::General_Purpose_Controller_1, CHANNEL_7} },
{ M5.pin(9), {MIDI_CC::General_Purpose_Controller_2, CHANNEL_7} },
{ M5.pin(10), {MIDI_CC::General_Purpose_Controller_3, CHANNEL_7} },
{ M5.pin(11), {MIDI_CC::General_Purpose_Controller_4, CHANNEL_7} },
{ M5.pin(12), {MIDI_CC::General_Purpose_Controller_5, CHANNEL_7} },
{ M5.pin(13), {MIDI_CC::General_Purpose_Controller_6, CHANNEL_7} },
{ M5.pin(14), {MIDI_CC::General_Purpose_Controller_7, CHANNEL_7} },
{ M5.pin(15), {MIDI_CC::General_Purpose_Controller_8, CHANNEL_7} },
};
SPIShiftRegisterOut<24> sreg {
14, // Latch pin (ST_CP)
MSBFIRST, // Byte order
};
// Create an array of LEDs that listen to MIDI Note messages, turning on and off
// the LEDs connected to the eight output pins of the shift register
NoteValueLED leds[]{
{sreg.pin(0),{35, CHANNEL_1} }, // Instrument 1 // LED pin, address (note number, channel, cable)
{sreg.pin(1),{36, CHANNEL_1} }, // Instrument 2
{sreg.pin(2),{37, CHANNEL_1} }, // Instrument 3
{sreg.pin(3),{38, CHANNEL_1} }, // Instrument 4
{sreg.pin(4),{39, CHANNEL_1} }, // Instrument 5
{sreg.pin(5),{40, CHANNEL_1} }, // Instrument 6
{sreg.pin(6),{41, CHANNEL_1} }, // Instrument 7
{sreg.pin(7),{42, CHANNEL_1} }, // Instrument 8
{sreg.pin(8),{18, CHANNEL_1} }, // Step 9
{sreg.pin(9),{19, CHANNEL_1} }, // Step 10
{sreg.pin(10),{20, CHANNEL_1} }, // Step 11
{sreg.pin(11),{21, CHANNEL_1} }, // Step 12
{sreg.pin(12),{22, CHANNEL_1} }, // Step 13
{sreg.pin(13),{23, CHANNEL_1} }, // Step 14
{sreg.pin(14),{24, CHANNEL_1} }, // Step 15
{sreg.pin(15),{25, CHANNEL_1} }, // Step 16
{sreg.pin(16),{10, CHANNEL_2} }, //Step 1
{sreg.pin(17),{11, CHANNEL_2} }, //Step 2
{sreg.pin(18),{12, CHANNEL_2} }, //Step 3
{sreg.pin(19),{13, CHANNEL_2} }, //Step 4
{sreg.pin(20),{14, CHANNEL_2} }, //Step 5
{sreg.pin(21),{15, CHANNEL_2} }, //Step 6
{sreg.pin(22),{16, CHANNEL_2} }, //Step 7
{sreg.pin(23),{17, CHANNEL_2} }, //Step 8
};
void setup() {
Control_Surface.begin();
}
void loop() {
Control_Surface.loop();
}
I need help in :
1 - programming the 16 buttons and the 16 LEDs to work as a 16 step sequencer automatically
2 - eliminate the unreasonable noise coming out of the chip that prevents me from doing anything
.
Thanks in advance.