Arduino

и не только...

YouTube Instagram TikTok Telegram VK

Midi-клавиатура из старого синтезатора

Введение

Синтезатор casio

Попался давеча мне на глаза мой старый детский синтезатор. Ему уже лет 30, а из поломок - только замена блока питания, все остальное работает, а главное что клавиши у него оказались неубиваемые. Однако ни мне, ни моим детям он уже не нужен - для серьезного занятия музыкой было куплено электронное пианино на 7 октав (к слову тоже casio). Хотел я его уже отнести не помойку, но подумал: а не сделать ли мне из него midi-клавиатуру?

Что же такое midi-клавиатура и чем она отличается от синтезатора

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

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

Midi клавиатура

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

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

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

Синтезатор

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

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

Выбор платформы

Для реализации задуманного была выбрана плата Arduino Pro Micro, так как она имеет встроенный USB Host при подключении к ПК она определяется как USB-устройство, например как клавиатура.

Arduino Pro Micro

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

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

Схема клавиш

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

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

Открытый синтезатор

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

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

Открытый синтезатор

Программирование

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

Полный код прошивки выложен на github.

При написании кода было найдено несколько midi библиотек для Arduino, из которых была выбрана Control_Surface как наиболее функциональная и хорошо работающая.

Сам код максимально прост и в пояснениях, как мне кажется, не нуждается.

Итог

В итоге у нас получилось полностью функциональная midi-клавиатура, которую можно использовать с DAW-программным обеспечением, например, с моей любимой FL Studio, или с любым другим. Однако при желании всегда можно найти, что улучшить. Мы никак не использовали остальные кнопки синтезатора. А на Arduino контроллере еще есть свободные пины для них. Я бы реализовал как минимум такой функционал, как управление громкостью, сдвиг октав, а также pitch band и modulation. Эти функции есть на многих midi-клавиатурах и поддерживаются почти всеми DAW-программами как говориться "из коробки". Ну а остальное по желанию - например барабаны и тд.

И еще одно пояснение: многие midi-клавиатуры реагируют на скорость нажатия на клавиши и проигрывают звук тем громче, чем быстрее нажата клавиша. В нашей самоделке этого функционала нет по той причине, что его не было и синтезаторе-доноре. Для его реализации нужна возможность получения как начала нажатия клавиши, так и его завершения, что позволит посчитать время, прошедшее между ними, и вычислить скорость, передав пропорциональную ей velocity в midi-сигнале. Но midi-клавиатуру вполне можно использовать и без этого функционала.