реклама

Като музикант, който е събрал колекция от музикални инструменти и шумови кутии, скромният Arduino е идеалният инструмент за създаване на персонализиран MIDI контролер. Докато Raspberry Pi може би е взел короната за Интернет на нещата (IoT) Интернет на нещата: 10 полезни продукта, които трябва да опитате през 2016 г.Интернет на нещата се разраства през 2016 г., но какво точно означава това? Как лично се възползвате от Интернет на нещата? Ето няколко полезни продукта за илюстрация. Прочетете още проекти, обикновено Arduino Uno (какви са различните видове Arduino? Ръководство за купуване на Arduino: Кой съвет трябва да получите?Има толкова много различни видове Arduino дъски, че ще ви бъде простено, че сте объркани. Кой трябва да закупите за вашия проект? Нека да помогнем с това ръководство за купуване на Arduino! Прочетете още ) има повече от достатъчно мощност за този проект.

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

instagram viewer
Arduino е платформа за създаване на прототипи за електроника с отворен код, базирана на гъвкав, лесен за използване хардуер и софтуер. Той е предназначен за художници, дизайнери, любители и всички, които се интересуват от създаването на интерактивни обекти или среди. Прочетете още да прочетете, преди да се заемете с този проект.

Arduino-Миди-Controller-Breadboard

Какво е MIDI?

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

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

MIDI-кабел-Мъж

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

Има два основни типа MIDI съобщение: Промяна на контрола и Промяна на програмата.

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

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

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

  • Arduino
  • 5-пинов DIN женски цокъл
  • 2 х 220 ома резистори
  • 2 x 10k ом резистори
  • 2 x моментни превключватели
  • Проводници за закачане
  • Breadboard
  • MIDI кабел
  • MIDI устройство или USB интерфейс

Изградете план

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

Сглобяване на верига

Arduino-Миди-Controller-Circuit

MIDI връзка

MIDI-Pinout

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

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

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

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

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

Тестване на MIDI

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

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

  • MIDI монитор за OS X
  • MIDI-OX за Windows
  • KMidimon за Linux

Свържете Arduino Първи стъпки с вашия Arduino Starter Kit - Инсталиране на драйвери и настройка на дъската и портаТака че, купихте си стартов комплект Arduino и вероятно някои други произволни готини компоненти - сега какво? Как всъщност започвате с програмирането на това нещо от Arduino? Как да го настроите ... Прочетете още на вашия компютър и качете следния тестов код (не забравяйте да изберете правилната дъска и порт от Инструменти> Съвет и Инструменти> Порт менюта).

#include 
#include 
#include 
#include 
#include  MIDI_CREATE_INSTANCE (HardwareSerial, Serial, midiOut); // създайте MIDI обект, наречен midiOut void setup () {Serial.begin (31250); // серийна настройка за MIDI. } void loop () {midiOut.sendControlChange (56,127,1); // изпрати MIDI CC - 56 = забележка, 127 = скорост, 1 = закъснение на канала (1000); // изчакайте 1 секунда midiOut.sendProgramChange (12,1); // изпрати MIDI компютър - 12 = стойност, 1 = закъснение на канала (1000); // изчакайте 1 секунда }

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

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

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

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

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

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

const int buttonOne = 6; // присвойте щифт на бутона на променлива. const int buttonTwo = 7; // присвояване на щифта на бутон на настройка на променливата void () {Serial.begin (9600); // сериал за настройка на текст pinMode (buttonOne, INPUT); // бутон за настройка като вход pinMode (buttonTwo, INPUT); // бутон за настройка като вход. } void loop () {if (digitalRead (buttonOne) == HIGH) {// забавяне на състоянието на бутона за отлагане (10); // софтуер отпадане, ако (digitalRead (buttonOne) == HIGH) {// провери състоянието на бутона отново Serial.println ("Бутонът работи!"); // забавяне на резултата в лог (250); }} if (digitalRead (buttonTwo) == HIGH) {// забавяне на състоянието на бутон (10); // софтуер отпадане if (digitalRead (buttonTwo) == HIGH) {// проверете отново състоянието на бутона Serial.println ("Бутон две работи!"); // забавяне на резултата в лог (250); } } }

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

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

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

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

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

#include 
#include 
#include 
#include 
#include const int buttonOne = 6; // присвойте щифт на бутона на променлива. const int buttonTwo = 7; // присвояване на щифт на бутон на променлива MIDI_CREATE_INSTANCE (HardwareSerial, Serial, midiOut); // създайте MIDI обект, наречен midiOut void setup () {pinMode (buttonOne, INPUT); // бутон за настройка като вход pinMode (buttonTwo, INPUT); // бутон за настройка като вход Serial.begin (31250); // настройка MIDI изход. } void loop () {if (digitalRead (buttonOne) == HIGH) {// забавяне на състоянието на бутона за отлагане (10); // софтуер отпадане, ако (digitalRead (buttonOne) == HIGH) {// състояние за проверка отново на бутона midiOut.sendControlChange (56,127,1); // изпрати MIDI CC - 56 = забележка, 127 = скорост, 1 = закъснение на канала (250); }} if (digitalRead (buttonTwo) == HIGH) {// забавяне на състоянието на бутон (10); // софтуер отпадане, ако (digitalRead (buttonTwo) == HIGH) {// състояние за проверка отново на бутона midiOut.sendControlChange (42,127,1); // изпрати MIDI CC - 42 = бележка, 127 = скорост, 1 = закъснение на канала (250); } } }

Забележка - няма да можете да използвате Serial.println () с MIDI изход.
Ако искате да изпратите компютърно съобщение вместо CC, просто заменете:

midiOut.sendControlChange (42,127,1);

С участието на:

midiOut.sendProgramChange (стойност, канал); 

В действие

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

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

Има много практически приложения за персонализиран MIDI контролер. Бихте могли да изградите огромно устройство, контролирано от краката, или елегантен студиен контролер. И ако се интересувате от закупуване на такъв, ето най-добрите USB MIDI контролери 9-те най-добри USB MIDI контролери за музикантиНаблюдавате ли USB MIDI контролер? Ето най-добрите MIDI контролери, които можете да закупите в момента, независимо от бюджета. Прочетете още можеш да купиш.

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

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