58

USB MIDI- клавиатура на arduino mega

Дело было вечером, делать было нечего.

В общем нашел я у дочки игрушку, она даже работала, но играть на ней было практически невозможно, дело в том что при нажатии на 2 клавиши, 3 -я уже не работала, то есть взять аккорд невозможно (хотя я аккорды и не знаю, зато паять умею) а еще совершенно случайно валялись ардуики всякие. Гугл сказал можно сделать из этого всего MIDI - клавиатуру.   

USB MIDI- клавиатура на arduino mega Midi, Музыка, Pro tools, Arduino, Паяльник, Рукожоп, Длиннопост

Взял мегу, т.к. там точно хватит цифровых входов под каждую клавишу, клавиш получилось 37, можно было и на UNO сделать, но тогда нужен будет ставить мультиплексор, а у меня его не оказалось.

USB MIDI- клавиатура на arduino mega Midi, Музыка, Pro tools, Arduino, Паяльник, Рукожоп, Длиннопост

Берем Ашан паяльник... (не ну брат, у меня канэшна есть и хороший паяльник, просто он на работе, а такие у меня везде по одному валяются, на даче в машине и дома) кстати подставка сделана мной в 1989 году.

USB MIDI- клавиатура на arduino mega Midi, Музыка, Pro tools, Arduino, Паяльник, Рукожоп, Длиннопост

и курочим уже бывшую игрушку

USB MIDI- клавиатура на arduino mega Midi, Музыка, Pro tools, Arduino, Паяльник, Рукожоп, Длиннопост
USB MIDI- клавиатура на arduino mega Midi, Музыка, Pro tools, Arduino, Паяльник, Рукожоп, Длиннопост

пихаем туда ардуньку

USB MIDI- клавиатура на arduino mega Midi, Музыка, Pro tools, Arduino, Паяльник, Рукожоп, Длиннопост

далее по схеме делаем шилд, схема такая

USB MIDI- клавиатура на arduino mega Midi, Музыка, Pro tools, Arduino, Паяльник, Рукожоп, Длиннопост

крутилку, энкодер, не стал пока ставить, это в позже.

USB MIDI- клавиатура на arduino mega Midi, Музыка, Pro tools, Arduino, Паяльник, Рукожоп, Длиннопост
USB MIDI- клавиатура на arduino mega Midi, Музыка, Pro tools, Arduino, Паяльник, Рукожоп, Длиннопост

и начинаем паять кнопки к шилду, конечно все нужно было сделать на разъемах, но увы их толком не оказалось.

USB MIDI- клавиатура на arduino mega Midi, Музыка, Pro tools, Arduino, Паяльник, Рукожоп, Длиннопост
USB MIDI- клавиатура на arduino mega Midi, Музыка, Pro tools, Arduino, Паяльник, Рукожоп, Длиннопост

скетч... эээ, а как тут спойлер сделать? ладно не буду выкладывать, только кусками

брал отсюда и переделывал под себя http://cxem.net/arduino/arduino29.php

тут задаются ноты

#define note_2F 0x29

#define note_2Fd 0x2A 

#define note_2G 0x2B

#define note_2Gd 0x2C

#define note_2A 0x2D

#define note_2Ad 0x2E

#define note_2B 0x2F4

#define note_3C 0x30

#define note_3Cd 0x31

#define note_3D 0x32 

         .....

потом еще куча кода

а так происходит обработка событий

// Нота 2F

if (buttonState_2F == HIGH && note_2F_send_on == false) // Нажатие клавиши

{

noteOn(0x90, note_2F, 0x7F);

note_2F_send_on = true; // Команда Note On послана

note_2F_send_off = false; // Команда Note Off не послана

}

else if (buttonState_2F == HIGH && note_2F_send_on == true) // Если клавиша удерживается

{

noteOn(0x00, note_2F, 0x7F);

note_2F_send_on = true;

note_2F_send_off = false;

}

else if (buttonState_2F == LOW && note_2F_send_off == false) // Если клавишу отпустили

{

noteOn(0x90, note_2F, 0x00);

note_2F_send_on = false;

note_2F_send_off = true;

}

// Нота 2Fd

if (buttonState_2Fd == HIGH && note_2Fd_send_on == false)

{

noteOn(0x90, note_2Fd, 0x7F);

note_2Fd_send_on = true;

note_2Fd_send_off = false;

}

else if (buttonState_2Fd == HIGH && note_2Fd_send_on == true)

{

noteOn(0x00, note_2Fd, 0x7F);

note_2Fd_send_on = true;

note_2Fd_send_off = false;

}

else if (buttonState_2Fd == LOW && note_2Fd_send_off == false)

{

noteOn(0x90, note_2Fd, 0x00);

note_2Fd_send_on = false;

note_2Fd_send_off = true;

}


а так передача всего в RS-232

void noteOn(int cmd, int pitch, int velocity) {

Serial.write(cmd);

Serial.write(pitch);

Serial.write(velocity);

delay(20);

}

Далее ставим LoopMIDI и Serial MIDI Converter

USB MIDI- клавиатура на arduino mega Midi, Музыка, Pro tools, Arduino, Паяльник, Рукожоп, Длиннопост
USB MIDI- клавиатура на arduino mega Midi, Музыка, Pro tools, Arduino, Паяльник, Рукожоп, Длиннопост

Первый запускается и может висеть в трее, второй нужно запускать самостоятельно и держать открытым, или свернутым.

Ну а потом ставим что нибудь типа Pro Tools + Kontakt 5 вместе с сэмплами. Ну и вуаля, все работает

USB MIDI- клавиатура на arduino mega Midi, Музыка, Pro tools, Arduino, Паяльник, Рукожоп, Длиннопост
USB MIDI- клавиатура на arduino mega Midi, Музыка, Pro tools, Arduino, Паяльник, Рукожоп, Длиннопост
USB MIDI- клавиатура на arduino mega Midi, Музыка, Pro tools, Arduino, Паяльник, Рукожоп, Длиннопост

Все работает, но играть я не умею, поэтому можно разбирать :) шутка, отдам дочке может понравится, будет учиться...


З.Ы. да да, можно было и купить, стоит рублей 7, но так интересней..