Как стать автором
Обновить

Аппаратный DIY аудиомикшер

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров11K
Всего голосов 92: ↑91 и ↓1+105
Комментарии84

Комментарии 84

О, молодец, код потом причешешь :) ну или кто то причешет. Придумал/сдалал/резултат. Не зря зашел почитать.

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

Отлично. Даже захотелось повторить. Но софт на питоне под винду... пугает...

Но софт на питоне под винду... пугает...

Меня тоже

Это можно и переделать, было бы желание

И меня(разработчик этой дичи)

спасибо ChatGPT, без него на математику ушло бы явно больше времени, чем 3 минуты

А что там за математика? Таблица значений, между которыми делается интерполяция?

Ещё непонятно, почему маленькие дисплеи мерцают. На них изображение постоянно стирается и обновляется?

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

зато я точно понял, что не хочу писать под WinAPI

А что здесь делается через WinAPI?

А что здесь делается через WinAPI?

Как я понимаю, микширование. Судя по всему, эти аппаратные микшеры - не аппаратные микшеры, а пульт от программного, который реализуется стандартными функциями

Если я правильно понимаю, положение бегунков должно передаваться в системный микшер Windows. Но как это можно сделать, не пользуясь Windows API?

так он и используется через pywin32. я думаю автор просто в очередной раз намекнул на ректальные подходы в winapi вызывающие конкретное желание больше туда не лезть

Что в них "ректального"? Я понимаю, что питон проще, чем C++, но внутри он тот же WinAPI вызывает. Этак можно и ассемблер назвать "ректальным", просто потому, что он сложнее питона.

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

Есть API, есть документация к нему. Дальше - либо пользуетесь, либо нет, если есть возможность и нет желания.

Это не отменяет некоторых... копроректальных подходов, которые можно было явно сделать лучше.

есть проблемка. они в каждой версии винды перепахивают доступ к микшеру и вообще звуковую систему, да еще не особо документируют

Ну это даже по внешнему виду микшера понятно. Хотя бы обратную совместимость сохраняют?

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

Совместимость это конечно хорошо, но не с софтом 90 года же...

Как минимум xxxA / xxxW - бесит люто. Можно использовать скрывающие это макросы, конечно, но до первой либы, которая поддерживает только один тип стрингов.

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

Как минимум xxxA / xxxW - бесит люто

А что именно бесит? Названия функций с буквой A или W в конце? В юникодном приложении обычно уже никаких A/W указывать не нужно.

но до первой либы, которая поддерживает только один тип стрингов

Не помню, когда в последний раз встречал такую либу.

xxxA версии нужны только для поддержки старого кода времен Windows95/98. Имхо сейчас имеет смысл сразу определять макрос UNICODE, и использовать xxx-имена, без W. C-либы с char по сути работают с UTF8, в то время как Windows работает с UTF16, что просто надо держать в уме и выполнять перекодирование, когда это требуется.

Лично у меня WinAPI вызывает скорее восхищение, учитывая, что этому API более 30 лет, и ему пришлось столкнуться с тем, на что он не был рассчитан, напр. hiDPI и темами оформления, при помощи костылей это всё равно было решено. Самый большой плюс - код на нем просто работает, как на Win95, так и на Win11. На том же Android каждые пару лет старые методы объявляются deprecated и пишется замена.

Видимо именно по этому была целая гора попыток сделать нормальный ui, а не вот это похожее на win95? А то ведь если createWindow то только win95 или около того и получится, не?)

А что там за математика? Таблица значений, между которыми делается интерполяция?

Чуть более сложно, но все равно проще, чем то, что удалось найти за пару минут с гуглом.

Ещё непонятно, почему маленькие дисплеи мерцают. На них изображение постоянно стирается и обновляется?

Это особенность подобных монохромных OLED дисплеев, они на камеру мерцают, глазами не видно

А что здесь делается через WinAPI?

Захват звука с конкретного процесса, а не всего аудиоустройства целиком. Там API добавили только в win11, в современных win10 тоже работает, но что бы понять, что именно нужно использовать, надо пройти долгий путь. А так да, пример лежит на сайте microsoft.

Захват звука с конкретного процесса, а не всего аудиоустройства целиком.

Что-то я сомневаюсь, что на питоне это можно как-то проще сделать (если вообще возможно).

Да куда уж там, COM объекты это боль как не крути)

А что такого сложного в COM-объектах?

Чтож, 20 лет назад когда мне было 13 лет мне они казались куда стремнее. Посмотрел сейчас - действительно не так уж ужасно.

Чувак! В продакшн! Быстро, решительно! Я бы купил.

Я без понятия как это можно сделать, когда даже на kickstarter просто так выйти не получится, так что opensouce. Исходники со временем отрефакторю, инструкцию сделаю

А на отечественный краундфандинговый planeta.ru - нет ли возможности выйти?

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

PS. Возможно даже в виде kit'а для самостоятельной сборки...

Если где-то выложите - маякните, я б тоже купил. Идея гениальная, давно хотел такую чтуку, но не знал об этом))
Для компактности наверное можно было бы вариант с крутилками сделать)

организовать групбай, как с клавиатурами

Alt tab из текущего приложения

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

  • Найти нужное приложения пролистав горизонтальный список, или расширив окно

ни разу не видел там больше трех ползунков XD а у вас на картинке прям целая портянка.

ИМХО, но вы сначала создали проблему, а потом её героически решили.

Там всегда 2 системных ползунка + один на каждое приложение с выводом звука. пример скорее всего утрированный но 5-6 набираются легко.

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

пример скорее всего утрированный но 5-6 набираются легко.

у меня открыт ТГ, вацап, браузер яндекса и edge, но в панельке наблюдается только яндекс.

и я просто не могу представить сценарий, когда бы мне пригодилось регулировать громкость этими ползунками. За всё время начиная с вин8 я этого не делал ни разу.

на клавиатуре кнопочки +- для громкости, остальное один раз выставил и пользуюсь, на худой конец в игре что-то нужно сделать - там есть своя настройка звука. Просто я не могу себе представить сценарий автора, где игра, собеседники в дискорде, какого-то лешего еще и отдельно музыка и вдруг, зачем-то во время катки мне потребовалось эксклюзивно поменять на 3,5% громкость музыки. Я бы лучше вас из пати выкинул чтобы вы не слили игру )

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

в целом я к тому что не всегда проблема искусственно создана. возможно для автора это вполне себе типичный юзкейс.

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

по мне так невозможный сценарий

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

музыка играет фоном всегда

вы думаете если перегружать мозг то вам станет лучше? а уши у вас из титана?

вслушиваясь что они там за кадром и ветром говорит

ну то есть вы сами себе воздали проблему и потом её героически решили.

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

Код можно и нужно рефакторить, что будет в процессе, а вообще проект внешне продуман и красив, но тоже можно причесать немного шероховатости )).

Неплохо! Так можно и до проф. контроллеров дойти. Только за гораздо меньшие деньги.

Не хватает:

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

MIDI интерфейса в драйвере - совместимость с кучей аудио-видео софта.

Насчёт подсветок в проф. пультах. Она там не нужна потому как и так всё подсвечено индикацией + лампа горит ту же партитуру читать.

Я тоже подумал что наверно стоило бы имитировать MIDI + костыль в виде бриджа MIDI<->WinAPI. Это позволило бы использовать MIDI пульты и использовать девайс в софте поддерживающем MIDI ввод

MIDI интерфейса в драйвере - совместимость с кучей аудио-видео софта.

Громкость на дорожках в DAW крутить?

В простейшем случае да. Любые огибающие, хоть зум на видео.

Вообще, если говорить о профессиональных цифровых пультах, да еще особенно броадкастных (таких как Lawo, Studer, Calrec, SSL, Soundcraft Итп), то подсветка фейдера там есть. Только она или просто здает цвет фейдер (для упрощения оринтирования звукорежиссера), или цветом выделяет функционал фейдера (input/master/aux/group/vca/etc).

Конечно таким извращением, как с помощью подсветки фейдера показывать уровень сигнала, никто не занимается. Для этого есть Meter Bridge как правило.

Точно бывают индикаторы уровня рядом с каждым из фейдеров

Рядом - да. но они не то чтобы прям точные. Но подсветка фейдера в этой роли никогда не используется.

Там это реализовано отдельным модулем, распаянным на плате, мини модулей с wifi/bt я не нашел, а это +3мм к толщине. Светодиодных лент можно сколько угодно подключать последовательно, это не проблема. У rp2040 всего 4 канала АЦП. Как бы мне этот контроллер относительно esp32 не нравился, он никак не подходит

Хорошая штука, но с крутилками, а не бегунками.

MIDI контроллеры разные бывают. можно взять какой нибудь nakeboard mc-8

Можно, но он не такой красивый, как у автора статьи :-) понятно, что готового полно есть, здесь цель была другой.

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

Как имеющийся девайс связать с другим USB MIDI девайсом? Есть какие-то библиотеки для Arduino Mega?

не понял вопроса.

А я не понял вот этот момент:

использовать часть контролов в одном программе, часть в другой

Бегунки использовать на одном девайсе, а индикаторы на другом?

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

Этот готовый девайс позволяет крутить громкости системного микшера, как у автора реализовано, т.е. ещё и отдельно по приложениям?

Спасибо, интересный софт. Печально, что это freemium, особенно подписочный, самый меркий подход к монетизации

Hidden text

псевдо Хардовое решение конечно тоже круто, но я решил вот так - красяво, но сложна:

  1. EQ APO (нормализация для каждого источника, лимитеры + фильтры и прочие фишки типа раздачи стерео на 8 каналов)

  2. VBAudio HiFi Cable (ввод звука с windows в ASIO)

  3. Potato(микшер, но на самом деле он не нужен счас EQ APO великолепно справляется и сам) иногда вмеcто него Lighthost для VST плагинов - ну это больше для экспериментов

  4. Auto Hot Key (ЛКМ+ПКМ и колесиком крутим общую громкость)

    Из минусов только небольшой input lag (решилось заданием affinity для каждой из критичных к задержеке софтинок и приоритезацией до RealTime)

Лично у меня все витает идея: софт, который планшет/смартфон превращает в разные микшеры или клавиатуру с горячими клавишами.
Да, это менее удобно, чем аппаратные ползунки - вслепую не передвинешь.

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

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

P.S. может кто готовое что встречал? Максимум что встречал - эмуляцию клавиатуры / мыши со смартфона с возможностью задать свою "кастомную" клавиатуру.

Спасибо )
Рад что такое есть. Несколько огорчает, что Windows-only (но другие платформы ожидаются в этом году, так что можно просто подождать).

Вот что я в работе использую:

https://hexler.net/touchosc

Прекрасная штукенция, можно нарисовать свой интерфейс из кнопок/крутилок/фейдеров/ и тд и отдавать все нажатия и передвижения по MIDI или OSC

У себя в студии использую одновременно и как контроллер при записи midi (задержка не мешает) и при управлении основного компьютера.

Спасибо )
Интересная штука, кросс-платформенность на месте, неплохой, навскидку, интерфейс.
Правда не open-source и нужна лицензия (насколько я могу судить, лицензия национальна для декстоп-клиентов).

Очень странно, если идея давно витает, а загуглить времени не нашлось. Таких решений десятки. Даже с обратной связью, статус/значения кнопок/ползунков передается во все стороны. Пожалуй, самые-самые это Touch-portal и Matric. Ну и поделки попроще в ассортименте, типа Macro Deck, Deckboard, много их.

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

Хотя... Тот же Macro Deck выглядит знакомым - видать попадался на глаза.

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

Подскажите, пожалуйста, а у вас можно будет приобрести такое же устройство?)

Нет, и не планируется. Максимум что могу сделать - написать инструкции и все отрефакторить

Хех, красавчик. Я как раз себе пета на ардуинку думаю… странно как я не додумался до такой идеи. Правда, не то чтобы оно мне нужно было… раньше было нужно. А сейчас практически нет. Да и с ВинАПИ я работать тоже не хочу но слова совсем. В основном на линуксе сижу. Винду изредка для поиграть включаю. Так что придётся думать дальше и делать что-то своё. 😅

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

Судя по гифке - всего лишь нужно подкрутить атаку и релиз и будет как на "настоящих" микшерах.

на его основе ESP32 C3 SUPER MINI

Судя по отзывам этот модуль зачастую приходит уже нерабочим. Даже есть предположение, что он сделан на отбраковке, т.е. может работать, а может Wi-Fi не работать, а может просто сильно греться. В итоге, почитав отзывы, я отказался его брать в пользу других платок на C3.

По самому устройству: если уже сделали дисплеи, то можно было бы добавить кнопку, которая позволяла бы переключать наборы приложений, т.е. нажал/переключил и приложения поменялись на следующие 5.

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

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

Корпус кстати можно делать из латуни (вар. 2) или дерева, чтобы придать товару ретро-стиль и некую премиальность.

На самом деле, все гораздо тупее. Все, поголовно, в том числе и я, распаивая штыри не убирали флюс. Я когда догнал просто офигел - вот голая плата - работает, штыри напаял - нет. Водой промыл, высушил - работает. Чудеса прям)

я первым делом словя странные глюки на новой плате начинаю прочищать дорожки

Красавчик. Некст степ переход на моторизованные фейдеры-). Да неотмытый флюс зло. Рекомендую жидкость концентрат solins us и воду как минимум осмос а лучше деионизированную

Или можно заюзать VoiceMeeter прикрутив к нему любой удобный midi-контроллер

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

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории