Оглавление:

Сборка MIDI-контроллера Arduino: 9 шагов (с изображениями)
Сборка MIDI-контроллера Arduino: 9 шагов (с изображениями)

Видео: Сборка MIDI-контроллера Arduino: 9 шагов (с изображениями)

Видео: Сборка MIDI-контроллера Arduino: 9 шагов (с изображениями)
Видео: Traktorino - собираем сами 2024, Июль
Anonim

Это руководство было первоначально опубликовано в моем блоге 28 июня 2020 г

Мне нравится создавать что-то, что включает в себя электронику, и я всегда хотел создать что-то на Arduino.

Одной из самых распространенных сборок для новичков, которую я нашел, был MIDI-контроллер. MIDI-контроллер - это любое оборудование, которое отправляет MIDI-данные (цифровой интерфейс музыкальных инструментов) на устройство для запуска звуков и создания музыки.

Я обнаружил, что многие реализации сложны, даже те, которые предназначены для начинающих. Было очень неприятно обнаружить, что мне нужно использовать сотни строк нечитаемого кода. Или что мне нужно припаять резистор в некоторых случаях, среди других примеров.

Проэкт

Создавая свой собственный MIDI-контроллер Arduino, я намеревался создать приятный проект с минимальным уровнем шума. Кое-что может усвоить любой новичок. Для этого я использовал MIDI Fighter 3D в качестве основного источника вдохновения и удалил все несущественные функции.

Общая стоимость моего проекта была меньше 30 долларов, а список материалов был очень коротким (партнерские ссылки):

  • Ардуино Леонардо (или клон): от 10 до 20 долларов.
  • 16 кнопок Sanwa 24 мм (или клон): от 1 до 2,50 долларов за пуговицу.
  • Паяльник
  • Электрический провод 22 AWG

Плата Arduino

Когда я начал этот проект, я обнаружил, что существует множество новых моделей Arduino (не считая сотен совместимых плат). И все они предлагают немного разные возможности.

Мне нужно было отправлять MIDI-сигналы на компьютер, и самый простой способ сделать это - через USB. Любая плата Arduino на базе микроконтроллера ATmega32u4 имеет встроенный интерфейс USB.

Официальными платами Arduino с встроенной поддержкой USB являются Arduino Due, Arduino Zero, Arduino Leonardo, Arduino Micro. Эти платы имеют встроенную поддержку USB, что означает, что они могут действовать как устройство USB MIDI.

Я решил пойти с клоном Arduino Leonardo. Он имеет достаточно входов для этого проекта, а также включает заголовки, которые упрощают подключение / отключение проводов.

Первые шаги

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

Чтобы загрузить код на плату, вам необходимо использовать Arduino IDE. У них также есть очень полезный веб-редактор, но у них есть ограниченная квота времени в день, когда вы можете компилировать код.

Шаг 1. Мигание встроенного светодиода

Забавно, как «Hello World» в мире техники мигает светодиодом.

Для меня было приятным сюрпризом обнаружить, что в Arduino Leonardo есть встроенный светодиод, которым вы можете мигать, чтобы проверить свой код. Таким образом, вам не нужно строить внешнюю схему на макете со светодиодом и резистором.

Код:

Шаг 2. Мигание светодиода при ручном вводе

Следующим логическим шагом было мигать одним и тем же светодиодом всякий раз, когда я посылаю сигнал. Я снял пластиковую крышку с одного конца двух проводов Dupont, а другой конец подключил к плате:

  • Контакт № 2: один из цифровых входов (положительный). Это может быть любой цифровой штифт.
  • Контакт GND: любой контакт заземления (отрицательный).

Теперь, каждый раз, когда я соединяю оголенные концы проводов, я замыкаю цепь и, следовательно, могу выполнить код

Каждый из 20 цифровых выводов Leonardo имеет внутренний резистор (по умолчанию отключен), который можно включить с помощью INPUT_PULLUP. Имейте в виду, что подтягивающий вход означает, что состояние кнопки инвертировано:

  • ВЫСОКИЙ, когда цепь разомкнута (кнопка НЕ нажата).
  • НИЗКИЙ, когда цепь замкнута (кнопка нажата).

Код:

Шаг 3: Установка библиотеки MIDIUSB

Эта библиотека позволяет плате Arduino с возможностями USB действовать как MIDI-инструмент через USB. Дополнительную информацию можно найти в официальной документации.

Используя Arduino IDE, вы можете установить дополнительные библиотеки Arduino с помощью Менеджера библиотек:

  1. Откройте IDE и щелкните меню «Скетч», затем «Включить библиотеку», затем «Управление библиотеками».
  2. Найдите MIDIUSB и нажмите «Установить».
  3. По завершении рядом с библиотекой MIDIUSB должен появиться тег Installed.
  4. Закройте диспетчер библиотек.

Теперь Леонардо может отправлять MIDI-сообщения через USB! Но сначала необходимо немного понять, как работает MIDI.

Как работает MIDI

«MIDI (цифровой интерфейс музыкальных инструментов) - это стандартный протокол связи, который соединяет электронные музыкальные инструменты, компьютеры и соответствующие аудиоустройства для воспроизведения музыки». - Википедия

Он обрабатывает сообщения о событиях с данными о высоте и скорости сыгранной ноты, среди других инструкций

В этом конкретном проекте ввод от 16 кнопок отправляет различные сообщения через USB. Эти сообщения можно преобразовать в звук на компьютере с помощью любого подходящего программного обеспечения, например GarageBand или Ableton Live.

Анатомия MIDI-сообщения

Чтобы отправить MIDI-сообщение, я использовал метод sendMIDI () из библиотеки MIDIUSB, которую я установил на шаге 3.

Этот метод может получать 4 параметра:

  • Тип события: это может быть 0x09 для включения ноты (воспроизведение ноты) или 0x08 для отключения ноты (остановка воспроизведения ноты).
  • Note On / Off: Тип события в сочетании с MIDI-каналом (1-16). Я использую только канал 1, так что либо 0x90 для включения ноты, либо 0x80 для отключения ноты.
  • Номер ноты: Каждая нота имеет связанный числовой тон (частотная шкала).
  • Скорость: от 0 (без скорости) до 127 (самая быстрая).

Шаг 4: Отправка MIDI-сообщения

Я включил библиотеку MIDIUSB и вместо того, чтобы мигать встроенным светодиодом, отправил записку.

Код:

⚠ Важно: начиная с этого шага Arduino превращается в MIDI-контроллер USB и перестает получать код через USB.

Когда вы застряли в положении, когда Arduino больше не может быть запрограммировано, выполните следующие действия:

  1. Удерживайте закругленную кнопку сброса на плате Arduino.
  2. Нажмите «Загрузить» в среде Arduino IDE.
  3. Отпустите кнопку сброса.
  4. Обновленный код будет загружен на доску.

Шаг 5: Отправка MIDI-сообщения с каждой кнопки

Отправка MIDI-сообщения с каждой кнопки
Отправка MIDI-сообщения с каждой кнопки

Последним шагом было сопоставление каждого шага кнопке. Для 16 кнопок я определил шкалу от C2 до E3b, которые представляют собой высоту звука от 36 до 51 в последовательности снизу вверх и слева направо. Просмотрите этот файл из руководств Arduino, чтобы узнать, какая высота соответствует каждой ноте.

Я использовал цифровые выводы от 2 до 12 и аналоговые выводы (используя их как цифровые) от A0 до A4.

Вот так выглядит окончательный код

Шаг 6: Настройка каналов или банков (необязательно)

Настройка каналов или банков (необязательно)
Настройка каналов или банков (необязательно)

Если вы хотите добавить больше кнопок с возможностью переключения каналов или банков, как в MIDI Fighter 3D (см. Изображение), у Arduino Leonardo есть еще четыре контакта, которые вы можете использовать. Arduino Leonardo имеет 20 цифровых входов / выходов, из которых только 16 используются для воспроизведения нот.

Вы можете использовать эти дополнительные кнопки для обновления переменной в коде и отправки ее значения в качестве параметра методу MidiUSB.sendMIDI:

gist.github.com/lean8086/ec8da7486ec3621f9f0b90542a06fcea

Шаг 7: Дело

Дело
Дело
Дело
Дело

Чтобы не усложнять этот проект, я был чрезвычайно разборчив в выборе функций.

  • Только кнопки: 16 аркадных кнопок в стиле Санва в сетке 4x4. Никаких регуляторов, ползунков, фейдеров или любого другого аналогового входа.
  • Корпус Unibody: не используйте винты, гайки, болты или клей для корпуса или для удержания платы Arduino.
  • Инструменты для повседневного использования: например, я припаял провода вместо того, чтобы покупать специальную машинку для стрижки проводов для кнопок аркады.

Дизайн Unibody

Одна из проблем, с которыми я столкнулся, заключалась в разработке корпуса, достаточно простого, чтобы он не требовал сборки и мог быть напечатан на 3D-принтере за один проход.

Чтобы избежать использования винтов или клея, мне нужно было разработать корпус, обеспечивающий минимальный доступ к электронике. Больше всего меня вдохновил корпус Mac Mini с круглым отверстием внизу. Я также хотел сделать для этого крышку, которую можно отвинтить, но я решил открыть ее, чтобы обнажить электронику.

Скачать футляр для 3D-печати (322 КБ). Рекомендуемые настройки: PLA, слои 0,15 мм, заполнение 20%, поддержка по крайней мере для закругленного нижнего отверстия, держатели Arduino и micro USB.

Удерживая Arduino без винтов

У Леонардо есть 4 отверстия для ввинчивания платы в любой подходящий корпус, но моя идея заключалась в том, чтобы упростить установку и извлечение платы из корпуса.

Найти держатель зажима для Arduino на Thingiverse было легко, и мне потребовалось 5 итераций, чтобы интегрировать этот держатель в дизайн unibody. Самым сложным было сделать ножки, чтобы не было отверстий для кнопок, и чтобы микро-USB был выровнен по центру корпуса.

Шаг 8: Сборка

Ассамблея
Ассамблея
Ассамблея
Ассамблея
Ассамблея
Ассамблея

Вставив все кнопки на место, я припаял короткие черные провода, соединяющие все отрицательные ножки кнопок между ними.

Затем я припаял длинные красные провода от каждой плюсовой ножки, чтобы подключить их напрямую к плате.

Чтобы подключить провода к Arduino, я отрезал и припаял некоторые концы Dupont и накрыл их термоусадочными трубками.

Я подключил провода к плате в том же порядке, что и в MIDI Fighter. Снизу вверх и слева направо

Шаг 9: Использование MIDI-контроллера

Использование MIDI-контроллера
Использование MIDI-контроллера

Любое музыкальное программное обеспечение (или подходящее оборудование) можно использовать для приема MIDI и создания музыки. Наиболее рекомендуются Garage Band, Ableton Live, и я знаю, что есть множество приложений, которые можно установить на телефон.

Все эти инструменты полезны для загрузки предустановленных звуков для игры на барабанах пальцами, но они были созданы для больших целей. Новичкам может быть сложно настроить эти инструменты.

MIDI в веб-браузере

Чтобы что-то более согласованное с этим проектом и его простотой, я создал веб-инструмент, полностью ориентированный на контроллеры MIDI.

Punchy: реализация WebMIDI и WebAudio для MIDI-контроллеров.

Он может читать MIDI-сообщения в любом браузере, поддерживающем WebMIDI JavaScript API. Затем он воспроизводит звуки в синтезаторе (используя API WebAudio) или в семплере, загружая пользовательские звуки из любого звукового пакета.

Настроить Ableton Live

Чтобы заставить MIDI-контроллер работать с Ableton Live, выполните следующие простые шаги из их официальной документации.

Перейдите в «Настройки» → «Связать MIDI» и убедитесь, что для «Вход» включены «Дорожка» и «Удаленный», а для выхода - «Удаленный», а также указано в руководстве:

Рекомендуемые: