************************************************************************************
* TODO JUNTO FP-30X *
************************************************************************************
//Definimos las Librerias necesarias
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <LiquidMenu.h>
#include <ESP32Encoder.h> //https://github.com/madhephaestus/ESP32Encoder.git
#include <Arduino.h>
#include <BLEMIDI_Transport.h>
#include <hardware/BLEMIDI_Client_ESP32.h>
#include <MIDI.h>
//Definimos la Pantalla LCD
LiquidCrystal_I2C lcd(0x27, 16, 2);
//Definimos el Encoder
#define sw 25 //Pulsador ENCODER
#define DT 26 //DT ENCODER
#define CLK 27 //CLK ENCODER
//Definimos las variables del Encoder
ESP32Encoder encoder;
int aState;
int aLastState;
int incremento = 0;
//Definimos la manera en que queremos que se conecte a nuestro dispositibo BLE
//BLEMIDI_CREATE_DEFAULT_INSTANCE(); //Connect to first server found
//BLEMIDI_CREATE_INSTANCE("",MIDI) //Connect to the first server found
BLEMIDI_CREATE_INSTANCE("cb:81:f4:a5:b5:93",MIDI) //Connect to a specific BLE address server
//BLEMIDI_CREATE_INSTANCE("MyBLEserver",MIDI) //Connect to a specific name server
//Creamos función de lectura continuada (ver FreeRTOS multitasks)
void ReadCB(void *parameter);
unsigned long t0 = millis();
bool isConnected = false;
//Creamos instancia de program change
void programChangeCallback(byte channel, byte programNumber) {
//Hacer algo con el mensaje recibido, como cambiar el sonido de un sintetizador.
//Aquí simplemente lo imprimimos por el puerto serie.
Serial.print("Program Change: "); Serial.print(programNumber); Serial.print(" - Canal: "); Serial.println(channel);
}
//Creamos instancia de control change
void controlChangeCallback(byte controlNumber, byte controlValue, byte channel) {
Serial.print("Control: "); Serial.print(controlValue); Serial.print(" Value: "); Serial.print(channel); Serial.print(" - Canal: "); Serial.println(controlNumber);
}
//Definimos variables time para volver a Menu_Principal o apagar LCD
//unsigned long TimeInicial = 0;
//unsigned long TImeActual = 0;
//unsigned long TTranscurrido = 0;
// Lo que escribamos ahora es lo que veremos en el display
// =======================================================
//Lineas visibles en Menu_Principal
LiquidLine Menu_Principal_Opc1(1, 0, "Instrum. (SOLO)");
LiquidLine Menu_Principal_Opc2(1, 1, "Instrum. (DUAL)");
LiquidLine Menu_Principal_Opc3(1, 0, "Metronomo");
LiquidLine Menu_Principal_Opc4(1, 1, "Ajustes");
LiquidLine Menu_Principal_Volver(1, 0, "< Volver");
//Lineas visibles en Menu_Instrum_SOLO
LiquidLine Menu_Instrum_SOLO_Opc1(1, 0, "Pianos");
LiquidLine Menu_Instrum_SOLO_Opc2(1, 1, "Elec. Pianos");
LiquidLine Menu_Instrum_SOLO_Opc3(1, 0, "Otros");
LiquidLine Menu_Instrum_SOLO_Opc4(1, 1, "GM2");
LiquidLine Menu_Instrum_SOLO_Volver(1, 0, "< Volver");
//Lineas visibles en Menu_Instrum_DUAL
LiquidLine Menu_Instrum_DUAL_Opc1(1, 0, "Pianos");
LiquidLine Menu_Instrum_DUAL_Opc2(1, 1, "Elec. Pianos");
LiquidLine Menu_Instrum_DUAL_Opc3(1, 0, "Otros");
LiquidLine Menu_Instrum_DUAL_Opc4(1, 1, "GM2");
LiquidLine Menu_Instrum_DUAL_Volver(1, 0, "< Volver");
//Lineas visibles en Menu_Metronomo
LiquidLine Menu_Metronomo_Opc1(1, 0, "Menu_Metronomo_Opc1");
LiquidLine Menu_Metronomo_Opc2(1, 1, "Menu_Metronomo_Opc2");
LiquidLine Menu_Metronomo_Opc3(1, 0, "Menu_Metronomo_Opc3");
LiquidLine Menu_Metronomo_Opc4(1, 1, "Menu_Metronomo_Opc4");
LiquidLine Menu_Metronomo_Volver(1, 0, "< Volver");
//Lineas visibles en Menu_Ajustes
LiquidLine Menu_Ajustes_Opc1(1, 0, "Menu_Ajustes_Opc1");
LiquidLine Menu_Ajustes_Opc2(1, 1, "Menu_Ajustes_Opc2");
LiquidLine Menu_Ajustes_Opc3(1, 0, "Menu_Ajustes_Opc3");
LiquidLine Menu_Ajustes_Opc4(1, 1, "Menu_Ajustes_Opc4");
LiquidLine Menu_Ajustes_Volver(1, 0, "< Volver");
//Lineas visibles en Listado_Pianos
LiquidLine Listado_Pianos_01(1, 0, "Concert piano");
LiquidLine Listado_Pianos_02(1, 1, "Ballad piano");
LiquidLine Listado_Pianos_03(1, 0, "Mellow piano");
LiquidLine Listado_Pianos_04(1, 1, "Bright piano");
LiquidLine Listado_Pianos_05(1, 0, "Upright");
LiquidLine Listado_Pianos_06(1, 1, "Mellow Upright");
LiquidLine Listado_Pianos_07(1, 0, "Bright Upright");
LiquidLine Listado_Pianos_08(1, 1, "Rock");
LiquidLine Listado_Pianos_09(1, 0, "Ragtime");
LiquidLine Listado_Pianos_10(1, 1, "Magical");
LiquidLine Listado_Pianos_11(1, 0, "Harpsichord");
LiquidLine Listado_Pianos_12(1, 1, "Harpsi 8 + 4'");
LiquidLine Listado_Pianos_Volver(1, 0, "< Volver");
//Lineas visibles en Listado_EPianos
LiquidLine Listado_EPianos_01(1, 0, "1976 Suit case");
LiquidLine Listado_EPianos_02(1, 1, "Wurly 200");
LiquidLine Listado_EPianos_03(1, 0, "Phase EP Mix");
LiquidLine Listado_EPianos_04(1, 1, "80s FM EP");
LiquidLine Listado_EPianos_05(1, 0, "Clavicordio");
LiquidLine Listado_EPianos_06(1, 1, "Vibraphone");
LiquidLine Listado_EPianos_07(1, 0, "Celesta");
LiquidLine Listado_EPianos_08(1, 1, "B. Organ Slow *");
LiquidLine Listado_EPianos_09(1, 0, "Combo JazzOrgan*");
LiquidLine Listado_EPianos_10(1, 1, "Ballad Organ");
LiquidLine Listado_EPianos_11(1, 0, "Gospel Spin");
LiquidLine Listado_EPianos_12(1, 1, "Full Stops");
LiquidLine Listado_EPianos_13(1, 0, "Mellow Bars");
LiquidLine Listado_EPianos_14(1, 1, "Lower Organ");
LiquidLine Listado_EPianos_15(1, 0, "Light Organ");
LiquidLine Listado_EPianos_16(1, 1, "Pipe Organ");
LiquidLine Listado_EPianos_17(1, 0, "Nason Fit 8");
LiquidLine Listado_EPianos_18(1, 1, "Church Organ 1");
LiquidLine Listado_EPianos_19(1, 0, "Church Organ 2");
LiquidLine Listado_EPianos_20(1, 1, "Acordion");
LiquidLine Listado_EPianos_Volver(1, 0, "< Volver");
//Lineas visibles en Listado_Otros
LiquidLine Listado_Otros_01(1, 0, "Epic strings");
LiquidLine Listado_Otros_02(1, 1, "Rich strings");
LiquidLine Listado_Otros_03(1, 0, "Symphonyc Str 1");
LiquidLine Listado_Otros_04(1, 1, "Symphonyc Str 2");
LiquidLine Listado_Otros_05(1, 0, "Orchestra");
LiquidLine Listado_Otros_06(1, 1, "String Trio");
LiquidLine Listado_Otros_07(1, 0, "Harpiness");
LiquidLine Listado_Otros_08(1, 1, "Orchestra Brass");
LiquidLine Listado_Otros_09(1, 0, "Super Syn Pad");
LiquidLine Listado_Otros_10(1, 1, "Choir Aahs 1");
LiquidLine Listado_Otros_11(1, 0, "Choir Aahs 2");
LiquidLine Listado_Otros_12(1, 1, "D50 Stack Pad");
LiquidLine Listado_Otros_13(1, 0, "JP8 Strings");
LiquidLine Listado_Otros_14(1, 1, "Soft Pad");
LiquidLine Listado_Otros_15(1, 0, "Solina");
LiquidLine Listado_Otros_16(1, 1, "Super Saw");
LiquidLine Listado_Otros_17(1, 0, "Trancy Synth");
LiquidLine Listado_Otros_18(1, 1, "Flip Pad");
LiquidLine Listado_Otros_19(1, 0, "Jazz Scat");
LiquidLine Listado_Otros_20(1, 1, "Comp d JBass");
LiquidLine Listado_Otros_21(1, 0, "Nylon Str. Gt");
LiquidLine Listado_Otros_22(1, 1, "Steel Str. Gt");
LiquidLine Listado_Otros_23(1, 0, "Acoustic Bass");
LiquidLine Listado_Otros_24(1, 1, "A. Bass + Cymbl");
LiquidLine Listado_Otros_Volver(1, 0, "< Volver");
//Lineas visibles en Listado_GM2
LiquidLine Listado_GM2_01(1, 0, "Piano 1");
LiquidLine Listado_GM2_02(1, 1, "Piano 1w");
LiquidLine Listado_GM2_03(1, 0, "Piano 1d");
LiquidLine Listado_GM2_04(1, 1, "Piano 2");
LiquidLine Listado_GM2_05(1, 0, "");
LiquidLine Listado_GM2_06(1, 1, "");
LiquidLine Listado_GM2_07(1, 0, "");
LiquidLine Listado_GM2_08(1, 1, "");
LiquidLine Listado_GM2_09(1, 0, "");
LiquidLine Listado_GM2_10(1, 1, "");
LiquidLine Listado_GM2_11(1, 0, "");
LiquidLine Listado_GM2_12(1, 1, "");
LiquidLine Listado_GM2_13(1, 0, "");
LiquidLine Listado_GM2_14(1, 1, "");
LiquidLine Listado_GM2_15(1, 0, "");
LiquidLine Listado_GM2_16(1, 1, "");
LiquidLine Listado_GM2_17(1, 0, "");
LiquidLine Listado_GM2_18(1, 1, "");
LiquidLine Listado_GM2_19(1, 0, "");
LiquidLine Listado_GM2_20(1, 1, "");
LiquidLine Listado_GM2_21(1, 0, "");
LiquidLine Listado_GM2_22(1, 1, "");
LiquidLine Listado_GM2_23(1, 0, "");
LiquidLine Listado_GM2_24(1, 1, "");
LiquidLine Listado_GM2_25(1, 0, "");
LiquidLine Listado_GM2_26(1, 1, "");
LiquidLine Listado_GM2_27(1, 0, "");
LiquidLine Listado_GM2_28(1, 1, "");
LiquidLine Listado_GM2_29(1, 0, "");
LiquidLine Listado_GM2_30(1, 1, "");
LiquidLine Listado_GM2_31(1, 0, "");
LiquidLine Listado_GM2_32(1, 1, "");
LiquidLine Listado_GM2_33(1, 0, "");
LiquidLine Listado_GM2_34(1, 1, "");
LiquidLine Listado_GM2_35(1, 0, "");
LiquidLine Listado_GM2_36(1, 1, "");
LiquidLine Listado_GM2_37(1, 0, "");
LiquidLine Listado_GM2_38(1, 1, "");
LiquidLine Listado_GM2_39(1, 0, "");
LiquidLine Listado_GM2_40(1, 1, "");
LiquidLine Listado_GM2_41(1, 0, "");
LiquidLine Listado_GM2_42(1, 1, "");
LiquidLine Listado_GM2_43(1, 0, "");
LiquidLine Listado_GM2_44(1, 1, "");
LiquidLine Listado_GM2_45(1, 0, "");
LiquidLine Listado_GM2_46(1, 1, "");
LiquidLine Listado_GM2_47(1, 0, "");
LiquidLine Listado_GM2_48(1, 1, "");
LiquidLine Listado_GM2_49(1, 0, "");
LiquidLine Listado_GM2_50(1, 1, "");
LiquidLine Listado_GM2_51(1, 0, "");
LiquidLine Listado_GM2_52(1, 1, "");
LiquidLine Listado_GM2_53(1, 0, "");
LiquidLine Listado_GM2_54(1, 1, "");
LiquidLine Listado_GM2_55(1, 0, "");
LiquidLine Listado_GM2_56(1, 1, "");
LiquidLine Listado_GM2_57(1, 0, "");
LiquidLine Listado_GM2_58(1, 1, "");
LiquidLine Listado_GM2_59(1, 0, "");
LiquidLine Listado_GM2_60(1, 1, "");
LiquidLine Listado_GM2_61(1, 0, "");
LiquidLine Listado_GM2_62(1, 1, "");
LiquidLine Listado_GM2_63(1, 0, "");
LiquidLine Listado_GM2_64(1, 1, "");
LiquidLine Listado_GM2_65(1, 0, "");
LiquidLine Listado_GM2_66(1, 1, "");
LiquidLine Listado_GM2_67(1, 0, "");
LiquidLine Listado_GM2_68(1, 1, "");
LiquidLine Listado_GM2_69(1, 0, "");
LiquidLine Listado_GM2_70(1, 1, "");
LiquidLine Listado_GM2_71(1, 0, "");
LiquidLine Listado_GM2_72(1, 1, "");
LiquidLine Listado_GM2_73(1, 0, "");
LiquidLine Listado_GM2_74(1, 1, "");
LiquidLine Listado_GM2_75(1, 0, "");
LiquidLine Listado_GM2_76(1, 1, "");
LiquidLine Listado_GM2_77(1, 0, "");
LiquidLine Listado_GM2_78(1, 1, "");
LiquidLine Listado_GM2_79(1, 0, "");
LiquidLine Listado_GM2_80(1, 1, "");
LiquidLine Listado_GM2_81(1, 0, "");
LiquidLine Listado_GM2_82(1, 1, "");
LiquidLine Listado_GM2_83(1, 0, "");
LiquidLine Listado_GM2_84(1, 1, "");
LiquidLine Listado_GM2_85(1, 0, "");
LiquidLine Listado_GM2_86(1, 1, "");
LiquidLine Listado_GM2_87(1, 0, "");
LiquidLine Listado_GM2_88(1, 1, "");
LiquidLine Listado_GM2_89(1, 0, "");
LiquidLine Listado_GM2_90(1, 1, "");
LiquidLine Listado_GM2_91(1, 0, "");
LiquidLine Listado_GM2_92(1, 1, "");
LiquidLine Listado_GM2_93(1, 0, "");
LiquidLine Listado_GM2_94(1, 1, "");
LiquidLine Listado_GM2_95(1, 0, "");
LiquidLine Listado_GM2_96(1, 1, "");
LiquidLine Listado_GM2_97(1, 0, "");
LiquidLine Listado_GM2_98(1, 1, "");
LiquidLine Listado_GM2_99(1, 0, "");
LiquidLine Listado_GM2_100(1, 0, "");
LiquidLine Listado_GM2_101(1, 0, "");
LiquidLine Listado_GM2_102(1, 1, "");
LiquidLine Listado_GM2_103(1, 0, "");
LiquidLine Listado_GM2_104(1, 1, "");
LiquidLine Listado_GM2_105(1, 0, "");
LiquidLine Listado_GM2_106(1, 1, "");
LiquidLine Listado_GM2_107(1, 0, "");
LiquidLine Listado_GM2_108(1, 1, "");
LiquidLine Listado_GM2_109(1, 0, "");
LiquidLine Listado_GM2_110(1, 1, "");
LiquidLine Listado_GM2_111(1, 0, "");
LiquidLine Listado_GM2_112(1, 1, "");
LiquidLine Listado_GM2_113(1, 0, "");
LiquidLine Listado_GM2_114(1, 1, "");
LiquidLine Listado_GM2_115(1, 0, "");
LiquidLine Listado_GM2_116(1, 1, "");
LiquidLine Listado_GM2_117(1, 0, "");
LiquidLine Listado_GM2_118(1, 1, "");
LiquidLine Listado_GM2_119(1, 0, "");
LiquidLine Listado_GM2_120(1, 1, "");
LiquidLine Listado_GM2_121(1, 0, "");
LiquidLine Listado_GM2_122(1, 1, "");
LiquidLine Listado_GM2_123(1, 0, "");
LiquidLine Listado_GM2_124(1, 1, "");
LiquidLine Listado_GM2_125(1, 0, "");
LiquidLine Listado_GM2_126(1, 1, "");
LiquidLine Listado_GM2_127(1, 0, "");
LiquidLine Listado_GM2_128(1, 1, "");
LiquidLine Listado_GM2_129(1, 0, "");
LiquidLine Listado_GM2_130(1, 1, "");
LiquidLine Listado_GM2_131(1, 0, "");
LiquidLine Listado_GM2_132(1, 1, "");
LiquidLine Listado_GM2_133(1, 0, "");
LiquidLine Listado_GM2_134(1, 1, "");
LiquidLine Listado_GM2_135(1, 0, "");
LiquidLine Listado_GM2_136(1, 1, "");
LiquidLine Listado_GM2_137(1, 0, "");
LiquidLine Listado_GM2_138(1, 1, "");
LiquidLine Listado_GM2_139(1, 0, "");
LiquidLine Listado_GM2_140(1, 1, "");
LiquidLine Listado_GM2_141(1, 0, "");
LiquidLine Listado_GM2_142(1, 1, "");
LiquidLine Listado_GM2_143(1, 0, "");
LiquidLine Listado_GM2_144(1, 1, "");
LiquidLine Listado_GM2_145(1, 0, "");
LiquidLine Listado_GM2_146(1, 1, "");
LiquidLine Listado_GM2_147(1, 0, "");
LiquidLine Listado_GM2_148(1, 1, "");
LiquidLine Listado_GM2_149(1, 0, "");
LiquidLine Listado_GM2_150(1, 1, "");
LiquidLine Listado_GM2_151(1, 0, "");
LiquidLine Listado_GM2_152(1, 1, "");
LiquidLine Listado_GM2_153(1, 0, "");
LiquidLine Listado_GM2_154(1, 1, "");
LiquidLine Listado_GM2_155(1, 0, "");
LiquidLine Listado_GM2_156(1, 1, "");
LiquidLine Listado_GM2_157(1, 0, "");
LiquidLine Listado_GM2_158(1, 1, "");
LiquidLine Listado_GM2_159(1, 0, "");
LiquidLine Listado_GM2_160(1, 1, "");
LiquidLine Listado_GM2_161(1, 0, "");
LiquidLine Listado_GM2_162(1, 1, "");
LiquidLine Listado_GM2_163(1, 0, "");
LiquidLine Listado_GM2_164(1, 1, "");
LiquidLine Listado_GM2_165(1, 0, "");
LiquidLine Listado_GM2_166(1, 1, "");
LiquidLine Listado_GM2_167(1, 0, "");
LiquidLine Listado_GM2_168(1, 1, "");
LiquidLine Listado_GM2_169(1, 0, "");
LiquidLine Listado_GM2_170(1, 1, "");
LiquidLine Listado_GM2_171(1, 0, "");
LiquidLine Listado_GM2_172(1, 1, "");
LiquidLine Listado_GM2_173(1, 0, "");
LiquidLine Listado_GM2_174(1, 1, "");
LiquidLine Listado_GM2_175(1, 0, "");
LiquidLine Listado_GM2_176(1, 1, "");
LiquidLine Listado_GM2_177(1, 0, "");
LiquidLine Listado_GM2_178(1, 1, "");
LiquidLine Listado_GM2_179(1, 0, "");
LiquidLine Listado_GM2_180(1, 1, "");
LiquidLine Listado_GM2_181(1, 0, "");
LiquidLine Listado_GM2_182(1, 1, "");
LiquidLine Listado_GM2_183(1, 0, "");
LiquidLine Listado_GM2_184(1, 1, "");
LiquidLine Listado_GM2_185(1, 0, "");
LiquidLine Listado_GM2_186(1, 1, "");
LiquidLine Listado_GM2_187(1, 0, "");
LiquidLine Listado_GM2_188(1, 1, "");
LiquidLine Listado_GM2_189(1, 0, "");
LiquidLine Listado_GM2_190(1, 1, "");
LiquidLine Listado_GM2_191(1, 0, "");
LiquidLine Listado_GM2_192(1, 1, "");
LiquidLine Listado_GM2_193(1, 0, "");
LiquidLine Listado_GM2_194(1, 1, "");
LiquidLine Listado_GM2_195(1, 0, "");
LiquidLine Listado_GM2_196(1, 1, "");
LiquidLine Listado_GM2_197(1, 0, "");
LiquidLine Listado_GM2_198(1, 1, "");
LiquidLine Listado_GM2_199(1, 0, "");
LiquidLine Listado_GM2_200(1, 0, "");
LiquidLine Listado_GM2_201(1, 0, "");
LiquidLine Listado_GM2_202(1, 1, "");
LiquidLine Listado_GM2_203(1, 0, "");
LiquidLine Listado_GM2_204(1, 1, "");
LiquidLine Listado_GM2_205(1, 0, "");
LiquidLine Listado_GM2_206(1, 1, "");
LiquidLine Listado_GM2_207(1, 0, "");
LiquidLine Listado_GM2_208(1, 1, "");
LiquidLine Listado_GM2_209(1, 0, "");
LiquidLine Listado_GM2_210(1, 1, "");
LiquidLine Listado_GM2_211(1, 0, "");
LiquidLine Listado_GM2_212(1, 1, "");
LiquidLine Listado_GM2_213(1, 0, "");
LiquidLine Listado_GM2_214(1, 1, "");
LiquidLine Listado_GM2_215(1, 0, "");
LiquidLine Listado_GM2_216(1, 1, "");
LiquidLine Listado_GM2_217(1, 0, "");
LiquidLine Listado_GM2_218(1, 1, "");
LiquidLine Listado_GM2_219(1, 0, "");
LiquidLine Listado_GM2_220(1, 1, "");
LiquidLine Listado_GM2_221(1, 0, "");
LiquidLine Listado_GM2_222(1, 1, "");
LiquidLine Listado_GM2_223(1, 0, "");
LiquidLine Listado_GM2_224(1, 1, "");
LiquidLine Listado_GM2_225(1, 0, "");
LiquidLine Listado_GM2_226(1, 1, "");
LiquidLine Listado_GM2_227(1, 0, "");
LiquidLine Listado_GM2_228(1, 1, "");
LiquidLine Listado_GM2_229(1, 0, "");
LiquidLine Listado_GM2_230(1, 1, "");
LiquidLine Listado_GM2_231(1, 0, "");
LiquidLine Listado_GM2_232(1, 1, "");
LiquidLine Listado_GM2_233(1, 0, "");
LiquidLine Listado_GM2_234(1, 1, "");
LiquidLine Listado_GM2_235(1, 0, "");
LiquidLine Listado_GM2_236(1, 1, "");
LiquidLine Listado_GM2_237(1, 0, "");
LiquidLine Listado_GM2_238(1, 1, "");
LiquidLine Listado_GM2_239(1, 0, "");
LiquidLine Listado_GM2_240(1, 1, "");
LiquidLine Listado_GM2_241(1, 0, "");
LiquidLine Listado_GM2_242(1, 1, "");
LiquidLine Listado_GM2_243(1, 0, "");
LiquidLine Listado_GM2_244(1, 1, "");
LiquidLine Listado_GM2_245(1, 0, "");
LiquidLine Listado_GM2_246(1, 1, "");
LiquidLine Listado_GM2_247(1, 0, "");
LiquidLine Listado_GM2_248(1, 1, "");
LiquidLine Listado_GM2_249(1, 0, "");
LiquidLine Listado_GM2_250(1, 1, "");
LiquidLine Listado_GM2_251(1, 0, "");
LiquidLine Listado_GM2_252(1, 1, "");
LiquidLine Listado_GM2_253(1, 0, "");
LiquidLine Listado_GM2_254(1, 1, "");
LiquidLine Listado_GM2_255(1, 0, "");
LiquidLine Listado_GM2_256(1, 1, "");
LiquidLine Listado_GM2_Volver(1, 0, "< Volver");
// Declaramos los "Menus" que estarán disponibles
// ==============================================
LiquidMenu menu(lcd); //No borrar esta línea
LiquidScreen Menu_Principal;
LiquidScreen Menu_Instrum_SOLO;
LiquidScreen Menu_Instrum_DUAL;
LiquidScreen Menu_Metronomo;
LiquidScreen Menu_Ajustes;
LiquidScreen Listado_Pianos;
LiquidScreen Listado_EPianos;
LiquidScreen Listado_Otros;
LiquidScreen Listado_GM2;
// ==============================
// COMENZAMOS CON EL VOID SETUP
// ==============================
void setup()
{
Serial.begin(115200);
MIDI.begin(MIDI_CHANNEL_OMNI);
BLEMIDI.begin();
//Comenzamos a usar el sistema BLEMIDI
BLEMIDI.setHandleConnected([]() { Serial.println("FP-30X CONECTADO"); isConnected = true;
MIDI.sendNoteOn(60, 40, 1); delay(250); MIDI.sendNoteOff(60, 0, 1); });
BLEMIDI.setHandleDisconnected([]() { Serial.println("FP-30X NO CONECTADO"); isConnected = false; });
delay(1000); //Dejamos pasar 1 segundo para asegurar la conexión
//Con esto veremos si recibimos Cambios de programa y de Control Change desde el dispositivo BLE
MIDI.setHandleProgramChange(programChangeCallback);
MIDI.setHandleControlChange(controlChangeCallback);
//Con esto veremos si recibimos notas musicales desde el dispositivo BLE
MIDI.setHandleNoteOn([](byte channel, byte note, byte velocity)
{ Serial.print("NoteON: Canal: "); Serial.print(channel); Serial.print(" - Nota: "); Serial.print(note); Serial.print(" VEL; "); Serial.println(velocity); });
MIDI.setHandleNoteOff([](byte channel, byte note, byte velocity)
{ });
//Esto no sé qué hace pero lo dejo aquí (por si acaso)
xTaskCreatePinnedToCore(ReadCB, "MIDI-READ", 3000, NULL, 1, NULL, 1); //Core0 or Core1 - See FreeRTOS for more multitask info
//Comenzamos a usar el Encoder
encoder.attachHalfQuad(DT, CLK);
encoder.setCount(0);
pinMode(sw, INPUT_PULLUP);
//Encendemos la pantalla LCD
lcd.init();
lcd.backlight();
//Mostramos el mensaje de bienvenida
lcd.setCursor(0, 0);
lcd.print(" ROLAND FP-30X ");
lcd.setCursor(0, 1);
lcd.print("por Toni Peralbo");
delay(2000);
//Activamos las lineas que queremos ver en Menu_Principal
Menu_Principal.add_line(Menu_Principal_Opc1);
Menu_Principal.add_line(Menu_Principal_Opc2);
Menu_Principal.add_line(Menu_Principal_Opc3);
Menu_Principal.add_line(Menu_Principal_Opc4);
Menu_Principal.add_line(Menu_Principal_Volver);
//Activamos las lineas que queremos ver en Menu_Instrum_SOLO
Menu_Instrum_SOLO.add_line(Menu_Instrum_SOLO_Opc1);
Menu_Instrum_SOLO.add_line(Menu_Instrum_SOLO_Opc2);
Menu_Instrum_SOLO.add_line(Menu_Instrum_SOLO_Opc3);
Menu_Instrum_SOLO.add_line(Menu_Instrum_SOLO_Opc4);
Menu_Instrum_SOLO.add_line(Menu_Instrum_SOLO_Volver);
//Activamos las lineas que queremos ver en Menu_Instrum_DUAL
Menu_Instrum_DUAL.add_line(Menu_Instrum_DUAL_Opc1);
Menu_Instrum_DUAL.add_line(Menu_Instrum_DUAL_Opc2);
Menu_Instrum_DUAL.add_line(Menu_Instrum_DUAL_Opc3);
Menu_Instrum_DUAL.add_line(Menu_Instrum_DUAL_Opc4);
Menu_Instrum_DUAL.add_line(Menu_Instrum_DUAL_Volver);
//Activamos las lineas que queremos ver en Menu_Metronomo
Menu_Metronomo.add_line(Menu_Metronomo_Opc1);
Menu_Metronomo.add_line(Menu_Metronomo_Opc2);
Menu_Metronomo.add_line(Menu_Metronomo_Opc3);
Menu_Metronomo.add_line(Menu_Metronomo_Opc4);
Menu_Metronomo.add_line(Menu_Metronomo_Volver);
//Activamos las lineas que queremos ver en Menu_Ajustes
Menu_Ajustes.add_line(Menu_Ajustes_Opc1);
Menu_Ajustes.add_line(Menu_Ajustes_Opc2);
Menu_Ajustes.add_line(Menu_Ajustes_Opc3);
Menu_Ajustes.add_line(Menu_Ajustes_Opc4);
Menu_Ajustes.add_line(Menu_Ajustes_Volver);
//Activamos las lineas que queremos ver en Listado_Pianos
Listado_Pianos.add_line(Listado_Pianos_01);
Listado_Pianos.add_line(Listado_Pianos_02);
Listado_Pianos.add_line(Listado_Pianos_03);
Listado_Pianos.add_line(Listado_Pianos_04);
Listado_Pianos.add_line(Listado_Pianos_05);
Listado_Pianos.add_line(Listado_Pianos_06);
Listado_Pianos.add_line(Listado_Pianos_07);
Listado_Pianos.add_line(Listado_Pianos_08);
Listado_Pianos.add_line(Listado_Pianos_09);
Listado_Pianos.add_line(Listado_Pianos_10);
Listado_Pianos.add_line(Listado_Pianos_11);
Listado_Pianos.add_line(Listado_Pianos_12);
Listado_Pianos.add_line(Listado_Pianos_Volver);
//Activamos las lineas que queremos ver en Listado_EPianos
Listado_EPianos.add_line(Listado_EPianos_01);
Listado_EPianos.add_line(Listado_EPianos_02);
Listado_EPianos.add_line(Listado_EPianos_03);
Listado_EPianos.add_line(Listado_EPianos_04);
Listado_EPianos.add_line(Listado_EPianos_05);
Listado_EPianos.add_line(Listado_EPianos_06);
Listado_EPianos.add_line(Listado_EPianos_07);
Listado_EPianos.add_line(Listado_EPianos_08);
Listado_EPianos.add_line(Listado_EPianos_09);
Listado_EPianos.add_line(Listado_EPianos_10);
Listado_EPianos.add_line(Listado_EPianos_11);
Listado_EPianos.add_line(Listado_EPianos_12);
Listado_EPianos.add_line(Listado_EPianos_13);
Listado_EPianos.add_line(Listado_EPianos_14);
Listado_EPianos.add_line(Listado_EPianos_15);
Listado_EPianos.add_line(Listado_EPianos_16);
Listado_EPianos.add_line(Listado_EPianos_17);
Listado_EPianos.add_line(Listado_EPianos_18);
Listado_EPianos.add_line(Listado_EPianos_19);
Listado_EPianos.add_line(Listado_EPianos_20);
Listado_EPianos.add_line(Listado_EPianos_Volver);
//Activamos las lineas que queremos ver en Listado_Otros
Listado_Otros.add_line(Listado_Otros_01);
Listado_Otros.add_line(Listado_Otros_02);
Listado_Otros.add_line(Listado_Otros_03);
Listado_Otros.add_line(Listado_Otros_04);
Listado_Otros.add_line(Listado_Otros_05);
Listado_Otros.add_line(Listado_Otros_06);
Listado_Otros.add_line(Listado_Otros_07);
Listado_Otros.add_line(Listado_Otros_08);
Listado_Otros.add_line(Listado_Otros_09);
Listado_Otros.add_line(Listado_Otros_10);
Listado_Otros.add_line(Listado_Otros_11);
Listado_Otros.add_line(Listado_Otros_12);
Listado_Otros.add_line(Listado_Otros_13);
Listado_Otros.add_line(Listado_Otros_14);
Listado_Otros.add_line(Listado_Otros_15);
Listado_Otros.add_line(Listado_Otros_16);
Listado_Otros.add_line(Listado_Otros_17);
Listado_Otros.add_line(Listado_Otros_18);
Listado_Otros.add_line(Listado_Otros_19);
Listado_Otros.add_line(Listado_Otros_20);
Listado_Otros.add_line(Listado_Otros_21);
Listado_Otros.add_line(Listado_Otros_22);
Listado_Otros.add_line(Listado_Otros_23);
Listado_Otros.add_line(Listado_Otros_24);
Listado_Otros.add_line(Listado_Otros_Volver);
//Activamos las lineas que queremos ver en Listado_GM2
Listado_GM2.add_line(Listado_GM2_01);
Listado_GM2.add_line(Listado_GM2_02);
Listado_GM2.add_line(Listado_GM2_03);
Listado_GM2.add_line(Listado_GM2_04);
Listado_GM2.add_line(Listado_GM2_05);
Listado_GM2.add_line(Listado_GM2_06);
Listado_GM2.add_line(Listado_GM2_07);
Listado_GM2.add_line(Listado_GM2_08);
Listado_GM2.add_line(Listado_GM2_09);
Listado_GM2.add_line(Listado_GM2_10);
Listado_GM2.add_line(Listado_GM2_11);
Listado_GM2.add_line(Listado_GM2_12);
Listado_GM2.add_line(Listado_GM2_13);
Listado_GM2.add_line(Listado_GM2_14);
Listado_GM2.add_line(Listado_GM2_15);
Listado_GM2.add_line(Listado_GM2_16);
Listado_GM2.add_line(Listado_GM2_17);
Listado_GM2.add_line(Listado_GM2_18);
Listado_GM2.add_line(Listado_GM2_19);
Listado_GM2.add_line(Listado_GM2_20);
Listado_GM2.add_line(Listado_GM2_21);
Listado_GM2.add_line(Listado_GM2_22);
Listado_GM2.add_line(Listado_GM2_23);
Listado_GM2.add_line(Listado_GM2_24);
Listado_GM2.add_line(Listado_GM2_25);
Listado_GM2.add_line(Listado_GM2_26);
Listado_GM2.add_line(Listado_GM2_27);
Listado_GM2.add_line(Listado_GM2_28);
Listado_GM2.add_line(Listado_GM2_29);
Listado_GM2.add_line(Listado_GM2_30);
Listado_GM2.add_line(Listado_GM2_31);
Listado_GM2.add_line(Listado_GM2_32);
Listado_GM2.add_line(Listado_GM2_33);
Listado_GM2.add_line(Listado_GM2_34);
Listado_GM2.add_line(Listado_GM2_35);
Listado_GM2.add_line(Listado_GM2_36);
Listado_GM2.add_line(Listado_GM2_37);
Listado_GM2.add_line(Listado_GM2_38);
Listado_GM2.add_line(Listado_GM2_39);
Listado_GM2.add_line(Listado_GM2_40);
Listado_GM2.add_line(Listado_GM2_41);
Listado_GM2.add_line(Listado_GM2_42);
Listado_GM2.add_line(Listado_GM2_43);
Listado_GM2.add_line(Listado_GM2_44);
Listado_GM2.add_line(Listado_GM2_45);
Listado_GM2.add_line(Listado_GM2_46);
Listado_GM2.add_line(Listado_GM2_47);
Listado_GM2.add_line(Listado_GM2_48);
Listado_GM2.add_line(Listado_GM2_49);
Listado_GM2.add_line(Listado_GM2_50);
Listado_GM2.add_line(Listado_GM2_51);
Listado_GM2.add_line(Listado_GM2_52);
Listado_GM2.add_line(Listado_GM2_53);
Listado_GM2.add_line(Listado_GM2_54);
Listado_GM2.add_line(Listado_GM2_55);
Listado_GM2.add_line(Listado_GM2_56);
Listado_GM2.add_line(Listado_GM2_57);
Listado_GM2.add_line(Listado_GM2_58);
Listado_GM2.add_line(Listado_GM2_59);
Listado_GM2.add_line(Listado_GM2_60);
Listado_GM2.add_line(Listado_GM2_61);
Listado_GM2.add_line(Listado_GM2_62);
Listado_GM2.add_line(Listado_GM2_63);
Listado_GM2.add_line(Listado_GM2_64);
Listado_GM2.add_line(Listado_GM2_65);
Listado_GM2.add_line(Listado_GM2_66);
Listado_GM2.add_line(Listado_GM2_67);
Listado_GM2.add_line(Listado_GM2_68);
Listado_GM2.add_line(Listado_GM2_69);
Listado_GM2.add_line(Listado_GM2_70);
Listado_GM2.add_line(Listado_GM2_71);
Listado_GM2.add_line(Listado_GM2_72);
Listado_GM2.add_line(Listado_GM2_73);
Listado_GM2.add_line(Listado_GM2_74);
Listado_GM2.add_line(Listado_GM2_75);
Listado_GM2.add_line(Listado_GM2_76);
Listado_GM2.add_line(Listado_GM2_77);
Listado_GM2.add_line(Listado_GM2_78);
Listado_GM2.add_line(Listado_GM2_79);
Listado_GM2.add_line(Listado_GM2_80);
Listado_GM2.add_line(Listado_GM2_81);
Listado_GM2.add_line(Listado_GM2_82);
Listado_GM2.add_line(Listado_GM2_83);
Listado_GM2.add_line(Listado_GM2_84);
Listado_GM2.add_line(Listado_GM2_85);
Listado_GM2.add_line(Listado_GM2_86);
Listado_GM2.add_line(Listado_GM2_87);
Listado_GM2.add_line(Listado_GM2_88);
Listado_GM2.add_line(Listado_GM2_89);
Listado_GM2.add_line(Listado_GM2_90);
Listado_GM2.add_line(Listado_GM2_91);
Listado_GM2.add_line(Listado_GM2_92);
Listado_GM2.add_line(Listado_GM2_93);
Listado_GM2.add_line(Listado_GM2_94);
Listado_GM2.add_line(Listado_GM2_95);
Listado_GM2.add_line(Listado_GM2_96);
Listado_GM2.add_line(Listado_GM2_97);
Listado_GM2.add_line(Listado_GM2_98);
Listado_GM2.add_line(Listado_GM2_99);
Listado_GM2.add_line(Listado_GM2_100);
Listado_GM2.add_line(Listado_GM2_101);
Listado_GM2.add_line(Listado_GM2_102);
Listado_GM2.add_line(Listado_GM2_103);
Listado_GM2.add_line(Listado_GM2_104);
Listado_GM2.add_line(Listado_GM2_105);
Listado_GM2.add_line(Listado_GM2_106);
Listado_GM2.add_line(Listado_GM2_107);
Listado_GM2.add_line(Listado_GM2_108);
Listado_GM2.add_line(Listado_GM2_109);
Listado_GM2.add_line(Listado_GM2_110);
Listado_GM2.add_line(Listado_GM2_111);
Listado_GM2.add_line(Listado_GM2_112);
Listado_GM2.add_line(Listado_GM2_113);
Listado_GM2.add_line(Listado_GM2_114);
Listado_GM2.add_line(Listado_GM2_115);
Listado_GM2.add_line(Listado_GM2_116);
Listado_GM2.add_line(Listado_GM2_117);
Listado_GM2.add_line(Listado_GM2_118);
Listado_GM2.add_line(Listado_GM2_119);
Listado_GM2.add_line(Listado_GM2_120);
Listado_GM2.add_line(Listado_GM2_121);
Listado_GM2.add_line(Listado_GM2_122);
Listado_GM2.add_line(Listado_GM2_123);
Listado_GM2.add_line(Listado_GM2_124);
Listado_GM2.add_line(Listado_GM2_125);
Listado_GM2.add_line(Listado_GM2_126);
Listado_GM2.add_line(Listado_GM2_127);
Listado_GM2.add_line(Listado_GM2_128);
Listado_GM2.add_line(Listado_GM2_129);
Listado_GM2.add_line(Listado_GM2_130);
Listado_GM2.add_line(Listado_GM2_131);
Listado_GM2.add_line(Listado_GM2_132);
Listado_GM2.add_line(Listado_GM2_133);
Listado_GM2.add_line(Listado_GM2_134);
Listado_GM2.add_line(Listado_GM2_135);
Listado_GM2.add_line(Listado_GM2_136);
Listado_GM2.add_line(Listado_GM2_137);
Listado_GM2.add_line(Listado_GM2_138);
Listado_GM2.add_line(Listado_GM2_139);
Listado_GM2.add_line(Listado_GM2_140);
Listado_GM2.add_line(Listado_GM2_141);
Listado_GM2.add_line(Listado_GM2_142);
Listado_GM2.add_line(Listado_GM2_143);
Listado_GM2.add_line(Listado_GM2_144);
Listado_GM2.add_line(Listado_GM2_145);
Listado_GM2.add_line(Listado_GM2_146);
Listado_GM2.add_line(Listado_GM2_147);
Listado_GM2.add_line(Listado_GM2_148);
Listado_GM2.add_line(Listado_GM2_149);
Listado_GM2.add_line(Listado_GM2_150);
Listado_GM2.add_line(Listado_GM2_151);
Listado_GM2.add_line(Listado_GM2_152);
Listado_GM2.add_line(Listado_GM2_153);
Listado_GM2.add_line(Listado_GM2_154);
Listado_GM2.add_line(Listado_GM2_155);
Listado_GM2.add_line(Listado_GM2_156);
Listado_GM2.add_line(Listado_GM2_157);
Listado_GM2.add_line(Listado_GM2_158);
Listado_GM2.add_line(Listado_GM2_159);
Listado_GM2.add_line(Listado_GM2_160);
Listado_GM2.add_line(Listado_GM2_161);
Listado_GM2.add_line(Listado_GM2_162);
Listado_GM2.add_line(Listado_GM2_163);
Listado_GM2.add_line(Listado_GM2_164);
Listado_GM2.add_line(Listado_GM2_165);
Listado_GM2.add_line(Listado_GM2_166);
Listado_GM2.add_line(Listado_GM2_167);
Listado_GM2.add_line(Listado_GM2_168);
Listado_GM2.add_line(Listado_GM2_169);
Listado_GM2.add_line(Listado_GM2_170);
Listado_GM2.add_line(Listado_GM2_171);
Listado_GM2.add_line(Listado_GM2_172);
Listado_GM2.add_line(Listado_GM2_173);
Listado_GM2.add_line(Listado_GM2_174);
Listado_GM2.add_line(Listado_GM2_175);
Listado_GM2.add_line(Listado_GM2_176);
Listado_GM2.add_line(Listado_GM2_177);
Listado_GM2.add_line(Listado_GM2_178);
Listado_GM2.add_line(Listado_GM2_179);
Listado_GM2.add_line(Listado_GM2_180);
Listado_GM2.add_line(Listado_GM2_181);
Listado_GM2.add_line(Listado_GM2_182);
Listado_GM2.add_line(Listado_GM2_183);
Listado_GM2.add_line(Listado_GM2_184);
Listado_GM2.add_line(Listado_GM2_185);
Listado_GM2.add_line(Listado_GM2_186);
Listado_GM2.add_line(Listado_GM2_187);
Listado_GM2.add_line(Listado_GM2_188);
Listado_GM2.add_line(Listado_GM2_189);
Listado_GM2.add_line(Listado_GM2_190);
Listado_GM2.add_line(Listado_GM2_191);
Listado_GM2.add_line(Listado_GM2_192);
Listado_GM2.add_line(Listado_GM2_193);
Listado_GM2.add_line(Listado_GM2_194);
Listado_GM2.add_line(Listado_GM2_195);
Listado_GM2.add_line(Listado_GM2_196);
Listado_GM2.add_line(Listado_GM2_197);
Listado_GM2.add_line(Listado_GM2_198);
Listado_GM2.add_line(Listado_GM2_199);
Listado_GM2.add_line(Listado_GM2_200);
Listado_GM2.add_line(Listado_GM2_201);
Listado_GM2.add_line(Listado_GM2_202);
Listado_GM2.add_line(Listado_GM2_203);
Listado_GM2.add_line(Listado_GM2_204);
Listado_GM2.add_line(Listado_GM2_205);
Listado_GM2.add_line(Listado_GM2_206);
Listado_GM2.add_line(Listado_GM2_207);
Listado_GM2.add_line(Listado_GM2_208);
Listado_GM2.add_line(Listado_GM2_209);
Listado_GM2.add_line(Listado_GM2_210);
Listado_GM2.add_line(Listado_GM2_211);
Listado_GM2.add_line(Listado_GM2_212);
Listado_GM2.add_line(Listado_GM2_213);
Listado_GM2.add_line(Listado_GM2_214);
Listado_GM2.add_line(Listado_GM2_215);
Listado_GM2.add_line(Listado_GM2_216);
Listado_GM2.add_line(Listado_GM2_217);
Listado_GM2.add_line(Listado_GM2_218);
Listado_GM2.add_line(Listado_GM2_219);
Listado_GM2.add_line(Listado_GM2_220);
Listado_GM2.add_line(Listado_GM2_221);
Listado_GM2.add_line(Listado_GM2_222);
Listado_GM2.add_line(Listado_GM2_223);
Listado_GM2.add_line(Listado_GM2_224);
Listado_GM2.add_line(Listado_GM2_225);
Listado_GM2.add_line(Listado_GM2_226);
Listado_GM2.add_line(Listado_GM2_227);
Listado_GM2.add_line(Listado_GM2_228);
Listado_GM2.add_line(Listado_GM2_229);
Listado_GM2.add_line(Listado_GM2_230);
Listado_GM2.add_line(Listado_GM2_231);
Listado_GM2.add_line(Listado_GM2_232);
Listado_GM2.add_line(Listado_GM2_233);
Listado_GM2.add_line(Listado_GM2_234);
Listado_GM2.add_line(Listado_GM2_235);
Listado_GM2.add_line(Listado_GM2_236);
Listado_GM2.add_line(Listado_GM2_237);
Listado_GM2.add_line(Listado_GM2_238);
Listado_GM2.add_line(Listado_GM2_239);
Listado_GM2.add_line(Listado_GM2_240);
Listado_GM2.add_line(Listado_GM2_241);
Listado_GM2.add_line(Listado_GM2_242);
Listado_GM2.add_line(Listado_GM2_243);
Listado_GM2.add_line(Listado_GM2_244);
Listado_GM2.add_line(Listado_GM2_245);
Listado_GM2.add_line(Listado_GM2_246);
Listado_GM2.add_line(Listado_GM2_247);
Listado_GM2.add_line(Listado_GM2_248);
Listado_GM2.add_line(Listado_GM2_249);
Listado_GM2.add_line(Listado_GM2_250);
Listado_GM2.add_line(Listado_GM2_251);
Listado_GM2.add_line(Listado_GM2_252);
Listado_GM2.add_line(Listado_GM2_253);
Listado_GM2.add_line(Listado_GM2_254);
Listado_GM2.add_line(Listado_GM2_255);
Listado_GM2.add_line(Listado_GM2_256);
Listado_GM2.add_line(Listado_GM2_Volver);
//Definimos posicion del selector de lineas para el Menu_Principal
Menu_Principal_Opc1.set_focusPosition(Position::LEFT);
Menu_Principal_Opc2.set_focusPosition(Position::LEFT);
Menu_Principal_Opc3.set_focusPosition(Position::LEFT);
Menu_Principal_Opc4.set_focusPosition(Position::LEFT);
Menu_Principal_Volver.set_focusPosition(Position::LEFT);
//Definimos posicion del selector de lineas para el Menu_Instrum_SOLO
Menu_Instrum_SOLO_Opc1.set_focusPosition(Position::LEFT);
Menu_Instrum_SOLO_Opc2.set_focusPosition(Position::LEFT);
Menu_Instrum_SOLO_Opc3.set_focusPosition(Position::LEFT);
Menu_Instrum_SOLO_Opc4.set_focusPosition(Position::LEFT);
Menu_Instrum_SOLO_Volver.set_focusPosition(Position::LEFT);
//Definimos posicion del selector de lineas para el Menu_Instrum_DUAL
Menu_Instrum_DUAL_Opc1.set_focusPosition(Position::LEFT);
Menu_Instrum_DUAL_Opc2.set_focusPosition(Position::LEFT);
Menu_Instrum_DUAL_Opc3.set_focusPosition(Position::LEFT);
Menu_Instrum_DUAL_Opc4.set_focusPosition(Position::LEFT);
Menu_Instrum_DUAL_Volver.set_focusPosition(Position::LEFT);
//Definimos posicion del selector de lineas para el Menu_Metronomo
Menu_Metronomo_Opc1.set_focusPosition(Position::LEFT);
Menu_Metronomo_Opc2.set_focusPosition(Position::LEFT);
Menu_Metronomo_Opc3.set_focusPosition(Position::LEFT);
Menu_Metronomo_Opc4.set_focusPosition(Position::LEFT);
Menu_Metronomo_Volver.set_focusPosition(Position::LEFT);
//Definimos posicion del selector de lineas para el Menu_Ajustes
Menu_Ajustes_Opc1.set_focusPosition(Position::LEFT);
Menu_Ajustes_Opc2.set_focusPosition(Position::LEFT);
Menu_Ajustes_Opc3.set_focusPosition(Position::LEFT);
Menu_Ajustes_Opc4.set_focusPosition(Position::LEFT);
Menu_Ajustes_Volver.set_focusPosition(Position::LEFT);
//Definimos posicion del selector de lineas para el Listado_Pianos
Listado_Pianos_01.set_focusPosition(Position::LEFT);
Listado_Pianos_02.set_focusPosition(Position::LEFT);
Listado_Pianos_03.set_focusPosition(Position::LEFT);
Listado_Pianos_04.set_focusPosition(Position::LEFT);
Listado_Pianos_05.set_focusPosition(Position::LEFT);
Listado_Pianos_06.set_focusPosition(Position::LEFT);
Listado_Pianos_07.set_focusPosition(Position::LEFT);
Listado_Pianos_08.set_focusPosition(Position::LEFT);
Listado_Pianos_09.set_focusPosition(Position::LEFT);
Listado_Pianos_10.set_focusPosition(Position::LEFT);
Listado_Pianos_11.set_focusPosition(Position::LEFT);
Listado_Pianos_12.set_focusPosition(Position::LEFT);
Listado_Pianos_Volver.set_focusPosition(Position::LEFT);
//Definimos posicion del selector de lineas para el Listado_EPianos
Listado_EPianos_01.set_focusPosition(Position::LEFT);
Listado_EPianos_02.set_focusPosition(Position::LEFT);
Listado_EPianos_03.set_focusPosition(Position::LEFT);
Listado_EPianos_04.set_focusPosition(Position::LEFT);
Listado_EPianos_05.set_focusPosition(Position::LEFT);
Listado_EPianos_06.set_focusPosition(Position::LEFT);
Listado_EPianos_07.set_focusPosition(Position::LEFT);
Listado_EPianos_08.set_focusPosition(Position::LEFT);
Listado_EPianos_09.set_focusPosition(Position::LEFT);
Listado_EPianos_10.set_focusPosition(Position::LEFT);
Listado_EPianos_11.set_focusPosition(Position::LEFT);
Listado_EPianos_12.set_focusPosition(Position::LEFT);
Listado_EPianos_13.set_focusPosition(Position::LEFT);
Listado_EPianos_14.set_focusPosition(Position::LEFT);
Listado_EPianos_15.set_focusPosition(Position::LEFT);
Listado_EPianos_16.set_focusPosition(Position::LEFT);
Listado_EPianos_17.set_focusPosition(Position::LEFT);
Listado_EPianos_18.set_focusPosition(Position::LEFT);
Listado_EPianos_19.set_focusPosition(Position::LEFT);
Listado_EPianos_20.set_focusPosition(Position::LEFT);
Listado_EPianos_Volver.set_focusPosition(Position::LEFT);
//Definimos posicion del selector de lineas para el Listado_Otros
Listado_Otros_01.set_focusPosition(Position::LEFT);
Listado_Otros_02.set_focusPosition(Position::LEFT);
Listado_Otros_03.set_focusPosition(Position::LEFT);
Listado_Otros_04.set_focusPosition(Position::LEFT);
Listado_Otros_05.set_focusPosition(Position::LEFT);
Listado_Otros_06.set_focusPosition(Position::LEFT);
Listado_Otros_07.set_focusPosition(Position::LEFT);
Listado_Otros_08.set_focusPosition(Position::LEFT);
Listado_Otros_09.set_focusPosition(Position::LEFT);
Listado_Otros_10.set_focusPosition(Position::LEFT);
Listado_Otros_11.set_focusPosition(Position::LEFT);
Listado_Otros_12.set_focusPosition(Position::LEFT);
Listado_Otros_13.set_focusPosition(Position::LEFT);
Listado_Otros_14.set_focusPosition(Position::LEFT);
Listado_Otros_15.set_focusPosition(Position::LEFT);
Listado_Otros_16.set_focusPosition(Position::LEFT);
Listado_Otros_17.set_focusPosition(Position::LEFT);
Listado_Otros_18.set_focusPosition(Position::LEFT);
Listado_Otros_19.set_focusPosition(Position::LEFT);
Listado_Otros_20.set_focusPosition(Position::LEFT);
Listado_Otros_21.set_focusPosition(Position::LEFT);
Listado_Otros_22.set_focusPosition(Position::LEFT);
Listado_Otros_23.set_focusPosition(Position::LEFT);
Listado_Otros_24.set_focusPosition(Position::LEFT);
Listado_Otros_Volver.set_focusPosition(Position::LEFT);
//Definimos posicion del selector de lineas para el Listado_GM2
Listado_GM2_01.set_focusPosition(Position::LEFT);
Listado_GM2_02.set_focusPosition(Position::LEFT);
Listado_GM2_03.set_focusPosition(Position::LEFT);
Listado_GM2_04.set_focusPosition(Position::LEFT);
Listado_GM2_05.set_focusPosition(Position::LEFT);
Listado_GM2_06.set_focusPosition(Position::LEFT);
Listado_GM2_07.set_focusPosition(Position::LEFT);
Listado_GM2_08.set_focusPosition(Position::LEFT);
Listado_GM2_09.set_focusPosition(Position::LEFT);
Listado_GM2_10.set_focusPosition(Position::LEFT);
Listado_GM2_11.set_focusPosition(Position::LEFT);
Listado_GM2_12.set_focusPosition(Position::LEFT);
Listado_GM2_13.set_focusPosition(Position::LEFT);
Listado_GM2_14.set_focusPosition(Position::LEFT);
Listado_GM2_15.set_focusPosition(Position::LEFT);
Listado_GM2_16.set_focusPosition(Position::LEFT);
Listado_GM2_17.set_focusPosition(Position::LEFT);
Listado_GM2_18.set_focusPosition(Position::LEFT);
Listado_GM2_19.set_focusPosition(Position::LEFT);
Listado_GM2_20.set_focusPosition(Position::LEFT);
Listado_GM2_21.set_focusPosition(Position::LEFT);
Listado_GM2_22.set_focusPosition(Position::LEFT);
Listado_GM2_23.set_focusPosition(Position::LEFT);
Listado_GM2_24.set_focusPosition(Position::LEFT);
Listado_GM2_25.set_focusPosition(Position::LEFT);
Listado_GM2_26.set_focusPosition(Position::LEFT);
Listado_GM2_27.set_focusPosition(Position::LEFT);
Listado_GM2_28.set_focusPosition(Position::LEFT);
Listado_GM2_29.set_focusPosition(Position::LEFT);
Listado_GM2_30.set_focusPosition(Position::LEFT);
Listado_GM2_31.set_focusPosition(Position::LEFT);
Listado_GM2_32.set_focusPosition(Position::LEFT);
Listado_GM2_33.set_focusPosition(Position::LEFT);
Listado_GM2_34.set_focusPosition(Position::LEFT);
Listado_GM2_35.set_focusPosition(Position::LEFT);
Listado_GM2_36.set_focusPosition(Position::LEFT);
Listado_GM2_37.set_focusPosition(Position::LEFT);
Listado_GM2_38.set_focusPosition(Position::LEFT);
Listado_GM2_39.set_focusPosition(Position::LEFT);
Listado_GM2_40.set_focusPosition(Position::LEFT);
Listado_GM2_41.set_focusPosition(Position::LEFT);
Listado_GM2_42.set_focusPosition(Position::LEFT);
Listado_GM2_43.set_focusPosition(Position::LEFT);
Listado_GM2_44.set_focusPosition(Position::LEFT);
Listado_GM2_45.set_focusPosition(Position::LEFT);
Listado_GM2_46.set_focusPosition(Position::LEFT);
Listado_GM2_47.set_focusPosition(Position::LEFT);
Listado_GM2_48.set_focusPosition(Position::LEFT);
Listado_GM2_49.set_focusPosition(Position::LEFT);
Listado_GM2_50.set_focusPosition(Position::LEFT);
Listado_GM2_51.set_focusPosition(Position::LEFT);
Listado_GM2_52.set_focusPosition(Position::LEFT);
Listado_GM2_53.set_focusPosition(Position::LEFT);
Listado_GM2_54.set_focusPosition(Position::LEFT);
Listado_GM2_55.set_focusPosition(Position::LEFT);
Listado_GM2_56.set_focusPosition(Position::LEFT);
Listado_GM2_57.set_focusPosition(Position::LEFT);
Listado_GM2_58.set_focusPosition(Position::LEFT);
Listado_GM2_59.set_focusPosition(Position::LEFT);
Listado_GM2_60.set_focusPosition(Position::LEFT);
Listado_GM2_61.set_focusPosition(Position::LEFT);
Listado_GM2_62.set_focusPosition(Position::LEFT);
Listado_GM2_63.set_focusPosition(Position::LEFT);
Listado_GM2_64.set_focusPosition(Position::LEFT);
Listado_GM2_65.set_focusPosition(Position::LEFT);
Listado_GM2_66.set_focusPosition(Position::LEFT);
Listado_GM2_67.set_focusPosition(Position::LEFT);
Listado_GM2_68.set_focusPosition(Position::LEFT);
Listado_GM2_69.set_focusPosition(Position::LEFT);
Listado_GM2_70.set_focusPosition(Position::LEFT);
Listado_GM2_71.set_focusPosition(Position::LEFT);
Listado_GM2_72.set_focusPosition(Position::LEFT);
Listado_GM2_73.set_focusPosition(Position::LEFT);
Listado_GM2_74.set_focusPosition(Position::LEFT);
Listado_GM2_75.set_focusPosition(Position::LEFT);
Listado_GM2_76.set_focusPosition(Position::LEFT);
Listado_GM2_77.set_focusPosition(Position::LEFT);
Listado_GM2_78.set_focusPosition(Position::LEFT);
Listado_GM2_79.set_focusPosition(Position::LEFT);
Listado_GM2_80.set_focusPosition(Position::LEFT);
Listado_GM2_81.set_focusPosition(Position::LEFT);
Listado_GM2_82.set_focusPosition(Position::LEFT);
Listado_GM2_83.set_focusPosition(Position::LEFT);
Listado_GM2_84.set_focusPosition(Position::LEFT);
Listado_GM2_85.set_focusPosition(Position::LEFT);
Listado_GM2_86.set_focusPosition(Position::LEFT);
Listado_GM2_87.set_focusPosition(Position::LEFT);
Listado_GM2_88.set_focusPosition(Position::LEFT);
Listado_GM2_89.set_focusPosition(Position::LEFT);
Listado_GM2_90.set_focusPosition(Position::LEFT);
Listado_GM2_91.set_focusPosition(Position::LEFT);
Listado_GM2_92.set_focusPosition(Position::LEFT);
Listado_GM2_93.set_focusPosition(Position::LEFT);
Listado_GM2_94.set_focusPosition(Position::LEFT);
Listado_GM2_95.set_focusPosition(Position::LEFT);
Listado_GM2_96.set_focusPosition(Position::LEFT);
Listado_GM2_97.set_focusPosition(Position::LEFT);
Listado_GM2_98.set_focusPosition(Position::LEFT);
Listado_GM2_99.set_focusPosition(Position::LEFT);
Listado_GM2_100.set_focusPosition(Position::LEFT);
Listado_GM2_101.set_focusPosition(Position::LEFT);
Listado_GM2_102.set_focusPosition(Position::LEFT);
Listado_GM2_103.set_focusPosition(Position::LEFT);
Listado_GM2_104.set_focusPosition(Position::LEFT);
Listado_GM2_105.set_focusPosition(Position::LEFT);
Listado_GM2_106.set_focusPosition(Position::LEFT);
Listado_GM2_107.set_focusPosition(Position::LEFT);
Listado_GM2_108.set_focusPosition(Position::LEFT);
Listado_GM2_109.set_focusPosition(Position::LEFT);
Listado_GM2_110.set_focusPosition(Position::LEFT);
Listado_GM2_111.set_focusPosition(Position::LEFT);
Listado_GM2_112.set_focusPosition(Position::LEFT);
Listado_GM2_113.set_focusPosition(Position::LEFT);
Listado_GM2_114.set_focusPosition(Position::LEFT);
Listado_GM2_115.set_focusPosition(Position::LEFT);
Listado_GM2_116.set_focusPosition(Position::LEFT);
Listado_GM2_117.set_focusPosition(Position::LEFT);
Listado_GM2_118.set_focusPosition(Position::LEFT);
Listado_GM2_119.set_focusPosition(Position::LEFT);
Listado_GM2_120.set_focusPosition(Position::LEFT);
Listado_GM2_121.set_focusPosition(Position::LEFT);
Listado_GM2_122.set_focusPosition(Position::LEFT);
Listado_GM2_123.set_focusPosition(Position::LEFT);
Listado_GM2_124.set_focusPosition(Position::LEFT);
Listado_GM2_125.set_focusPosition(Position::LEFT);
Listado_GM2_126.set_focusPosition(Position::LEFT);
Listado_GM2_127.set_focusPosition(Position::LEFT);
Listado_GM2_128.set_focusPosition(Position::LEFT);
Listado_GM2_129.set_focusPosition(Position::LEFT);
Listado_GM2_130.set_focusPosition(Position::LEFT);
Listado_GM2_131.set_focusPosition(Position::LEFT);
Listado_GM2_132.set_focusPosition(Position::LEFT);
Listado_GM2_133.set_focusPosition(Position::LEFT);
Listado_GM2_134.set_focusPosition(Position::LEFT);
Listado_GM2_135.set_focusPosition(Position::LEFT);
Listado_GM2_136.set_focusPosition(Position::LEFT);
Listado_GM2_137.set_focusPosition(Position::LEFT);
Listado_GM2_138.set_focusPosition(Position::LEFT);
Listado_GM2_139.set_focusPosition(Position::LEFT);
Listado_GM2_140.set_focusPosition(Position::LEFT);
Listado_GM2_141.set_focusPosition(Position::LEFT);
Listado_GM2_142.set_focusPosition(Position::LEFT);
Listado_GM2_143.set_focusPosition(Position::LEFT);
Listado_GM2_144.set_focusPosition(Position::LEFT);
Listado_GM2_145.set_focusPosition(Position::LEFT);
Listado_GM2_146.set_focusPosition(Position::LEFT);
Listado_GM2_147.set_focusPosition(Position::LEFT);
Listado_GM2_148.set_focusPosition(Position::LEFT);
Listado_GM2_149.set_focusPosition(Position::LEFT);
Listado_GM2_150.set_focusPosition(Position::LEFT);
Listado_GM2_151.set_focusPosition(Position::LEFT);
Listado_GM2_152.set_focusPosition(Position::LEFT);
Listado_GM2_153.set_focusPosition(Position::LEFT);
Listado_GM2_154.set_focusPosition(Position::LEFT);
Listado_GM2_155.set_focusPosition(Position::LEFT);
Listado_GM2_156.set_focusPosition(Position::LEFT);
Listado_GM2_157.set_focusPosition(Position::LEFT);
Listado_GM2_158.set_focusPosition(Position::LEFT);
Listado_GM2_159.set_focusPosition(Position::LEFT);
Listado_GM2_160.set_focusPosition(Position::LEFT);
Listado_GM2_161.set_focusPosition(Position::LEFT);
Listado_GM2_162.set_focusPosition(Position::LEFT);
Listado_GM2_163.set_focusPosition(Position::LEFT);
Listado_GM2_164.set_focusPosition(Position::LEFT);
Listado_GM2_165.set_focusPosition(Position::LEFT);
Listado_GM2_166.set_focusPosition(Position::LEFT);
Listado_GM2_167.set_focusPosition(Position::LEFT);
Listado_GM2_168.set_focusPosition(Position::LEFT);
Listado_GM2_169.set_focusPosition(Position::LEFT);
Listado_GM2_170.set_focusPosition(Position::LEFT);
Listado_GM2_171.set_focusPosition(Position::LEFT);
Listado_GM2_172.set_focusPosition(Position::LEFT);
Listado_GM2_173.set_focusPosition(Position::LEFT);
Listado_GM2_174.set_focusPosition(Position::LEFT);
Listado_GM2_175.set_focusPosition(Position::LEFT);
Listado_GM2_176.set_focusPosition(Position::LEFT);
Listado_GM2_177.set_focusPosition(Position::LEFT);
Listado_GM2_178.set_focusPosition(Position::LEFT);
Listado_GM2_179.set_focusPosition(Position::LEFT);
Listado_GM2_180.set_focusPosition(Position::LEFT);
Listado_GM2_181.set_focusPosition(Position::LEFT);
Listado_GM2_182.set_focusPosition(Position::LEFT);
Listado_GM2_183.set_focusPosition(Position::LEFT);
Listado_GM2_184.set_focusPosition(Position::LEFT);
Listado_GM2_185.set_focusPosition(Position::LEFT);
Listado_GM2_186.set_focusPosition(Position::LEFT);
Listado_GM2_187.set_focusPosition(Position::LEFT);
Listado_GM2_188.set_focusPosition(Position::LEFT);
Listado_GM2_189.set_focusPosition(Position::LEFT);
Listado_GM2_190.set_focusPosition(Position::LEFT);
Listado_GM2_191.set_focusPosition(Position::LEFT);
Listado_GM2_192.set_focusPosition(Position::LEFT);
Listado_GM2_193.set_focusPosition(Position::LEFT);
Listado_GM2_194.set_focusPosition(Position::LEFT);
Listado_GM2_195.set_focusPosition(Position::LEFT);
Listado_GM2_196.set_focusPosition(Position::LEFT);
Listado_GM2_197.set_focusPosition(Position::LEFT);
Listado_GM2_198.set_focusPosition(Position::LEFT);
Listado_GM2_199.set_focusPosition(Position::LEFT);
Listado_GM2_200.set_focusPosition(Position::LEFT);
Listado_GM2_201.set_focusPosition(Position::LEFT);
Listado_GM2_202.set_focusPosition(Position::LEFT);
Listado_GM2_203.set_focusPosition(Position::LEFT);
Listado_GM2_204.set_focusPosition(Position::LEFT);
Listado_GM2_205.set_focusPosition(Position::LEFT);
Listado_GM2_206.set_focusPosition(Position::LEFT);
Listado_GM2_207.set_focusPosition(Position::LEFT);
Listado_GM2_208.set_focusPosition(Position::LEFT);
Listado_GM2_209.set_focusPosition(Position::LEFT);
Listado_GM2_210.set_focusPosition(Position::LEFT);
Listado_GM2_211.set_focusPosition(Position::LEFT);
Listado_GM2_212.set_focusPosition(Position::LEFT);
Listado_GM2_213.set_focusPosition(Position::LEFT);
Listado_GM2_214.set_focusPosition(Position::LEFT);
Listado_GM2_215.set_focusPosition(Position::LEFT);
Listado_GM2_216.set_focusPosition(Position::LEFT);
Listado_GM2_217.set_focusPosition(Position::LEFT);
Listado_GM2_218.set_focusPosition(Position::LEFT);
Listado_GM2_219.set_focusPosition(Position::LEFT);
Listado_GM2_220.set_focusPosition(Position::LEFT);
Listado_GM2_221.set_focusPosition(Position::LEFT);
Listado_GM2_222.set_focusPosition(Position::LEFT);
Listado_GM2_223.set_focusPosition(Position::LEFT);
Listado_GM2_224.set_focusPosition(Position::LEFT);
Listado_GM2_225.set_focusPosition(Position::LEFT);
Listado_GM2_226.set_focusPosition(Position::LEFT);
Listado_GM2_227.set_focusPosition(Position::LEFT);
Listado_GM2_228.set_focusPosition(Position::LEFT);
Listado_GM2_229.set_focusPosition(Position::LEFT);
Listado_GM2_230.set_focusPosition(Position::LEFT);
Listado_GM2_231.set_focusPosition(Position::LEFT);
Listado_GM2_232.set_focusPosition(Position::LEFT);
Listado_GM2_233.set_focusPosition(Position::LEFT);
Listado_GM2_234.set_focusPosition(Position::LEFT);
Listado_GM2_235.set_focusPosition(Position::LEFT);
Listado_GM2_236.set_focusPosition(Position::LEFT);
Listado_GM2_237.set_focusPosition(Position::LEFT);
Listado_GM2_238.set_focusPosition(Position::LEFT);
Listado_GM2_239.set_focusPosition(Position::LEFT);
Listado_GM2_240.set_focusPosition(Position::LEFT);
Listado_GM2_241.set_focusPosition(Position::LEFT);
Listado_GM2_242.set_focusPosition(Position::LEFT);
Listado_GM2_243.set_focusPosition(Position::LEFT);
Listado_GM2_244.set_focusPosition(Position::LEFT);
Listado_GM2_245.set_focusPosition(Position::LEFT);
Listado_GM2_246.set_focusPosition(Position::LEFT);
Listado_GM2_247.set_focusPosition(Position::LEFT);
Listado_GM2_248.set_focusPosition(Position::LEFT);
Listado_GM2_249.set_focusPosition(Position::LEFT);
Listado_GM2_250.set_focusPosition(Position::LEFT);
Listado_GM2_251.set_focusPosition(Position::LEFT);
Listado_GM2_252.set_focusPosition(Position::LEFT);
Listado_GM2_253.set_focusPosition(Position::LEFT);
Listado_GM2_254.set_focusPosition(Position::LEFT);
Listado_GM2_255.set_focusPosition(Position::LEFT);
Listado_GM2_256.set_focusPosition(Position::LEFT);
Listado_GM2_Volver.set_focusPosition(Position::LEFT);
// Declaramos las funciones de MOVIMIENTO
// ======================================
Menu_Principal_Opc1.attach_function(1, fn_ir_a_Menu_Instrum_SOLO);
Menu_Principal_Opc2.attach_function(1, fn_ir_a_Menu_Instrum_DUAL);
Menu_Principal_Opc3.attach_function(1, fn_ir_a_Menu_Metronomo);
Menu_Principal_Opc4.attach_function(1, fn_ir_a_Menu_Ajustes);
Menu_Principal_Volver.attach_function(1, fn_Volver);
Menu_Instrum_SOLO_Opc1.attach_function(1, fn_ir_a_Listado_Pianos);
Menu_Instrum_SOLO_Opc2.attach_function(1, fn_ir_a_Listado_EPianos);
Menu_Instrum_SOLO_Opc3.attach_function(1, fn_ir_a_Listado_Otros);
Menu_Instrum_SOLO_Opc4.attach_function(1, fn_ir_a_Listado_GM2);
Menu_Instrum_SOLO_Volver.attach_function(1, fn_Volver);
Menu_Instrum_DUAL_Opc1.attach_function(1, fn_Vacio);
Menu_Instrum_DUAL_Opc2.attach_function(1, fn_Vacio);
Menu_Instrum_DUAL_Opc3.attach_function(1, fn_Vacio);
Menu_Instrum_DUAL_Opc4.attach_function(1, fn_Vacio);
Menu_Instrum_DUAL_Volver.attach_function(1, fn_Volver);
Menu_Metronomo_Opc1.attach_function(1, fn_Vacio);
Menu_Metronomo_Opc2.attach_function(1, fn_Vacio);
Menu_Metronomo_Opc3.attach_function(1, fn_Vacio);
Menu_Metronomo_Opc4.attach_function(1, fn_Vacio);
Menu_Metronomo_Volver.attach_function(1, fn_Volver);
Menu_Ajustes_Opc1.attach_function(1, fn_Vacio);
Menu_Ajustes_Opc2.attach_function(1, fn_Vacio);
Menu_Ajustes_Opc3.attach_function(1, fn_Vacio);
Menu_Ajustes_Opc4.attach_function(1, fn_Vacio);
Menu_Ajustes_Volver.attach_function(1, fn_Volver);
// Declaramos las funciones de CONTROL MIDI
// ========================================
Listado_Pianos_01.attach_function(1, fn_Vacio);
Listado_Pianos_02.attach_function(1, fn_Vacio);
Listado_Pianos_03.attach_function(1, fn_Vacio);
Listado_Pianos_04.attach_function(1, fn_Vacio);
Listado_Pianos_05.attach_function(1, fn_Vacio);
Listado_Pianos_06.attach_function(1, fn_Vacio);
Listado_Pianos_07.attach_function(1, fn_Vacio);
Listado_Pianos_08.attach_function(1, fn_Vacio);
Listado_Pianos_09.attach_function(1, fn_Vacio);
Listado_Pianos_10.attach_function(1, fn_Vacio);
Listado_Pianos_11.attach_function(1, fn_Vacio);
Listado_Pianos_12.attach_function(1, fn_Vacio);
Listado_Pianos_Volver.attach_function(1, fn_Volver);
Listado_EPianos_01.attach_function(1, fn_Vacio);
Listado_EPianos_02.attach_function(1, fn_Vacio);
Listado_EPianos_03.attach_function(1, fn_Vacio);
Listado_EPianos_04.attach_function(1, fn_Vacio);
Listado_EPianos_05.attach_function(1, fn_Vacio);
Listado_EPianos_06.attach_function(1, fn_Vacio);
Listado_EPianos_07.attach_function(1, fn_Vacio);
Listado_EPianos_08.attach_function(1, fn_Vacio);
Listado_EPianos_09.attach_function(1, fn_Vacio);
Listado_EPianos_10.attach_function(1, fn_Vacio);
Listado_EPianos_11.attach_function(1, fn_Vacio);
Listado_EPianos_12.attach_function(1, fn_Vacio);
Listado_EPianos_13.attach_function(1, fn_Vacio);
Listado_EPianos_14.attach_function(1, fn_Vacio);
Listado_EPianos_15.attach_function(1, fn_Vacio);
Listado_EPianos_16.attach_function(1, fn_Vacio);
Listado_EPianos_17.attach_function(1, fn_Vacio);
Listado_EPianos_18.attach_function(1, fn_Vacio);
Listado_EPianos_19.attach_function(1, fn_Vacio);
Listado_EPianos_20.attach_function(1, fn_Vacio);
Listado_EPianos_Volver.attach_function(1, fn_Volver);
Listado_Otros_01.attach_function(1, fn_Vacio);
Listado_Otros_02.attach_function(1, fn_Vacio);
Listado_Otros_03.attach_function(1, fn_Vacio);
Listado_Otros_04.attach_function(1, fn_Vacio);
Listado_Otros_05.attach_function(1, fn_Vacio);
Listado_Otros_06.attach_function(1, fn_Vacio);
Listado_Otros_07.attach_function(1, fn_Vacio);
Listado_Otros_08.attach_function(1, fn_Vacio);
Listado_Otros_09.attach_function(1, fn_Vacio);
Listado_Otros_10.attach_function(1, fn_Vacio);
Listado_Otros_11.attach_function(1, fn_Vacio);
Listado_Otros_12.attach_function(1, fn_Vacio);
Listado_Otros_13.attach_function(1, fn_Vacio);
Listado_Otros_14.attach_function(1, fn_Vacio);
Listado_Otros_15.attach_function(1, fn_Vacio);
Listado_Otros_16.attach_function(1, fn_Vacio);
Listado_Otros_17.attach_function(1, fn_Vacio);
Listado_Otros_18.attach_function(1, fn_Vacio);
Listado_Otros_19.attach_function(1, fn_Vacio);
Listado_Otros_20.attach_function(1, fn_Vacio);
Listado_Otros_21.attach_function(1, fn_Vacio);
Listado_Otros_22.attach_function(1, fn_Vacio);
Listado_Otros_23.attach_function(1, fn_Vacio);
Listado_Otros_24.attach_function(1, fn_Vacio);
Listado_Otros_Volver.attach_function(1, fn_Volver);
Listado_GM2_01.attach_function(1, fn_Vacio);
Listado_GM2_02.attach_function(1, fn_Vacio);
Listado_GM2_03.attach_function(1, fn_Vacio);
Listado_GM2_04.attach_function(1, fn_Vacio);
Listado_GM2_05.attach_function(1, fn_Vacio);
Listado_GM2_06.attach_function(1, fn_Vacio);
Listado_GM2_07.attach_function(1, fn_Vacio);
Listado_GM2_08.attach_function(1, fn_Vacio);
Listado_GM2_09.attach_function(1, fn_Vacio);
Listado_GM2_10.attach_function(1, fn_Vacio);
Listado_GM2_11.attach_function(1, fn_Vacio);
Listado_GM2_12.attach_function(1, fn_Vacio);
Listado_GM2_13.attach_function(1, fn_Vacio);
Listado_GM2_14.attach_function(1, fn_Vacio);
Listado_GM2_15.attach_function(1, fn_Vacio);
Listado_GM2_16.attach_function(1, fn_Vacio);
Listado_GM2_17.attach_function(1, fn_Vacio);
Listado_GM2_18.attach_function(1, fn_Vacio);
Listado_GM2_19.attach_function(1, fn_Vacio);
Listado_GM2_20.attach_function(1, fn_Vacio);
Listado_GM2_21.attach_function(1, fn_Vacio);
Listado_GM2_22.attach_function(1, fn_Vacio);
Listado_GM2_23.attach_function(1, fn_Vacio);
Listado_GM2_24.attach_function(1, fn_Vacio);
Listado_GM2_25.attach_function(1, fn_Vacio);
Listado_GM2_26.attach_function(1, fn_Vacio);
Listado_GM2_27.attach_function(1, fn_Vacio);
Listado_GM2_28.attach_function(1, fn_Vacio);
Listado_GM2_29.attach_function(1, fn_Vacio);
Listado_GM2_30.attach_function(1, fn_Vacio);
Listado_GM2_31.attach_function(1, fn_Vacio);
Listado_GM2_32.attach_function(1, fn_Vacio);
Listado_GM2_33.attach_function(1, fn_Vacio);
Listado_GM2_34.attach_function(1, fn_Vacio);
Listado_GM2_35.attach_function(1, fn_Vacio);
Listado_GM2_36.attach_function(1, fn_Vacio);
Listado_GM2_37.attach_function(1, fn_Vacio);
Listado_GM2_38.attach_function(1, fn_Vacio);
Listado_GM2_39.attach_function(1, fn_Vacio);
Listado_GM2_40.attach_function(1, fn_Vacio);
Listado_GM2_41.attach_function(1, fn_Vacio);
Listado_GM2_42.attach_function(1, fn_Vacio);
Listado_GM2_43.attach_function(1, fn_Vacio);
Listado_GM2_44.attach_function(1, fn_Vacio);
Listado_GM2_45.attach_function(1, fn_Vacio);
Listado_GM2_46.attach_function(1, fn_Vacio);
Listado_GM2_47.attach_function(1, fn_Vacio);
Listado_GM2_48.attach_function(1, fn_Vacio);
Listado_GM2_49.attach_function(1, fn_Vacio);
Listado_GM2_50.attach_function(1, fn_Vacio);
Listado_GM2_51.attach_function(1, fn_Vacio);
Listado_GM2_52.attach_function(1, fn_Vacio);
Listado_GM2_53.attach_function(1, fn_Vacio);
Listado_GM2_54.attach_function(1, fn_Vacio);
Listado_GM2_55.attach_function(1, fn_Vacio);
Listado_GM2_56.attach_function(1, fn_Vacio);
Listado_GM2_57.attach_function(1, fn_Vacio);
Listado_GM2_58.attach_function(1, fn_Vacio);
Listado_GM2_59.attach_function(1, fn_Vacio);
Listado_GM2_60.attach_function(1, fn_Vacio);
Listado_GM2_61.attach_function(1, fn_Vacio);
Listado_GM2_62.attach_function(1, fn_Vacio);
Listado_GM2_63.attach_function(1, fn_Vacio);
Listado_GM2_64.attach_function(1, fn_Vacio);
Listado_GM2_65.attach_function(1, fn_Vacio);
Listado_GM2_66.attach_function(1, fn_Vacio);
Listado_GM2_67.attach_function(1, fn_Vacio);
Listado_GM2_68.attach_function(1, fn_Vacio);
Listado_GM2_69.attach_function(1, fn_Vacio);
Listado_GM2_70.attach_function(1, fn_Vacio);
Listado_GM2_71.attach_function(1, fn_Vacio);
Listado_GM2_72.attach_function(1, fn_Vacio);
Listado_GM2_73.attach_function(1, fn_Vacio);
Listado_GM2_74.attach_function(1, fn_Vacio);
Listado_GM2_75.attach_function(1, fn_Vacio);
Listado_GM2_76.attach_function(1, fn_Vacio);
Listado_GM2_77.attach_function(1, fn_Vacio);
Listado_GM2_78.attach_function(1, fn_Vacio);
Listado_GM2_79.attach_function(1, fn_Vacio);
Listado_GM2_80.attach_function(1, fn_Vacio);
Listado_GM2_81.attach_function(1, fn_Vacio);
Listado_GM2_82.attach_function(1, fn_Vacio);
Listado_GM2_83.attach_function(1, fn_Vacio);
Listado_GM2_84.attach_function(1, fn_Vacio);
Listado_GM2_85.attach_function(1, fn_Vacio);
Listado_GM2_86.attach_function(1, fn_Vacio);
Listado_GM2_87.attach_function(1, fn_Vacio);
Listado_GM2_88.attach_function(1, fn_Vacio);
Listado_GM2_89.attach_function(1, fn_Vacio);
Listado_GM2_90.attach_function(1, fn_Vacio);
Listado_GM2_91.attach_function(1, fn_Vacio);
Listado_GM2_92.attach_function(1, fn_Vacio);
Listado_GM2_93.attach_function(1, fn_Vacio);
Listado_GM2_94.attach_function(1, fn_Vacio);
Listado_GM2_95.attach_function(1, fn_Vacio);
Listado_GM2_96.attach_function(1, fn_Vacio);
Listado_GM2_97.attach_function(1, fn_Vacio);
Listado_GM2_98.attach_function(1, fn_Vacio);
Listado_GM2_99.attach_function(1, fn_Vacio);
Listado_GM2_100.attach_function(1, fn_Vacio);
Listado_GM2_101.attach_function(1, fn_Vacio);
Listado_GM2_102.attach_function(1, fn_Vacio);
Listado_GM2_103.attach_function(1, fn_Vacio);
Listado_GM2_104.attach_function(1, fn_Vacio);
Listado_GM2_105.attach_function(1, fn_Vacio);
Listado_GM2_106.attach_function(1, fn_Vacio);
Listado_GM2_107.attach_function(1, fn_Vacio);
Listado_GM2_108.attach_function(1, fn_Vacio);
Listado_GM2_109.attach_function(1, fn_Vacio);
Listado_GM2_110.attach_function(1, fn_Vacio);
Listado_GM2_111.attach_function(1, fn_Vacio);
Listado_GM2_112.attach_function(1, fn_Vacio);
Listado_GM2_113.attach_function(1, fn_Vacio);
Listado_GM2_114.attach_function(1, fn_Vacio);
Listado_GM2_115.attach_function(1, fn_Vacio);
Listado_GM2_116.attach_function(1, fn_Vacio);
Listado_GM2_117.attach_function(1, fn_Vacio);
Listado_GM2_118.attach_function(1, fn_Vacio);
Listado_GM2_119.attach_function(1, fn_Vacio);
Listado_GM2_120.attach_function(1, fn_Vacio);
Listado_GM2_121.attach_function(1, fn_Vacio);
Listado_GM2_122.attach_function(1, fn_Vacio);
Listado_GM2_123.attach_function(1, fn_Vacio);
Listado_GM2_124.attach_function(1, fn_Vacio);
Listado_GM2_125.attach_function(1, fn_Vacio);
Listado_GM2_126.attach_function(1, fn_Vacio);
Listado_GM2_127.attach_function(1, fn_Vacio);
Listado_GM2_128.attach_function(1, fn_Vacio);
Listado_GM2_129.attach_function(1, fn_Vacio);
Listado_GM2_130.attach_function(1, fn_Vacio);
Listado_GM2_131.attach_function(1, fn_Vacio);
Listado_GM2_132.attach_function(1, fn_Vacio);
Listado_GM2_133.attach_function(1, fn_Vacio);
Listado_GM2_134.attach_function(1, fn_Vacio);
Listado_GM2_135.attach_function(1, fn_Vacio);
Listado_GM2_136.attach_function(1, fn_Vacio);
Listado_GM2_137.attach_function(1, fn_Vacio);
Listado_GM2_138.attach_function(1, fn_Vacio);
Listado_GM2_139.attach_function(1, fn_Vacio);
Listado_GM2_140.attach_function(1, fn_Vacio);
Listado_GM2_141.attach_function(1, fn_Vacio);
Listado_GM2_142.attach_function(1, fn_Vacio);
Listado_GM2_143.attach_function(1, fn_Vacio);
Listado_GM2_144.attach_function(1, fn_Vacio);
Listado_GM2_145.attach_function(1, fn_Vacio);
Listado_GM2_146.attach_function(1, fn_Vacio);
Listado_GM2_147.attach_function(1, fn_Vacio);
Listado_GM2_148.attach_function(1, fn_Vacio);
Listado_GM2_149.attach_function(1, fn_Vacio);
Listado_GM2_150.attach_function(1, fn_Vacio);
Listado_GM2_151.attach_function(1, fn_Vacio);
Listado_GM2_152.attach_function(1, fn_Vacio);
Listado_GM2_153.attach_function(1, fn_Vacio);
Listado_GM2_154.attach_function(1, fn_Vacio);
Listado_GM2_155.attach_function(1, fn_Vacio);
Listado_GM2_156.attach_function(1, fn_Vacio);
Listado_GM2_157.attach_function(1, fn_Vacio);
Listado_GM2_158.attach_function(1, fn_Vacio);
Listado_GM2_159.attach_function(1, fn_Vacio);
Listado_GM2_160.attach_function(1, fn_Vacio);
Listado_GM2_161.attach_function(1, fn_Vacio);
Listado_GM2_162.attach_function(1, fn_Vacio);
Listado_GM2_163.attach_function(1, fn_Vacio);
Listado_GM2_164.attach_function(1, fn_Vacio);
Listado_GM2_165.attach_function(1, fn_Vacio);
Listado_GM2_166.attach_function(1, fn_Vacio);
Listado_GM2_167.attach_function(1, fn_Vacio);
Listado_GM2_168.attach_function(1, fn_Vacio);
Listado_GM2_169.attach_function(1, fn_Vacio);
Listado_GM2_170.attach_function(1, fn_Vacio);
Listado_GM2_171.attach_function(1, fn_Vacio);
Listado_GM2_172.attach_function(1, fn_Vacio);
Listado_GM2_173.attach_function(1, fn_Vacio);
Listado_GM2_174.attach_function(1, fn_Vacio);
Listado_GM2_175.attach_function(1, fn_Vacio);
Listado_GM2_176.attach_function(1, fn_Vacio);
Listado_GM2_177.attach_function(1, fn_Vacio);
Listado_GM2_178.attach_function(1, fn_Vacio);
Listado_GM2_179.attach_function(1, fn_Vacio);
Listado_GM2_180.attach_function(1, fn_Vacio);
Listado_GM2_181.attach_function(1, fn_Vacio);
Listado_GM2_182.attach_function(1, fn_Vacio);
Listado_GM2_183.attach_function(1, fn_Vacio);
Listado_GM2_184.attach_function(1, fn_Vacio);
Listado_GM2_185.attach_function(1, fn_Vacio);
Listado_GM2_186.attach_function(1, fn_Vacio);
Listado_GM2_187.attach_function(1, fn_Vacio);
Listado_GM2_188.attach_function(1, fn_Vacio);
Listado_GM2_189.attach_function(1, fn_Vacio);
Listado_GM2_190.attach_function(1, fn_Vacio);
Listado_GM2_191.attach_function(1, fn_Vacio);
Listado_GM2_192.attach_function(1, fn_Vacio);
Listado_GM2_193.attach_function(1, fn_Vacio);
Listado_GM2_194.attach_function(1, fn_Vacio);
Listado_GM2_195.attach_function(1, fn_Vacio);
Listado_GM2_196.attach_function(1, fn_Vacio);
Listado_GM2_197.attach_function(1, fn_Vacio);
Listado_GM2_198.attach_function(1, fn_Vacio);
Listado_GM2_199.attach_function(1, fn_Vacio);
Listado_GM2_200.attach_function(1, fn_Vacio);
Listado_GM2_201.attach_function(1, fn_Vacio);
Listado_GM2_202.attach_function(1, fn_Vacio);
Listado_GM2_203.attach_function(1, fn_Vacio);
Listado_GM2_204.attach_function(1, fn_Vacio);
Listado_GM2_205.attach_function(1, fn_Vacio);
Listado_GM2_206.attach_function(1, fn_Vacio);
Listado_GM2_207.attach_function(1, fn_Vacio);
Listado_GM2_208.attach_function(1, fn_Vacio);
Listado_GM2_209.attach_function(1, fn_Vacio);
Listado_GM2_210.attach_function(1, fn_Vacio);
Listado_GM2_211.attach_function(1, fn_Vacio);
Listado_GM2_212.attach_function(1, fn_Vacio);
Listado_GM2_213.attach_function(1, fn_Vacio);
Listado_GM2_214.attach_function(1, fn_Vacio);
Listado_GM2_215.attach_function(1, fn_Vacio);
Listado_GM2_216.attach_function(1, fn_Vacio);
Listado_GM2_217.attach_function(1, fn_Vacio);
Listado_GM2_218.attach_function(1, fn_Vacio);
Listado_GM2_219.attach_function(1, fn_Vacio);
Listado_GM2_220.attach_function(1, fn_Vacio);
Listado_GM2_221.attach_function(1, fn_Vacio);
Listado_GM2_222.attach_function(1, fn_Vacio);
Listado_GM2_223.attach_function(1, fn_Vacio);
Listado_GM2_224.attach_function(1, fn_Vacio);
Listado_GM2_225.attach_function(1, fn_Vacio);
Listado_GM2_226.attach_function(1, fn_Vacio);
Listado_GM2_227.attach_function(1, fn_Vacio);
Listado_GM2_228.attach_function(1, fn_Vacio);
Listado_GM2_229.attach_function(1, fn_Vacio);
Listado_GM2_230.attach_function(1, fn_Vacio);
Listado_GM2_231.attach_function(1, fn_Vacio);
Listado_GM2_232.attach_function(1, fn_Vacio);
Listado_GM2_233.attach_function(1, fn_Vacio);
Listado_GM2_234.attach_function(1, fn_Vacio);
Listado_GM2_235.attach_function(1, fn_Vacio);
Listado_GM2_236.attach_function(1, fn_Vacio);
Listado_GM2_237.attach_function(1, fn_Vacio);
Listado_GM2_238.attach_function(1, fn_Vacio);
Listado_GM2_239.attach_function(1, fn_Vacio);
Listado_GM2_240.attach_function(1, fn_Vacio);
Listado_GM2_241.attach_function(1, fn_Vacio);
Listado_GM2_242.attach_function(1, fn_Vacio);
Listado_GM2_243.attach_function(1, fn_Vacio);
Listado_GM2_244.attach_function(1, fn_Vacio);
Listado_GM2_245.attach_function(1, fn_Vacio);
Listado_GM2_246.attach_function(1, fn_Vacio);
Listado_GM2_247.attach_function(1, fn_Vacio);
Listado_GM2_248.attach_function(1, fn_Vacio);
Listado_GM2_249.attach_function(1, fn_Vacio);
Listado_GM2_250.attach_function(1, fn_Vacio);
Listado_GM2_251.attach_function(1, fn_Vacio);
Listado_GM2_252.attach_function(1, fn_Vacio);
Listado_GM2_253.attach_function(1, fn_Vacio);
Listado_GM2_254.attach_function(1, fn_Vacio);
Listado_GM2_255.attach_function(1, fn_Vacio);
Listado_GM2_256.attach_function(1, fn_Vacio);
Listado_GM2_Volver.attach_function(1, fn_Volver);
//Activamos todos los Menus y Pantallas que queremos tener disponibles
menu.add_screen(Menu_Principal);
menu.add_screen(Menu_Instrum_SOLO);
menu.add_screen(Menu_Instrum_DUAL);
menu.add_screen(Menu_Metronomo);
menu.add_screen(Menu_Ajustes);
menu.add_screen(Listado_Pianos);
menu.add_screen(Listado_EPianos);
menu.add_screen(Listado_Otros);
menu.add_screen(Listado_GM2);
//Definimos el numero maximo de lineas visibles en la pantalla LCD
Menu_Principal.set_displayLineCount(2);
Menu_Instrum_SOLO.set_displayLineCount(2);
Menu_Instrum_DUAL.set_displayLineCount(2);
Menu_Metronomo.set_displayLineCount(2);
Menu_Ajustes.set_displayLineCount(2);
Listado_Pianos.set_displayLineCount(2);
Listado_EPianos.set_displayLineCount(2);
Listado_Otros.set_displayLineCount(2);
Listado_GM2.set_displayLineCount(2);
//Iniciamos el sistema de Menus
menu.init();
menu.set_focusedLine(0);
menu.update();
}
// ==============================
// COMENZAMOS CON EL VOID LOOP
// ==============================
void loop()
{
//Detecta si hay cambios realizados por el Encoder
long newPosition = encoder.getCount() / 2;
selectOption();
aState = digitalRead(DT);
//value.millis() = 0;
//TTranscurrido = TimeInicial + millis()
//if (TTranscurido >= 30000) {
//lcd.noBaclight();
//else if (TTranscurrido >=15000)
//lcd.setCursor(0, 0);
//lcd.print(" ROLAND FP-30X ");
//lcd.setCursor(0, 1);
//lcd.print("por Toni Peralbo");
//}
if (aState != aLastState)
{
if (digitalRead(CLK) != aState) { incremento++; if (incremento>1) { incremento = 0; menu.switch_focus(false); } }
else { incremento++; if (incremento>1) { incremento = 0; menu.switch_focus(true); } }
menu.update();
aLastState = aState;
delay(500);
}
//Verifica las diferentes situaciones del MIDI
MIDI.read();
if (isConnected && (millis() - t0) > 1000) { t0 = millis();
//Envía una nota musical de manera secuencial
MIDI.sendNoteOn(60, 40, 1); vTaskDelay(250 / portTICK_PERIOD_MS); MIDI.sendNoteOff(60, 0, 1); };
//Cambia el programa
//MIDI.sendControlChange(0,0,1);
//MIDI.sendControlChange(40,68,1);
//MIDI.sendProgramChange(4,1);
//delay(1000);
}
void ReadCB(void *parameter)
{
for (;;)
{
MIDI.read();
vTaskDelay(1 / portTICK_PERIOD_MS); //Feed the watchdog of FreeRTOS.
}
vTaskDelay(1);
}
// LISTADO DE FUNCIONES DE MOVIMIENTO
// ==================================
void selectOption() { if (digitalRead(sw) == LOW) { menu.call_function(1); delay(250); } }
void fn_ir_a_Menu_Principal() { menu.change_screen(1); menu.set_focusedLine(0); }
void fn_ir_a_Menu_Instrum_SOLO() { menu.change_screen(2); menu.set_focusedLine(0); }
void fn_ir_a_Menu_Instrum_DUAL() { menu.change_screen(3); menu.set_focusedLine(0); }
void fn_ir_a_Menu_Metronomo() { menu.change_screen(4); menu.set_focusedLine(0); }
void fn_ir_a_Menu_Ajustes() { menu.change_screen(5); menu.set_focusedLine(0); }
void fn_ir_a_Listado_Pianos() { menu.change_screen(6); menu.set_focusedLine(0); }
void fn_ir_a_Listado_EPianos() { menu.change_screen(7); menu.set_focusedLine(0); }
void fn_ir_a_Listado_Otros() { menu.change_screen(8); menu.set_focusedLine(0); }
void fn_ir_a_Listado_GM2() { menu.change_screen(9); menu.set_focusedLine(0); }
void fn_Vacio() { }
void fn_Volver() { menu.change_screen(1); menu.set_focusedLine(0); }
//*********************************************************************
/*
Program Change: 0 - Canal: 1
Control: 0 Value: 0 - Canal: 1
Control: 32 Value: 68 - Canal: 1
Program Change: 0 - Canal: 1
Control: 0 Value: 0 - Canal: 1
Control: 32 Value: 68 - Canal: 1
Program Change: 0 - Canal: 1
Control: 0 Value: 16 - Canal: 1
Control: 32 Value: 67 - Canal: 1
Program Change: 0 - Canal: 1
Control: 0 Value: 16 - Canal: 1
Control: 32 Value: 67 - Canal: 1
Program Change: 0 - Canal: 1
Control: 0 Value: 4 - Canal: 1
Control: 32 Value: 64 - Canal: 1
Program Change: 0 - Canal: 1
Control: 0 Value: 4 - Canal: 1
Control: 32 Value: 64 - Canal: 1
Program Change: 0 - Canal: 1
Control: 0 Value: 8 - Canal: 1
Control: 32 Value: 66 - Canal: 1
Program Change: 1 - Canal: 1
Control: 0 Value: 8 - Canal: 1
Control: 32 Value: 66 - Canal: 1
Program Change: 1 - Canal: 1
Control: 0 Value: 16 - Canal: 1
Control: 32 Value: 64 - Canal: 1
Program Change: 0 - Canal: 1
Control: 0 Value: 16 - Canal: 1
Control: 32 Value: 64 - Canal: 1
Program Change: 0 - Canal: 1
Control: 0 Value: 1 - Canal: 1
Control: 32 Value: 65 - Canal: 1
Program Change: 0 - Canal: 1
*/
//***********************************************