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);
}
Нда, за несколько месяцев разбирательств вы задаете очень крутой вопрос. Отвечаю - измените этот скетч в любом редакторе. Другой ответ как запихать потенциометры вы навряд ли получите. Бросайте это дело, не ваше оно.
Спасибо, умный человек. Всего вам доброго.