La documentación en doxygen, para mi es muy complicada tambien, pero hay algunos ejemplos prácticos.
En cuanto a la memoría..en algunos aspectos puede que te parezca hasta peor..pero yo creo que mejora mucho sobre todo en cuanto a la lectura de potenciometros y manejar el ruido de señales midi fantasma.(y manejar el codigo y muchas más cosas nuevas que trae)
Los potenciometros funcionan un poco mejor y creo que si pudieses probarla dejarías de lado la midi.h.
Pero ese trabajo voy a intentar empezarlo yo jeje, tu ya has hecho todo.
No estoy seguro, pero creo que simplemente declarando unos potenciometros de la clase que quieras luego no te hara falta el responsive analog read ni el debounce tieme para los botones ni las pulldown para ver si te quitan un poco de ruido fantasma.
Por ejemplo,voy a declarar un multiplexor, unos pots bankables y unos botones que solo envian una señal midi (no dos,no hace falta debounce) al apretar el botón
Alguien escribió:
CD74HC4067 mux2 = {
8, //Pin SIG on multiplexer, connected to pin(8) on arduino.
{9, 10, 11, 12}, //Pins S0, S1, S2, S3 on multiplexer, connected to pins( 9, 10, 11 and 12 )on arduino.
};
CCButtonLatched pedalswitches[] = {
{ mux2.pin(0), { 77, CHANNEL_1 } }, //Button connected to C0 in multiplexer(mux2)and Ground. CC 77 MIDI signal on channel 1. First pedal effect on/off button (with led state)
{ mux2.pin(1), { 81, CHANNEL_1 } }, //Button connected to C1 in multiplexer(mux2)and Ground. CC 81 MIDI signal on channel 1. Second pedal effect on/off button (with led state)
{ mux2.pin(2), { 85, CHANNEL_1 } }, //Button connected to C2 in multiplexer(mux2)and Ground. CC 85 MIDI signal on channel 1. Third pedal effect on/off button (with led state)
{ mux2.pin(3), { 89, CHANNEL_1 } }, //Button connected to C3 in multiplexer(mux2)and Ground. CC 89 MIDI signal on channel 1. Fourth pedal effect on/off button (with led state)
{ mux2.pin(4), { 93, CHANNEL_1 } }, //Button connected to C4 in multiplexer(mux2)and Ground. CC 93 MIDI signal on channel 1. Fifth pedal effect on/off button (with led state)
{ mux2.pin(5), { 97, CHANNEL_1 } }, //Button connected to C5 in multiplexer(mux2)and Ground. CC 97 MIDI signal on channel 1. Sixth pedal effect on/off button (with led state)
{ mux2.pin(6), { 101, CHANNEL_1 } }, //Button connected to C6 in multiplexer(mux2)and Ground. CC 101 MIDI signal on channel 1. Seventh pedal effect on/off button (with led state)
{ mux2.pin(7), { 105, CHANNEL_1 } }, //Button connected to C7 in multiplexer(mux2)and Ground. CC 105 MIDI signal on channel 1. eighth pedal effect on/off button (with led state)
};
Y ahora los pots (presuponemos que hemos declarado otro multiplexor más)
Alguien escribió:
CCPotentiometer POTSpedalPOTSamp[] = {
{mux3.pin(4), 74}, //Potentiometer connected to C4 in multiplexer(mux3)and Ground. CC 74 MIDI signal on channel 1. Pots pedal (not bankable)
{mux3.pin(5), 75}, //Potentiometer connected to C5 in multiplexer(mux3)and Ground. CC 75 MIDI signal on channel 1. Pots pedal (not bankable)
{mux3.pin(6), 76}, //Potentiometer connected to C6 in multiplexer(mux3)and Ground. CC 76 MIDI signal on channel 1. Pots pedal (not bankable)
{mux3.pin(7), 78}, //Potentiometer connected to C7 in multiplexer(mux3)and Ground. CC 78 MIDI signal on channel 1. Pots pedal (not bankable)
{mux3.pin(12), 79}, //Potentiometer connected to C12 in multiplexer(mux3)and Ground. CC 79 MIDI signal on channel 1.Pots amp (not bankable)
{mux3.pin(13), 80}, //Potentiometer connected to C13 in multiplexer(mux3)and Ground. CC 80 MIDI signal on channel 1.Pots amp (not bankable)
{mux3.pin(14), 82}, //Potentiometer connected to C14 in multiplexer(mux3)and Ground. CC 82 MIDI signal on channel 1.Pots amp (not bankable)
{mux3.pin(15), 83}, //Potentiometer connected to C15 in multiplexer(mux3)and Ground. CC 83 MIDI signal on channel 1.Pots amp (not bankable)
};
Si queremos hacerlos bankables declaramos un banco
Alguien escribió:
Bank<8> bankamp(4); //Declare a bank named bankpedal.<8>bank positions.and(4)IncrementDecrement value
Luego declaramos los pots que van a ser bankables
Alguien escribió:
Bankable::CCPotentiometer POTSbankpedal[] = {
{bankpedal, mux3.pin(0), 37},
{bankpedal, mux3.pin(1), 38},
{bankpedal, mux3.pin(2), 39},
{bankpedal, mux3.pin(3), 40},
};
Y por supuesto el boton que va a cambiar de banco con su array de leds para mostrar el número de banco
Alguien escribió:
IncrementDecrementSelectorLEDs<8> bankSelectorbankpedal = {
bankpedal,
{5, 7}, // button pins connected to digital inputs 5 and 7 in arduino and ground
{30, 31, 32, 33, 34, 35, 36, 37}, // LED pins connected to digital inputs 30-37 in arduino and ground
};
En mi caso, creo que tu pedalera es el dios de las pedaleras..no es por hacerte la pelota,, pero es que es lo que buscaba y con lo que soñaba al empezar este proyecto.
Por lo tanto, me quedaré con tu versión y deshecharé control.surface. sin pensarlo ni un momento..pero creo que debo intentarlo..
Tu pedalera debe tener varias versiones para toda la familia, esto es algo que hay que compartir en estos tiempos, la mia utilizará solo el cable usb y no llevará bluetooth ni batería cargable, es una pena porque es admirable lo que has hecho y me gustaría probarlo pero voy a centrarme en mi proyecto e intentar hacer mi propia version de esa joya que has conseguido hacer tu.
Entiendo cuando dices lo de que tu codigo es nivel parvulitos, pero ya me gustaría a mi tener ese nivel jeje
En tu codigo, yo creo que tiene que ser facil pasar a control surface, yo de momento tengo las dos librerias funcionando
https://pastebin.com/pjyvF7ai
El primer obstaculo sería reemplazar el MIDI.sendprogramchanger por Control.Surface sendCCon
Aquí hay un ejemplo con note en vez de CC..esta noche mirare como hacerlo a ver si puedo avanzar
https://tttapa.github.io/Control-Surface-doc/Doxygen/d3/d08/Custom-MIDI-Sender_8ino-example.html