Реклама

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

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

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

Arduino-Midi-контроллер-Макетная

Что такое MIDI?

MIDI расшифровывается как цифровой интерфейс музыкальных инструментов. Он описывает стандартный способ общения музыкальных устройств друг с другом. Если у вас есть электронная клавиатура, у вас, вероятно, есть MIDI-интерфейс. Хотя есть несколько технических деталей, связанных с реализацией MIDI, важно помнить, что MIDI - это не аудио! MIDI-данные - это простой набор инструкций (одна инструкция называется «сообщением»), которые другое устройство может реализовать для создания разных звуков или параметров управления.

MIDI поддерживает 16 каналов. Это означает, что каждый кабель может поддерживать 16 различных устройств, независимо взаимодействующих друг с другом. Устройства подключаются с помощью 5-контактного кабеля DIN. DIN означает «Немецкий институт стандартизации» и представляет собой просто кабель с пятью контактами внутри разъема. USB часто используется вместо 5-контактного DIN, или может использоваться интерфейс USB-MIDI.

MIDI-кабель-мужчина

Изменение управления и изменение программы

Существует два основных типа сообщений MIDI: изменение управления и изменение программы.

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

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

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

  • Arduino
  • 5-контактная розетка DIN
  • 2 х 220 Ом резисторы
  • 2 х 10 кОм резисторы
  • 2 х мгновенные выключатели
  • Монтажные провода
  • макетировать
  • MIDI-кабель
  • MIDI-устройство или интерфейс USB

План строительства

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

Схема сборки

Arduino-Midi-контроллер замыкание

MIDI соединение

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

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

  • MIDI контакт 5 для передачи Arduino (TX) 1 через резистор 220 Ом
  • MIDI-контакт 4 для Arduino + 5V через резистор 220 Ом
  • MIDI контакт 2 для заземления Arduino

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

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

  • Левая сторона кнопки до + 5В
  • Правая сторона кнопки к Arduino Ground через резистор 10 кОм
  • Правая сторона кнопки к выводу 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? Как вы это настроили ... Прочитайте больше на свой компьютер и загрузите следующий тестовый код (не забудьте выбрать правильную плату и порт из Инструменты> Доска и Инструменты> Порт меню).

#включают 
#включают 
#включают 
#включают 
#включают  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 секунду, отправит сообщение на ПК, затем будет ждать 1 секунду в течение неопределенного времени. Если все работает правильно, вы должны увидеть сообщение на вашем MIDI-мониторе.

Если ничего не происходит, не паникуйте! Попробуйте устранить неполадки:

  • Убедитесь, что все соединения правильные
  • Убедитесь, что MIDI-порт подключен правильно - на внешних краях должно быть 2 запасных контакта.
  • Дважды проверьте правильность схемы
  • Убедитесь, что схема подключена к интерфейсу USB-MIDI с помощью кабеля MIDI.
  • Убедитесь, что ваш MIDI-кабель подключен к вход на вашем интерфейсе USB-MIDI
  • Убедитесь, что Arduino имеет силу
  • Установите правильный драйвер для вашего интерфейса USB-MIDI

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

Тестирование кнопок

Теперь пришло время проверить правильность работы кнопок. Загрузите следующий тестовый код. MIDI не нужно подключать для проверки этой части.

const int buttonOne = 6; // назначить контакт кнопки переменной. const int buttonTwo = 7; // назначить контакт кнопки переменной void setup () {Serial.begin (9600); // установить серийный номер для текстового pinMode (buttonOne, INPUT); // установка кнопки в качестве входного pinMode (buttonTwo, INPUT); // кнопка настройки в качестве входа. } void loop () {if (digitalRead (buttonOne) == HIGH) {// проверить задержку состояния кнопки (10); // сброс программного обеспечения if (digitalRead (buttonOne) == HIGH) {// снова проверить состояние кнопки Serial.println («Button One Works!»); // записать задержку результата (250); }} if (digitalRead (buttonTwo) == HIGH) {// проверить задержку состояния кнопки (10); // сброс программного обеспечения if (digitalRead (buttonTwo) == HIGH) {// снова проверить состояние кнопки Serial.println («Button Two Works!»); // записать задержку результата (250); } } }

Запустите этот код (но не отключайте USB-кабель) и откройте последовательный монитор (Вверху справа> Последовательный монитор). Когда вы нажимаете кнопку, вы должны увидеть «Button One Works!» или «Кнопка Два работает!» в зависимости от кнопки, которую вы нажали.

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

Создание контроллера

Теперь, когда все подключено и работает, пришло время собрать полный контроллер.

В этом примере будет отправлено отдельное сообщение CC для каждой нажатой кнопки. Я использую это для управления Ableton Live 9.6 на OS X. Код похож на оба приведенных выше примера тестирования.

#включают 
#включают 
#включают 
#включают 
#включают 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); // сброс программного обеспечения if (digitalRead (buttonOne) == HIGH) {// снова проверить состояние кнопки midiOut.sendControlChange (56,127,1); // отправить MIDI CC - 56 = нота, 127 = скорость, 1 = задержка канала (250); }} if (digitalRead (buttonTwo) == HIGH) {// проверить задержку состояния кнопки (10); // сброс программного обеспечения if (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 на любой бюджетХорошее программное обеспечение для микширования может повлиять на вашу производительность. Независимо от того, используете ли вы Mac, Windows или Linux, каждый уровень навыков и бюджета учитывается, если вы хотите начать диджеить. Прочитайте больше ). В правом верхнем углу показаны измерители звука, а в верхнем среднем - входящие миди-сообщения (через MIDI-монитор на OS X).

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

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

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

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