Оглавление:

(почти) Универсальный программатор MIDI SysEx CC (и секвенсор ): 7 шагов (с изображениями)
(почти) Универсальный программатор MIDI SysEx CC (и секвенсор ): 7 шагов (с изображениями)

Видео: (почти) Универсальный программатор MIDI SysEx CC (и секвенсор ): 7 шагов (с изображениями)

Видео: (почти) Универсальный программатор MIDI SysEx CC (и секвенсор ): 7 шагов (с изображениями)
Видео: Eleven Rack — автоматическая смена буровой установки 2024, Июль
Anonim
(почти) Универсальный программатор MIDI SysEx CC (и секвенсор…)
(почти) Универсальный программатор MIDI SysEx CC (и секвенсор…)
(почти) Универсальный программатор MIDI SysEx CC (и секвенсор…)
(почти) Универсальный программатор MIDI SysEx CC (и секвенсор…)

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

Сами производители и сторонние компании реализовали дополнительные коробки, полные регуляторов и / или ползунков, чтобы вы могли фактически «поиграть» со своими синтезаторными тонами, но в настоящее время они по глупости завышены, и, как всегда, мы вынуждены сами искать дешевые решения;)

Этот проект возник из-за моей потребности легко программировать патчи для некоторых из моих последних синтезаторов: Roland Alpha Juno 2 и JX8P. Он начинался как простой контроллер SysEx, затем он вырос у меня и стал чем-то более сложным, с поддержкой других синтезаторов (Korg DW8000, Oberheim Matrix 6 / 6R, SCI MAX) и встроенного секвенсора.

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

Шаг 1. Что это такое (а что нет…)

Что именно это (а что нет…)
Что именно это (а что нет…)
Что именно это (а что нет…)
Что именно это (а что нет…)
Что именно это (а что нет…)
Что именно это (а что нет…)

Контроллер MIDI SysEx и Control Change здесь по сути представляет собой MIDI-контроллер с 16 регуляторами (потенциометрами) и 4 кнопками. Скетч по умолчанию обрабатывает три «страницы», всего 48 параметров синтезатора.

Я сделал контроллер совместимым с MIDI-сообщениями смены управления (простой и «глобальный» тип MIDI-сообщений, широко используемых производителями синтезаторов, особенно с 90-х годов) и SysEx-сообщениями (другой тип MIDI-сообщений, менее общий и сильно специфичный для синтезатора. использовался в 80-х).

В частности, контроллер по умолчанию совместим с:

- Роланд Альфа Джуно (1/2)

- Роланд JX8P

- Korg DW8000

- Oberheim Matrix 6 / 6R (прошивка> 2.14)

- Последовательные схемы MAX / SixTrak.

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

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

Расположение параметров тембра со всеми этими числами может сначала сбить с толку, но оно не «случайное», как могло бы выглядеть: оно соответствует порядку, указанному производителем в таблице реализации MIDI. Это был выбор дизайна, чтобы код оставался простым и «универсальным».

Вы можете скачать листы с изображениями с «макетом» 4x4, который я реализовал для Alpha-Junos, JX8P, DW8000, Matrix 6 и MAX / SixTrak на этой странице: синие параметры - это те параметры, которые вы можете настроить на странице 1, черные - на странице 2 и оранжевые те, что на странице 3.

Даже если у контроллера нет экрана, игра с синтезаторами, которые показывают вам, какой параметр настраивается в реальном времени, делает процесс создания патча радостью. Например, JX8P и Matrix 6 способны на это; Alpha Juno, напротив, не показывает вам изменяемый параметр и немного усложняет задачу (но создание отличных патчей определенно выполнимо и проще, чем при использовании встроенного интерфейса без кнопок); DW8000 имеет только числовые дисплеи, но вы можете видеть свои настройки в реальном времени, поэтому он находится между ними.

А что там с кнопками?

Ну, первый (верхний левый в моем макете) предназначен для просмотра страниц: переходите к следующей странице параметров при каждом нажатии кнопки. Светодиоды укажут, на какой странице вы находитесь.

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

Третий - для вторичной функции: рандомизатор / патчер! Поверните до упора против часовой стрелки регуляторы, на которые вы хотите, чтобы параметр, на который они воздействовали, зафиксировался на минимальном значении (например, LFO осциллятора, огибающая осциллятора и т. Д.), Или поверните полностью по часовой стрелке, чтобы максимизировать значение (т. Е. Громкость микширования осциллятора, громкость VCA и т. Д.), И нажмите кнопку, чтобы начать процесс рандомизации для всех остальных параметров.

Четвертая кнопка предназначена для активации пасхального яйца (вроде…), которое я вставил в код после того, как заметил, что макет идеально подходит для… 16-ступенчатого MIDI-секвенсора! Точно: нажмите четвертую кнопку (кнопка MODE), контроллер войдет в «режим секвенсора», и вам будет разрешено запускать ноты так же, как это делали старые аналоговые секвенсоры. Отлично!

Нажмите кнопку MODE еще раз, чтобы вернуться в режим контроллера / патчера.

А как насчет этих светодиодов?

Каждой кнопке соответствует 4 светодиода (справа от каждой кнопки в моем макете); эти светодиоды имеют несколько заливных патрубков:

1) они сообщают вам, на какой странице параметров вы находитесь (верхний светодиод горит, когда вы находитесь на странице 1, светодиод внизу горит, когда страница 2 активна, светодиод 3 горит… вы сами это поняли). Мы ограничены банкоматом на 3 страницы, но код можно легко настроить для обработки большего количества страниц;

2) второй светодиод указывает на страницу параметров 2 И горит, когда микроконтроллер отправляет предыдущий патч (вызов патча);

3) третий светодиод указывает на страницу параметров 3 И горит во время процесса рандомизации.

Четвертый светодиод ничего не делает в режиме MIDI-контроллера и используется для глобального изменения РЕЖИМА.

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

Шаг 2: «Скрытый» 16-шаговый секвенсор

В
В

Как уже было сказано, во время тестирования контроллера я понял, что было бы здорово запустить последовательность нот, чтобы я мог настраивать параметры синтезатора и иметь лучшее представление о конечном эффекте на тон. У меня есть программный секвенсор (мне так нравится seq24!), Но это оборудование - почти ИДЕАЛЬНЫЙ 16-шаговый секвенсор! Тогда для его реализации оставалось только кодировать.

Вы можете переключаться между режимом контроллера и режимом секвенсора, нажимая кнопку №4 (кнопка MODE).

В режиме секвенсора кнопки работают по-другому, а светодиоды сообщают вам новую информацию:

- первая кнопка (кнопка SHIFT) при нажатии позволяет изменять темп, длину ноты, каналы и октаву; значение темпа задается положением первого потенциометра, длина ноты вычисляется из второго положения потенциометра, MIDI-каналов - из третьего и четвертого положений потенциометра и октавы (от -1 o до +2) из пятого потенциометра. Вы можете управлять темпом от 40 ударов в минуту (поверните потенциометр №1 до упора против часовой стрелки, удерживая кнопку №1 нажатой) до почти 240 ударов в минуту (поверните потенциометр №1 до упора по часовой стрелке, удерживая кнопку №1 нажатой). Вы можете установить длину нот на половинную, четвертную, восьмерную, шестиступенчатую, повернув горшок № 2, удерживая нажатой кнопку SHIFT. Вы можете установить MIDI-каналы (первичный канал и вторичный канал) от 1 до 16. Диапазон основных нот (от C2 до F # 4) можно уменьшить на одну октаву или увеличить на одну или две октавы.

По умолчанию темп установлен на 120 ударов в минуту, а длина ноты - на четверть.

- вторая кнопка запускает и останавливает последовательность нот. Как было сказано, если вы измените режим, нажав кнопку № 4 (РЕЖИМ) во время выполнения последовательности, вы войдете в режим контроллера, но последовательность будет продолжать выполняться.

- третья кнопка - ПАНИКА! При нажатии все ноты будут отключены.

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

В режиме секвенсора, если вы нажимаете кнопку выбора режима, удерживая нажатой кнопку №1 (SHIFT), вы можете переключаться между 3 различными режимами последовательности:

1 - 16 шагов моно последовательности

2-16 шагов поли-последовательности: также запускаются ноты на октаву ниже, чем те, которые определены горшками (это истощает 2 голоса на долю)

3–8-ступенчатая поли-последовательность, двухканальная: две параллельные 8-ступенчатые последовательности отправляются на два разных канала (по умолчанию - CH1 и CH2); установив одинаковое значение для основного и второго каналов, можно получить две параллельные 8-ступенчатые последовательности, воспроизводимые одним и тем же (полифоническим) синтезатором.

О светодиодах: как только вы войдете в режим секвенсора, загорятся все четыре светодиода. Когда вы запускаете последовательность, светодиоды будут следовать последовательности (или последовательностям). Я разместил один светодиод на каждые четыре потенциометра, и мне этого достаточно. Было бы просто изменить эскиз так, чтобы он работал с 16 светодиодами, по одному на каждую тысячу шагов.

В пошаговом секвенсоре отсутствуют функции, которые кому-то могут понадобиться: синхронизация MIDI IN, удержание шагов (можно только отключить шаг), выход CV.

Я реализовал часы OUT, но в какой-то степени глючит. Я пробовал два подхода для этого (один с прерыванием таймера и один без прерывания), но оба они были несовершенными (или полностью провалились). MIDI-часы должны быть идеальными, чтобы работать в долгосрочной перспективе. Тактовый сигнал все равно отправляется, и вы можете отключить его прямо на скетче (подробности см. Ниже).

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

Шаг 3. Необходимое оборудование и сборка

Необходимое оборудование и сборка
Необходимое оборудование и сборка
Необходимое оборудование и сборка
Необходимое оборудование и сборка
Необходимое оборудование и сборка
Необходимое оборудование и сборка
Необходимое оборудование и сборка
Необходимое оборудование и сборка

После всех этих слов позвольте повеселиться!

Мы идем по пути, обычному для Arduino. Я использовал Arduino MEGA из-за большого количества аналоговых входов (нам нужна коробка, полная круглых ручек, не так ли?:)).

В частности, Arduino MEGA может обрабатывать 16 аналоговых входов (с некоторой аппаратной настройкой, то есть путем мультиплексирования, вы можете увеличить это значение, но мы не будем здесь идти по этому пути), поэтому мы собираемся отправить 48 MIDI-сообщений через 16 потенциометров. Затем каждый потенциометр будет управлять тремя параметрами, по одному для каждой «страницы»; страницы выбираются кнопкой переключателя.

Список оборудования:

- 1x Arduino MEGA

- 16 линейных однооборотных потенциометров 10 кОм

- 16x ручек для посуды

- 4 кнопки мгновенного действия

- 4x светодиода

- резистор 6х 220 Ом

- 1x MIDI-разъем

- 1x коробка для проектов из АБС-пластика

Немного кабеля, припоя и шесть - восемь часов свободного времени.

Я использовал перфорированную плату и несколько контактных разъемов, чтобы создать своего рода экран, на который я припаял резисторы и направил кабели. Это дает возможность вынуть свой Arduino и использовать его для других проектов (в какой-то момент у всех нас заканчиваются платы Arduino!). В любом случае это не обязательно, и другим хорошим подходом может быть демонтаж контактных разъемов Arduino MEGA и припайка кабелей прямо на месте.

Я использовал резисторы на 200 Ом вместо резисторов 220 Ом, и они в любом случае работают идеально; Я готов поспорить, что даже резисторы на 150 Ом отлично подойдут (как для связи по MIDI, так и для светодиодов).

Чтобы придать форму коробке, я сначала приложил немного специальной бумаги к поверхности коробки, измерил, где должны быть просверлены отверстия (у меня было 3 см от отверстия до отверстия, чтобы все горшки поместились), сделал направляющие отверстия, а затем увеличил вправо. размер, чтобы пропустить нитку для горшков или пуговиц с помощью мини-дрели. Я потратил на доработку коробки более-менее 2 часов. Я тоже сделал маленькие дырочки и приклеил светодиоды на место.

Я также просверлил отверстие для разъема MIDI OUT и еще одно для разъема питания Arduino (я использовал непосредственно встроенный разъем питания USB и надежно зафиксировал Arduino MEGA на месте).

ВНИМАНИЕ: всегда ВСЕГДА надевайте защиту для глаз и рук во время сверления, независимо от материала, с которым вы работаете (пластик, дерево, металлы, композиты … это не имеет значения: вы подвергаетесь риску как в отношении электроинструмента, так и стружки материала, подвергшегося эрозии / обжигу от движущегося инструмента).

Затем я разместил все горшки и кнопки и спаял компоненты, как показано на прилагаемом рисунке. Эффективный способ уменьшить вес конечного объекта (и длину кабелей) - это последовательно подключить все потенциометры как к линии 5 В, так и к линии заземления.

И прежде чем кто-нибудь спросит: я знаю, что коробка, которую я использовал, уродлива! Но это было бесплатно и ничто не сравнится с бесплатным:)

Шаг 4: Подключение

Проводка
Проводка

Подключить все просто, достаточно подключить потенциометр (x16), кнопку (x4) и светодиод (x4) к плате микроконтроллера Arduino. Здесь описаны все основы Arduino:)

Прилагается проводка. Заметить, что:

- Используются все аналоговые пины (от A0 до A15), по одному на каждый потенциометр;

- используются 4 цифровых пина (входа) (начиная с D51, D49, D47, D45), по одному на каждую кнопку;

- остальные 4 цифровых пина (выхода) используются для светодиодов (D43, D41, D39, D37);

- Подключение MIDI-выхода очень простое и требует двух резисторов 220 Ом (но до 150 Ом будет работать)

- Для кнопок не требуются подтягивающие резисторы, так как эскиз активирует внутренние подтягивающие резисторы Arduino.

- Каждый светодиод запрашивает текущий ограничивающий резистор (200-220 Ом подходят для зеленых светодиодов).

Я использовал перечисленные цифровые контакты для удобства, но они не являются «специальными» контактами (здесь мы не используем возможности PWM некоторых контактов или какую-либо другую особенность контактов): вы можете установить свои любимые цифровые контакты, но не забудьте изменить код соответственно или ваши кнопки / светодиоды не будут работать!

Обратите внимание, что соединение MIDI OUT на картинке - это вид СПЕРЕДИ (не вид сзади).

Шаг 5: Программное обеспечение - некоторая ссылка на теорию

Я не собираюсь объяснять всю теорию сообщений System Exclusive или Control Change, потому что есть много хороших статей и глупо переписывать то, что уже было написано.

Просто быстрая ссылка для реализации Roland SysEx:

- https://erha.se/~ronny/juno2/Roland%20Juno%20MIDI%2… (АНГЛИЙСКИЙ)

- https://www.2writers.com/eddie/tutsysex.htm (АНГЛИЙСКИЙ)

- https://www.chromakinetics.com/handsonic/rolSysEx.h… (АНГЛИЙСКИЙ)

- https://www.audiocentralmagazine.com/system-exclusi… (ИТАЛИАНО)

и некоторая ссылка на MIDI в целом:

-

-

Шаг 6: Программное обеспечение - Эскиз

Здесь прилагается эскиз, который вы должны загрузить на свою Arduino Mega.

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

Код / эскиз / прошивка по умолчанию поддерживает "только" 48 параметров (три страницы по 16 регуляторов каждая), поэтому невозможно контролировать все MIDI-сообщения, поддерживаемые вашим синтезатором (подумайте о Access Virus или Novation Supernova: они принимают больше или менее 110 MIDI-совместимых параметров). При необходимости вы можете легко изменить эскиз для поддержки большего количества сообщений.

Фактически поддерживаются сообщения SysEx, совместимые с Roland Alpha-Juno, JX8P, Korg DW8000 и Oberheim Matrix 6. Я оставил код для сообщений, совместимых с Juno 106, на случай, если вам это понадобится.

Для Matrix 6 мне нужно было выбрать параметры для управления. Я не учел третий конверт, вторую рампу и еще кое-что. Матрицей все равно нельзя управлять по MIDI, так что ее тоже нет. Вам нужна обновленная прошивка (версия 2.14 или выше), и вы должны установить для параметра «Master -> Sysex Enable» значение «3».

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

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

Как всегда: помните, что я не программист в реальной жизни, и наверняка есть лучшие способы кодировать то, что нам здесь нужно. Если вы программист и у вас есть предложения, милости просим! Пожалуйста, пришлите мне любые вариации, которые могут повысить эффективность / действенность кода, и я включу их в основной набросок (очевидно, со ссылкой на автора!).

Я всегда узнаю что-то новое, читая хороший код программиста;)

Шаг 7: Связанные проекты

Насколько мне известно, нет контроллера параметров MIDI и секвенсора (может быть, старый Behringer BCR2000 с модифицированной прошивкой?)

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

- Редактор CTRL MIDI: это великолепная бесплатная программа с открытым исходным кодом, работающая на win / Linux / mac, которая может превратить ваш компьютер в полноценный контроллер для синтезаторов SysEx.

- Конвертер CC "junosex" Дэвида Консумера: этот проект требует незначительной работы с аппаратным обеспечением с вашей стороны, и идея отличная - конвертер CC на SysEx на основе Arduino, который позволяет вам использовать обычный MIDI-контроллер, не относящийся к SysEx (например, мастер-клавиатуру AKAI MPK.), чтобы говорить с вашим синтезатором, совместимым с SysEx

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