iOS
October 3, 2022

Выжать максимум из двух ручек

Я уже писал про портативные Bluetooth-MIDI-контроллеры, которые можно положить в карман, и которые, к несчастью, на данный момент либо плохо реализованы (привет, китайский Hamster Mix), либо мало кому доступны (мы всё ещё проводим опрос про MDP101 Baby ver. 2), либо мало функциональны (Noise Machine).

Но свесить лапки и ничего не делать я не могу :)

У меня есть рабочая версия Pribore Electronics MDP101 Baby, там всего две ручки, которые никак нельзя переназначать, а я хочу иметь больше возможностей в управлении своим сетапом.

Родилась идея. И постепенно вылилась в статью. Уверен, она пригодится всем, у кого есть любой MIDI-контроллер с небольшим количеством ручек-кнопок, их тоже по каким-то причинам преступно мало, и хочется функционал расширить.

Можно сделать так, чтобы каждая ручка при нажатии на какую-нибудь специально выбранную кнопку меняла свои настройки и посылала другие MIDI CC данные. Думаю, вы сможете развить и адаптировать идею под себя и свои задачи, потому что она довольно простая и достаточно гибкая. Хотя, чувствую, новичкам она может показаться чересчур замороченной. Но поверьте, я это реализовал минут за 5-10, так что дело лишь в умении работать с AUM — как раз расширите горизонты и поймёте, за что все так хвалят и любят этот хост.

ПОЕХАЛИ

Нам потребуется актуальная версия AUM в качестве хоста (1.4.1 на момент написания статьи) — я работаю на iOS почти только в нём — а также один недорогой плагин, Audeonic Apps mfxConvert.

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

Итак, повторим задачу: нужно сделать так, чтобы ручки могли посылать по умолчанию одни значения, а при нажатии специальной кнопки — другие. То есть чтобы мы смогли управлять с одного контроллера двумя (в перспективе — более) эффектами.

И вот наш первый шаг: создаём в AUM пустой MIDI-канал, назовём его MIDI SWITCH.

Решаем, сколько ручек у нас будут менять свои настройки. Нам потребуется в два раза больше AUv3-копий плагина mfxConvert. На MDP101 Baby всего две ручки, поэтому добавим 4 копии плагина, а также MIDI Bus A и MIDI Bus B.

Логика такая: контроллер посылает данные в конвертер, тот меняет их на аналогичные на другом канале и шлёт на MIDI Bus, который будет посылать данные строго в один из эффектов. Эффект будет принимать данные только с нужного канала и только с MIDI Bus. А между Bus'ами мы будем переключаться.

Подключим наш контроллер. Жмём кнопку с загогулистой стрелкой в правом верхнем углу. MDP101 Baby — это Bluetooth-контроллер, поэтому надо будет зайти настройки Bluetooth...

...и выбрать там в устройство в меню Central.

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

Теперь нам надо сделать так, чтобы первые две копии отсылали данные в «MIDI Bus A», а вторые — в «MIDI Bus B». Для этого тыкаем по иконке с тремя полосками слева от каждого из плагинов, заходим в MIDI Outputs > MIDI Bus. Соответственно, у первых двух выбираем «Bus A», у третьего и четвёртого — «Bus B».

Теперь надо сделать так, чтобы при нажатии на кнопку один MIDI Bus включался, второй выключался. И наоборот. Для этого жмём на меню (справа вверху три полоски), заходим в MIDI CTRL.

Сначала сверху выбираем наш контроллер в качестве MIDI Source. Сразу добавим туда же наши оба MIDI Bus.

Это очень важный момент, не забудьте! Если забыть их добавить, схема работать не будет.

Далее в папке Channels выбираем наш MIDI SWITCH...

...по очереди заходим в оба MIDI Bus...

...жмём Enabled.

Маппим оба на одну и ту же кнопку (без Cycle)...

...не забыв второй поставить в режим Invert.

Мы уже настроили переключатель. Теперь надо настроить сами плагины mfxConvert, благо это нетрудно.

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

Мои ручки посылают CC3 и CC9 по каналу 1. Во избежание любых глюков и пересечения данных, а также для точной реализации своей задумки, я не буду использовать данные по умолчанию, всё буду конвертировать.

Открываем первый mfxConverter, жмём Learn, крутим первую ручку и получаем нужные значения в графе «FROM». Теперь вручную в графе «TO» меняем канал на 2, CC пусть будет таким же — 3. Во второй копии mfxConverter — то же самое, но для CC9, тоже канал 2. У третьей и четвёртой копии — аналогично первым двум, но канал 3.

Осталось поставить аудиодорожку, повесить на неё два эффекта и настроить получение нужных данных. Обратите внимание, что не каждый аудиоплагин получится подрубить по такой схеме. Важно, чтобы это был AUv3 Music Effect, т.е. чтобы он мог получать MIDI-сообщения. Характерный маркер — наличие трёх полосочек слева от иконки на дорожке.

Повесим два каких-нибудь плагина. Жмём на эти три полосочки у первого, выбираем MIDI INPUTS > MIDI Bus > MIDI Bus A. У второго, соответственно, MIDI Bus B.

Также назначаем приём у первого плагина только с канала 2, у второго — только с канала 3. Жмём наши любимые три полосочки около иконки, MIDI INPUTS > CHANNEL FILTER > NONE, затем 2 или 3, соответственно.

Также я в MESSAGE TYPE обычно отключаю всё, что не планирую использовать. На всякий случай. Некоторые контроллеры любят посылать Sys.Exclusive сообщения при нажатии на кнопку FUNC, например. Это лишнее, это будет давать глюки.

Удостоверяемся, что активирован Bus A, заходим в первый плагин и назначаем ручки на любые два параметра. У меня это дилей Imaginando K7D, закреплю ручки за Time и Feedback.

Жмём на контроллере заветную кнопку переключения, маппим следующий плагин. У меня это Koala FX, пусть первая ручка управляет Reverb'ом, вторая —Crush'ем.

Скорее всего, у вас замаппится канал 1. Вручную меняем его на 2 у первого плагина...

...и на 3 у второго.

Готово!

Теперь нужно удалить аудио-генератор, на котором мы тестировали звук (в моём случае это был синтезатор Esoteric Synth), сохранить проект и, при необходимости, в будущем импортировать эти дорожки в любой ваш новый проект, где вы хотите использовать контроллер.


Как это можно расширить до большего числа эффектов? Можно пойти по принципу пирамиды и создать ещё один такой же MIDI-канал, там ещё столько же или в два раза меньше копий mfxConverter. При нажатии ещё какой-нибудь кнопки пусть все плагины первого канала уходят в Bypass, а второго активируются. Жмём снова — наоборот. Вряд ли это будет очень удобно, но возможность такая есть.

Ещё я думаю, что вполне можно обойтись без MIDI Bus'ов, и просто настроить инвертированный Bypass для копий mfxConverter. Я не пробовал. Вообще, предлагайте свои варианты в комментариях! Может, можно всё сделать намного проще?