Как сделать из клавиатуры midi клавиатуру. Как сделать дешевый MIDI контроллер на базе Arduino своими руками. Схема Midi клавиатуры MKC64 v1.54

В основном статья рассчитана на гитарастов и иже с ними, так как мало кому необходим ножной контроллер, включил доп клаву, забиндил клавиши и вперед. Хотя может вот для диджеев такое управление вполне уместно. Но лучше всего оно подходит для Guitar Rig и TH1. В общем сегодня мы будем собирать нечто похожее на:

И так, для начала необходимо собрать необходимые запчасти. Вот их небольшой список:

Корпус. Первое и самое основное что требуется, сложно найти подходящее. Я прикупил для этого дела чехол для кия.
- USB клавиатура, желательно не очень древняя, ибо возможно распайка не подойдет.
- Клавиши (те, что я подобрал): PBS-16B (ФУТЫ), SPA-101B4 (ДОПЫ), PBS-15B push ON (ВКЛ). Все без фиксации. Приобрести можно в Чип и Дипе.
- Провода. Много одножильных. Я думаю для этого лучше всего подойдет витая пара. 2х метров за глаза. Только разматывать неудобно.
- Ну и паяльник думаю почти у каждого найдется, кто решил собирать сей девайс.
- Инструменты для проделывания отверстий в корпусе. Кто чем горазд, можно хоть саморезом, а потом править ножом, но опять же думаю у всех найдется дрель.

Ну что ж, приступим. Первое что необходимо сделать это наметить и просверлить отверстия в корпусе:

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

Должно получится что-то типа этого:

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

Делаем косметические улучшения, кто захочет, припаяет диод на корпус от NUB LOCK"а... Сделает отверстие под провод и перепротянет USB кабель. Ну а там, на что уж фантазии хватит. Конечный результат:

Фаза 2. Настройка программного обеспечения. Надеюсь это для каждого изготовившего сей девайс не станет проблемой. Для Guitar Rig делается все проще некуда, включаем NUM Lock, включаем ригу, открываем OPTIONS - CONTROLLER, нажимаем MENU, ищем необходимое действие, кикаем на клавишу Learn и выбираем подходящую кнопку на нашем контроллере. Затем нажимаем на Add Controller и проводим снова те же операции. И так пока не наберем все что необходимо или не закончатся клавиши. Так же можно назначить клавишу на почти любое действие в 3ей риге, нажимаем правой кнопкой мыши на объект и жамкаем снова на Learn.

А вот теперь если есть интерес настроить все это детище на Midi команды, то придется еще немного развлечься.
Значит нам необходимо ПО, которое биндит клавиши на миди команды. И такая программуля есть, правда аналогов не встречал, благо лечить от жадности не нужно. Называется Virtual Midi Controller, настраивается действие по клавише во вкладке C IN, установка - Setup - Далее - Далее. Вот ссылка .


Вместе с ней ставиться и виртуальный MIDI кабель, так что лишних телодвижений делать не придется. Для совсем ленивых выкладываю предустановку банка для футсвича: банк - им следует заменить файл в корне папки с программой, по умолчанию C:\Program Files\Virtual Midi Controller\ , предварительно выйдя из VMC. Для удобства в SETUP поставить галку Run In Background и в основном окне VMC ткнуть на букву К, после чего принимать команды прога будет и в свернутом режиме. Теперь для выхода из проги требуется ликвидировать ее в трее. И вот начиная с этой минуты вы сможете управлять и Nuendo и Sonar с футсвича. Ну и естественно TH1 тоже через миди хватает нашу клаву.

Будут вопросы, обращайтесь...

Следующий задуманные проекты:
- Экранирование гитары.
- Комбик своими руками.

Успехов Вам в муздеятельности...

В детстве у меня было пианино, такое настоящее, советское, киллограм на 300. Мне нравилось на нем бренчать, а после окончания музыкальной школы даже кое-что играть. Пианино - это классно, аутентично, но совершенно не практично. А чтобы совсем прям для души, нужна еще и барабанная установка, пяток примочек к электрогитаре, кларнет, ситар и сэмпловые лупы…

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

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

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

Получается, что за 40 тысяч я покупаю то, что у меня уже есть в лучшем качестве, за исключением лишь клавиатуры. Это просто какой-то максимум нерациональных расходов.

В поисках отдельной клавиатуры я набрел на такой класс устройств как USB MIDI Keyboard.
Мне всегда казалось, что MIDI это из области профессиональной музыкальной деятельности.
Но сейчас все музыку делают на ПК, в любом удобном месте, а значит, музыкантам нужны мобильные музыкальные клавиатуры, которые легко помещаются в рюкзак.

В голове сразу сложился план. Подключаем MIDI-клавиатуру к домашнему медиацентру на базе Raspberry Pi 3, где крутится программный синтезатор, позволяя в любое время любому желающему исполнить свой очередной шедевр. На таких MIDI-клавиатурах как правило есть набор регуляторов и дополнительных кнопок, которые программируются на различные эффекты или дополнительные музыкальные инструменты. Выглядит и звучит это очень круто!

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

Я не спец в создании музыки на ПК, поэтому было сложно искать пути реализации своей задумки. Информацию приходилось собирать по крупицам. Пазл постепенно стал складываться и получилось собрать работающее решение, которым с вами и делюсь. Как ни странно, но в стандартном дистрибутиве Raspbian/Debian нашлось все что нужно, даже не пришлось подключать внешние репозитории.

В качестве секвенсера (приложения, воспроизводящего MIDI-файлы) используется fluidsynth.
MIDI-клавиатура сразу обнаруживается через ALSA и доступна для подключения к секвенсеру.
Для воспроизведения звуков различных инструментов используются открытые базы сэмплов в формате SoundFont2. Для начала установим это все.

Sudo -s apt-get update apt-get -y install alsa-utils fluid-soundfont-gm fluidsynth
Подключаем MIDI-клавиатуру к Raspberry и запускаем секвенсер в режиме сервера:

Fluidsynth -i -s -a alsa -g 3 /usr/share/sounds/sf2/FluidR3_GM.sf2
Выполняем команду:

Aconnect -o
В результате мы увидим список доступных MIDI-клиентов:

Client 14: "Midi Through" 0 "Midi Through Port-0" client 20: "VMini" 0 "VMini MIDI 1 " 1 "VMini MIDI 2 " client 128: "FLUID Synth (1628)" 0 "Synth input port (1628:0)"
Здесь нам важно запомнить номера клиентов клавиатуры и секвенсера, чтобы затем соединить их командой:

Aconnect 20:0 128:0
Теперь у нас все готово для игры на Yamaha Piano (это дефолтный инструмент). Почитайте мануал по fluidsynth , там есть много интересных команд, например, чтобы сменить инструмент на ударники или духовые, задать величину реверберации или хоруса.

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

Cat > /etc/init.d/fluidsynth << EOF #!/bin/bash ### BEGIN INIT INFO # Provides: fluidsynth # Required-Start: $all # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Fluidsynth deamon to play via MIDI-keyboard ### END INIT INFO startDaemon() { sleep 30s && fluidsynth -i -s -a alsa -g 3 --load-config=/home/osmc/midi-router >/var/log/fluidsynth & sleep 60s && aconnect 20:0 128:0 & } stopDaemon() { pkill -9 fluidsynth &> /dev/null } restartDaemon() { stopDaemon startDaemon } case "$1" in start) startDaemon ;; stop) stopDaemon ;; restart) restartDaemon ;; status) ;; *) startDaemon esac exit 0 EOF
Регистрируем демон для автозапуска:

Chmod 755 /etc/init.d/fluidsynth update-rc.d fluidsynth defaults
Обратите внимание, теперь при старте секвенсеру передается конфигурационный файл (/home/osmc/midi-router), содержащий команды, превращающие нашу клавиатуру в настоящий синтезатор.

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

Так вот, мне необходимо замэпить коды событий от клавиатуры на разные инструменты, а коды от ручек на коды, которые понимает секвенсер. В fluidsynth это делается при помощи router. Именно эти команды и содержатся в конфигурационном файле.

Вот пример моего конфигурационного файла, с комментариями того, что он делает.

Cat > /home/osmc/midi-router << EOF # загружаем стандартные инструменты и ударники, найденные где-то на просторах Сети load /usr/share/sounds/sf2/FluidR3_GM.sf2 load /home/osmc/241-Drums.SF2 # связываем инструмент каждый со своим каналом select 1 2 128 0 select 2 1 0 0 # по умолчанию звук идет на канал 0 # перенаправляем события с квадратных клавиш на канал с ударными router_begin note router_chan 0 0 0 1 router_par1 36 48 1 0 router_end # события с остальных клавиш перенаправляем на канал с пианино router_begin note router_chan 0 0 0 2 router_par1 0 35 1 0 router_end router_begin note router_chan 0 0 0 2 router_par1 49 255 1 0 router_end # события с ручек мэпим на события, которые понимает секвенсер, # полный их список есть в документации на сайте fluidsynth router_begin cc router_chan 0 0 0 2 router_par1 14 14 0 98 router_end router_begin cc router_chan 0 0 0 2 router_par1 15 15 0 11 router_end router_begin cc router_chan 0 0 0 2 router_par1 16 16 0 91 router_end router_begin cc router_chan 0 0 0 2 router_par1 17 17 0 93 router_end # выключаем громкость на канале 0, # иначе при нажатии на клавишу # разные инструменты будут звучать одновременнно cc 0 7 0 EOF
Чтобы узнать какие коды генерирует именно ваше устройство, необходимо воспользоваться этой утилитой:

Aseqdump -p 20:0
Она слушает и выводит на консоль события с MIDI-клавиатуры. Нажмите кнопку или покрутите ручку и вы увидите тип, канал и код события. Вы можете запрограммировать свою клавиатуру таким образом, каким захотите, а не так, как это придумали инженеры, разработавшие конкретный синтезатор. За что большое спасибо разработчикам fluidsynth, alsa, SoundFont2, Raspberry и V-Mini.

Кстати, эта тема с DIY-синтезаторами нашла отражение в нескольких изобретениях, рекомендую к изучению.

Так как и я, и моя жена были в детстве обучены нажимать на клавиши, то дома явно не хватало некоего устройства с черными и белыми клавишами для передачи опыта нажатия на оные подрастающему поколению. Увы в маленькой "однушке" не то что "Стенвею" - простому "Красному октябрю" не было места. Выход был найден - MIDI клавиатура! Тем более, что попытки сделать самому нечто подобное предпринимались еще на заре моего "радиогубительства". Опять же из за нехватки места было решено ограничиться для начала 4 октавами. Да и финансы не позволяли прикупить какой нибудь "Роланд".

Немного поискав в интернете я наткнулся на объявление о продаже за 50 вечнозеленых девайса под названием Fatar 49. Поискав все в той же паутине нашел описание этого чуда.

MIDI клавиатура Fatar StudioLogic CMK 49

  • 4-октавная, полноразмерная, динамическая (чувствительная к скорости нажатия), невзвешенная; 49 клавиш
  • Разъемы MIDI выход, к нему подключается штекер с надписью "IN"
  • Питание Адаптер питания может не входить в комплект поставки.
  • Нужный адаптер питания - 9В, 0.5А. Внутренний контакт "+", внешний "-".
  • Размеры внешние 75.2 х 15 х 8 см
  • Вес 2 кг

Семейный совет постановил - БЕРЕМ!!! Прежний владелец продемонстрировав что она работает даже приложил к ней адаптер питания. MIDI шнурок у меня уже был (запас давно как чуствовал). И вот привезя домой и подключив ее к компьютеру, я наконец смог вспомнить детство. И... понять что за 15 лет все забыто почти полностью.

В просторах сети была добыта очень интересная программа "Play Piano" компании Midisoft. Она может практически любого научить играть. Она следит за правильностью игры и указывает на ваши ошибки, как хороший преподаватель. Жаль только что за это время так и не удалось найти чего-нибудь похожего, но поновее (программка 96-го года).

Было это все в прошлом веке. Как говорят в романах - прошли годы... Родились и подросли дети. Клавиатура на столе и тогда была не особенно удобна - очень высоко получалось по сравнению с обычным пианино.

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

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

Во-первых стало понятно, что делать клавиатуру на высоту стандартного пианино смысла нет, так как делалось это уже под конкретных людей. Во-вторых сделав только подставку под клавиатуру я быстро понял, что придется удлинять MIDI-кабель. И тогда созрело решение сделать полностью автономный музыкальный инструмент. Покопавшись в запасниках компьютерного железа, из него были извлечены вполне рабочие (хотя морально давно устаревшие) компоненты: материнская плата, процессор, видеокарта и жесткий диск. Найден был также старый блок питания. Не хватало малого - памяти. Хороший человек из сервисной службы подарил мне перед новым годом модуль. Теперь было все что нужно.

Работа

Конфигурация получилась самая что ни на есть примитивная для нынешних времен:

  • CPU: Pentium MMX 166 MHz разогнаный до 200
  • RAM: SDRAM PC100 128 Mb
  • HDD: Coner 340 Mb
  • VIDEO: TRIDENT
  • AUDIO: Onboard Yamaha OPL3
Но для обработки MIDI слабое место здесь только звуковая карта. Для корпуса пришлось прикупить 4 мебельных щита 800х200х20.

Потратив половину выходного дня получил вот такой агрегат:

Сверлим отверстия для кнопки включения и индикаторов "Power" и "HDD".

Вставляем клавиатуру.

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

Все пустые гнезда шасси закрываем красивыми блестящими заглушками.

Прикручиваем корзину HDD c диском к корпусу.

Подключаем блок питания и все остальные шлейфы и провода

Операционка была установлена заранее. На такой объем удалось поставить только Win98. Подключаем монитор, клавиатуру и мышь. Убеждаемся, что все работает.

Теперь переходим к акустике. Раньше все шло через компьютер, который был подключен к хорошему усилителю и который, в свою очередь, был подключен к приличным колонкам. В объем нового устройства все это не впихнешь. Да и нет смысла. Для такой звуковой карточки хватит чего-нибудь попроще. Опять ныряем в запасники и достаем вот такую (если можно так сказать) акустическую систему:

Разбираем ее и видим внутри:

Да уж, но на безрыбье и рак рыба. Надо будет съездить на дачу, там где-то лежат неплохие динамики и спаянный мной лет 12 назад усилок на К174УН7 - все же мощности у него побольше будет.

Подключаем этот "Звук".

Ну вот... что получилось.

Динамики на даче не были найдены (очевидно уже где-то использовал и забыл), но мир не без добрых людей и сосед отдал мне два автомобильных среднечастотника.

В процессе перетыкания туда-сюда клавиатуры одна из клавиш стала звучать только при сильном нажатии. Пришлось все разобрать и напоить родимую C 2 H 5 OH. Каждую клавишу, каждую резиночку протер, высушил и поставил обратно. Заодно щелкнул фотиком внутреннее устройство.

Усилитель на К174УН7 был обнаружен, но то ли кондеры на нем за это время приказали долго жить, то ли он слишком чувствительный. В общем, жутко фонит. Пришлось пока оставить старый усилитель.

Сначала хотел сделать заднюю стенку из фанеры, но потом решил все же сделать деревянную.

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

Наконец-то все завершено!!!

P.S. Не прошло и месяца после окончания сборки как стараниями юных музыкантов в клавиатуру попала газировка. Пришлось опять разбирать и отпаивать горемычную спиртиком.

  • Звук
  • В детстве у меня было пианино, такое настоящее, советское, киллограм на 300. Мне нравилось на нем бренчать, а после окончания музыкальной школы даже кое-что играть. Пианино - это классно, аутентично, но совершенно не практично. А чтобы совсем прям для души, нужна еще и барабанная установка, пяток примочек к электрогитаре, кларнет, ситар и сэмпловые лупы…

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

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

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

    Получается, что за 40 тысяч я покупаю то, что у меня уже есть в лучшем качестве, за исключением лишь клавиатуры. Это просто какой-то максимум нерациональных расходов.

    В поисках отдельной клавиатуры я набрел на такой класс устройств как USB MIDI Keyboard.
    Мне всегда казалось, что MIDI это из области профессиональной музыкальной деятельности.
    Но сейчас все музыку делают на ПК, в любом удобном месте, а значит, музыкантам нужны мобильные музыкальные клавиатуры, которые легко помещаются в рюкзак.

    В голове сразу сложился план. Подключаем MIDI-клавиатуру к домашнему медиацентру на базе Raspberry Pi 3, где крутится программный синтезатор, позволяя в любое время любому желающему исполнить свой очередной шедевр. На таких MIDI-клавиатурах как правило есть набор регуляторов и дополнительных кнопок, которые программируются на различные эффекты или дополнительные музыкальные инструменты. Выглядит и звучит это очень круто!

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

    Я не спец в создании музыки на ПК, поэтому было сложно искать пути реализации своей задумки. Информацию приходилось собирать по крупицам. Пазл постепенно стал складываться и получилось собрать работающее решение, которым с вами и делюсь. Как ни странно, но в стандартном дистрибутиве Raspbian/Debian нашлось все что нужно, даже не пришлось подключать внешние репозитории.

    В качестве секвенсера (приложения, воспроизводящего MIDI-файлы) используется fluidsynth.
    MIDI-клавиатура сразу обнаруживается через ALSA и доступна для подключения к секвенсеру.
    Для воспроизведения звуков различных инструментов используются открытые базы сэмплов в формате SoundFont2. Для начала установим это все.

    Sudo -s apt-get update apt-get -y install alsa-utils fluid-soundfont-gm fluidsynth
    Подключаем MIDI-клавиатуру к Raspberry и запускаем секвенсер в режиме сервера:

    Fluidsynth -i -s -a alsa -g 3 /usr/share/sounds/sf2/FluidR3_GM.sf2
    Выполняем команду:

    Aconnect -o
    В результате мы увидим список доступных MIDI-клиентов:

    Client 14: "Midi Through" 0 "Midi Through Port-0" client 20: "VMini" 0 "VMini MIDI 1 " 1 "VMini MIDI 2 " client 128: "FLUID Synth (1628)" 0 "Synth input port (1628:0)"
    Здесь нам важно запомнить номера клиентов клавиатуры и секвенсера, чтобы затем соединить их командой:

    Aconnect 20:0 128:0
    Теперь у нас все готово для игры на Yamaha Piano (это дефолтный инструмент). Почитайте мануал по fluidsynth , там есть много интересных команд, например, чтобы сменить инструмент на ударники или духовые, задать величину реверберации или хоруса.

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

    Cat > /etc/init.d/fluidsynth << EOF #!/bin/bash ### BEGIN INIT INFO # Provides: fluidsynth # Required-Start: $all # Required-Stop: # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Fluidsynth deamon to play via MIDI-keyboard ### END INIT INFO startDaemon() { sleep 30s && fluidsynth -i -s -a alsa -g 3 --load-config=/home/osmc/midi-router >/var/log/fluidsynth & sleep 60s && aconnect 20:0 128:0 & } stopDaemon() { pkill -9 fluidsynth &> /dev/null } restartDaemon() { stopDaemon startDaemon } case "$1" in start) startDaemon ;; stop) stopDaemon ;; restart) restartDaemon ;; status) ;; *) startDaemon esac exit 0 EOF
    Регистрируем демон для автозапуска:

    Chmod 755 /etc/init.d/fluidsynth update-rc.d fluidsynth defaults
    Обратите внимание, теперь при старте секвенсеру передается конфигурационный файл (/home/osmc/midi-router), содержащий команды, превращающие нашу клавиатуру в настоящий синтезатор.

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

    Так вот, мне необходимо замэпить коды событий от клавиатуры на разные инструменты, а коды от ручек на коды, которые понимает секвенсер. В fluidsynth это делается при помощи router. Именно эти команды и содержатся в конфигурационном файле.

    Вот пример моего конфигурационного файла, с комментариями того, что он делает.

    Cat > /home/osmc/midi-router << EOF # загружаем стандартные инструменты и ударники, найденные где-то на просторах Сети load /usr/share/sounds/sf2/FluidR3_GM.sf2 load /home/osmc/241-Drums.SF2 # связываем инструмент каждый со своим каналом select 1 2 128 0 select 2 1 0 0 # по умолчанию звук идет на канал 0 # перенаправляем события с квадратных клавиш на канал с ударными router_begin note router_chan 0 0 0 1 router_par1 36 48 1 0 router_end # события с остальных клавиш перенаправляем на канал с пианино router_begin note router_chan 0 0 0 2 router_par1 0 35 1 0 router_end router_begin note router_chan 0 0 0 2 router_par1 49 255 1 0 router_end # события с ручек мэпим на события, которые понимает секвенсер, # полный их список есть в документации на сайте fluidsynth router_begin cc router_chan 0 0 0 2 router_par1 14 14 0 98 router_end router_begin cc router_chan 0 0 0 2 router_par1 15 15 0 11 router_end router_begin cc router_chan 0 0 0 2 router_par1 16 16 0 91 router_end router_begin cc router_chan 0 0 0 2 router_par1 17 17 0 93 router_end # выключаем громкость на канале 0, # иначе при нажатии на клавишу # разные инструменты будут звучать одновременнно cc 0 7 0 EOF
    Чтобы узнать какие коды генерирует именно ваше устройство, необходимо воспользоваться этой утилитой:

    Aseqdump -p 20:0
    Она слушает и выводит на консоль события с MIDI-клавиатуры. Нажмите кнопку или покрутите ручку и вы увидите тип, канал и код события. Вы можете запрограммировать свою клавиатуру таким образом, каким захотите, а не так, как это придумали инженеры, разработавшие конкретный синтезатор. За что большое спасибо разработчикам fluidsynth, alsa, SoundFont2, Raspberry и V-Mini.

    Кстати, эта тема с DIY-синтезаторами нашла отражение в нескольких изобретениях, рекомендую к изучению.

    Мне давно хотелось разбудить в себе композитора и начать творить свою собственную электронную музыку. Однако я был (мягко говоря) обескуражен высокими ценами на MIDI контроллеры. Но порыскав по просторам интернета у меня появилась задумка создать собственный контроллер, используя для этого Arduino Uno и токопропроводящие краски!

    Давайте начнём)

    Шаг 1: Подбор деталей

    Вы можете слегка отойти от изложенного материала и собранный вами MIDI контроллер все равно будет работать (под «слегка отойти» имею ввиду, что можете установить резистора с чуть-чуть другим номиналом или оставить один из выводов отключенным).

    С электроники нам понадобится:

    • 1 Arduino Uno с usb кабелем;

    • 1 баночка токопроводящей краски;

    • 1 монтажная плата размерами 5×7 см;

    • 3 кнопки;

    • резисторы с сопротивлением 2.2 кОм;

    • 1 светодиод;

    • резисторы с сопротивлением 10кОм;

    • 1 LDR сенсор;

    • резисторы с сопротивлением 4.7кОм;

    • 1 перемычка;

    • 12 шт 2.7 MОм резисторов;

    • 30 прямых штырей;

    • 12 согнутых штырей;

    • 12 переходников;

    • 12 скрепок.

    Кроме электроники, также потребуются следующие инструменты:

    • Паяльник и припой;
    • Кусачки;
    • Подставка для пайки деталей (третья рука);
    • Мультиметр;
    • Несколько проводов и/или тонкая металлическая проволока.

    Шаг 2: Припаиваем штыри

    Создание платы начнём с припаивания штырей. Разместим согнутые штырьки в центре первого ряда на плате. Они в последующем будут служить «чувствительными» выводами, к которым будет подсоединяться клавиатура.

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

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

    Для следующего этапа, расположим прямые гребёнки в слотах Arduino . Установимповерх штырей, что вставлены в Arduino, плату. Данное действие потребовало приложения небольшого усилия, поскольку штыри не идеально отцентрованы относительно отверстий платы.

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

    Шаг 3: Напаиваем перемычки

    Теперь удалим плату с Arduino и перевернём её на обратную сторону. Напаяем перемычки, на которые в дальнейшем будут крепится компоненты. Есть два способа сделать это:

    • Заполнить все необходимые отверстия припоем, а после соединить их друг с другом.
    • Использовать тонкую проволоку.

    Советую использовать второй метод, поскольку он проще и быстрее. Если вы выберете этот метод, расположите проволоку на плате, как на изображении.

    • Красная точка означает — припаиваем провод в отверстие.
    • Желтая точка — соединяем тонкую проволоку со штырём на другой стороне платы (как на третьем изображении).

    Как вы можете видеть, немного испортил нижний левый угол, когда нанёс слишком много припоя, поэтому будьте внимательны!

    Совет: Если у вас нет тонкой проволоки, используйте обрезки выводов используемых резисторов.

    Шаг 4: Припаиваем сенсорно-ёмкостные резисторы

    Устанавливаем компоненты, а именно 2.7 MОм резисторы , которые будут выполнять сенсорно-ёмкостные функции.

    Примечание: Если вы хотите узнать больше о теоретических основах и практическом применении сенсорно-ёмкостных датчиков, советую ознакомится со следующими ссылками:

    Расположим один 2.7 MОм резистор снизу самого правого согнутого штыря и протолкнём ножки через отверстия (как на первом изображении). Теперь перевернём плату и протолкнём один вывод резистора обратно в следующее отверстие (как показано на втором изображении). Припаяем нижнюю ногу резистора к отверстию, а верхнюю ногу резистора к выводу штыря. После чего прикрепим 7 cm провод на этот штырь (как видно с третьего изображения).

    Повторим процесс со всеми резисторами и проводами, припаяв их на места. Нижнее ножки резисторов должны сформировать одно длинное соединение.

    Совет : Выбирайте чередующееся цвета для проводов — это позволит проще производить соединение в последующих шагах.

    Шаг 5: Припаиваем кнопки

    Начнём с размещения кнопок и резисторов на плате, как на первом и втором изображениях. В моём случае использовал 2.2 кОм резисторы , но можно использовать любой резистор со значением между 2кОм и 10кОм.

    Перевернём плату и припаяем всё на свои места. Изображение 3 объясняет, какие различные соединения вам нужно будет сделать:

    • синяя точка – обозначает ножку кнопки, что необходимо припаять на плату;
    • розовaя точка – обозначает ножку резистора, которую необходимо припаять на плату;
    • красная линия означает — вам следует спаять две точки в одно соединение;
    • чёрная линия обозначает провод, что будет идти от одной ножки кнопки через отверстие в плате, что потом соединится со штырём на другой стороне.

    Если всё спаяно правильно, две самые левые кнопки позволят изменять октавы , в то время как самая правая кнопка позволит включать LDR сенсор.

    Шаг 6: Припаиваем LDR и LED

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

    Совет: Любой резистор в интервале между 330 Ом и 5 кОм будет хорошим решением для 5 mm LED.

    Теперь расположим LED, LDR и резисторы (4.7 K для LDR ) в нужных местах. Перевернём плату и припаяем всё. Третье изображение пояснит, какие различные соединения следует выполнить:

    • коричневые точки – выводы LDR, что следует припаять на плату;
    • розовая точка – ножка резистора, что следует припаять на плату;
    • оранжевые точки – выводы LED, что необходимо припаять на плату;
    • красная полоса – вам нужно спаять две точки в одно соединение;
    • чёрная полоса – провод, что будет идти от вывода резистора через отверстие платы, что потом будет соединяться со штырём.

    Примечание: Перед припаиванием LED, убедитесь в том, что полярность светодиода верная. Положительный вывод LED следует соединить с резистором, а отрицательный вывод с землей.

    Шаг 7: Тестируем все соединения

    Сейчас хорошее время протестировать удачно ли пропаяны соединения кнопок, LDR и LED. Это последняя возможность исправить ошибки, советую вам загрузить прикрепленный код и запустить программу. и загрузите Arduino_Test_Fixture_Code на плату Arduino.

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

    Шаг 8: Завершение работы с платой

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

    Перевернём плату и отрежем провода нужной длины. Припаяем их к штырям, что заходят в разъемы Arduino. Прежде чем начать использовать MIDI контроллер, сначала нужно протестировать его соединения с помощью тестового скетча . Загрузите скетч, откройте последовательный порт и прикоснитесь к «чувствительным» штырям на плате. Если вы увидите текст ‘Note x is active’ для каждого штыря, во время касания, все выводы работают корректно.

    Шаг 9: Преобразуем Arduino в MIDI устройство

    После того, как плата готова, пришло время преобразовать Arduino в MIDI контроллер, который будет распознаваться музыкальными программами, такими как Ableton и Fl Studio или даже другими MIDI устройствами. Процесс состоит из двух шагов:

    1. Изменить текущие встроенные программы на Arduino Uno на MIDI совместимые программы;
    2. Загрузить MIDI скетч на Arduino.

    Начнём с первого пункта. По условию в Arduino загружена прошивка usb-последовательный порт , что позволяет Arduino обмениваться сообщениями с ПК и Arduino IDE. С новой программой DualMoco , добавиться второй режим, что позволит Arduino выступать в роли MIDI устройства .

    Будем использовать программу FLIP и следуя инструкции изменим прошивку Arduino. Работоспособный файл вы найдете в архиве в папке Firmware — файл DualMoco.hex.

    После загрузки новой прошивки, переподключите Arduino к ПК. Если всё пройдёт успешно, Arduino не должен будет обнаруживаться Arduino IDE, потому что новая программа находится в режиме (MIDI mode ). Откройте музыкальную программу, что способна записывать MIDI и проверьте, чтобы Arduino с именем MIDI / MOCO for LUFA отображалась над MIDI настройками, как вы можете видеть на 1-ом изображении.

    Шаг 10: Производим последнее приготовления

    Особенность DualMoco в том, что у неё есть второй режим — usb-последовательный порт , что позволяет загружать скетчи с Arduino IDE, точно также, как при обычной прошивке. Чтобы перевести Arduino во второй режим, соедините два ISCP вывода вместе, как показано на 1 и 2 изображении. Вы можете либо использовать кусочек провода или маленькую перемычку, как показано на изображениях. Теперь отключите USB кабель на несколько секунд от Arduino и переподключите его, Arduino должен обнаружится в Arduino IDE.

    Примечание: Когда вы захотите переключится из режима usb- последовательный порт в MIDI режим, удалите перемычку с ISCP выводов, как показано на третьем изображении и переподключите Arduino к ПК.

    Пришло время загрузить действующий скетч в Arduino, Arduino_ Final_ Code . Скачайте его, переведите Arduino в usb последовательный порт режим и загрузите код. Если необходимо точная настройка пороговой величины, поэкспериментируйте со значениями THRESHOLD и RES . После того, как все заработает, как и ожидалось, поменяйте текущую строку 17, с:

    boolean midiMode = false; // if midiMode = false, the Arduino will act as a usb-to-serial device

    boolean midiMode = true; // if midiMode = true, the Arduino will act as a native MIDI device.

    После того, как в код внесены последние изменения, пришло время протестировать музыкальную программу способную поддерживать MIDI устройства. Сначала переведём Arduino в MIDI режим, для этого:

    1. Загрузим финальный код в Arduino.
    2. Извлечем USB кабель с Arduino.
    3. Переключим Arduino в МIDI режим удалив перемычку с выводов ISCP.
    4. Установим USB кабель в Arduino.

    Если всё прошло успешно, откройте музыкальную программу и начните прикасаться к штырькам. Магические звуки должны зазвучать….

    Шаг 11: Припаиваем скрепки на джампепы

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

    Процесс припайки скрепок к проводам довольно прост:

    1. Отрезаем штекер с одной стороны провода;
    2. Зачищаем провод от изоляции на 5 мм;
    3. Припаиваем зачищенный провод к скрепке;
    4. Повторяем для всех 12 скрепок.

    Примечание: Скрепки не должны быть покрыты никаким покрытием (краской или пластиком).

    Шаг 12: Закрашиваем шаблон

    Хотя и можно играть на Arduino MIDI клавиатуре только прикасаясь к скрепкам, гораздо интереснее, сделать свой собственный трафарет и использовать его. Раскрасил распечатанный шаблон. Шаблон находится в архиве с проектами.

    Раскрашивание шаблона довольно простое занятие, только убедитесь в том, что оставляете пространство между линиями и используете соответствующие краски, иначе ничего работать не будет. После того, как краска высохнет, закрепите скрепки на «клавишах» и можете приступать творить музыку.

    Спасибо за внимание!)