Перейти к содержимому →

Arduino для музыканта часть 1. Делаем DIY MIDI контроллер/конвертер

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

Где-то с 2007-го года я активный читатель Habr’a, последние его трансформации я уже особо не отслеживаю, но до 2011-го года все статьи получал по RSS и просматривал хотя бы заголовки.  Поэтому я хорошо помню момент, когда Arduino и Raspberry пошли в массы как недорогие микроконтроллеры. С тех пор у меня засела в голове мысль попробовать с ними свои силы, но так как и на музыку особо времени не остается, приходилось постоянно откладывать начало экспериментов.

Пару лет назад я окончательно пересел на Fractal Axe FX о чем я чуть позже напишу поподробнее.

GAS на этом не унимался, поэтому в довесок покупались различные педали, в какой-то момент ситуация вышла из под контроля, и педалборд выглядел вот так:

IMG_8512

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

Принял решение перейти на рэк и управление только с миди контроллера.

К тому моменту BJ Devices выпустили новую модель с педалью экспрессии и начался процесс проектирования и оформления для себя ТЗ на покупку или разработку река.

В AXE FX отлично эмулируются усилители, дилеи и тд, но там нет пары моих любимых перегрузов(Fulltone OCD и Xotic Soul Driven), я решил убрать их в рэк и контролировать их включение в цепь по миди. Для этого можно было купить миди свитчи от GLAB или Voodoo LAB, но я решил, что тут поможет Arduino.

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

Начались первые эксперименты.

IMG_1755

Я купил контроллер Arduino Uno и реле для него. За один вечер удалось сделать свитч, который управляется сигналами из Arduino.

Вместе с контроллером BJ Devices у меня был куплен их свитч LoopX2, цель уже сейчас не припомню, но кто вообще будет объяснять GAS покупки. При проектировании расположения устройств в рековой полке, решил, что Arduino реле будет управлять свитчем от BJ, так как расположение будет гораздо удобнее.

Вторым этапом разработки были добавлены MIDI IN/OUT в схему и немного расширен объем работ.

В сети есть много мануалов по тому как собрать MIDI контроллер на Arduino, как минимум начните изучать эту тему с Notes And Volts.

Повозившись с россыпью комплектухи, нашелся наш магазин, который продавал уже собранные модули MIDI IN/OUT.

Купил, включил, скачал библиотеку MIDI.h и быстренько набросал программу управления свитчем LoopX2 по MIDI.  Промежуточные программы я не буду приводить по тексту, в итоговом примере вы найдете все эти же программы как блоки с комментариями, поэтому двинемся дальше.

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

Проект начинал обрастать новыми функциями на этот раз я решил убрать в рэк Whammy, сама педаль на мой слух звучит намного музыкальней, чем ее эмуляция в Axe FX. Почитал мануал на педаль, управление по MIDI там достаточно простое, однако, для переключения режимов используются команды Program Change, а это значит, что посылая это сообщение с контроллера в одну MIDI цепь устройств, вместе с Whammy переключать пресеты начнет и Axe FX.

Пришлось добавить еще один MIDI OUT, в итоге в Arduino заходил MIDI сигнал от контроллера и дальше шло разветвление — MIDI OUT для Axe FX , в который не попадают сообщения для Whammy и MIDI THRU, в который идет весь поток миди данных.

IMG_1947

Есть один нюанс, Arduino UNO имеет по одному serial порту, для того чтобы иметь один миди вход и два выхода, пришлось купить Arduino Mega, после 10 дней ожидания посылки с Ali удалось собрать макет.

Но вернемся к теме перегрузов и их включения в цепь, в Axe FX отлично эмулируется различные варианты квакушек, но раз уж перегрузы будут стоять ПЕРЕД процессором, то значит квакушка в такой цепи будет стоять ПОСЛЕ перегруза. В таком варианте подключения квакушка звучит слишком стерильно, весь смачный рок-н-ролльный саунд Wah получается только если педаль стоит перед перегрузом.

После пары дней размышлений, удалось достать плату Cry Baby GCB-95.

Час гугления и нашлась вот такая статья (https://www.instructables.com/id/Wahduino-WahWah-by-shakingraise-the-guitar/) про Arduino квакушку, которая управляется акселерометром.

Пришлось покупать цифровой потенциометр, который заменил стандартный пот 100k в квакушке.

Ну и еще пара ссылок вам на интересные проекты DIY рековых квакушек

В этих статьях был только один минус — управление было не по MIDI.

Это была третья часть проекта — добавить квакушку, которая будет управляться по MIDI при помощи Arduino. После пары недель доехала россыпь различных цифровых потенциометров, пара часов экспериментов и я услышал первые «кваки» в наушниках, которые управлялись с мидиконтроллера.

Итак, в процессе экспериментов появился вот такой «монстр»:

IMG_2256

В одну коробку я воткнул Arduino Mega (https://ru.aliexpress.com/item/1Pcs-Keyestudio-MEGA-2560-R3-1Pcs-USB-cable-compatible-with-Arduino-MEGA-2560-R3-AVR/32247818078.html?spm=a2g0s.9042311.0.0.4Cgo2z), shield для mega (https://ru.aliexpress.com/item/Free-shipping-2015-New-Keyestudio-MEGA-Sensor-Shield-V1-for-Arduino-MEGA/2042269441.html?spm=a2g0s.9042311.0.0.4Cgo2z) для удобства подключения внешних девайсов, электромеханическое реле для управления свитчем, midi in (http://amperka.ru/product/troyka-midi-in),  два midi out, цифровой потенциометр и плата Cry Baby.

Когда я собрал все в одну коробку, от цифровой части схем в квакушку шел очень сильный фон. Пришлось изолировать потенциометр через LDR (http://www.instructables.com/id/How-to-Use-a-Light-Dependent-Resistor-LDR/).

Чтобы вам проще было повторить вот несколько схем. На плате Cry Baby есть 8pin слот для подключения батарейки, кнопки и потенциометра. На схеме ниже каждый выход подписан.

gcb_shield

Подробнее про замену потенциометра квакушки на LDR(Light Depended Resistor) можно почитать вот в этой статье http://www.geofex.com/article_folders/wahpedl/wahped.htm

Немного поковырявшись со схемой у меня получился вот такой вариант:

LDR

Для удобства я все покрасил на картинке в соответствующие цвета и подписал. Сам по себе LDR это светодиод и фоторезистор. Яркостью светодиода в моей схеме управляет цифровой потенциометр, а фоторезистор одной ногой подключен к выходу «3-ground PA0», ко второму выходу через 100k резистор подключен выход «6 — fx return PB0» и выходу «5 — wiper PW0».

Если у вас в квакушке Dunlop начал хрустеть потенциометр, можно так же не меняя пот, добавить LDR и получить квак, в котором никогда больше не надо будет менять потенциометр.

После перехода на LDR фона стало меньше, но наводок было все равно очень много, я долго игрался с разными вариантами земли, изоляции и тд. Единственный способ как удалось избавиться от фона это убрать плату квакушки в отдельный корпус. При таком раскладе пазл в площадь река у меня уже не складывался, немного поразмыслив я решил купить себе рековую Cry Baby и опять же управлять ею из Arduino. Сам рек ко мне пока только едет, поэтому проект еще не завершен.

Пока схема подключения выглядит вот так:

Схема подключения

Аудио сигнал подается на вход Whammy, откуда идет на MidiWah и далее в свитч, который управляется Arduino. Миди сигнал идет из контроллера в Arduino оттуда разделяется на управление Whammy и Axe FX.

Ниже листинг кода для Arduino. Напомню, что при помощи этого кода вы сможете получать и отправлять MIDI команды, управлять реле, управлять Digitech Whammy 5 как переключением режимов так и педалью экспрессии, управлять цифровым потенциометром, который подключен к Cry Baby.

В следующей статье рассмотрим подробно только часть проекта — MIDI сплиттер на Arduino

Пишите в комментарии или группу вконтакте свои музыкальные проекты на Arduino и задавайте вопросы.