Как сделать MIDI-контроллер с Arduino

Как сделать MIDI-контроллер с Arduino

Как музыкант, который собрал коллекцию музыкальных инструментов и шумовых ящиков, скромный Arduino - идеальный инструмент для создания собственного MIDI-контроллера. В то время как Raspberry Pi, возможно, взял корону для проектов Интернета вещей (IoT), простой Arduino Uno (какие существуют типы Arduino?) Имеет более чем достаточно мощности для этого проекта.





Впервые используете Arduino? Не беспокойтесь, у нас есть полный Руководство для начинающих по Arduino прочитать, прежде чем приступить к этому проекту.





Что такое MIDI?

MIDI - это аббревиатура от Musical Instrument Digital Interface. Он описывает стандартный способ взаимодействия музыкальных устройств друг с другом. Если у вас есть электронная клавиатура, у вас, вероятно, есть интерфейс 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).





Сообщения Program Change (PC) проще, чем сообщения CC. Сообщения ПК состоят из одного числа и используются для изменения предустановки или патча на устройстве. Сообщения ПК иногда называют «сменой патча». Подобно сообщениям CC, производители должны предоставить документ, в котором указывается, какие предустановки изменяются в конкретном сообщении.

Что тебе понадобится

  • Ардуино
  • 5-контактная розетка DIN
  • 2 резистора 220 Ом
  • 2 резистора по 10 кОм
  • 2 х мгновенных переключателя
  • Монтажные провода
  • Макетная плата
  • MIDI-кабель
  • MIDI-устройство или USB-интерфейс
Water & Wood 5 шт. DIN 5-контактные гнезда для монтажа на печатную плату для клавиатуры ПК КУПИТЬ СЕЙЧАС НА AMAZON

План сборки

Этот проект будет довольно простым. Вы, конечно, можете добавить больше кнопок или оборудования в соответствии с вашими потребностями. Подойдет практически любая Arduino - для этого примера нужно всего три контакта. Этот проект состоит из двух кнопок для управления программой, порта MIDI для отправки данных и устройства для приема сообщений. Эта схема была построена на макетной плате, однако ее можно перенести в проектную коробку и припаять разъемы для надежного решения.





Схема сборки

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

MIDI-соединение

MIDI-распиновка

Подключите MIDI-разъем следующим образом:

  • MIDI-контакт 5 к Arduino Transmit (TX) 1 через резистор 220 Ом
  • MIDI-контакт 4 к Arduino + 5 В через резистор 220 Ом
  • MIDI-контакт 2 на землю Arduino

Кнопка подключения

Кнопки работают, изменяя сопротивление, которое «видит» Arduino. Контакт Arduino проходит через переключатель прямо на землю ( НИЗКИЙ ) через резистор 10 кОм (понижающий резистор, обеспечивающий низкое значение). При нажатии кнопки значение, видимое схемой, изменяется на + 5В без резистора ( ВЫСОКИЙ ). Arduino может обнаружить это изменение с помощью digitalRead (вывод) команда. Подключите кнопки к контактам 6 и 7 цифрового входа / выхода Arduino. Подключите обе кнопки:

  • Левая сторона кнопки на + 5В
  • Правая сторона кнопки к заземлению Arduino через резистор 10 кОм
  • Правая сторона кнопки к контакту 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-кабель подключенным) и откройте Serial Monitor ( Вверху справа> Монитор последовательного порта ). Когда вы нажимаете кнопку, вы должны увидеть 'Button One Works!' или 'Вторая кнопка работает!' в зависимости от нажатой кнопки.

Из этого примера следует сделать одно важное замечание - устранение отказов программного обеспечения. Это простая задержка в 10 миллисекунд (мс) между проверкой кнопки и повторной проверкой кнопки. Это увеличивает точность нажатия кнопки и помогает предотвратить шум, вызывающий срабатывание 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 Live ( Лучшее программное обеспечение для ди-джеев на любой бюджет ). В правом верхнем углу показаны измерители уровня звука, а в верхнем среднем - входящие MIDI-сообщения (через MIDI-монитор в OS X).

как изменить размер слоя в фотошопе

Вы сделали MIDI-контроллер?

Существует множество практических применений пользовательского MIDI-контроллера. Вы можете построить огромный блок с ножным управлением или элегантный студийный контроллер. И если вы заинтересованы в его покупке, вот лучшие USB-MIDI-контроллеры, которые вы можете купить.

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

Мы надеемся, что вам понравятся предметы, которые мы рекомендуем и обсуждаем! MUO имеет аффилированные и спонсируемые партнерства, поэтому мы получаем долю дохода от некоторых ваших покупок. Это не повлияет на цену, которую вы платите, и поможет нам предложить лучшие рекомендации по продуктам.

Делиться Делиться Твитнуть Эл. адрес Стоит ли переходить на Windows 11?

Окна были переработаны. Но достаточно ли этого, чтобы убедить вас перейти с Windows 10 на Windows 11?

Читать далее
Похожие темы
  • Сделай сам
  • Программное обеспечение для ди-джеев
  • Ардуино
  • Электроника
  • ПОЛДЕНЬ
Об авторе Джо Коберн(136 опубликованных статей)

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

Ещё от Joe Coburn

Подписывайтесь на нашу новостную рассылку

Подпишитесь на нашу рассылку, чтобы получать технические советы, обзоры, бесплатные электронные книги и эксклюзивные предложения!

Нажмите здесь, чтобы подписаться