midi контроллер на UNO
- Войдите на сайт для отправки комментариев
Чт, 12/01/2017 - 20:48
Начинающий нихрена на не понимающий. Бьюсь с кодом для контроллера, уже голова болит от информации перелопаченой за пару месяцев.
Подскажите люди умные, как мне запихать в этот скетч потенциометры?!
byte val = 0; #define note_C 0x3C // C4 #define note_D 0x3E // D4 #define note_E 0x40 // E4 #define note_F 0x41 // F4 #define note_G 0x43 // G4 #define note_A 0x45 // A4 #define note_B 0x47 // B4 static boolean rotating=false; #define switch_C 4 #define switch_D 5 #define switch_E 6 #define switch_F 7 #define switch_G 8 #define switch_A 9 #define switch_B 10 int buttonState_C = 0; int buttonState_D = 0; int buttonState_E = 0; int buttonState_F = 0; int buttonState_G = 0; int buttonState_A = 0; int buttonState_B = 0; int note_C_send_off = false; int note_C_send_on = false; int note_D_send_off = false; int note_D_send_on = false; int note_E_send_off = false; int note_E_send_on = false; int note_F_send_off = false; int note_F_send_on = false; int note_G_send_off = false; int note_G_send_on = false; int note_A_send_off = false; int note_A_send_on = false; int note_B_send_off = false; int note_B_send_on = false; //byte MSB; //unsigned int LSB; void setup() { pinMode(switch_C, INPUT); pinMode(switch_D, INPUT); pinMode(switch_E, INPUT); pinMode(switch_F, INPUT); pinMode(switch_G, INPUT); pinMode(switch_A, INPUT); pinMode(switch_B, INPUT); Serial.begin(115200); } void loop() { buttonState_C = digitalRead(switch_C); buttonState_D = digitalRead(switch_D); buttonState_E = digitalRead(switch_E); buttonState_F = digitalRead(switch_F); buttonState_G = digitalRead(switch_G); buttonState_A = digitalRead(switch_A); buttonState_B = digitalRead(switch_B); // Нота C if (buttonState_C == HIGH && note_C_send_on == false) // Нажатие клавиши { noteOn(0x90, note_C, 0x7F); note_C_send_on = true; // Команда Note On послана note_C_send_off = false; // Команда Note Off не послана } else if (buttonState_C == HIGH && note_C_send_on == true) // Если клавиша удерживается { noteOn(0x00, note_C, 0x7F); note_C_send_on = true; note_C_send_off = false; } else if (buttonState_C == LOW && note_C_send_off == false) // Если клавишу отпустили { noteOn(0x90, note_C, 0x00); note_C_send_on = false; note_C_send_off = true; } // Нота D if (buttonState_D == HIGH && note_D_send_on == false) { noteOn(0x90, note_D, 0x7F); note_D_send_on = true; note_D_send_off = false; } else if (buttonState_D == HIGH && note_D_send_on == true) { noteOn(0x00, note_D, 0x7F); note_D_send_on = true; note_D_send_off = false; } else if (buttonState_D == LOW && note_D_send_off == false) { noteOn(0x90, note_D, 0x00); note_D_send_on = false; note_D_send_off = true; } // Нота E if (buttonState_E == HIGH && note_E_send_on == false) { noteOn(0x90, note_E, 0x7F); note_E_send_on = true; note_E_send_off = false; } else if (buttonState_E == HIGH && note_E_send_on == true) { noteOn(0x00, note_E, 0x7F); note_E_send_on = true; note_E_send_off = false; } else if (buttonState_E == LOW && note_E_send_off == false) { noteOn(0x90, note_E, 0x00); note_E_send_on = false; note_E_send_off = true; } // Нота F if (buttonState_F == HIGH && note_F_send_on == false) { noteOn(0x90, note_F, 0x7F); note_F_send_on = true; note_F_send_off = false; } else if (buttonState_F == HIGH && note_F_send_on == true) { noteOn(0x00, note_F, 0x7F); note_F_send_on = true; note_F_send_off = false; } else if (buttonState_F == LOW && note_F_send_off == false) { noteOn(0x90, note_F, 0x00); note_F_send_on = false; note_F_send_off = true; } // Нота G if (buttonState_G == HIGH && note_G_send_on == false) { noteOn(0x90, note_G, 0x7F); note_G_send_on = true; note_G_send_off = false; } else if (buttonState_G == HIGH && note_G_send_on == true) { noteOn(0x00, note_G, 0x7F); note_G_send_on = true; note_G_send_off = false; } else if (buttonState_G == LOW && note_G_send_off == false) { noteOn(0x90, note_G, 0x00); note_G_send_on = false; note_G_send_off = true; } // Нота A if (buttonState_A == HIGH && note_A_send_on == false) { noteOn(0x90, note_A, 0x7F); note_A_send_on = true; note_A_send_off = false; } else if (buttonState_A == HIGH && note_A_send_on == true) { noteOn(0x00, note_A, 0x7F); note_A_send_on = true; note_A_send_off = false; } else if (buttonState_A == LOW && note_A_send_off == false) { noteOn(0x90, note_A, 0x00); note_A_send_on = false; note_A_send_off = true; } // Нота B if (buttonState_B == HIGH && note_B_send_on == false) { noteOn(0x90, note_B, 0x7F); note_B_send_on = true; note_B_send_off = false; } else if (buttonState_B == HIGH && note_B_send_on == true) { noteOn(0x00, note_B, 0x7F); note_B_send_on = true; note_B_send_off = false; } else if (buttonState_B == LOW && note_B_send_off == false) { noteOn(0x90, note_B, 0x00); note_B_send_on = false; note_B_send_off = true; } } void noteOn(int cmd, int pitch, int velocity) { Serial.write(cmd); Serial.write(pitch); Serial.write(velocity); delay(20); }
Нда, за несколько месяцев разбирательств вы задаете очень крутой вопрос. Отвечаю - измените этот скетч в любом редакторе. Другой ответ как запихать потенциометры вы навряд ли получите. Бросайте это дело, не ваше оно.
Спасибо, умный человек. Всего вам доброго.