Напольный midi контроллер своими руками. Динамическая MIDI клавиатура на PIC16F84

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

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

Что представляет собой MIDI-контроллер?

В далеких 80-х годах такое устройство, как контроллер, использовалось для того, чтобы музыкант мог управлять работой сразу нескольких синтезаторов с помощью одной клавиатуры. Эта идея имела успех, поэтому приборы данного типа моментально получили распространение. Если тогда приобрести их мог не каждый, то на данный момент контроллеры сильно снизились в цене. Музыканты, звукорежиссеры, авторы песен, исполнители, диджеи - все используют подобные устройства.

Что же собой представляет прибор, который имеет клавиатуру. Она похожа на клавиши пианино и синтезатора. К ней добавлены ручки, различные кнопки и ползунки. При взаимодействии с ними мелодия передается на звуковые модули, которые имеют внешний тип. Речь идет о ноутбуках и других устройствах. Иными словами, контроллеры (большинство из них) не способны самостоятельно издавать звук. Они созданы для регулирования битов, нот и других параметров, воспроизводимых с постороннего устройства (звукового модуля).

Какие плюсы имеет MIDI-контроллер? Самые очевидные: он универсален и портативен. Благодаря ему, можно применять все виртуальные эффекты и управлять современным программным обеспечением. Переносить его легко с помощью, например, сумки для портативного компьютера.

На что обратить внимание при покупке?

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

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

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

В том случае, если музыкант редактирует треки в постели, самолете, машине или другом месте, то главным нюансом при выборе будет портативность. Учитывая, что прибор работает от питания, нужно обратить внимание на те, которые способны заряжаться от шины USB.

MIDI-контроллеры от Pioneer

MIDI-контроллер Pioneer - прибор, который всегда пользовался спросом. На рынке подобной техники данный производитель уже давно в тройке лидеров. Что же отличает «родственные» модели «Пионера» друг от друга? Всего лишь наличие дополнительных функций, которые на панели управления выглядят обычными механическими кнопками. Любой контроллер данной марки имеет отличные джоги. Внешний вид серьезный и элегантный. Внушительные размеры прибора компенсируются его максимальной функциональностью.

Не нужно задаваться вопросом о том, какую модель выбрать. Следует сразу присмотреться к DDJ-T1. Устройство советуют многие Соотношение цены и качества вполне удачное. Панель управления удобная, кнопки нажимаются без проблем, переносится аппарат легко.

Контроллер Novation Launchpad

MIDI-контроллер Novation Launchpad разработан специально для работы с Ableton Live. Устройство подходит как для деятельности на сцене, так и в домашней студии. С ним также будет легко проводить дискотеки. Сетка прибора состоит из 64 кнопок. Он оснащен дополнительными эффектами, а также функциями для работы с программным обеспечением. К компьютеру устройство можно подключить через работает как с семейством «Виндовс», так и с некоторыми другими операционными системами.

MIDI-контроллер своими руками - реальность или миф?

Самодельные MIDI-контроллеры уже давно пользуются спросом. Что необходимо для воплощения задумки в жизнь? Нужна схема, по которой будет происходить спаивание и сборка устройства, бюджет, физик или электрик, разбирающийся в данной сфере.

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

Модель марки Akai

Компания Akai недавно выпустила новый контроллер, который получил название MPC Touch. В отличие от родственных приборов, данный имеет дисплей на 7-дюймов. Это значительно облегчает работу с ним. Отталкиваясь от отзывов, нужно сказать, что именно описываемая модель приводится в пример, когда речь идет о профессиональных контроллерах. Глядя на нее и рассматривая функционал, сразу отпадает вопрос о том, как выбирать подобное устройство. Программное обеспечение работает достаточно быстро и эффективно, проблемы не возникают, а сбои крайне редки.

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

В очередной раз играя на гитаре и управляя звуком через Peavey ReValver и прочие Amplitube, задумался о приобретении MIDI-контроллера. Фирменные устройства, вроде Guitar Rig Kontrol 3, стоят около 13 000 рублей, и обладают только напольным исполнением. То есть оперативно менять положения нескольких регуляторов весьма проблематично.

Различные контроллеры DJ направленности выглядели интереснее за счет обилия фейдеров и энкодеров. Решено было совместить приятное с полезным и сделать MIDI-контроллер самому.

Начальные требования: 2-7 фейдеров, столько же роторных потенциометров/энкодеров, около 10 кнопок, подключение по USB.

Далее стал выбирать компоненты. Arduino выбрал по причине наличия, в принципе можно использовать ту же ATmega32u4, STM, либо другой контроллер. Фейдеры и кнопки нашел в местном радиомагазине. Энкодер и потенциометры уже были когда-то куплены. Тумблеры нашел в гараже. Корпус решил изготовить из верхней крышки DVD плеера.

Комплектующие:

  • Arduino UNO R3 1 шт.
  • Фейдеры сп3-25а 5 шт.
  • Рот. потенциометры 3 шт.
  • Энкодер 1 шт.
  • Кнопки pbs-26b 16 шт.
  • Крышка от DVD 1 шт.
  • Тумблеры 2шт.

Сначала согнул корпус и пропилил в нем бормашиной отверстия под фейдеры:

Затем просверлил отверстия для тумблеров и рот. потенциометров, разметил положение кнопок. Так как сверла на 19 (да и соответствующего патрона для дрели) у меня не было, то отверстия для кнопок сверлил на 13, а затем увеличивал разверткой.

Основа готова, теперь можно думать, как подключать все это добро к Arduino. Во время изучения данного вопроса наткнулся на замечательный проект HIDUINO . Это прошивка для ATmega16u2 на борту Arduino, благодаря которой устройство определяется как USB-HID MIDI device. Нам остаётся только отправлять данные MIDI по UART со скоростью 31250 бод. Чтобы не захламлять исходники дефайнами с кодами MIDI событий, я воспользовался этой библиотекой .

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

Как видно из схемы кнопки подключил по матричной схеме. Задействованы встроенные подтягивающие резисторы ATmega328, поэтому логика инверсная.

Инициализация кнопок

for(byte i = 0; i < COLS; i++){ //--Конфигурируем строки мтрчн клвтр как выходы pinMode(colPins[i], OUTPUT); //--подаём на них лог. 1 digitalWrite(colPins[i], HIGH); } for(byte i = 0; i < ROWS; i++){ //--Конфигурируем столбцы мтрчн клвтр как входы--------- pinMode(rowPins[i], INPUT); //--включаем встроенные в мк подтягивающие резисторы-- digitalWrite(rowPins[i], HIGH); }

Считывание значений

for(byte i = 0; i < COLS; i++) //-Цикл чтения матричной клавиатуры----- { digitalWrite(colPins[i], LOW); //--На считываемый столбец выставляем 0--- for(byte j = 0; j < ROWS; j++) //--Построчно считываем каждый столбец-- { //--И при нажатой кнопке передаём ноту-- dval=digitalRead(rowPins[j]); if (dval == LOW && buttonState[i][j] == HIGH) MIDI.sendNoteOn(kpdNote[j][i],127,1); if (dval == HIGH && buttonState[i][j] == LOW) MIDI.sendNoteOff(kpdNote[j][i],127,1); buttonState[i][j] = dval; } digitalWrite(colPins[i], HIGH); }




Забыл разместить на печатке диоды, пришлось подпаивать к кнопкам.

Потенциометры подключены через мультиплексор 4052b к вводам АЦП.

Считывание положений потенциометров

for(byte chn = 0; chn < 4; chn++) //-Цикл чтения значений потенциометров { set_mp_chn(chn); //--Задаём параметры мультиплексора val=analogRead(0) / 8; //--Считываем значение с канала X if (abs(val-PrVal) > 5) //--Если текущее значение отл. от прошлого { //--больше чем на 5, то посылаем новое значение MIDI.sendControlChange(chn,val,1); PrVal=val; } val=analogRead(1) / 8; //--Считываем значение с канала Y аналогично X if (abs(val-PrVal) > 5) { MIDI.sendControlChange(chn+4,val,1); PrVal=val; } }


Энкодер повесил на аппаратное прерывание.

Считывание энкодера

void enc() // Обработка энкодера { currenttime=millis(); if (abs(ltime-currenttime)>50) // антидребезг { b=digitalRead(4); if (b == HIGH && eval<=122) eval=eval+5; else if (b == LOW && eval>=5) eval=eval-5; MIDI.sendControlChange(9,eval,1); ltime = millis(); } }


Печатную плату развёл в Sprint layout, Затем изготовил старым добрым ЛУТ"ом с использованием самоклеющейся плёнки и хлорного железа. Качество пайки страдает от ужасного припоя.

Готовый шилд:



Для заливки прошивки в ATmega32u4 я кратковременно замыкал 2 пина ICSP, затем использовал Flip . В дальнейшем подключил к этим пинам кнопку.

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

  • 1. В качестве фона картинки выставлялась миллиметровка
  • 2. Размечались отверстия
  • 3. Полученное выводилось на печать
  • 4. Вырезались все отверстия
  • 5. Откручивались и снимались все элементы
  • 6. Устанавливалась панель, устанавливались на места все кнопки/потенциометры
  • 7. Отмечались несоответствия шаблона и корпуса
  • 8. Переход к пункту 2, пока все отверстия не совпадут
Панель изготовлена из миллиметрового ПЭТ, покрытого плёнкой с принтом и ламинированием, отверстия вырезались лазером по cdr файлу. У иркутских рекламщиков все это обошлось мне всего в 240 рублей.

Боковые стенки выпилил из фанеры.

Вид устройства на текущий момент:

Стоимость комплектующих:

  • Arduino UNO R3 320 р.
  • Фейдеры сп3-25а 5х9=45 р.
  • Рот. потенциометры + ручки 85 р.
  • Энкодер 15 р.
  • Кнопки pbs-26b 16х19=304 р.
  • Панель 240 р.
  • Мультиплексор 16 р.
  • Фанера, текстолит, тумблера, корпус от DVD - в моём случае бесплатно.
Итого: 1025 руб.

Контроллер справляется с возложенными на него задачами и рулит звуком практически в любой программе аудио обработки.

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

Код для Arduino и печатка на гитхабе.

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

На современном рынке представлено огромное количество разнообразных MIDI-контроллеров электронных установок, различающихся по всевозможным критериям, таким как цена, качество, технические характеристики и т.д. Так же существует несколько законченных пользовательских устройств, которые реализованы как коммерческие проекты (eDrum, megaDrum). Но, не смотря на все это, желание создать подобное устройство своими руками по прежнему живет в умах современных Кулибиных.

Так и я несколько лет назад с небольшим запозданием загорелся созданием подобного устройства, так как принимал участие в музыкальной группе тяжелого направления. Мы играли тяжелый рок, а точнее что-то типа brutaldeath, goregrind, grindcore. Я играл на электрогитаре. Немногим ранее мы прикупили барабанную установку Sonor и шумели по вечерам в гараже. Позже с гаража нас попросили, и встал вопрос о помещении. Ничего путного не найдя, мы решили репетировать дома, что сразу привело к конфликту с соседями. Тут и встал вопрос об электронных барабанах.

Параллельно игре на живых инструментах я занимался написанием электронной музыки и использовал VST инструменты и плагины, в частности для создания ударных партий я отдавал предпочтение Addictive drums и ezDrums, которые имеют возможность работать с MIDI-интерфейсом. Даже не погуглив данную тему, я с головой окунулся в разработку собственного MIDI-контроллера на доступном микроконтроллере ATMega32 в DIP-корпусе, который имел на борту 8 ацп каналов. Городить схему не хотелось, и я решил ограничиться 8-мью входами. Так как аппаратного usb у ATMega32 нет, я использовал стандартное подключение к компьютеру через virtual usb. Повозившись несколько дней с программированием мне удалось запустить устройство. Каково же было мое удивление, когда в интернете я обнаружил готовое устройство со схемой и прошивкой (MegaDrum). Но все что не делается – все к лучшему.


Полноценный USB

По специальности я программист, но по роду деятельности я программист-электронщик, кандидат технических наук, и как говаривал мой бывший научный руководитель – и швец, и жнец, и на трубе дудец. Как это часто водится, я зациклился на AVR-ках, не потому что питал к ним чувства, а потому что по работе они полностью устраивали своими техническими характеристиками. Но пришло то время, когда их стало не хватать. И тогда на смену пришел stm32, помимо всего прочего, имеющий на борту полноценный usb интерфейс. Тут то и пришла мысль сделать полноценный MIDI-контроллер. К тому же опыт работы с MIDI-интерфейсом у меня уже был.

С чего начать? stm32 в DIP корпусах у нас не водились (если они вообще есть в природе), поэтому идея паять на монтажной плате сразу отпала. Как раз тогда стали появляться дешевые отладочные платы на базе микроконтроллеров stm32, такие как DISCOVERY. И вот я счастливый обладатель отладочной платы STM32F407DISCOVERY, имеющей в своем составе сразу и программатор ST-Link. Процессор STM32F407 имеет 16-каналов ацп, правда 4 канала заняты под периферию, которой просто нафарширована отладочная плата. Но для моих целей 12 каналов было достаточно.


Потратив какое то время на изучение среды программирования Keil, архитектуры микропроцессора STM32F407 а так же стандартных библиотек периферии для работы с USB я накидал программку опроса всех каналов АЦП с использованием канала прямого доступа к памяти, а так же композитного USB устройства, которое включает в себя MIDI Audio Device и HID для изменения настроек устройства.

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


Схему обвязки взял от MegaDrum.


Управляющую программу написал на Delphi сразу с запасом в 16 каналов. В принципе количество каналов устройства можно увеличивать до бесконечности, путем дополнения схемы аналоговыми мультиплексорами, как это и сделано в Megadrum, но для наших целей достаточно и 16 каналов, так как мы не такие продвинутые музыканты. А для начинающего барабанщика такого количества барабанов будет просто за глаза.


Устройство тестировалось как в Windows, так и в Linux с использованием трекера Renoise. Особых проблем в работе обнаружено не было.
Но на этом результате я решил не останавливаться. STM32F407 достаточно навороченный процессор, поэтому относительно не дешевый. Дешевле было сделать устройство на STM32F103. На помощь пришел ebay. Я купил отладочную плату с STM32F103RBT6 на борту.


Правда в ее составе нет встроенного программатора. Мне повезло, так как у меня остался от предыдущей работы программатор ST-Link.


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

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

Однако, все новые материнские платы идут с встроенным звуковым контроллером, да и на звуковых картах зачастую отсутствует возможность подключения MIDI-устройств.
Остается либо покупать современную MIDI-клавиатуру, ди-джейский пульт и т.п. с USB выходом подключения к компьютеру, либо покупать/паять переходник, или же покупать специальную звуковую карту с возможностью подключения MIDI-устройств. Купить конечно не проблема, но мы же на этом сайте не для этого собрались, верно?

В данной статье я хочу показать, как можно на недорогом контроллере Arduino изготовить простейшую MIDI-клавиатуру с USB-подключением на 8 клавиш и колесом прокрутки.

Итак, я использовал:
контроллер Arduino UNO
8 шт. кнопок
8 резисторов 10 кОм
поворотный энкодер 25LB22-Q
макетная плата и перемычки

Схема подключения следующая:

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

Программное обеспечение Arduino

Структуру MIDI-данных я не буду рассматривать, т.к. это описано в статье:

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

В данном проекте энкодер используется как колесо прокрутки для изменения модуляции (modulation wheel), однако его можно переназначить и для других целей (pitch bend и т.п.).

MIDI-данные от энкодера, с Arduino посылаются следующей строкой:
noteOn(0xB0, 0x01, encoder0Pos);
где 0xB0 - сообщение контроллера (control change)
0x01 - код контроллера (в нашем случае Modulation)
encoder0Pos - значение контроллера (в нашем случае 0-127).
Меняя коды контроллера вы можете использовать колесо прокрутки (энкодер) для самых разных контроллеров.

Отдельно стоит упомянуть Pitch Bend. Из спецификации MIDI следует, что необходимо послать сообщение из трех байт: 0xE0 (код Pitch Bend), MSB (старший байт), LSB (младший байт).

Два крайних байта хранят 14-битное значение pitch которое может лежать в пределах 0...16383 (0x3FFF). Середина находится 0x2000, все что выше этого значения - происходить изменение высоты тона вверх, если ниже, то высота тона изменяется вниз.
В коде программы я закомментировал строчки если вы вдруг вместо modulation захотите использовать Pitch Bend (середина значения, разложение на 2 байта и др.)

Код определения нажатия клавиши включает в себя три состояния: клавиша нажата, клавиша удерживается и клавиша отпущена. Сделано это для того, чтобы можно было передавать значение длительности нажатия клавиши. Если это не нужно, то можно оставить только одно состояние (нажатие клавиши), программа в данном случае существенно упростится.
Для обработки состояния каждой из восьми клавиш, используется следующий код:

If (buttonState_C == HIGH && note_C_send_on == false) // Нажатие клавиши { noteOn(0x90, note_C, 0x7F); note_C_send_on = true; // Команда Note On послана note_C_send_off = false; // Команда Note Off не послана } else if (buttonState_C == HIGH && note_C_send_on == true) // Если клавиша удерживается { noteOn(0x00, note_C, 0x7F); note_C_send_on = true; note_C_send_off = false; } else if (buttonState_C == LOW && note_C_send_off == false) // Если клавишу отпустили { noteOn(0x90, note_C, 0x00); note_C_send_on = false; note_C_send_off = true; encoder0Pos = 0; // Возвращаем позицию колеса в ноль } ....... ....... ....... // Функция посылки MIDI-сообщения в последовательный порт void noteOn(int cmd, int pitch, int velocity) { Serial.write(cmd); Serial.write(pitch); Serial.write(velocity); delay(20); }

Обратите внимание, что если будет использоваться pitch bend, то encoder0Pos нужно будет возвращать не в ноль, а в 0x2000 (а лучше задать define в начале программы).

Итак, схема собрана, скетч в контроллер залит, запускаем Serial Monitor, меняем скорость передачи на 115200 и нажимая клавиши или крутя энкодер смотрим значения.
Если все нормально, то переходим к следующей части. Сразу скажу, что для меня она оказалось самой проблемной, и если бы я не нашел виртуального USB -> Midi конвертора, то этой статьи не было бы.

Программное обеспечение ПК (Windows)

Для того, чтобы принимать данные через USB виртуальный COM-порт от Arduino и передавать их в какую-либо программу MIDI-секвенсор, необходима специальная утилита: Serial MIDI Converter V2D (оф. сайт)

Программа мультиплатформенная, у меня заработала под Windows 7 x64, правда с некоторыми тормозами.

Запускаем ее, выбираем порт USB, скорость передачи (115200) и MIDI Input Port и MIDI Output Port.

Теперь, все те MIDI-данные, которые поступают на USB виртуальный СОМ-порт 12 перенаправляются на порт MIDI Yoke 6 (для создания виртуальных MIDI портов я воспользовался программой MIDI Yoke). Можно перенаправить их на Microsoft GS Wavetable Synth и др. порты.
Программа постоянно должна быть включенной. При нажатии клавиш или повороте ручки энкодера, внизу должен мигать индикатор Serial RX.

Для визуального отображения поступающих MIDI данных с порта мне очень пригодилась программа MIDI-OX (оф. сайт):

Обратите внимание, что в настройках MIDI Devices необходимо выставить порт MIDI Input.

Теперь, нажимая клавиши нот или вращая колесо, в Monitor-Output вы увидите MIDI-данные.

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

Ниже вы можете скачать скетч INO, Serial MIDI Converter V2D, MIDI-OX и MIDI Yoke

Мне давно хотелось разбудить в себе композитора и начать творить свою собственную электронную музыку. Однако я был (мягко говоря) обескуражен высокими ценами на 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 клавиатуре только прикасаясь к скрепкам, гораздо интереснее, сделать свой собственный трафарет и использовать его. Раскрасил распечатанный шаблон. Шаблон находится в архиве с проектами.

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

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