Направете свой собствен MIDI контролер с Arduino

MIDI

Ако сте меломан или директно аматьор или професионален музикант, със сигурност във вашия дом сте натрупали голяма колекция от музикални инструменти. За да направите всичко това перфектно, най-добре е да вземете MIDI контролер. За съжаление, тези видове обекти обикновено са доста скъпи, така че е трудно човек без твърде много ресурси да получи достъп до всичко, което може да предложи.

За да разберете много по-добре какво е MIDI контролер, кажете ви, че думата MIDI идва от Музикален инструмент Цифров интерфейс, тоест един вид контролер, който кара електронните музикални устройства да могат да комуникират помежду си. Ако например имате електронна клавиатура у дома, повече от вероятно е тя да има MIDI интерфейс. Преди да продължи да напредва, въпреки факта, че има определени технически подробности, които могат да накарат човек да вярва в противното, трябва да е много ясно, че MIDI не е аудио.

Създайте свой собствен MIDI контролер с този прост урок

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

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

Свързана статия:
Как да променим потребителското име и паролата на Pi на нашата Raspberry Pi

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

midi конектор

Много са хората, които по различни причини, както лични, така и професионални, трябва да използват a напълно персонализиран MIDI контролер Защото може би и като пример, в даден момент от живота ви като художник, закупуването на евтин MIDI контролер може да не отговори на вашите очаквания или нужди, докато, когато дойде време, изборът на професионална версия може да е прекален и за двата финансови ресурси. нуждата, както и големия брой функции, които могат да предложат.

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

Как се прави робот
Свързана статия:
Как се прави робот: 3 различни опции

Какво е MIDI контролер?

MIDI

По принцип, MIDI контролерът е отговорен, най-общо казано, за свързване на различни музикални устройства помежду си. Много са инструментите, които включват MIDI интерфейс, въпреки че това трябва да е много ясно, тъй като има много потребители, които често са объркани, MIDI не е аудио файл, а много прост набор от инструкции, които даден инструмент може да получи. или настройки на звука.

Вътре в MIDI има два различни типаОт една страна имаме тази, наречена Control Control, която има номер на контролера и стойност между 0 и 127. Благодарение на това могат да се издават съобщения, където могат да се променят различни параметри като сила на звука или тон. Различните инструменти, които приемат MIDI, трябва да носят със себе си ръководство, обясняващо кои канали и съобщения са зададени по подразбиране и как да ги променяте.

На второ място имаме Промяна на програмата, поредица от съобщения, които от своя страна са много по-прости от тези, които съставляват контрола на промяната. Тези типове съобщения се използват за промяна на предварителната настройка или кръпка на устройство. Както при контрола на промяната, заедно с вашия инструмент, производителят трябва да включва ръчно указание кои предварителни настройки са променени от конкретно съобщение.

Части, необходими за изграждане на собствен домашен MIDI контролер

Схема на Midi конектор

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

Ще ни трябват женски 5-полюсен DIN кабел, 2 220 ома резистора, 2 моментни превключвателя, 2 10k ома резистори, свързващи проводници, платка, MIDI кабел и MIDI устройство или USB интерфейс. Само с тези парчета можете да започнете, следвайки моите стъпки, да направите свой собствен MIDI контролер.

Първи стъпки

Arduino midi схематично

Преди да започнете, оставям ви снимка, на която можете да видите щифтовете на вашия MIDI кабел, по този начин можем правилно да идентифицираме щифтовете и особено къде да свържем всеки един. Най-общо казано, всичко, което трябва да направите в този момент, е да свържете щифт 5 на кабела към резистор 220 ома и оттам към Arduino Transmit 1, щифт 4 към резистор 220 ома и оттам към 5V гнездо на Arduino докато pin 2 трябва да бъде свързан към наземната връзка на вашия контролер.

След като тази стъпка приключи, нямате подробна схема на снимката, която се намира точно под тези редове, време е да свържете бутоните. Идеята в този раздел е да се постигне, като се използва щифт digitalRead (способен да разпознае, когато напрежението, което достига до него, се промени), за да може да се използва транзистор за постигане, с натискане на бутон. За това трябва само да използваме бутон, така че от лявата страна да го свържем към 5V, от дясната страна към съпротивление 220 ома и оттам към земята, докато от своя страна свързваме и дясната страна към щифт 6 Вторият бутон ще бъде инсталиран по същия начин, въпреки че, както можете да видите на диаграмата, вместо щифт 6, ние го свързваме към 7.

Софтуер за използване за домашен midi контролер

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

В случая с компютъра ще ни е необходима програма, която е в състояние да контролира всички MIDI данни, които пристигат в него от Arduino. За това имаме различни възможности като MIDI Monitor (OS X), MIDI-OX (Windows) или Kmidimon (Linux)

За да направим малък тест, просто трябва да свържем Arduino към нашия компютър и да изпълним следния код:

#include
#include
#include
#include
#include

MIDI_CREATE_INSTANCE(HardwareSerial,Serial, midiOut); // crear objeto de salida MIDI llamado midiOut

void setup() {
Serial.begin(31250); // configuracion de serial para MIDI
}

void loop() {
midiOut.sendControlChange(56,127,1); // envío de señal MIDI CC -- 56 = nota, 127 = velocidad, 1 = canal
delay(1000); // retraso
midiOut.sendProgramChange(12,1); // envío de una señal MIDI PC -- 12 = valor, 1 = canal
delay(1000); // retraso de 1 segundo
}

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

Тестване, че бутоните работят правилно

Преди да продължите да захранвате нашата програма с нови функционалности и код, в които можем да се изгубим, струва си да спрете за момент и проверете дали бутоните работят правилно. За тях трябва да заредим следния код:

const int boton1 = 6; // asignacion del boton a una variable
const int boton2 = 7; // asignacion del boton a una variable

void setup() {
Serial.begin(9600); // configuracion del serial
pinMode(boton1,INPUT); // configuracion del boton1 como entrada
pinMode(boton2,INPUT); // configuracion del boton2 como entrada
}

void loop() {

if(digitalRead(boton1) == HIGH) { // prueba de estado del boton1
delay(10); // retraso
if(digitalRead(boton1) == HIGH) { // prueba de estado de nuevo
Serial.println("Boton 1 funciona correctamente!"); // log
delay(250);
}
}

if(digitalRead(boton2) == HIGH) { // prueba de boton 2
delay(10); // retraso
if(digitalRead(boton2) == HIGH) { // prueba de estado de nuevo
Serial.println("Boton 2 funciona correctamente!"); // log
delay(250);
}
}

}

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

Ние създаваме нашия домашен MIDI контролер

След като изпълним тези тестове, е време да съберем собствен MIDI контролер за това, ще трябва само да компилирате следния код:

#include
#include
#include
#include
#include

const int boton1 = 6; // asignamos boton a la variable
const int boton2 = 7; // asignamos boton a la variable

MIDI_CREATE_INSTANCE(HardwareSerial,Serial, midiOut); // create a MIDI object called midiOut

void setup() {
pinMode(boton1,INPUT); // configuracion del boton1 como una entrada
pinMode(boton2,INPUT); // configuracion del boton2 como una entrada
Serial.begin(31250); // configuracion MIDI de salida
}

void loop() {
if(digitalRead(buttonOne) == HIGH) { // comprobacion de estado
delay(10); // retraso
if(digitalRead(buttonOne) == HIGH) { // comprobacion de estado de nuevo
midiOut.sendControlChange(56,127,1); // envío un MIDI CC -- 56 = nota, 127 = velocidad, 1 = canal
delay(250);
}
}

if(digitalRead(buttonTwo) == HIGH) { // comprobacion de estado
delay(10); // retraso
if(digitalRead(buttonTwo) == HIGH) { // nueva comprobacion de estado
midiOut.sendControlChange(42,127,1); // envío un MIDI CC -- 42 = nota, 127 = velocidad, 1 = canal
delay(250);
}
}
}

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

midiOut.sendControlChange(42,127,1);

от:

midiOut.sendControlChange(value, channel);

където стойността и каналът трябва да имат желаните стойности, които искате да покажете.

Пример за работа:


4 коментара, оставете своя

Оставете вашия коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

*

*

  1. Отговорен за данните: Мигел Анхел Гатон
  2. Предназначение на данните: Контрол на СПАМ, управление на коментари.
  3. Легитимация: Вашето съгласие
  4. Съобщаване на данните: Данните няма да бъдат съобщени на трети страни, освен по законово задължение.
  5. Съхранение на данни: База данни, хоствана от Occentus Networks (ЕС)
  6. Права: По всяко време можете да ограничите, възстановите и изтриете информацията си.

      Алфред каза той

    Arduino ви предлага много възможности да предприемате проекти сами https://www.juguetronica.com/arduino . Едно от най-хубавите неща е, че можете да започнете, без да сте експерт и да продължите да се учите, като по този начин се мотивирате да бъдете самоуки.

      Данел Роман каза той

    Поздрави.

    Опитвам се да направя този фантастичен урок ... но #includes не са пълни ....

    Бихте ли ми казали кои са необходими?

    Благодаря Ви много.

      Уел каза той

    Здравейте.
    Бих искал да направя електронен барабанен модул, като замествам бутоните с входове за жак, към които ще пристига пиезоелектричен сигнал.
    Би ли било възможно да го направя?

      Едуардо Валенсуела каза той

    Моля, ако можете да дадете включванията на този код, интересувам се от този проект.