vMix Контроллер своими руками

Данный проект начался с углублённого изучения видеомикшера vMix. Когда начинаешь активно использовать хотя бы 50% этого ПО, само собой как-то приходит осознание, что управлять всем этим разнообразием через клавиатуру и мышь не очень удобно. Эта мысль не обошла и меня стороной. Захотелось чего-то удобного, оперативного. Побегав по поисковикам, я обнаружил в продаже готовые решения. Все они работают по протоколу MIDI, так что разнообразие моделей, годных для наших целей, просто огромное. Начиная от именитых брендов типа AKAI и заканчивая разработками самой компании vMix. Даже любимый «народный китайский» магазин выдавал по запросу vMix controller много предложений начиная от 150$ и выше. И, казалось бы, выбирай и пользуй, но то клавиш слишком мало, то слишком много, то подсветка яркая, то одноцветная, то ценник кусается. И вообще, это же не наши методы. Получается, как бы, подсознание само заставило прийти к этому… Ну что же, для таких отбитых как я, ардуина тоже имеет библиотеку протокола MIDI, так что примеров самоделок так же масса. Значит пришло время…

Из головы на бумагу

Для начала мне пришлось определиться с количеством клавиш и прочих органов управления. В нашей выездной системе 4 камеры и 6 индикаторов Tally, которые я делал специально с запасом +2, потому что иногда кроме камер используются источники из вне, да и порты на ардуинке оставлять пустые не хотелось. Ну вот цифра 6 мне вполне нравится. Не заблудишься в количестве и в то же время их хватит. Так же не плохо сделать управление выходами (запись, стрим, рендер) и конечно же клавиши перехода и Т-бар (нет, это не про штанги и спорт. Это тот самый рычажок на режиссерском пульте, что позволяет управлять переходами). Ну и хотелось бы иметь под рукой несколько «крутилок» (как вам такое слово из уст инженера?) под управление звуком.

панель корпуса

вот такой классический макет у меня вышел.

хммм. какой же контроллер подобрать для наших непотребств? Дайте подумать: шина преднабора – PVW, шина программы – PGM, 3 перехода, 3 управления выходами, 4 звука и Т-бар, в качестве которого я решил использовать резистор фейдера от старого неисправного звукового пульта. Значит 23 порта под управление и ещё подсветка на каждую кнопку. А для того, чтобы наша библиотека MIDI работала и дружила наш микшер со всем этим управлением, нам потребуется контроллер с аппаратным USB. Так что нанка наизнанку тут точно не пройдет. Нам нужна ардуина на базе, например, ATMega32U4. Вполне подойдет Leonardo или китайские клоны типа ProMicro.

ардуино контроллер

Такие ардуинки бывают 3.3в и 5в. Нам нужна последняя. А что бы уместить все наши хотелки в этот контроллер, немного прооптимизируем.

Будем использовать матричное подключение кнопок, а подсветку сделаем из адресных светодиодов WS2812

Да, опытный читатель сейчас шмякнет в меня помидором. Знаю, матрица 6х3 далеко не самая оптимальная по занимаемым портам, но большее количество нам просто не нужно. А если потребуется, то всегда можно добавить позже. Обратите внимание на количество керамических конденсаторов. WS2812 довольно шумная микросхема и если не ставить фильтры, шум лезет в аналоговые порты и значения регуляторов начинают прыгать. Так что настоятельно рекомендую не пренебрегать фильтрами.

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

печатная плата печатная плата

Плат будет 3. Основная и две вспомогательные, соединенные шлейфом. Не задействованные порты я вывел на верхний шлейф, что бы можно было их использовать в дальнейшем, без серьезных переделок. А так как я стал ленив и немного криворук с возрастом, платы я решил заказать на JLCPCB. Эти ребята воплощают любой каприз на основе файлов gerber за приемлемую цену и с отличным качеством. Сам проект gerber я оставлю в конце статьи, как обычно.

Сборка

печатная плата

Не сочтите за рекламу, платы и впрямь доставляют эстетический экстаз. И как только платы приехали, бросаемся собрать девайс. Но для начала нужно уделить внимание основному органу управления – кнопкам. Дело в том, что в качестве кнопок мне хотелось видеть те, что используются в настоящих «взрослых» видеомикшерах типа Sony или Guramex. И такие кнопки я нашел в Китае.

кнопка

PB06 продают разных размеров и цветов. Я взял 15х15 мм, хотя, по опыту, рекомендовал бы брать 17х17 мм. Большая кнопка дает меньший шанс промазать по ней в запале, но они дороже. Тем не менее, расстояние между кнопками на плате я сделал такое, чтобы можно было разместить 17х17мм. Цвет индикатора неважен, можно брать самый дешевый. Нам их всё равно придется переделать на адресные диоды. Ну и раз уж мы заговорили о переделке:

разобранная кнопка

разбираем кнопку и вынимает оттуда индикатор.

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

Далее берем адресный диод и припаиваем к нему 4 ножки

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

В качестве ножек я использовал зачищенную витую пару UTP5e. Теперь сверлим 4 отверстия в корпусе кнопки и пропускаем через них ножки нашего диода

 

переделка кнопки

переделка кнопки

Не забываем приклеить их там. Собираем кнопку

переделка кнопки

переделка кнопки

И так 18 раз. После этих издевательств останется сущий пустяк, повтыкать всё в плату и собрать платы между собой.

собранная плата

Отдельная история – это корпус. Можно выпилить из металла, собрать из стеклотекстолита, а можно распечатать на 3D принтере. В моём случае, мои хорошие друзья, смоделировали по моим чертежам такую вот коробку и распечатали для меня.

модель корпуса

В качестве лицевой панели решили использовать оргстекло, нарезанное на лазере с ЧПУ и окрашенное изнутри. Такое решение принято потому, что только так можно обеспечить точные размеры «окон» под кнопки. Ну и, если уж друзья мои, естественно, не жадные люди, модели корпуса аккуратно сложу в том же архиве в конце статьи. Короче говоря, запихиваем все наши изыскания в это чудо корпус:

устройство изнутри

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

Получаем вот такой прототип:

midi controller

Кодим

В основе скетча лежит библиотека MIDIUSB.h которая и позволяет нам общаться с внешним миром, Keypad.h для реализации матричной клавиатуры и Adafruit_NeoPixel.h для работы с адресными светодиодами.

Сам код довольно простой. Остановлюсь на некоторых моментах. Во первых функция timerLoop() существует для мигающего режима индикаторов. Естественно никаких delay! Задержка – наш враг. Во вторых- в midiControls() применены программные фильтры, что бы регуляторы не «колбасило». Не буду строить из себя дофига программиста, просто признаюсь, что после нескольких попыток написать фильтр, я плюнул и стащил этот кусок кода из интернетов (говорил же сто раз: не программист я!). И ещё не маловажный момент: переменная brightness, устанавливающая общую яркость светодиодов, подобрана так, чтобы индикаторы не слепили в условиях темноты и в то же время не перегружали USB порт по току потребления.

Вздумаете прибавить яркости, обязательно учитывайте, что USB2.0 не даст более 500мА по току.

Отдельно хотел затронуть тему компиляции. Мне хотелось спрятать торчащие из проекта «рожки» ардуины, чтобы выглядеть немного солидней (Да, да. Тщеславный инженер. Эка невидаль). Для этого я переделал описание плат Pro micro и Leonardo и сохранил их отдельно в папке c:\Users\%username%\Documents\Arduino\hardware\. Эти описания я так же оставлю внизу в архиве. Теперь при запуске Arduino IDE мы можем выбрать такие платы:

arduino custom

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

диспетчер устройств

программная часть

Думали безумие закончилось? А вот и нет! В продолжении подпитки собственного эго и тщеславия, я переписал названия в драйверах ардуины и конечно же, пришлось переподписывать их собственным сертификатом. О том, как это сделать, можно спросить в интернетах. Это конечно не обязательно, но выглядит красиво. Всё это безумие, вместе с файлами описания активаторов и шорткатов я упаковал в установочный пакет, который так же лежит в архиве в конце статьи. Опустим, пожалуй, скучную историю написания всего этого непотребства (я же говорю – больной ублюдок тщеславный инженер), а перейдем к самому интересному. После установки собранного мной пакета, установки драйверов на наш контроллер, открываем vMix и идём в настройки, вкладка shortcuts, кнопка templates

vmix settings

применяем нашу заготовку и получаем список назначенных и настроенных шорткатов. Не забываем нажать на MIDI Settings, найти там наше устройство и активировать его. Далее идем во вкладку Activators, естественно, нажимаем Enable Device и включаем наш контроллер в списке. Нажимаем на Import и идем в папку C:\Program Files (x86)\vMix\shortcuts\templates где нас ждет уже установленный файл UNICASTER.vMixActivators. Теперь в списке активаторов у нас всё что нужно

vmix settings

Конечно это только пример, как можно назначить кнопки и индикаторы, и, если Вам захотелось, к примеру, сделать общую подсветку не белой, а любым другим цветом, просто открываем активатор default, в разделе type видим UNICASTER и открываем цвета.

vmix settings

Тут можно назначать практически всю палитру в вариантах яркости 50%, 100% и мигающие.

Заключение

Немного о недостатках конструкции: пожалуй, единственный недостаток использования любого MIDI устройства – если в процессе работы он «отрыгнул» (плохой контакт USB или ещё чего), то при переподключении устройства, нужно перезагружать программу vMix. Производитель данного ПО писал на форуме, что это ограничения Windows и сделать с этим они ничего не могли. Но, в версии vMix 24 на базе Windows 10 x64, у меня данная проблема исчезла. Устройство само переподвязывается “на лету”. В остальном устройство проходило тест на uptime в 4 дня, и ни единого сбоя не замечено. В общем чего тут воду в ступе толочь, пользуйтесь своими мозгами правильно!

ФАЙЛЫ ПРОЕКТА

Добавить комментарий

Ваш адрес электронной почты не будет опубликован.Обязательные поля помечены *

* Все комментарии проходят предмодерацию.