#include #include //#define DEBUG LiquidCrystal lcd(7, 6, 2, 3, 4, 5); byte c, d, array[2]; char bpm[3], bpmFP[3]; bool lfo1Free = 1, lfo2Free = 1; // Commande fading led int led = 8; int led2 = 9; int led3 = 10; int led4 = 12; int led5 = 13; int led6 = 44; int led7 = 45; int led8 = 46; bool flagCmd = true; int allInOne = 0; byte n1 = 0; byte n2 = 0; byte n3 = 0; byte n4 = 0; byte n5 = 0; byte n6 = 0; byte n7 = 0; byte n8 = 0; unsigned char counter; boolean flag = false; byte commandByte; byte commandByte1; byte noteByte; byte velocityByte; unsigned long debutTemps, finTemps, tempsPasse; void setup() { lcd.begin(20, 4); Wire.begin(); Serial.begin(31250); pinMode(13, OUTPUT); lcd.setCursor(1, 0); lcd.print(F("SYLENCE")); lcd.setCursor(9, 0); lcd.print(F("CONTROLLER")); if (flagCmd) { trucSwag(); flagCmd = false; } // Commande fading led pinMode(led, OUTPUT); pinMode(led2, OUTPUT); pinMode(led3, OUTPUT); pinMode(led4, OUTPUT); pinMode(led5, OUTPUT); pinMode(led6, OUTPUT); pinMode(led7, OUTPUT); pinMode(led8, OUTPUT); } void loop() { Wire.requestFrom(8, 2); while (Wire.available()) // slave may send less than requested { //lcd.setCursor(0, 3); //lcd.write(0xDB); for (int i = 0; i < 2; i++) { c = Wire.read(); array[i] = c; } } itoa(array[0], bpm, 10); // Fonction qui transforme un int (octet en l'ocurrence) en tableau de char. https://forum.arduino.cc/index.php?topic=33093.0 itoa(array[1], bpmFP, 10); /* Incription dans le lcd, étant donné que la fonction itoa compte le 0 comme rien lorsque le chiffre décimal des BPM arrive en dessous de 10? le chiffre significatif se décale. Grace à une structure conditionnelle, lorsque le nombre décimal est inférieur à 10 j'insère un 0 artificiel dans le lcd. */ lcd.setCursor(0, 3); lcd.print(F(" ")); lcd.setCursor(6, 3); lcd.print(F(" BPM")); if (array[0] == 0) { lcd.setCursor(0, 3); lcd.write(bpm); lcd.setCursor(3, 3); } else { lcd.setCursor(1, 3); lcd.write(bpm); lcd.setCursor(3, 3); } lcd.write("."); if ((array[1] / 10) == 0) { lcd.setCursor(4, 3); lcd.write("0"); lcd.setCursor(5, 3); lcd.write(bpmFP); } else { lcd.setCursor(4, 3); lcd.write(bpmFP); } checkMIDI(); if ((commandByte != 179) && (commandByte != 180) && (commandByte != 181)) { allInOne = velocityByte * 8; if (allInOne <= 1024 && allInOne >= 896) { n1 = allInOne - 896; n2 = 128; n3 = 128; n4 = 128; n5 = 128; n6 = 128; n7 = 128; n8 = 128; } else if (allInOne <= 896 && allInOne >= 768) { n1 = 0; n2 = allInOne - 768; n3 = 128; n4 = 128; n5 = 128; n6 = 128; n7 = 128; n8 = 128; } else if (allInOne <= 768 && allInOne >= 640) { n1 = 0; n2 = 0; n3 = allInOne - 640; n4 = 128; n5 = 128; n6 = 128; n7 = 128; n8 = 128; } else if (allInOne <= 640 && allInOne >= 512) { n1 = 0; n2 = 0; n3 = 0; n4 = allInOne - 512; n5 = 128; n6 = 128; n7 = 128; n8 = 128; } else if (allInOne <= 512 && allInOne >= 384) { n1 = 0; n2 = 0; n3 = 0; n4 = 0; n5 = allInOne - 384; n6 = 128; n7 = 128; n8 = 128; } else if (allInOne <= 384 && allInOne >= 256) { n1 = 0; n2 = 0; n3 = 0; n4 = 0; n5 = 0; n6 = allInOne - 256; n7 = 128; n8 = 128; } else if (allInOne <= 256 && allInOne >= 128) { n1 = 0; n2 = 0; n3 = 0; n4 = 0; n5 = 0; n6 = 0; n7 = allInOne - 128; n8 = 128; } else if (allInOne <= 128) { n1 = 0; n2 = 0; n3 = 0; n4 = 0; n5 = 0; n6 = 0; n7 = 0; n8 = allInOne; } analogWrite(led, n8); analogWrite(led2, n7); analogWrite(led3, n6); analogWrite(led4, n5); analogWrite(led5, n4); analogWrite(led6, n3); analogWrite(led7, n2); analogWrite(led8, n1); } #ifdef DEBUG lcd.setCursor(0, 1); lcd.print(commandByte); lcd.print(" "); lcd.print(noteByte); lcd.print(" "); lcd.print(velocityByte); lcd.print(" "); /* lcd.print(" "); lcd.setCursor(1, 2); lcd.print(n1); lcd.print(" "); lcd.print(n2); lcd.print(" "); lcd.print(n3); lcd.print(" "); lcd.print(n4); lcd.print(" "); lcd.print(n5); lcd.print(" "); */ #endif #ifndef DEBUG // Oscs Section if ((commandByte == 178) && (noteByte == 18)) { lcd.setCursor(0, 0); lcd.print(F("OSC A1 Volume ")); zeroTen(); interruptStart(); } else if ((commandByte == 177) && (noteByte == 39)) { lcd.setCursor(0, 0); lcd.print(F("OSC A1 Detunning ")); zeroTen(); interruptStart(); } else if ((commandByte == 178) && (noteByte == 2)) { lcd.setCursor(0, 0); lcd.print(F("OSC A1 Phase ")); phaseThreeSixty(); interruptStart(); } else if ((commandByte == 178) && (noteByte == 3)) { lcd.setCursor(0, 0); lcd.print(F("OSC A1 Balance ")); minusTenToTen(); interruptStart(); } else if ((commandByte == 177) && (noteByte == 38)) { lcd.setCursor(0, 0); lcd.print(F("OSC A1 Stereo ")); zeroTen(); interruptStart(); } else if ((commandByte == 178) && (noteByte == 11)) { lcd.setCursor(0, 0); lcd.print(F("OSC A1 Fine ")); lcd.setCursor(10, 2); lcd.print(F(" ")); lcd.print((velocityByte / 63.5) - 1); lcd.print(F(" ")); interruptStart(); } else if ((commandByte == 177) && (noteByte == 5)) { lcd.setCursor(0, 0); lcd.print(F("OSC A2 Volume ")); zeroTen(); interruptStart(); } else if ((commandByte == 176) && (noteByte == 29)) { lcd.setCursor(0, 0); lcd.print(F("OSC A2 Detunning ")); zeroTen(); interruptStart(); } else if ((commandByte == 176) && (noteByte == 28)) { lcd.setCursor(0, 0); lcd.print(F("OSC A2 Phase ")); phaseThreeSixty(); interruptStart(); } else if ((commandByte == 176) && (noteByte == 24)) { lcd.setCursor(0, 0); lcd.print(F("OSC A2 Balance ")); minusTenToTen(); interruptStart(); } else if ((commandByte == 176) && (noteByte == 23)) { lcd.setCursor(0, 0); lcd.print(F("OSC A2 Stereo ")); zeroTen(); interruptStart(); } else if ((commandByte == 176) && (noteByte == 22)) { lcd.setCursor(0, 0); lcd.print(F("OSC A2 Fine ")); lcd.setCursor(10, 2); lcd.print(F(" ")); lcd.print((velocityByte / 63.5) - 1); lcd.print(F(" ")); interruptStart(); } else if ((commandByte == 178) && (noteByte == 15)) { lcd.setCursor(0, 0); lcd.print(F("OSC B1 Volume ")); zeroTen(); interruptStart(); } else if ((commandByte == 178) && (noteByte == 10)) { lcd.setCursor(0, 0); lcd.print(F("OSC B1 Detunning ")); zeroTen(); interruptStart(); } else if ((commandByte == 178) && (noteByte == 7)) { lcd.setCursor(0, 0); lcd.print(F("OSC B1 Phase ")); phaseThreeSixty(); interruptStart(); } else if ((commandByte == 178) && (noteByte == 14)) { lcd.setCursor(0, 0); lcd.print(F("OSC B1 Balance ")); minusTenToTen(); interruptStart(); } else if ((commandByte == 178) && (noteByte == 19)) { lcd.setCursor(0, 0); lcd.print(F("OSC B1 Stereo ")); zeroTen(); interruptStart(); } else if ((commandByte == 178) && (noteByte == 6)) { lcd.setCursor(0, 0); lcd.print(F("OSC B1 Fine ")); lcd.setCursor(10, 2); lcd.print(F(" ")); lcd.print((velocityByte / 63.5) - 1); lcd.print(F(" ")); interruptStart(); } else if ((commandByte == 176) && (noteByte == 40)) { lcd.setCursor(0, 0); lcd.print(F("OSC B2 Volume ")); zeroTen(); interruptStart(); } else if ((commandByte == 176) && (noteByte == 25)) { lcd.setCursor(0, 0); lcd.print(F("OSC B2 Fine ")); lcd.setCursor(10, 2); lcd.print(F(" ")); lcd.print((velocityByte / 63.5) - 1); lcd.print(F(" ")); interruptStart(); } if ((commandByte == 176) && (noteByte == 27)) { lcd.setCursor(0, 0); lcd.print(F("OSC B2 Detunning ")); zeroTen(); interruptStart(); } else if ((commandByte == 176) && (noteByte == 26)) { lcd.setCursor(0, 0); lcd.print(F("OSC B2 Phase ")); phaseThreeSixty(); interruptStart(); } else if ((commandByte == 176) && (noteByte == 38)) { lcd.setCursor(0, 0); lcd.print(F("OSC B2 Balance ")); minusTenToTen(); interruptStart(); } else if ((commandByte == 177) && (noteByte == 4)) { lcd.setCursor(0, 0); lcd.print(F("OSC B2 Stereo ")); zeroTen(); interruptStart(); } // Mix Section else if ((commandByte == 176) && (noteByte == 39)) { lcd.setCursor(0, 0); lcd.print(F("OSCs B Volume ")); zeroTen(); interruptStart(); } else if ((commandByte == 177) && (noteByte == 3)) { lcd.setCursor(0, 0); lcd.print(F("OSCs A Volume ")); zeroTen(); interruptStart(); } else if ((commandByte == 176) && (noteByte == 37)) { lcd.setCursor(0, 0); lcd.print(F("Master Volume ")); zeroTen(); interruptStart(); } // ADSRs Section else if ((commandByte == 178) && (noteByte == 1)) { lcd.setCursor(0, 0); lcd.print(F("Enveloppe A : Attack ")); zeroTen(); interruptStart(); } else if ((commandByte == 177) && (noteByte == 40)) { lcd.setCursor(0, 0); lcd.print(F("Enveloppe A : Decay ")); zeroTen(); interruptStart(); } else if ((commandByte == 178) && (noteByte == 5)) { lcd.setCursor(0, 0); lcd.print(F("Enveloppe A : Sustai ")); zeroTen(); interruptStart(); } else if ((commandByte == 178) && (noteByte == 4)) { lcd.setCursor(0, 0); lcd.print(F("Enveloppe A : Releas ")); zeroTen(); interruptStart(); } else if ((commandByte == 178) && (noteByte == 20)) { lcd.setCursor(0, 0); lcd.print(F("Enveloppe B : Attack ")); zeroTen(); interruptStart(); } else if ((commandByte == 178) && (noteByte == 21)) { lcd.setCursor(0, 0); lcd.print(F("Enveloppe B : Decay ")); zeroTen(); interruptStart(); } else if ((commandByte == 178) && (noteByte == 16)) { lcd.setCursor(0, 0); lcd.print(F("Enveloppe B : Sustai ")); zeroTen(); interruptStart(); } else if ((commandByte == 178) && (noteByte == 17)) { lcd.setCursor(0, 0); lcd.print(F("Enveloppe B : Releas ")); zeroTen(); interruptStart(); } else if ((commandByte == 178) && (noteByte == 51)) { lcd.setCursor(0, 0); lcd.print(F("AmpEnveloppe 1 : Att ")); zeroTen(); interruptStart(); } else if ((commandByte == 178) && (noteByte == 53)) { lcd.setCursor(0, 0); lcd.print(F("AmpEnveloppe 1 : Dec ")); zeroTen(); interruptStart(); } else if ((commandByte == 178) && (noteByte == 49)) { lcd.setCursor(0, 0); lcd.print(F("AmpEnveloppe 1 : Sus ")); zeroTen(); interruptStart(); } else if ((commandByte == 178) && (noteByte == 47)) { lcd.setCursor(0, 0); lcd.print(F("AmpEnveloppe 1 : Rel ")); zeroTen(); interruptStart(); } else if ((commandByte == 178) && (noteByte == 48)) { lcd.setCursor(0, 0); lcd.print(F("AmpEnveloppe 2 : Att ")); zeroTen(); interruptStart(); } else if ((commandByte == 178) && (noteByte == 50)) { lcd.setCursor(0, 0); lcd.print(F("AmpEnveloppe 2 : Dec ")); zeroTen(); interruptStart(); } else if ((commandByte == 178) && (noteByte == 46)) { lcd.setCursor(0, 0); lcd.print(F("AmpEnveloppe 2 : Sus ")); zeroTen(); interruptStart(); } else if ((commandByte == 178) && (noteByte == 52)) { lcd.setCursor(0, 0); lcd.print(F("AmpEnveloppe 2 : Rel ")); zeroTen(); interruptStart(); } // Filters Section else if ((commandByte == 178) && (noteByte == 29)) { lcd.setCursor(0, 0); lcd.print(F("Filter A : Freq Coup ")); lcd.setCursor(9, 2); lcd.print(abs(exp(velocityByte / 12.7403))); lcd.print(F(" Hz ")); } else if ((commandByte == 178) && (noteByte == 26)) { lcd.setCursor(0, 0); lcd.print(F("Filter A : Resonance ")); zeroTen(); interruptStart(); } else if ((commandByte == 178) && (noteByte == 27)) { lcd.setCursor(0, 0); lcd.print(F("Filter A : Dynamisme ")); zeroTen(); interruptStart(); } else if ((commandByte == 178) && (noteByte == 28)) { lcd.setCursor(0, 0); lcd.print(F("Filter B : Freq Coup ")); lcd.setCursor(9, 2); lcd.print(abs(exp(velocityByte / 12.7403))); lcd.print(F(" Hz ")); } else if ((commandByte == 178) && (noteByte == 23)) { lcd.setCursor(0, 0); lcd.print(F("Filter B : Resonance ")); zeroTen(); interruptStart(); } else if ((commandByte == 178) && (noteByte == 22)) { lcd.setCursor(0, 0); lcd.print(F("Filter B : Dynamisme ")); zeroTen(); interruptStart(); } else if ((commandByte == 178) && (noteByte == 12)) { lcd.setCursor(0, 0); lcd.print(F("Master F : Freq Coup ")); lcd.setCursor(9, 2); lcd.print(abs(exp(velocityByte / 12.7403))); lcd.print(F(" Hz ")); } else if ((commandByte == 178) && (noteByte == 9)) { lcd.setCursor(0, 0); lcd.print(F("Master F : Resonance ")); zeroTen(); interruptStart(); } else if ((commandByte == 178) && (noteByte == 8)) { lcd.setCursor(0, 0); lcd.print(F("Master F : KeyFollow ")); zeroTen(); interruptStart(); } // Modulation Section else if ((commandByte == 178) && (noteByte == 34)) { lcd.setCursor(0, 0); lcd.print(F("AmpEveloppe 1 : Vmd1 ")); minusTenToTen(); interruptStart(); } else if ((commandByte == 178) && (noteByte == 30)) { lcd.setCursor(0, 0); lcd.print(F("AmpEveloppe 1 : Vmd2 ")); minusTenToTen(); interruptStart(); } else if ((commandByte == 178) && (noteByte == 32)) { lcd.setCursor(0, 0); lcd.print(F("AmpEveloppe 2 : Vmd1 ")); minusTenToTen(); interruptStart(); } else if ((commandByte == 178) && (noteByte == 40)) { lcd.setCursor(0, 0); lcd.print(F("AmpEveloppe 2 : Vmd2 ")); minusTenToTen(); interruptStart(); } else if ((commandByte == 178) && (noteByte == 39)) { lcd.setCursor(0, 0); lcd.print(F("LFO 1 : Vol mod 1 ")); minusTenToTen(); interruptStart(); } else if ((commandByte == 178) && (noteByte == 41)) { lcd.setCursor(0, 0); lcd.print(F("LFO 1 : Vol mod 2 ")); minusTenToTen(); interruptStart(); } else if ((commandByte == 178) && (noteByte == 35)) { lcd.setCursor(0, 0); lcd.print(F("LFO 2 : Vol mod 1 ")); minusTenToTen(); interruptStart(); } else if ((commandByte == 178) && (noteByte == 38)) { lcd.setCursor(0, 0); lcd.print(F("LFO 2 : Vol mod 2 ")); minusTenToTen(); interruptStart(); } // LFO Section else if ((commandByte == 178) && (noteByte == 42)) { lcd.setCursor(0, 0); lcd.print(F("LFO 1 : Rate ")); if (lfo1Free) { lcd.setCursor(8, 2); lcd.print(F(" ")); lcd.print((velocityByte / 0.6616) + 0.04); lcd.print(F(" Hz")); lcd.print(F(" ")); // free mode !!! } else { phaserLfo(); } interruptStart(); } else if ((commandByte == 178) && (noteByte == 43)) { lcd.setCursor(0, 0); lcd.print(F("LFO 1 : Gain ")); zeroTen(); interruptStart(); } else if ((commandByte == 178) && (noteByte == 44)) { lcd.setCursor(0, 0); lcd.print(F("LFO 1 : Offset ")); minusTenToTen(); interruptStart(); } else if ((commandByte == 178) && (noteByte == 24)) { lcd.setCursor(0, 0); lcd.print(F("LFO 2 : Rate ")); if (lfo2Free) { lcd.setCursor(8, 2); lcd.print(F(" ")); lcd.print((velocityByte / 0.6616) + 0.04); lcd.print(F(" Hz")); lcd.print(F(" ")); // free mode !!! } else { phaserLfo(); } interruptStart(); } else if ((commandByte == 178) && (noteByte == 25)) { lcd.setCursor(0, 0); lcd.print(F("LFO 2 : Gain ")); zeroTen(); interruptStart(); } else if ((commandByte == 178) && (noteByte == 13)) { lcd.setCursor(0, 0); lcd.print(F("LFO 2 : Offset ")); minusTenToTen(); interruptStart(); } // Martix Section else if ((commandByte == 176) && (noteByte == 18)) { lcd.setCursor(0, 0); lcd.print(F("Vol Mod 1 Matrice 1 ")); minusTenToTen(); interruptStart(); } else if ((commandByte == 178) && (noteByte == 36)) { lcd.setCursor(0, 0); lcd.print(F("Vol Mod 2 Matrice 1 ")); minusTenToTen(); interruptStart(); } else if ((commandByte == 178) && (noteByte == 37)) { lcd.setCursor(0, 0); lcd.print(F("Vol Mod 1' Matrice 1 ")); minusTenToTen(); interruptStart(); } else if ((commandByte == 176) && (noteByte == 19)) { lcd.setCursor(0, 0); lcd.print(F("Vol Mod 2' Matrice 1 ")); minusTenToTen(); interruptStart(); } else if ((commandByte == 176) && (noteByte == 32)) { lcd.setCursor(0, 0); lcd.print(F("Vol Mod 1 Matrice 2 ")); minusTenToTen(); interruptStart(); } else if ((commandByte == 176) && (noteByte == 31)) { lcd.setCursor(0, 0); lcd.print(F("Vol Mod 2 Matrice 2 ")); minusTenToTen(); interruptStart(); } else if ((commandByte == 176) && (noteByte == 30)) { lcd.setCursor(0, 0); lcd.print(F("Vol Mod 1' Matrice 2 ")); minusTenToTen(); interruptStart(); } else if ((commandByte == 176) && (noteByte == 33)) { lcd.setCursor(0, 0); lcd.print(F("Vol Mod 2' Matrice 2 ")); minusTenToTen(); interruptStart(); } // Effects Section else if ((commandByte == 176) && (noteByte == 34)) { lcd.setCursor(0, 0); lcd.print(F("Gain Basse frequence ")); lcd.setCursor(9, 2); lcd.print(F(" ")); lcd.print(velocityByte * 0.1181); lcd.print(F(" dB")); lcd.print(F(" ")); interruptStart(); } else if ((commandByte == 176) && (noteByte == 36)) { lcd.setCursor(0, 0); lcd.print(F("Gain Haute frequence ")); lcd.setCursor(9, 2); lcd.print(F(" ")); lcd.print(velocityByte * 0.1181); lcd.print(F(" dB ")); lcd.print(F(" ")); interruptStart(); } else if ((commandByte == 176) && (noteByte == 15)) { lcd.setCursor(0, 0); lcd.print(F("Frequence coupure LO")); lcd.setCursor(7, 2); lcd.print(F(" ")); lcd.print((velocityByte * 6.8996) + 3.75); lcd.print(F(" Hz")); lcd.print(F(" ")); interruptStart(); } else if ((commandByte == 176) && (noteByte == 35)) { lcd.setCursor(0, 0); lcd.print(F("Frequence coupure HI")); lcd.setCursor(7, 2); lcd.print(F(" ")); lcd.print((velocityByte * 217) + 440); lcd.print(F(" Hz")); lcd.print(F(" ")); interruptStart(); } else if ((commandByte == 176) && (noteByte == 14)) { lcd.setCursor(0, 0); lcd.print(F("Arpegiateur : Gate ")); zeroPercent(); interruptStart(); } else if ((commandByte == 176) && (noteByte == 17)) { lcd.setCursor(0, 0); lcd.print(F("Arpegiateur : Temps ")); arpTime(); interruptStart(); } else if ((commandByte == 177) && (noteByte == 25)) { lcd.setCursor(0, 0); lcd.print(F("Phaser : Freq Centra")); zeroTen(); interruptStart(); } else if ((commandByte == 177) && (noteByte == 22)) { lcd.setCursor(0, 0); lcd.print(F("Phaser : Etal Spectr")); zeroTen(); interruptStart(); } else if ((commandByte == 177) && (noteByte == 27)) { lcd.setCursor(0, 0); lcd.print(F("Phaser : Freq LFO ")); phaserLfo(); interruptStart(); } else if ((commandByte == 177) && (noteByte == 28)) { lcd.setCursor(0, 0); lcd.print(F("Phaser : Gain LFO ")); zeroTen(); interruptStart(); } else if ((commandByte == 176) && (noteByte == 21)) { lcd.setCursor(0, 0); lcd.print(F("Phaser : LR Offset ")); minusTenToTen(); interruptStart(); } else if ((commandByte == 177) && (noteByte == 26)) { lcd.setCursor(0, 0); lcd.print(F("Phaser : Largeur ")); zeroPercent(); interruptStart(); } else if ((commandByte == 177) && (noteByte == 33)) { lcd.setCursor(0, 0); lcd.print(F("Phaser : Feedback ")); zeroPercent(); interruptStart(); } else if ((commandByte == 177) && (noteByte == 30)) { lcd.setCursor(0, 0); lcd.print(F("Phaser : Dry / Wet ")); zeroPercent(); interruptStart(); } else if ((commandByte == 177) && (noteByte == 31)) { lcd.setCursor(0, 0); lcd.print(F("Delay : Cote droit ")); delayTime(); interruptStart(); } else if ((commandByte == 177) && (noteByte == 32)) { lcd.setCursor(0, 0); lcd.print(F("Delay : Cote gauche ")); delayTime(); interruptStart(); } else if ((commandByte == 178) && (noteByte == 31)) { lcd.setCursor(0, 0); lcd.print(F("Delay : Passe Haut ")); lcd.setCursor(6, 2); lcd.print(F(" ")); lcd.print(21000 - (velocityByte * 164.7)); lcd.print(F(" Hz")); lcd.print(F(" ")); interruptStart(); } else if ((commandByte == 177) && (noteByte == 34)) { lcd.setCursor(0, 0); lcd.print(F("Delay : Feedback ")); zeroPercent(); interruptStart(); } else if ((commandByte == 177) && (noteByte == 36)) { lcd.setCursor(0, 0); lcd.print(F("Delay : Caractere ")); zeroTen(); interruptStart(); } else if ((commandByte == 177) && (noteByte == 35)) { lcd.setCursor(0, 0); lcd.print(F("Delay : Balayage ")); zeroPercent(); interruptStart(); } else if ((commandByte == 177) && (noteByte == 9)) { lcd.setCursor(0, 0); lcd.print(F("Delay : Passe Bas ")); lcd.setCursor(6, 2); lcd.print(F(" ")); lcd.print((velocityByte * 1.55) + 3); lcd.print(F(" Hz")); lcd.print(F(" ")); interruptStart(); } else if ((commandByte == 177) && (noteByte == 6)) { lcd.setCursor(0, 0); lcd.print(F("Delay : Dry / Wet ")); zeroPercent(); interruptStart(); } else if ((commandByte == 177) && (noteByte == 1)) { lcd.setCursor(0, 0); lcd.print(F("Reverb : Pre Delay ")); lcd.setCursor(8, 2); lcd.print(F(" ")); lcd.print(velocityByte * 1.57); lcd.print(F(" ms")); lcd.print(F(" ")); interruptStart(); } else if ((commandByte == 177) && (noteByte == 7)) { lcd.setCursor(0, 0); lcd.print(F("Reverb : Damp ")); zeroTen(); interruptStart(); } else if ((commandByte == 177) && (noteByte == 24)) { lcd.setCursor(0, 0); lcd.print(F("Reverb : Taille ")); zeroTen(); interruptStart(); } else if ((commandByte == 176) && (noteByte == 16)) { lcd.setCursor(0, 0); lcd.print(F("Reverb : Largeur ")); zeroPercent(); interruptStart(); } else if ((commandByte == 177) && (noteByte == 8)) { lcd.setCursor(0, 0); lcd.print(F("Reverb : Dry / Wet ")); zeroPercent(); interruptStart(); } else if ((commandByte == 177) && (noteByte == 23)) { lcd.setCursor(0, 0); lcd.print(F("Chorus : Profondeur ")); zeroPercent(); interruptStart(); } else if ((commandByte == 177) && (noteByte == 20)) { lcd.setCursor(0, 0); lcd.print(F("Chorus : Feedback ")); zeroPercent(); interruptStart(); } else if ((commandByte == 177) && (noteByte == 15)) { lcd.setCursor(0, 0); lcd.print(F("Chorus : Frequence ")); lcd.setCursor(9, 2); lcd.print(F(" ")); lcd.print((velocityByte / 4.62) + 0.01); lcd.print(F(" Hz")); lcd.print(F(" ")); interruptStart(); } else if ((commandByte == 177) && (noteByte == 16)) { lcd.setCursor(0, 0); lcd.print(F("Chorus : Delai ")); lcd.setCursor(9, 2); lcd.print(F(" ")); lcd.print((velocityByte / 3.256) + 1); lcd.print(F(" ms")); lcd.print(F(" ")); interruptStart(); } else if ((commandByte == 177) && (noteByte == 18)) { lcd.setCursor(0, 0); lcd.print(F("Chorus : Largeur ")); zeroPercent(); interruptStart(); } else if ((commandByte == 177) && (noteByte == 17)) { lcd.setCursor(0, 0); lcd.print(F("Chorus : Dry / Wet ")); zeroPercent(); interruptStart(); } else if ((commandByte == 178) && (noteByte == 33)) { lcd.setCursor(0, 0); lcd.print(F("Disto : Dry / Wet ")); zeroPercent(); interruptStart(); } else if ((commandByte == 177) && (noteByte == 19)) { lcd.setCursor(0, 0); lcd.print(F("Disto : Taux ")); zeroTen(); interruptStart(); } else if ((commandByte == 177) && (noteByte == 13)) { lcd.setCursor(0, 0); lcd.print(F("Compresseur : Ratio ")); lcd.setCursor(9, 2); lcd.print(F(" ")); lcd.print((velocityByte / 1.2828) + 1); lcd.print(F(":1 ")); interruptStart(); } else if ((commandByte == 177) && (noteByte == 11)) { lcd.setCursor(0, 0); lcd.print(F("Compresseur : Releas")); lcd.setCursor(9, 2); lcd.print(F(" ")); lcd.print((velocityByte * 3.9291) + 1); lcd.print(F("ms ")); interruptStart(); } else if ((commandByte == 177) && (noteByte == 12)) { lcd.setCursor(0, 0); lcd.print(F("Compresseur : Attack")); lcd.setCursor(9, 2); lcd.print(F(" ")); lcd.print((velocityByte * 2.3614) + 0.1); lcd.print(F("ms ")); interruptStart(); } else if ((commandByte == 177) && (noteByte == 10)) { lcd.setCursor(0, 0); lcd.print(F("Compresseur : Tresho")); lcd.setCursor(9, 2); lcd.print(F(" ")); lcd.print((-(velocityByte / 4.2333))); lcd.print(F("dB ")); interruptStart(); } // Parameters Section else if ((commandByte == 177) && (noteByte == 14)) { lcd.setCursor(0, 0); lcd.print(F("Portamento glide : ")); zeroTen(); interruptStart(); } /* Rot Parts*/ else if ((commandByte == 181) && (noteByte == 13)) { lcd.setCursor(0, 0); lcd.print(F("Amp Env 1 : Mod 1 ")); modulationRot(); interruptStart(); } else if ((commandByte == 181) && (noteByte == 14)) { lcd.setCursor(0, 0); lcd.print(F("Amp Env 1 : Mod 2 ")); modulationRot(); interruptStart(); } else if ((commandByte == 181) && (noteByte == 15)) { lcd.setCursor(0, 0); lcd.print(F("Amp Env 2 : Mod 1 ")); modulationRot(); interruptStart(); } else if ((commandByte == 179) && (noteByte == 16)) { lcd.setCursor(0, 0); lcd.print(F("Amp Env 2 : Mod 2 ")); modulationRot(); interruptStart(); } else if ((commandByte == 179) && (noteByte == 17)) { lcd.setCursor(0, 0); lcd.print(F("LFO 1 : Mod 1 ")); modulationRot(); interruptStart(); } else if ((commandByte == 179) && (noteByte == 18)) { lcd.setCursor(0, 0); lcd.print(F("LFO 1 : Mod 2 ")); modulationRot(); interruptStart(); } else if ((commandByte == 179) && (noteByte == 19)) { lcd.setCursor(0, 0); lcd.print(F("LFO 2 : Mod 1 ")); modulationRot(); interruptStart(); } else if ((commandByte == 179) && (noteByte == 20)) { lcd.setCursor(0, 0); lcd.print(F("LFO 2 : Mod 2 ")); modulationRot(); interruptStart(); } else if ((commandByte == 179) && (noteByte == 15)) { lcd.setCursor(0, 0); lcd.print(F("LFO 1 : Forme Onde ")); lfoOndeRot(); interruptStart(); } else if ((commandByte == 179) && (noteByte == 14)) { lcd.setCursor(0, 0); lcd.print(F("LFO 2 : Forme Onde ")); lfoOndeRot(); interruptStart(); } else if ((commandByte == 179) && (noteByte == 21)) { lcd.setCursor(0, 0); lcd.print(F("Arpegiateur : Mode ")); arpMode(); interruptStart(); } else if ((commandByte == 179) && (noteByte == 24)) { lcd.setCursor(0, 0); lcd.print(F("Arpegiateur : Veloc ")); arpVelo(); interruptStart(); } else if ((commandByte == 179) && (noteByte == 22)) { lcd.setCursor(0, 0); lcd.print(F("Arpegiateur : Wrap ")); arpWrap(); interruptStart(); } else if ((commandByte == 179) && (noteByte == 25)) { lcd.setCursor(0, 0); lcd.print(F("Arpegiateur : Octave ")); arpOctave(); interruptStart(); } else if ((commandByte == 179) && (noteByte == 26)) { lcd.setCursor(0, 0); lcd.print(F("Mod Matrix 1 : Src 1 ")); modSource(); interruptStart(); } else if ((commandByte == 179) && (noteByte == 27)) { lcd.setCursor(0, 0); lcd.print(F("Mod Matrix 1 : Mod 1 ")); modulationRot(); interruptStart(); } else if ((commandByte == 179) && (noteByte == 28)) { lcd.setCursor(0, 0); lcd.print(F("Mod Matrix 1 : Mod 2 ")); modulationRot(); interruptStart(); } else if ((commandByte == 179) && (noteByte == 29)) { lcd.setCursor(0, 0); lcd.print(F("Mod Matrix 1 : Src 2 ")); modSource(); interruptStart(); } else if ((commandByte == 179) && (noteByte == 30)) { lcd.setCursor(0, 0); lcd.print(F("Mod Matrix 1 : Mod 3")); modulationRot(); interruptStart(); } else if ((commandByte == 179) && (noteByte == 31)) { lcd.setCursor(0, 0); lcd.print(F("Mod Matrix 1 : Mod 4")); modulationRot(); interruptStart(); } else if ((commandByte == 179) && (noteByte == 32)) { lcd.setCursor(0, 0); lcd.print(F("Mod Matrix 2 : Src 1 ")); modSource(); interruptStart(); } else if ((commandByte == 179) && (noteByte == 34)) { lcd.setCursor(0, 0); lcd.print(F("Mod Matrix 2 : Mod 1 ")); modulationRot(); interruptStart(); } else if ((commandByte == 179) && (noteByte == 35)) { lcd.setCursor(0, 0); lcd.print(F("Mod Matrix 2 : Mod 2 ")); modulationRot(); interruptStart(); } else if ((commandByte == 179) && (noteByte == 36)) { lcd.setCursor(0, 0); lcd.print(F("Mod Matrix 2 : Src 2 ")); modSource(); interruptStart(); } else if ((commandByte == 179) && (noteByte == 37)) { lcd.setCursor(0, 0); lcd.print(F("Mod Matrix 2 : Mod 3 ")); modulationRot(); interruptStart(); } else if ((commandByte == 179) && (noteByte == 38)) { lcd.setCursor(0, 0); lcd.print(F("Mod Matrix 2 : Mod 4")); modulationRot(); interruptStart(); } else if ((commandByte == 179) && (noteByte == 33)) { lcd.setCursor(0, 0); lcd.print(F("Polyphonie totale : ")); arpWrap(); interruptStart(); } else if ((commandByte == 181) && (noteByte == 16)) { lcd.setCursor(0, 0); lcd.print(F("Osc A1 : Octave Shft")); octaveOsc(); interruptStart(); } else if ((commandByte == 181) && (noteByte == 17)) { lcd.setCursor(0, 0); lcd.print(F("Osc A1 : Note Shift ")); noteOsc(); interruptStart(); } else if ((commandByte == 181) && (noteByte == 18)) { lcd.setCursor(0, 0); lcd.print(F("Osc A2 : Octave Shft ")); octaveOsc(); interruptStart(); } else if ((commandByte == 181) && (noteByte == 19)) { lcd.setCursor(0, 0); lcd.print(F("Osc A2 : Note Shift ")); noteOsc(); interruptStart(); } else if ((commandByte == 181) && (noteByte == 20)) { lcd.setCursor(0, 0); lcd.print(F("Osc B1 : Octave Shft ")); octaveOsc(); interruptStart(); } else if ((commandByte == 181) && (noteByte == 21)) { lcd.setCursor(0, 0); lcd.print(F("Osc B1 : Note Shift ")); noteOsc(); interruptStart(); } else if ((commandByte == 181) && (noteByte == 22)) { lcd.setCursor(0, 0); lcd.print(F("Osc B2 : Octave Shft ")); octaveOsc(); interruptStart(); } else if ((commandByte == 181) && (noteByte == 23)) { lcd.setCursor(0, 0); lcd.print(F("Osc B2 : Note Shift ")); noteOsc(); interruptStart(); } else if ((commandByte == 181) && (noteByte == 1)) { lcd.setCursor(0, 0); lcd.print(F("Osc A1 : Forme Onde ")); foOsc(); interruptStart(); } else if ((commandByte == 181) && (noteByte == 2)) { lcd.setCursor(0, 0); lcd.print(F("Osc B1 : Forme Onde ")); foOsc(); interruptStart(); } else if ((commandByte == 181) && (noteByte == 3)) { lcd.setCursor(0, 0); lcd.print(F("Osc A2 : Forme Onde ")); foOsc(); interruptStart(); } else if ((commandByte == 181) && (noteByte == 4)) { lcd.setCursor(0, 0); lcd.print(F("Osc B2 : Forme Onde ")); foOsc(); interruptStart(); } else if ((commandByte == 181) && (noteByte == 5)) { lcd.setCursor(0, 0); lcd.print(F("Osc A1 : Nb Voies ")); voicesOsc(); interruptStart(); } else if ((commandByte == 181) && (noteByte == 6)) { lcd.setCursor(0, 0); lcd.print(F("Osc : A2 Nb Voies ")); voicesOsc(); interruptStart(); } else if ((commandByte == 181) && (noteByte == 7)) { lcd.setCursor(0, 0); lcd.print(F("Osc : B1 Nb Voies ")); voicesOsc(); interruptStart(); } else if ((commandByte == 181) && (noteByte == 8)) { lcd.setCursor(0, 0); lcd.print(F("Osc : B2 Nb Voies ")); voicesOsc(); interruptStart(); } else if ((commandByte == 180) && (noteByte == 40)) { lcd.setCursor(0, 0); lcd.print(F("Distorsion : Type ")); distoType(); interruptStart(); } else if ((commandByte == 181) && (noteByte == 9)) { lcd.setCursor(0, 0); lcd.print(F("Filtre A : SelEntree")); filterInputA(); interruptStart(); } else if ((commandByte == 181) && (noteByte == 11)) { lcd.setCursor(0, 0); lcd.print(F("Filtre B : SelEntree")); filterInputB(); interruptStart(); } else if ((commandByte == 181) && (noteByte == 10)) { lcd.setCursor(0, 0); lcd.print(F("Filtre A : TypeFiltr")); filterType(); interruptStart(); } else if ((commandByte == 181) && (noteByte == 12)) { lcd.setCursor(0, 0); lcd.print(F("Filtre B : TypeFiltr")); filterType(); interruptStart(); } // On / Off section else if ((commandByte == 180) && (noteByte == 30)) { lcd.setCursor(0, 0); lcd.print(F("Osc A1 : Osc Invers ")); onOff(); interruptStart(); } else if ((commandByte == 180) && (noteByte == 36)) { lcd.setCursor(0, 0); lcd.print(F("Osc B1 : Osc Invers ")); onOff(); interruptStart(); } else if ((commandByte == 180) && (noteByte == 31)) { lcd.setCursor(0, 0); lcd.print(F("Osc A2 : Osc Invers ")); onOff(); interruptStart(); } else if ((commandByte == 180) && (noteByte == 37)) { lcd.setCursor(0, 0); lcd.print(F("Osc B2 : Osc Invers ")); onOff(); interruptStart(); } else if ((commandByte == 180) && (noteByte == 34)) { lcd.setCursor(0, 0); lcd.print(F("Osc A1 : Retrigger ")); onOff(); interruptStart(); } else if ((commandByte == 180) && (noteByte == 35)) { lcd.setCursor(0, 0); lcd.print(F("Osc B1 : Retrigger ")); onOff(); interruptStart(); } else if ((commandByte == 180) && (noteByte == 15)) { lcd.setCursor(0, 0); lcd.print(F("Osc A2 : Retrigger ")); onOff(); interruptStart(); } else if ((commandByte == 180) && (noteByte == 29)) { lcd.setCursor(0, 0); lcd.print(F("Osc B2 : Retrigger ")); onOff(); interruptStart(); } else if ((commandByte == 180) && (noteByte == 32)) { lcd.setCursor(0, 0); lcd.print(F("Filtre A : Rech Lamp")); onOff(); interruptStart(); } else if ((commandByte == 180) && (noteByte == 14)) { lcd.setCursor(0, 0); lcd.print(F("Filtre B : Rech Lamp")); onOff(); interruptStart(); } else if ((commandByte == 180) && (noteByte == 20)) { lcd.setCursor(0, 0); lcd.print(F("LFO 1 : Synchronisat")); onOff(); if (velocityByte == 127) lfo1Free = 0; if (velocityByte == 0) lfo1Free = 1; interruptStart(); } else if ((commandByte == 180) && (noteByte == 21)) { lcd.setCursor(0, 0); lcd.print(F("LFO 2 : Synchronisat")); onOff(); if (velocityByte == 127) lfo2Free = 0; if (velocityByte == 0) lfo2Free = 1; interruptStart(); } else if ((commandByte == 180) && (noteByte == 22)) { lcd.setCursor(0, 0); lcd.print(F("Arpegiateur : ")); onOff(); interruptStart(); } else if ((commandByte == 180) && (noteByte == 23)) { lcd.setCursor(0, 0); lcd.print(F("Egalisateur : ")); onOff(); interruptStart(); } else if ((commandByte == 180) && (noteByte == 19)) { lcd.setCursor(0, 0); lcd.print(F("Mono Legato : ")); onOff(); interruptStart(); } else if ((commandByte == 180) && (noteByte == 26)) { lcd.setCursor(0, 0); lcd.print(F("Chorus : ")); onOff(); interruptStart(); } else if ((commandByte == 180) && (noteByte == 17)) { lcd.setCursor(0, 0); lcd.print(F("Distorsion : ")); onOff(); interruptStart(); } else if ((commandByte == 180) && (noteByte == 18)) { lcd.setCursor(0, 0); lcd.print(F("Reverberation : ")); onOff(); interruptStart(); } else if ((commandByte == 180) && (noteByte == 16)) { lcd.setCursor(0, 0); lcd.print(F("Delay : ")); onOff(); interruptStart(); } else if ((commandByte == 180) && (noteByte == 28)) { lcd.setCursor(0, 0); lcd.print(F("Delay : Ping Pong Md")); onOff(); interruptStart(); } else if ((commandByte == 180) && (noteByte == 27)) { lcd.setCursor(0, 0); lcd.print(F("Phaser : ")); onOff(); interruptStart(); } else if ((commandByte == 180) && (noteByte == 24)) { lcd.setCursor(0, 0); lcd.print(F("Compresseur : ")); onOff(); interruptStart(); } else if ((commandByte == 180) && (noteByte == 33)) { lcd.setCursor(0, 0); lcd.print(F("Filtre A : Pente ")); penteFiltre(); interruptStart(); } else if ((commandByte == 180) && (noteByte == 38)) { lcd.setCursor(0, 0); lcd.print(F("Filtre B : Pente ")); penteFiltre(); interruptStart(); } else if ((commandByte == 180) && (noteByte == 25)) { lcd.setCursor(0, 0); lcd.print(F("Legato Mode : ")); lcd.setCursor(7, 2); lcd.print(F(" ")); if (velocityByte == 0) lcd.print(F(" Normal ")); if (velocityByte == 127) lcd.print(F(" Slide ")); interruptStart(); } tempsPasse = millis() - debutTemps; if ((tempsPasse >= 5500) && (flag == 0)) { flag = 1; //trucSwag(); lcd.clear(); lcd.setCursor(1, 0); lcd.print(F("SYLENCE")); lcd.setCursor(9, 0); lcd.print(F("CONTROLLER")); delay(100); } #endif delay(8); /********Delay !!!! *********/ //lcd.clear(); } void checkMIDI() { do { if (Serial.available()) { commandByte = Serial.read(); if ((commandByte == 176) || (commandByte == 177) || (commandByte == 178) || (commandByte == 179) || (commandByte == 180) || (commandByte == 181)) { noteByte = Serial.read(); //read next byte velocityByte = Serial.read(); //read final byte } } } while (Serial.available() > 2);//when at least three bytes available } void interruptStart(void) { debutTemps = millis(); noteByte = 0; flag = 0; } void zeroTen(void) { lcd.setCursor(9, 2); lcd.print(F(" ")); lcd.print(velocityByte / 12.7); lcd.print(F(" ")); } void minusTenToTen(void) { lcd.setCursor(9, 2); lcd.print(F(" ")); lcd.print((velocityByte * 0.1575) - 10); lcd.print(F(" ")); } void phaseThreeSixty(void) { lcd.setCursor(9, 2); lcd.print(F(" ")); lcd.print((velocityByte * 2.83465)); lcd.print((char)223); lcd.print(F(" ")); } void zeroPercent(void) { lcd.setCursor(8, 2); lcd.print(F(" ")); lcd.print(velocityByte * 0.7874); lcd.print(F(" %")); lcd.print(F(" ")); } void arpTime(void) { lcd.setCursor(8, 2); lcd.print(F(" ")); if (velocityByte <= 6) lcd.print(F("1/1")); if (6 < velocityByte && velocityByte <= 13 ) lcd.print(F("1/2D")); if (13 < velocityByte && velocityByte <= 20) lcd.print(F("1/1T")); if (20 < velocityByte && velocityByte <= 27) lcd.print(F("1/2")); if (27 < velocityByte && velocityByte <= 33) lcd.print(F("1/4D")); if (33 < velocityByte && velocityByte <= 40) lcd.print(F("1/2T")); if (40 < velocityByte && velocityByte <= 46) lcd.print(F("1/4")); if (46 < velocityByte && velocityByte <= 53) lcd.print(F("1/8D")); if (53 < velocityByte && velocityByte <= 60) lcd.print(F("1/4T")); if (60 < velocityByte && velocityByte <= 67) lcd.print(F("1/8")); if (67 < velocityByte && velocityByte <= 73) lcd.print(F("1/16D")); if (73 < velocityByte && velocityByte <= 80) lcd.print(F("1/8T")); if (80 < velocityByte && velocityByte <= 87) lcd.print(F("1/16")); if (87 < velocityByte && velocityByte <= 93) lcd.print(F("1/32D")); if (93 < velocityByte && velocityByte <= 100) lcd.print(F("1/16T")); if (100 < velocityByte && velocityByte <= 107) lcd.print(F("1/32")); if (107 < velocityByte && velocityByte <= 114) lcd.print(F("1/64D")); if (114 < velocityByte && velocityByte <= 1) lcd.print(F("1/32T")); if (120 < velocityByte && velocityByte <= 127) lcd.print(F("1/64")); lcd.print(F(" ")); } void delayTime(void) { lcd.setCursor(8, 2); lcd.print(F(" ")); if (velocityByte <= 3) lcd.print(F("1/64")); if (3 < velocityByte && velocityByte <= 11 ) lcd.print(F("1/32T")); if (11 < velocityByte && velocityByte <= 19) lcd.print(F("1/64D")); if (19 < velocityByte && velocityByte <= 27) lcd.print(F("1/32")); if (27 < velocityByte && velocityByte <= 35) lcd.print(F("1/16T")); if (35 < velocityByte && velocityByte <= 43) lcd.print(F("1/32D")); if (43 < velocityByte && velocityByte <= 51) lcd.print(F("1/16")); if (51 < velocityByte && velocityByte <= 67) lcd.print(F("1/8T")); if (67 < velocityByte && velocityByte <= 75) lcd.print(F("1/16D")); if (75 < velocityByte && velocityByte <= 83) lcd.print(F("1/8")); if (83 < velocityByte && velocityByte <= 91) lcd.print(F("1/4T")); if (91 < velocityByte && velocityByte <= 99) lcd.print(F("1/8D")); if (99 < velocityByte && velocityByte <= 107) lcd.print(F("1/4")); if (107 < velocityByte && velocityByte <= 115) lcd.print(F("1/2T")); if (115 < velocityByte && velocityByte <= 123) lcd.print(F("1/4D")); if (123 < velocityByte && velocityByte <= 127) lcd.print(F("1/2")); lcd.print(F(" ")); } void phaserLfo(void) { lcd.setCursor(8, 2); lcd.print(F(" ")); if (velocityByte <= 4) lcd.print(F("8/1D")); if (4 < velocityByte && velocityByte <= 7 ) lcd.print(F("8/1")); if (7 < velocityByte && velocityByte <= 11) lcd.print(F("4/1D")); if (11 < velocityByte && velocityByte <= 14) lcd.print(F("8/1T")); if (14 < velocityByte && velocityByte <= 18) lcd.print(F("4/1")); if (18 < velocityByte && velocityByte <= 21) lcd.print(F("2/1D")); if (21 < velocityByte && velocityByte <= 25) lcd.print(F("4/1T")); if (25 < velocityByte && velocityByte <= 28) lcd.print(F("2/1")); if (28 < velocityByte && velocityByte <= 32) lcd.print(F("1/1D")); if (32 < velocityByte && velocityByte <= 35) lcd.print(F("2/1T")); if (35 < velocityByte && velocityByte <= 39) lcd.print(F("1/1")); if (39 < velocityByte && velocityByte <= 42) lcd.print(F("1/2D")); if (42 < velocityByte && velocityByte <= 46) lcd.print(F("1/1T")); if (46 < velocityByte && velocityByte <= 49) lcd.print(F("1/2")); if (49 < velocityByte && velocityByte <= 53) lcd.print(F("1/4D")); if (53 < velocityByte && velocityByte <= 56) lcd.print(F("1/2T")); if (56 < velocityByte && velocityByte <= 60) lcd.print(F("1/4")); if (60 < velocityByte && velocityByte <= 63) lcd.print(F("1/8D")); if (63 < velocityByte && velocityByte <= 67) lcd.print(F("1/4T")); if (67 < velocityByte && velocityByte <= 71) lcd.print(F("1/8")); if (71 < velocityByte && velocityByte <= 74) lcd.print(F("1/16D")); if (74 < velocityByte && velocityByte <= 77) lcd.print(F("1/8T")); if (77 < velocityByte && velocityByte <= 81) lcd.print(F("1/16")); if (81 < velocityByte && velocityByte <= 85) lcd.print(F("1/32D")); if (85 < velocityByte && velocityByte <= 88) lcd.print(F("1/16T")); if (88 < velocityByte && velocityByte <= 92) lcd.print(F("1/32")); if (92 < velocityByte && velocityByte <= 95) lcd.print(F("1/64D")); if (95 < velocityByte && velocityByte <= 99) lcd.print(F("1/32T")); if (99 < velocityByte && velocityByte <= 102) lcd.print(F("1/64")); if (102 < velocityByte && velocityByte <= 106) lcd.print(F("1/128D")); if (106 < velocityByte && velocityByte <= 109) lcd.print(F("1/64T")); if (109 < velocityByte && velocityByte <= 113) lcd.print(F("1/128")); if (113 < velocityByte && velocityByte <= 116) lcd.print(F("1/256T")); if (116 < velocityByte && velocityByte <= 1) lcd.print(F("1/128T")); if (120 < velocityByte && velocityByte <= 123) lcd.print(F("1/256")); if (123 < velocityByte && velocityByte <= 127) lcd.print(F("1/256T")); lcd.print(F(" ")); } void modulationRot(void) { lcd.setCursor(5, 2); lcd.print(F(" ")); if (velocityByte == 0) lcd.print(F(" -- ")); if (velocityByte == 5) lcd.print(F(" Volume A ")); if (velocityByte == 10) lcd.print(F(" Volume B ")); if (velocityByte == 14) lcd.print(F(" Volume AB")); if (velocityByte == 17) lcd.print(F(" Pitch A ")); if (velocityByte == 21) lcd.print(F(" Pitch B ")); if (velocityByte == 25) lcd.print(F(" Pitch AB ")); if (velocityByte == 29) lcd.print(F(" Phase A ")); if (velocityByte == 33) lcd.print(F(" Phase B ")); if (velocityByte == 36) lcd.print(F(" Phase AB ")); if (velocityByte == 40) lcd.print(F(" Pan A ")); if (velocityByte == 45) lcd.print(F(" Pan B ")); if (velocityByte == 48) lcd.print(F(" Pan AB ")); if (velocityByte == 51) lcd.print(F(" CutOff A")); if (velocityByte == 55) lcd.print(F(" CutOff B")); if (velocityByte == 60) lcd.print(F(" CutOff AB")); if (velocityByte == 63) lcd.print(F(" Reso A ")); if (velocityByte == 68) lcd.print(F(" Reso B ")); if (velocityByte == 71) lcd.print(F(" Reso AB ")); if (velocityByte == 74) lcd.print(F("Phaser Freq")); if (velocityByte == 79) lcd.print(F(" Mix A ")); if (velocityByte == 82) lcd.print(F(" Mix B ")); if (velocityByte == 85) lcd.print(F(" Mix AB ")); if (velocityByte == 90) lcd.print(F(" LFO 1 Rate")); if (velocityByte == 95) lcd.print(F(" LFO 1 Gain")); if (velocityByte == 98) lcd.print(F(" LFO 2 Rate")); if (velocityByte == 102) lcd.print(F(" LFO 2 Gain")); if (velocityByte == 115) lcd.print(F("Dist Amount")); } void lfoOndeRot(void) { lcd.setCursor(5, 2); lcd.print(F(" ")); if (velocityByte == 0) lcd.print(F(" Sine ")); if (velocityByte == 12) lcd.print(F(" Saw ")); if (velocityByte == 24) lcd.print(F(" Ramp ")); if (velocityByte == 36) lcd.print(F(" Triangle ")); if (velocityByte == 48) lcd.print(F(" Pulse ")); if (velocityByte == 60) lcd.print(F(" Half Pulse")); if (velocityByte == 72) lcd.print(F(" QuartPulse")); if (velocityByte == 84) lcd.print(F(" Tri Saw ")); if (velocityByte == 96) lcd.print(F(" Lorenz ")); if (velocityByte == 108) lcd.print(F("Sample&Hold")); if (velocityByte == 1) lcd.print(F(" Random ")); } void arpMode(void) { lcd.setCursor(5, 2); lcd.print(F(" ")); if (velocityByte == 0) lcd.print(F(" Up ")); if (velocityByte == 13) lcd.print(F(" Down ")); if (velocityByte == 26) lcd.print(F(" Up/Down ")); if (velocityByte == 39) lcd.print(F(" Up/Down 2")); if (velocityByte == 52) lcd.print(F(" Down/Up ")); if (velocityByte == 65) lcd.print(F(" Down/Up 2")); if (velocityByte == 78) lcd.print(F(" Random ")); if (velocityByte == 91) lcd.print(F(" Ordered ")); if (velocityByte == 104) lcd.print(F(" Step ")); if (velocityByte == 117) lcd.print(F(" Chords ")); } void arpVelo(void) { lcd.setCursor(5, 2); lcd.print(F(" ")); if (velocityByte == 5) lcd.print(F(" Key ")); if (velocityByte == 35) lcd.print(F(" Hold ")); if (velocityByte == 65) lcd.print(F(" Step ")); if (velocityByte == 95) lcd.print(F(" Step Key ")); if (velocityByte == 125) lcd.print(F("Step + Hold")); } void arpWrap(void) { lcd.setCursor(9, 2); lcd.print(F(" ")); if (velocityByte == 5) lcd.print(F(" -- ")); if (velocityByte == 12) lcd.print(F(" 1 ")); if (velocityByte == 20) lcd.print(F(" 2 ")); if (velocityByte == 27) lcd.print(F(" 3 ")); if (velocityByte == 35) lcd.print(F(" 4 ")); if (velocityByte == 42) lcd.print(F(" 5 ")); if (velocityByte == 50) lcd.print(F(" 6 ")); if (velocityByte == 57) lcd.print(F(" 7 ")); if (velocityByte == 65) lcd.print(F(" 8 ")); if (velocityByte == 72) lcd.print(F(" 9 ")); if (velocityByte == 80) lcd.print(F(" 10 ")); if (velocityByte == 87) lcd.print(F(" 11 ")); if (velocityByte == 95) lcd.print(F(" 12 ")); if (velocityByte == 102) lcd.print(F(" 13 ")); if (velocityByte == 110) lcd.print(F(" 14 ")); if (velocityByte == 117) lcd.print(F(" 15 ")); if (velocityByte == 125) lcd.print(F(" 16 ")); } void arpOctave(void) { lcd.setCursor(4, 2); lcd.print(F(" ")); if (velocityByte == 5) lcd.print(F(" 1 Oct")); if (velocityByte == 45) lcd.print(F(" 2 Oct")); if (velocityByte == 85) lcd.print(F(" 3 Oct")); if (velocityByte == 125) lcd.print(F(" 4 Oct")); } void modSource(void) { lcd.setCursor(5, 2); lcd.print(F(" ")); if (velocityByte == 3) lcd.print(F(" None ")); if (velocityByte == 14) lcd.print(F(" Velocity ")); if (velocityByte == 25) lcd.print(F(" Mod Wheel")); if (velocityByte == 36) lcd.print(F(" KeyTrack ")); if (velocityByte == 47) lcd.print(F(" Amp Env A")); if (velocityByte == 58) lcd.print(F(" Amp Env B")); if (velocityByte == 69) lcd.print(F(" Mod Env 1")); if (velocityByte == 80) lcd.print(F(" Mod Env 2")); if (velocityByte == 91) lcd.print(F(" LFO 1 ")); if (velocityByte == 102) lcd.print(F(" LFO 2 ")); if (velocityByte == 113) lcd.print(F("After Touch")); if (velocityByte == 124) lcd.print(F(" Step Vlty ")); } void octaveOsc(void) { lcd.setCursor(5, 2); lcd.print(F(" ")); if (velocityByte == 0) lcd.print(F(" -3 Oct ")); if (velocityByte == 21) lcd.print(F(" -2 Oct ")); if (velocityByte == 42) lcd.print(F(" -1 Oct ")); if (velocityByte == 63) lcd.print(F(" 0 Oct ")); if (velocityByte == 84) lcd.print(F(" 1 Oct ")); if (velocityByte == 105) lcd.print(F(" 2 Oct ")); if (velocityByte == 126) lcd.print(F(" 3 Oct ")); } void foOsc(void) { lcd.setCursor(5, 2); lcd.print(F(" ")); if (velocityByte == 25) lcd.print(F(" Saw ")); if (velocityByte == 10) lcd.print(F(" Sine ")); if (velocityByte == 41) lcd.print(F(" Triangle ")); if (velocityByte == 56) lcd.print(F(" Pulse ")); if (velocityByte == 72) lcd.print(F("Half Pulse ")); if (velocityByte == 87) lcd.print(F("QuartPulse ")); if (velocityByte == 103) lcd.print(F(" Tri Saw ")); if (velocityByte == 118) lcd.print(F(" Noise ")); } void voicesOsc(void) { lcd.setCursor(5, 2); lcd.print(F(" ")); if (velocityByte == 10) lcd.print(F(" 0 Voices ")); if (velocityByte == 24) lcd.print(F(" 1 Voices ")); if (velocityByte == 38) lcd.print(F(" 2 Voices ")); if (velocityByte == 52) lcd.print(F(" 3 Voices ")); if (velocityByte == 66) lcd.print(F(" 4 Voices ")); if (velocityByte == 80) lcd.print(F(" 5 Voices ")); if (velocityByte == 94) lcd.print(F(" 6 Voices ")); if (velocityByte == 108) lcd.print(F(" 7 Voices ")); if (velocityByte == 122) lcd.print(F(" 8 Voices ")); } void noteOsc(void) { lcd.setCursor(7, 2); lcd.print(F(" ")); if (velocityByte == 0) lcd.print(F(" -7 ")); if (velocityByte == 9) lcd.print(F(" -6 ")); if (velocityByte == 18) lcd.print(F(" -5 ")); if (velocityByte == 27) lcd.print(F(" -4 ")); if (velocityByte == 36) lcd.print(F(" -3 ")); if (velocityByte == 45) lcd.print(F(" -2 ")); if (velocityByte == 54) lcd.print(F(" -1 ")); if (velocityByte == 63) lcd.print(F(" 0 ")); if (velocityByte == 72) lcd.print(F(" 1 ")); if (velocityByte == 81) lcd.print(F(" 2 ")); if (velocityByte == 90) lcd.print(F(" 3 ")); if (velocityByte == 99) lcd.print(F(" 4 ")); if (velocityByte == 108) lcd.print(F(" 5 ")); if (velocityByte == 117) lcd.print(F(" 6 ")); if (velocityByte == 126) lcd.print(F(" 7 ")); } void distoType(void) { lcd.setCursor(5, 2); lcd.print(F(" ")); if (velocityByte == 10) lcd.print(F(" Over Drive")); if (velocityByte == 35) lcd.print(F(" Fold Back")); if (velocityByte == 60) lcd.print(F(" Clip ")); if (velocityByte == 85) lcd.print(F(" Decimate ")); if (velocityByte == 110) lcd.print(F("Bit Crusher")); } void filterInputA(void) { lcd.setCursor(5, 2); lcd.print(F(" ")); if (velocityByte == 110) lcd.print(F(" None ")); if (velocityByte == 0) lcd.print(F(" A ")); if (velocityByte == 70) lcd.print(F(" AB ")); } void filterInputB(void) { lcd.setCursor(5, 2); lcd.print(F(" ")); if (velocityByte == 110) lcd.print(F(" None ")); if (velocityByte == 0) lcd.print(F(" B ")); if (velocityByte == 70) lcd.print(F(" BA ")); } void filterType(void) { lcd.setCursor(4, 2); lcd.print(F(" ")); if (velocityByte == 0) lcd.print(F(" By pass ")); if (velocityByte == 40) lcd.print(F(" Passe Bas ")); if (velocityByte == 80) lcd.print(F(" Passe Bande ")); if (velocityByte == 120) lcd.print(F(" Passe Haut ")); } void onOff(void) { lcd.setCursor(9, 2); lcd.print(F(" ")); if (velocityByte == 0) lcd.print(F(" Off ")); if (velocityByte == 127) lcd.print(F(" On ")); } void penteFiltre(void) { lcd.setCursor(7, 2); lcd.print(F(" ")); if (velocityByte == 0) lcd.print(F("12 db/Dec")); if (velocityByte == 127) lcd.print(F("24 db/Dec")); } void trucSwag(void) { for (int brightness = 0; brightness < 255; brightness++) { analogWrite(led, brightness * 0.05); delayMicroseconds(100); } for (int brightness = 0; brightness < 255; brightness++) { analogWrite(led2, brightness * 0.06); delayMicroseconds(125); } for (int brightness = 0; brightness < 255; brightness++) { analogWrite(led3, brightness * 0.075); delayMicroseconds(175); } for (int brightness = 0; brightness < 255; brightness++) { analogWrite(led4, brightness * 0.1); delayMicroseconds(250); } for (int brightness = 0; brightness < 255; brightness++) { analogWrite(led5, brightness * 0.15); delayMicroseconds(350); } for (int brightness = 0; brightness < 255; brightness++) { analogWrite(led6, brightness * 0.2); delayMicroseconds(500); } for (int brightness = 0; brightness < 255; brightness++) { analogWrite(led7, brightness * 0.3); delayMicroseconds(700); } for (int brightness = 0; brightness < 255; brightness++) { analogWrite(led8, brightness * 0.5); } for (int brightness = 255; brightness >= 0; brightness--) { analogWrite(led, brightness * 0.05); analogWrite(led2, brightness * 0.06); analogWrite(led3, brightness * 0.075); analogWrite(led4, brightness * 0.1); analogWrite(led5, brightness * 0.15); analogWrite(led6, brightness * 0.2); analogWrite(led7, brightness * 0.3); analogWrite(led8, brightness * 0.5); delay(6); } analogWrite(led, 0); analogWrite(led2, 0); analogWrite(led3, 0); analogWrite(led4, 0); analogWrite(led5, 0); analogWrite(led6, 0); analogWrite(led7, 0); analogWrite(led8, 0); }