• I






      
           

Научно-популярный образовательный ресурс для юных и начинающих радиолюбителей - Popular science educational resource for young and novice hams

Основы электричества, учебные материалы и опыт профессионалов - Basics of electricity, educational materials and professional experience

КОНКУРС
language
 
Поиск junradio

Радиодетали
ОК
Сервисы

Stock Images
Покупка - продажа
Фото и изображений


 
Выгодный обмен
электронных валют

Друзья JR



JUNIOR RADIO

Универсальный MIDI SYSEX CC PROGRAMMER, секвенсор и Arduino


 

В середине 80-х годов производители синтезаторов начали процесс «миниатюризации», который привел к использованию синтезаторов баребонов; это позволило снизить затраты, но сделало исправление tediuos, невозможным для конечного пользователя. Производители сами и сторонние компании добавляли блоки, чтобы позволить вам «играть» с вашими секциями синтезаторов. Этот проект исходил из моей необходимости легко программировать патчи на моих последних синтезаторах: Roland Alpha Juno 2 и JX8P.  В этой инструкции здесь я покажу вам, как реализовать свой собственный контроллер: дешевый инструмент, который эмулирует эти дорогостоящие блоки. Контроллер MIDI SysEx и Control Change - это по существу 16 ручек (потенциометры) и 4 кнопки MIDI-контроллера. Эскиз по умолчанию обрабатывает три «страницы», в общей сложности 48 параметров тона синтезатора. Я сделал контроллер совместимым с MIDI-сообщениями смены управления (простым и «глобальным» типом MIDI-сообщений, широко используемым производителями синтезаторов, особенно с 90-х годов) и сообщениями SysEx (другой тип MIDI-сообщения, менее общий и сильно синтетический используется, например, Роландом в 80-х годах).

 

 

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

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

- Roland Alpha Juno (1/2);

- Roland JX8P;

- Korg DW8000 (непроверенный и, вероятно, не работает!).

Являясь открытым исходным кодом проекта, очень легко поддерживать любой другой синтезатор по вашему выбору. Помните, что по умолчанию код / ​​эскиз / прошивка поддерживает «только» 48 параметров (три страницы по 16 ручек каждый), поэтому невозможно управлять всеми MIDI-сообщениями, поддерживаемыми вашим синтезатором (подумайте о вирусе Access или Novation Supernova: они принимать более или менее 110 MIDI-совместимых параметров). Вы можете легко изменить эскиз, чтобы поддерживать больше сообщений, если это необходимо. Вначале макет параметров тембра со всеми этими номерами может сбивать с толку, но он не «случайный», как мог бы выглядеть в некоторой степени; это следует за порядком диаграммы реализации производителя. Это был выбор дизайна, чтобы сохранить код простым и «универсальным». Вы можете скачать листы с 4x4 «макетами», которые я реализовал для Alpha-Junos и JX8P на этой странице: синие параметры - это те, которые вы можете настроить на странице 1, черные на стр. 2 и оранжевые на странице 3. Как насчет этих кнопок? Ну, первый (верхний левый в моем макете) предназначен для просмотра страниц: перейдите на страницу следующего параметра при каждом нажатии кнопки.Светодиоды укажут, на какой странице вы находитесь. Во-вторых, вы можете отправить патч, где вы работаете на синтезаторе (рисуйте его: вы сделали патч своей жизни, затем коснулись кнопки программы на синтетической поверхности и загрузился патч для конкретной кнопки ... вся ваша работа С этой кнопкой вы можете отправить все значения, которые программист запомнил во время последнего процесса исправления. Этот процесс восстановления патча не работает, если вы снова нажимаете рандомизатор, и это не эффективно, если вы не нажимали кнопку рандомизации хотя бы один раз Последний патч не сохраняется в памяти после выключения. Третий - для вторичной функции: рандомизатор / патчер ! Поверните полные против часовой стрелки ручки, на которые вы хотите, чтобы параметр, на который они воздействовали, блокировались до минимального значения (например, осциллятор LFO, огибающая осциллятора и т. Д.) Или поворачивались полностью по часовой стрелке, чтобы максимизировать значение (например, объем смесителя, объем VCA и т. Д.) И нажмите кнопку, чтобы начать процесс рандомизации всех других параметров. Четвертая кнопка заключается в том, чтобы активировать пасхальное яйцо (вроде ...). Я поместил его в код, заметив, что макет идеален для ...шестнадцатиступенчатого MIDI-секвенсора ! Точно: нажмите четвертую кнопку (кнопка MODE), контроллер войдет в режим «секвенсора», и вам будет разрешено запускать заметки аналогичным образом, как это делал старый аналоговый секвенсор. Ницца!Нажмите кнопку MODE еще раз, чтобы вернуться в режим контроллера / патчера. Как насчет этих светодиодов ? Есть 4 светодиода в соответствии с каждой кнопкой (справа от каждой кнопки в моем макете); эти светодиоды имеют несколько отражателей: 1) они сообщают вам страницу параметров, на которой вы находитесь (верхний светодиод горит, когда вы находитесь на стр. 1, светодиод внизу светится, когда страница 2 активна, светодиод 3 горит ... вы сами это поняли). Мы ограничены 3-х сторонним банком, но код можно легко настроить для обработки большего количества страниц; 2) второй светодиод показывает параметры страницы 2 И горит, когда микроконтроллер отправляет предыдущий патч (отзыв патча); 3) третий светодиод показывает параметры стр. 3 И горит во время процесса рандомизации. Четвертый светодиод ничего не делает в режиме MIDI-контроллера и используется для глобального изменения MODE. Все эти функции передаются как MIDI-сообщения, поэтому для того, чтобы быть эффективными, ваш синтезатор должен быть способен / разрешать прием и интерпретацию подобных сообщений! Как было сказано, при тестировании контроллера я понял, что было бы здорово, если бы последовательность заметок выполнялась так, чтобы я мог настраивать параметры синтезатора и лучше понимать окончательный эффект на тон. У меня есть программный секвенсор (мне так нравится seq24!), Но аппаратное обеспечение, которое требует контроллер sysex, - почти идеальный 16-ступенчатый секвенсор!Тогда это было всего лишь кодом для его реализации.

 

 

Вы можете переключаться между режимом контроллера и режимом секвенсера, нажимая кнопку # 4 (кнопка MODE); в то время как в режимах режима секвенсора работают по-разному, а светодиоды дают вам новую информацию:

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

- вторая кнопка запускает и останавливает последовательность заметок. Как сказано, если вы измените режим, нажав кнопку # 4 (MODE), во время выполнения последовательности вы войдете в режим контроллера, но последовательность продолжит работу.

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

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

В режиме секвенсора кнопка MODE имеет другое практическое применение. Если вы нажмете ее, удерживая нажатой кнопку # 1 (SHIFT), вы можете переключаться между тремя различными режимами последовательности:

1 - 16 ступенчатая моно последовательность

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

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

О светодиодах: как только вы войдете в режим секвенсера, все четыре индикатора загорятся. Когда вы начинаете последовательность, светодиоды будут следовать последовательности (или секвенциям). Я поместил один светодиод каждые четыре потенциометра и для меня достаточно хорош. Было бы просто изменить эскиз для обработки 16 светодиодов, по одному для каждого шага. Функции пропуска последовательности шагов, которые кто-то мог найти: MIDI sync IN, шаги (вы можете отключить только шаг), CV out. Я внедрил clock OUT, но каким-то образом ошибся. Я попробовал два подхода для этого (один с одним и без таймерных прерываний), но оба они несовершенны (или полностью сбой). MIDI-часы должны быть строго-идеальными для работы в долгосрочной перспективе. Сигнал синхронизации отправляется в любом случае, и вы можете отключить его непосредственно на эскизе (подробнее см. Ниже). Обратите внимание, что этот секвенсор шагов является MIDI или цифровым, если вы предпочитаете, поэтому для работы необходимо подключиться к синтезатору с MIDI IN, способным принимать и интерпретировать такие сообщения! После всех этих слов, пусть будет весело! Мы собираем обычным способом на Ардуино. Я использовал Arduino MEGA из-за большого количества аналоговых входов (мы хотим, чтобы коробка была полна knobby-ручек, не так ли ?!).

 

 

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

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

- 1x Arduino MEGA

- 16-кратный линейный однопоточный потенциометр мощностью 10 кОм

- 16-кратные регуляторы

- 4-кратные кнопки

- 4-кратный светодиод

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

- 1x разъем MIDI

- 1x блок проектов ABS

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

 

 

Использовал резисторы 200 Ом вместо резисторов на 220 Ом, и они отлично работают; я бы поспорил, что резисторы на 150 Ом будут работать отлично (как для MIDI-связи, так и для светодиодов). Чтобы сформировать коробку, я сначала наложил на поверхность коробки некоторую бумажную бумагу, измеренную, когда отверстия должны быть просверлены (у меня было 3 см от отверстия до отверстия, чтобы все горшки соответствовали) сделали направляющие отверстия, а затем увеличены вправо размер, чтобы поток горшка или нить ниток проходили с помощью мини-сверла. Я провел более или менее 2 часов, чтобы закончить коробку. Я тоже понял маленькие дыры и наклеил светодиоды на место. Я также просверлил отверстие для разъема MIDI OUT, а другой для разъема питания arduino (я использовал непосредственно встроенный разъем питания USB и прочно заперл MEGA arduino на месте). Затем я поместил все резисторы и кнопки и припаял компоненты в соответствии с прикрепленным изображением. Эффективным способом снижения веса конечного объекта (и длины кабелей) является создание цепочки всех емкостей как на линии 5V, так и на линии GND. И прежде, чем кто-нибудь спросит: я знаю, что ящик, который я использовал, уродлив! Но это было бесплатно и ничего не удавалось бесплатно :) Проложить проводку легко, подключив потенциометр (x16), кнопку (x4) и светодиод (x4) к плате микроконтроллера Arduino. Здесь описаны все основы Arduino :)

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

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

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

 

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

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

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

Я использовал перечисленные цифровые штыри для comodity, но они не являются «специальными» контактами (мы не используем возможности pwm некоторых контактов здесь или какую-то другую особенность): вы можете установить свои любимые цифровые контакты, но не забудьте изменить код соответственно или ваши кнопки / светодиоды не будут работать! Пожалуйста, обратите внимание, что соединение MIDI OUT на снимке имеет вид FRONT (не вид сзади). Я не собираюсь объяснять полную теорию сообщений System Exclusive или Control Change, потому что там много хороших статей, и глупо переписывать написанное.

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


http://erha.se/~ronny/juno2/Roland%20Juno%20MIDI%2... (ENGLISH)

http://www.2writers.com/eddie/tutsysex.htm (ENGLISH)

http://www.chromakinetics.com/handsonic/rolSysEx.h... (ENGLISH)

http://www.audiocentralmagazine.com/system-exclusi... (ITALIANO)

and some link for MIDI in general:

http://www.music.mcgill.ca/~ich/classes/mumt306/St...

http://www.music-software-development.com/midi-tut...

 

Здесь прилагается скетч, который вы должны загрузить в Arduino Mega. Я старался, чтобы программатор был «универсальным», насколько это возможно, а это значит, что я попытался уменьшить фрагменты кода, специфичные для синтезатора. На самом деле поддерживаются сообщения SysEx, совместимые с Roland Alpha-Juno, JX8P и Korg DW8000 (untested!). Я оставил код для совместимых сообщений Juno 106 в случае, если вы в этом нуждаетесь. Если вы предпочитаете удалять эту часть кода, просто раскомментируйте строку

#define CLOCK

заменив его

// # define CLOCK

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

 

CCSysEx_Universal_Controller_Sequencer.ino

В начало обзора



Купить радиодетали для ремонта
 



Необходимо добавить материалы...
Результат опроса Результаты Все опросы нашего сайта Архив опросов
Всего голосовало: 372



          

Радио для всех© 2024