Как да си направим MIDI контролер с Arduino

Как да си направим MIDI контролер с Arduino

Като музикант, който е натрупал колекция от музикални инструменти и шумови кутии, скромният Arduino е идеалният инструмент за създаване на персонализиран MIDI контролер. Докато Raspberry Pi може да е взел короната за проектите на Интернет на нещата (IoT), простото Arduino Uno (какви са различните видове Arduino?) Има повече от достатъчно мощност за този проект.





За първи път използвате Arduino? Не се притеснявайте, имаме пълен комплект Ръководство за начинаещи Arduino да прочетете, преди да се заемете с този проект.





Какво е MIDI?

MIDI означава цифров интерфейс за музикални инструменти. Той очертава стандартен начин за комуникация на музикални устройства помежду си. Ако притежавате електронна клавиатура, вероятно имате MIDI интерфейс. Въпреки че има няколко технически подробности, свързани с внедряването на MIDI, важно е да запомните, че MIDI не е аудио! MIDI данните са прост набор от инструкции (една инструкция се нарича „съобщение“), която друго устройство може да изпълни, за да издаде различни звуци или контролни параметри.





MIDI поддържа 16 канала. Това означава, че всеки кабел може да поддържа 16 различни устройства, които комуникират независимо помежду си. Устройствата се свързват с 5-пинов DIN кабел. DIN означава „Германски институт за стандартизация“ и е просто кабел с пет пина вътре в конектора. USB често се използва вместо 5-пинов DIN или може да се използва USB-MIDI интерфейс.

MIDI-кабел-мъжки



Промяна на контрола и промяна на програмата

Има два основни типа MIDI съобщение: Control Change и Program Change.

Съобщенията за Control Change (CC) съдържат номер на контролер и стойност между 0 и 127. CC съобщенията често се използват за промяна на настройки като сила на звука или височина. Устройствата, които приемат MIDI, трябва да идват с ръководство, обясняващо какви канали и съобщения са настроени по подразбиране и как да ги промените (известни като MIDI картографиране).





Съобщенията за смяна на програмата (PC) са по -прости от съобщенията за CC. PC съобщенията се състоят от един номер и се използват за промяна на предварително зададената настройка или кръпка на устройство. PC съобщенията понякога са известни като „Patch Change“. Подобно на съобщенията за CC, производителите трябва да предоставят документ, който очертава какви предварително зададени настройки се променят от определено съобщение.

Какво ще ви трябва

  • Arduino
  • 5-пинов DIN женски контакт
  • 2 x 220 ома резистори
  • 2 x 10k ома резистори
  • 2 х моментални превключвателя
  • Свързващи проводници
  • Платка
  • MIDI кабел
  • MIDI устройство или USB интерфейс
Вода и дърво 5 бр. DIN 5 -пинов монтажен женски гнездо за PC клавиатура КУПЕТЕ СЕГА НА AMAZON

Строителен план

Този проект ще бъде доста прост. Разбира се, можете да добавите още бутони или хардуер, които да отговарят на вашите нужди. Почти всеки Arduino ще бъде подходящ - за този пример са необходими само три щифта. Този проект се състои от два бутона за управление на програмата, MIDI порт за изпращане на данните и устройство за получаване на съобщенията. Тази схема е изградена върху макет тук, но е възможно да се прехвърли в кутия за проект и споени конектори за стабилно решение.





Монтаж на веригата

Arduino-Midi-Controller-Circuit

MIDI връзка

MIDI-Pinout

Свържете вашия MIDI гнездо, както следва:

  • MIDI пин 5 към Arduino Transmit (TX) 1 чрез резистор 220 ома
  • MIDI щифт 4 към Arduino +5V чрез резистор 220 ома
  • MIDI щифт 2 към земята Arduino

Връзка с бутони

Бутоните работят, като променят съпротивлението, което Arduino „вижда“. Щифтът на Arduino преминава през превключвателя направо към земята ( НИСКИ ) чрез 10k ohm резистор (резистор 'pull down', гарантиращ, че стойността остава ниска). Когато бутонът е натиснат, стойността, видяна от веригата, се променя на +5v без резистор ( ВИСОКО ). Arduino може да открие тази промяна с помощта на digitalRead (щифт) команда. Свържете бутоните към щифтове 6 и 7 на цифровия вход/изход на Arduino (I/O). Свържете двата бутона:

  • Лявата страна на бутона до +5V
  • Дясната страна на бутона към Arduino Ground чрез 10k ohm резистор
  • Дясната страна на бутона към щифта на Arduino (6 или 7)

MIDI тестване

Сега, когато целият хардуер е завършен, е време да го тествате. Ще ви трябва USB-MIDI интерфейс (много аудио интерфейси могат да направят това) и MIDI кабел. MIDI портът, свързан към макета, изпраща данни, така че това е изходът. Вашият компютър получава данните, следователно това е входът. Този проект използва отличния Arduino MIDI библиотека v4.2 от Forty Seven Effects. След като инсталирате библиотеката, можете да я включите в кода си, като отидете на Скица> Включване на библиотека> MIDI .

Ще ви трябва и програма за наблюдение на входящите MIDI данни:

Свържете Arduino към компютъра си и качете следния пробен код (не забравяйте да изберете правилната платка и порт от Инструменти> Табло и Инструменти> Порт менюта).

#include
#include
#include
#include
#include
MIDI_CREATE_INSTANCE(HardwareSerial,Serial, midiOut); // create a MIDI object called midiOut
void setup() {
Serial.begin(31250); // setup serial for MIDI
}
void loop() {
midiOut.sendControlChange(56,127,1); // send a MIDI CC -- 56 = note, 127 = velocity, 1 = channel
delay(1000); // wait 1 second
midiOut.sendProgramChange(12,1); // send a MIDI PC -- 12 = value, 1 = channel
delay(1000); // wait 1 second
}

Този код ще изпрати CC съобщение, изчакайте 1 секунда, изпратете съобщение на компютър, след което изчакайте 1 секунда за неопределено време. Ако всичко работи правилно, трябва да видите съобщение да се появи на вашия MIDI монитор.

Ако нищо не се случи, не се паникьосвайте! Опитайте да отстраните неизправности:

  • Уверете се, че всички връзки са правилни
  • Проверете дали MIDI портът е свързан правилно - трябва да има 2 резервни щифта по външните ръбове
  • Проверете отново веригата дали е правилна
  • Проверете дали веригата е свързана към USB-MIDI интерфейс с MIDI кабел
  • Проверете дали вашият MIDI кабел е свързан към вход на вашия USB-MIDI интерфейс
  • Уверете се, че Arduino има мощност
  • Инсталирайте правилния драйвер за вашия USB-MIDI интерфейс

Ако вие сте все още ако имате проблеми, може би си струва да проверите своя макет. Евтините дъски понякога могат да бъдат много непоследователни и некачествени-на мен ми се е случвало по време на работа по този проект.

Тестване на бутони

Сега е време да проверите дали бутоните работят правилно. Качете следния пробен код. MIDI не е необходимо да се свързва, за да се тества тази част.

const int buttonOne = 6; // assign button pin to variable
const int buttonTwo = 7; // assign button pin to variable
void setup() {
Serial.begin(9600); // setup serial for text
pinMode(buttonOne,INPUT); // setup button as input
pinMode(buttonTwo,INPUT); // setup button as input
}
void loop() {

if(digitalRead(buttonOne) == HIGH) { // check button state
delay(10); // software de-bounce
if(digitalRead(buttonOne) == HIGH) { // check button state again
Serial.println('Button One Works!'); // log result
delay(250);
}
}

if(digitalRead(buttonTwo) == HIGH) { // check button state
delay(10); // software de-bounce
if(digitalRead(buttonTwo) == HIGH) { // check button state again
Serial.println('Button Two Works!'); // log result
delay(250);
}
}

}

Пуснете този код (но дръжте USB кабела свързан) и отворете серийния монитор ( Горе вдясно> Сериен монитор ). Когато натиснете бутон, трябва да видите „Button One Works!“ или „Бутон две работи!“ в зависимост от бутона, който сте натиснали.

Има една важна забележка, която трябва да се извади от този пример-софтуерът се отказва. Това е просто 10 милисекунди (ms) закъснение между проверка на бутона и след това проверка на бутона отново. Това увеличава точността на натискането на бутона и помага за предотвратяване на шума, задействащ Arduino. Не е нужно да правите това, въпреки че се препоръчва.

Създаване на контролера

Сега, когато всичко е свързано и работи, е време да сглобите пълния контролер.

Този пример ще изпрати различно CC съобщение за всеки натиснат бутон. Използвам това, за да контролирам Ableton Live 9.6 на OS X. Кодът е подобен на двете тестови проби по -горе.

#include
#include
#include
#include
#include
const int buttonOne = 6; // assign button pin to variable
const int buttonTwo = 7; // assign button pin to variable
MIDI_CREATE_INSTANCE(HardwareSerial,Serial, midiOut); // create a MIDI object called midiOut
void setup() {
pinMode(buttonOne,INPUT); // setup button as input
pinMode(buttonTwo,INPUT); // setup button as input
Serial.begin(31250); // setup MIDI output
}
void loop() {
if(digitalRead(buttonOne) == HIGH) { // check button state
delay(10); // software de-bounce
if(digitalRead(buttonOne) == HIGH) { // check button state again
midiOut.sendControlChange(56,127,1); // send a MIDI CC -- 56 = note, 127 = velocity, 1 = channel
delay(250);
}
}

if(digitalRead(buttonTwo) == HIGH) { // check button state
delay(10); // software de-bounce
if(digitalRead(buttonTwo) == HIGH) { // check button state again
midiOut.sendControlChange(42,127,1); // send a MIDI CC -- 42 = note, 127 = velocity, 1 = channel
delay(250);
}
}
}

Забележка - няма да можете да използвате Serial.println () с MIDI изход.

Ако искате да изпратите съобщение на компютър вместо CC, просто заменете:

midiOut.sendControlChange(42,127,1);

С:

midiOut.sendProgramChange(value, channel);

В действие

По -долу е демонстрация като контролер за Ableton на живо ( Най -добрият DJ софтуер за всеки бюджет ). В горния десен ъгъл са показани аудиометрите, а в горната средна част входящите midi съобщения (чрез MIDI монитор на OS X).

как да прехвърляте файлове от компютър на android телефон без usb

Направили ли сте MIDI контролер?

Има много практически приложения за персонализиран MIDI контролер. Можете да изградите обширен блок с крачно управление или елегантен студиен контролер. И ако се интересувате от закупуването на такъв, ето най -добрите USB MIDI контролери, които можете да си купите.

Кредит на изображението: Кийт Джентри чрез Shutterstock.com

Надяваме се, че артикулите, които препоръчваме и обсъждаме, ви харесват! MUO има партньорски и спонсорирани партньорства, така че получаваме част от приходите от някои от вашите покупки. Това няма да повлияе на цената, която плащате, и ни помага да предложим най -добрите препоръки за продукти.

Дял Дял Туит електронна поща Струва ли си да надстроите до Windows 11?

Windows е преработен. Но достатъчно ли е това, за да ви убеди да преминете от Windows 10 към Windows 11?

Прочетете Напред
Свързани теми
  • Направи си сам
  • DJ софтуер
  • Arduino
  • Електроника
  • СРЕДА
За автора Джо Кобърн(136 статии са публикувани)

Джо е завършил компютърни науки от университета в Линкълн, Великобритания. Той е професионален разработчик на софтуер и когато не лети с дронове или пише музика, често може да бъде намерен да прави снимки или да произвежда видеоклипове.

Още от Джо Кобърн

Абонирайте се за нашия бюлетин

Присъединете се към нашия бюлетин за технически съвети, рецензии, безплатни електронни книги и изключителни оферти!

Щракнете тук, за да се абонирате