Како направити МИДИ контролер са Ардуином

Како направити МИДИ контролер са Ардуином

Као музичар који је сакупио колекцију музичких инструмената и шумова, скромни Ардуино је савршен алат за креирање прилагођеног МИДИ контролера. Иако је Распберри Пи можда преузео круну за пројекте Интернета ствари (ИоТ), једноставан Ардуино Уно (које су различите врсте Ардуина?) Има више него довољно снаге за овај пројекат.





Први пут користите Ардуино? Без бриге, имамо комплетну Ардуино водич за почетнике да прочитате пре него што се позабавите овим пројектом.





Шта је МИДИ?

МИДИ означава дигитални интерфејс музичких инструмената. Описује стандардни начин међусобне комуникације музичких уређаја. Ако поседујете електронску тастатуру, вероватно имате МИДИ интерфејс. Иако је у имплементацију МИДИ -ја укључено неколико техничких детаља, важно је запамтити да МИДИ није аудио! МИДИ подаци су једноставан скуп инструкција (једно упутство се назива „порука“) које други уређај може применити да би произвео различите звукове или контролисао параметре.





МИДИ подржава 16 канала. То значи да сваки кабл може подржати 16 различитих уређаја који међусобно комуницирају. Уређаји су повезани помоћу 5-пинског ДИН кабла. ДИН означава „Немачки институт за стандардизацију“ и једноставно је кабл са пет пинова унутар конектора. УСБ се често користи уместо 5-пинског ДИН-а или се може користити УСБ-МИДИ интерфејс.

МИДИ-кабловски-мушки



Контрола промене и промена програма

Постоје две главне врсте МИДИ порука: Контролна промена и Промена програма.

Поруке Цонтрол Цханге (ЦЦ) садрже број контролера и вредност између 0 и 127. ЦЦ поруке се често користе за промену поставки као што су јачина звука или висина тона. Уређаји који прихваћају МИДИ требали би имати приручник који објашњава који су канали и поруке задано постављени и како их промијенити (познато као МИДИ мапирање).





Поруке о промени програма (ПЦ) једноставније су од ЦЦ порука. Поруке на рачунару се састоје од једног броја и користе се за промену унапред подешене поставке или закрпе на уређају. Поруке на рачунару су понекад познате и као „Промена закрпе“. Слично ЦЦ порукама, произвођачи би требали доставити документ који описује које се унапријед одређене поставке мијењају одређеном поруком.

Шта ће вам требати

  • Ардуино
  • 5-полна ДИН женска утичница
  • 2 к 220 охм отпорника
  • 2 к 10к охм отпорника
  • 2 к тренутна прекидача
  • Прикључне жице
  • Бреадбоард
  • МИДИ кабл
  • МИДИ уређај или УСБ интерфејс
Вода и дрво 5 ком ДИН 5 пин ПЦБ монтажне женске утичнице за ПЦ тастатуру КУПИТЕ ОДМАХ НА АМАЗОНУ

План изградње

Овај пројекат ће бити прилично једноставан. Наравно, можете додати још дугмади или хардвера који одговарају вашим потребама. Скоро сваки Ардуино ће бити прикладан - за овај пример су потребна само три пина. Овај пројекат се састоји од два дугмета за управљање програмом, МИДИ порта за слање података и уређаја за пријем порука. Ово коло је овде изграђено на основној плочи, међутим могуће га је пренети у пројектну кутију и лемљене конекторе за робусно решење.





Склоп кола

Ардуино-Миди-Цонтроллер-Цирцуит

МИДИ веза

МИДИ-Пиноут

Повежите МИДИ утичницу на следећи начин:

  • МИДИ пин 5 на Ардуино Трансмит (ТКС) 1 преко отпорника од 220 охма
  • МИДИ пин 4 до Ардуино +5В преко отпорника од 220 охма
  • МИДИ пин 2 на Ардуино масу

Буттон Цоннецтион

Дугмад раде мењајући отпор који Ардуино „види“. Ардуино пин пролази кроз прекидач право на земљу ( ЛОВ ) преко 10к охмског отпорника ('пулл довн' отпорник, осигуравајући да вредност остане ниска). Када се притисне дугме, вредност која се види у колу се мења у +5в без отпорника ( ХИГХ ). Ардуино може открити ову промену помоћу дигиталРеад (пин) команда. Повежите дугмад са пиновима 6 и 7 на Ардуино дигиталном улазу/излазу (И/О). Повежите оба дугмета:

  • Лева страна дугмета на +5В
  • Десна страна дугмета за Ардуино уземљење преко отпорника од 10 к охма
  • Десна страна дугмета за Ардуино пин (6 или 7)

МИДИ тестирање

Сада када је сав хардвер завршен, време је да га тестирате. Биће вам потребан УСБ-МИДИ интерфејс (многи аудио интерфејси то могу учинити) и МИДИ кабл. МИДИ порт ожичен на матичној плочи шаље податке, тако да је то излаз. Ваш рачунар прима податке, па је то улаз. Овај пројекат користи одличан Ардуино МИДИ библиотека в4.2 би Форти Севен Еффецтс. Када инсталирате библиотеку, можете је укључити у свој код тако што ћете отићи на Скица> Укључи библиотеку> МИДИ .

Такође ће вам требати програм за надгледање долазних МИДИ података:

Повежите Ардуино са рачунаром и отпремите следећи код за тестирање (не заборавите да изаберете исправну плочу и порт са Алати> Плоча и Алатке> Порт меније).

#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
}

Овај код ће послати ЦЦ поруку, сачекајте 1 секунду, пошаљите поруку са рачунара, а затим сачекајте 1 секунду неограничено дуго. Ако све ради исправно, требало би да се појави порука на вашем МИДИ монитору.

Ако се ништа не догоди, немојте паничарити! Покушајте да решите проблеме:

  • Уверите се да су све везе исправне
  • Проверите да ли је МИДИ порт исправно ожичен - на спољним ивицама би требало да постоје 2 резервна пина
  • Двапут проверите да ли је коло исправно
  • Проверите да ли је коло повезано са УСБ-МИДИ интерфејсом помоћу МИДИ кабла
  • Проверите да ли је ваш МИДИ кабл повезан са улазни на вашем УСБ-МИДИ интерфејсу
  • Уверите се да Ардуино има снагу
  • Инсталирајте одговарајући управљачки програм за УСБ-МИДИ интерфејс

Ако сте још увек ако имате проблема, можда би било вредно проверити вашу матичну плочу. Јефтине плоче понекад могу бити врло недосљедне и неквалитетне-то ми се догодило док сам радила на овом пројекту.

Тестирање дугмади

Сада је време да проверите да ли тастери раде исправно. Отпремите следећи код за тестирање. МИДИ не мора бити повезан да би се тестирао овај део.

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);
}
}

}

Покрените овај код (али нека УСБ кабл остане повезан) и отворите серијски монитор ( Горе десно> Серијски монитор ). Када притиснете дугме, требало би да видите „Буттон Оне Воркс!“ или „Дугме Два ради!“ у зависности од дугмета који сте притиснули.

Из овог примера треба узети у обзир једну важну напомену-одбацивање софтвера. Ово је једноставно кашњење од 10 милисекунди (мс) између провере дугмета и поновне провере дугмета. Ово повећава тачност притискања дугмета и помаже у спречавању буке која покреће Ардуино. Не морате то да радите, иако се препоручује.

Креирање контролера

Сада када је све ожичено и ради, време је да саставите комплетан контролер.

Овај пример ће послати различиту ЦЦ поруку за свако притиснуто дугме. Користим ово за контролу Аблетон Ливе 9.6 на ОС Кс. Код је сличан оба горња узорка за тестирање.

#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);
}
}
}

Напомена - нећете моћи да користите Сериал.принтлн () са МИДИ излазом.

Ако желите да пошаљете ПЦ поруку уместо ЦЦ -а, једноставно замените:

midiOut.sendControlChange(42,127,1);

Са:

midiOut.sendProgramChange(value, channel);

Ин Ацтион

Испод је демонстрација као контролер за Аблетон Ливе ( Најбољи ДЈ софтвер за сваки буџет ). Горњи десни приказује аудиометре, а горњи средњи долазне миди поруке (преко МИДИ Монитор на ОС Кс).

како зарадити новац играјући видео игре код куће

Да ли сте направили МИДИ контролер?

Постоји много практичних употреба прилагођеног МИДИ контролера. Могли бисте изградити огромну јединицу са ножним управљањем или елегантни студијски контролер. А ако сте заинтересовани за куповину, ево најбољих УСБ МИДИ контролера које можете купити.

Кредит за слику: Кеитх Гентри путем Схуттерстоцк.цом

Надамо се да вам се свиђају ставке које препоручујемо и о којима ћемо разговарати! МУО има придружена и спонзорисана партнерства, па добијамо део прихода од неких ваших куповина. То неће утицати на цену коју плаћате и помаже нам да понудимо најбоље препоруке производа.

Објави Објави Твеет Емаил Да ли је вредно надоградње на Виндовс 11?

Виндовс је редизајниран. Али да ли је то довољно да вас убеди да пређете са Виндовс 10 на Виндовс 11?

Прочитајте следеће
Повезане теме
  • ДИИ
  • ДЈ Софтваре
  • Ардуино
  • Електроника
  • ПОНЕДЕЉАК
О аутору Јое Цобурн(136 објављених чланака)

Јое је дипломирао рачунарство на Универзитету Линцолн, УК. Он је професионални програмер софтвера и када не лети беспилотним летелицама или не пише музику, често га се може затећи како фотографише или производи видео записе.

Више од Јоеа Цобурна

Претплатите се на наш билтен

Придружите се нашем билтену за техничке савете, критике, бесплатне е -књиге и ексклузивне понуде!

Кликните овде да бисте се претплатили