Давно интересовала тема настроек звука MIB2 и куча мифов вокруг неё: в сети полно товарищей, заливающих за деньги “магические” файлы для превращения балалайки в рояль. Личным интересом стало желание вернуть раздельное управление сабвуфером, которое существовало для Audi Sound System в MIB1, но исчезло из MIB2. (Владельцы рестайлинговых машин о такой потере естественно и не в курсе, а ретрофитерам обидно. 😕 )
Подключение и схемы звука
В этой статье речь пойдет только о системах, подключаемых к встроенному усилителю MIB.
Если совсем грубо — это три основных PR-кода комплектации автомобиля:
8RE — 4 динамика
8RM — 8 динамиков
9VD — 9.1 система с центральным каналом и сабвуфером
Помимо них, встречаются промежуточные варианты с другими кодами 8R*, но они крайне редки.
Параметрия и возможности внешних усилителей на MOST-шине — отдельная большая тема и здесь я их не трогаю. Большинство таких систем имеют код 9VS.
Электрически, внутренний усилитель MIB имеет 6 каналов и может работать в трех режимах: стерео, квадро и 5.1 — все “лишние” спикеры/твитеры подключаются к основным каналам через кроссоверы в дверях или стойках.
Каналы на основном 52-pin разъеме MIB раcположены так:
Параметрия
В MIB2 существует несколько адресов, по которым хранится параметрия звукa. Полный список с описаниями есть в посте пользователя lprot, он еще прояснял моменты по конфигурации динамиков машин Skoda. Для моего исследования самыми интересными стали:
0x003000: audio_parameter_sound_dataset — здесь хранится вся математика по обработке звука DSP-процессором: аудио-эффекты / фильтры, задержки, лимитеры. Этот датасет на 80% повторяет аналогичный у MIB1 по адресу 0x001000, описание ниже применимо к обоим.
0x003B00: audio_parameter_sound_configuration_dataset — визуальная часть, настройки пунктов меню и крутилок в MIB2.
Сконвертировав датасеты в человекопонятный бинарь (бгг 🤪) я принялся за поиски паттернов и поддающихся осмыслению блоков данных. Огромное спасибо Дмитрию angrybean за стартовый пинок в исследовании и тесты безумных теорий и битов с байтами. По итогу нескольких долгих вечеров получились шаблоны раскраски для 010 Editor:
Dataset 0x003B00
Вывод в консоль самых интересных частей:
Первые три байта — регулятор громкости: максимальным значением может быть 96, 100 или (в одном уникальном случае) 115 (дБ?). Второй байт (скорее всего) определяет шаг изменения громкости, с родным значением ползунок состоит из 30 насечек. Дальше идут группы по 3 байта, определяющие количество шагов на полосах эквалайзера, иногда там попадается вариант ±6. Далее несколько байт с (предположительно) флагами включения пунктов меню и количества видимых полос эквалайзера и эффектов. В конце находится шкала из 19 возрастающих значений, абсолютно идентичная у всех авто. Назначение не ясно, но есть одно предположение, оно будет дальше в описании 0х003000 файла.
Заканчивается каждый 5F датасет двумя байтами версии (её отображает ODIS после прошивки) и чексуммой, посчитаной по алгоритму CRC-16/CCITT.
Второй файл оказался намного интереснее, я долго не мог подобрать “ритм” данных. Для лучшего понимания его содержимого стоит провести небольшой ликбез:
Обработка звука
Для проигрывания готовых треков вся обработка сводится к попытке выравнивания неравномерной АЧХ динамиков до идеального нуля. Весь процессинг звука можно условно представить так:
На график набрасываются точки-эффекты (фильтры), своим присутствием искажающие кривую звука. Они описываются простейшей математикой и в минимальном варианте состоят просто из своих координат по осям X и Y. Фильтры бывают нескольких типов:
Peak точка (она же Notch, Bell) прогибает кривую АЧХ под себя на определенной частоте (frequency) с определенной силой (gain) вверх или вниз с определенным “качеством” (добротностью / резонансом / радиусом охвата). (В разных редакторах используется несколько терминов, в моем парсере это quality. Уверен, специалисты поправят в комментариях.) На примере выше пиковые точки — это желтая 🟡, салатовая 🟡, зеленая 🟢 и бирюзовая 🟢.
Lowpass / Highpass фильтры (пурпурная точка 🟣) предполагают только одно дальнейшее направление кривой и тянут её вниз на всем остатке влево (low) или вправо (high).
Low Shelf / High Shelf фильтры (красная 🔴 и синяя 🔵 точки) заставляют график понизится или поднятся на определенный gain в пределах своего радиуса действия, но не влияют на него дальше.
Намного больше, лучше (и правильнее) работа фильтров описана в этих статьях:
Теперь возвращаемся к практике:
Dataset 0x003000
Здесь хранятся:
После глобальных настроек процессора идут два профиля с персональными настройками каждого из 6 каналов. Очередность та же, что и на разъеме MIB: 1 — правый задний, 2 — правый передний, 3 — левый передний, 4 — левый задний, 5 — сабвуфер, 6 — центральный канал.
У каждого канала есть свой уровень громкости, задержка и фаза. Для коррекции АЧХ динамиков предназначены 7 фильтров: первые 3 фильтра предполагают “хвосты” из 16 значений, но ни в одном из файлов я их не видел.
После фильтров расположены 7 неизвестных байт (три розовых иногда бывают не нулями) и таблица Компрессии динамического диапазона для каждого канала.
Компрессия понижает сигнал по достижении порогового значения Threshold в -2dB (чем меньше значение, тем раньше срабатывает; максимум при котором она отключена — 0) на протяжении времени Attack (10ms), удерживается на этом уровне Hold (0ms) и возвращается к прежнему значению за Release милисекунд (200ms).
Несколько статей с математическим описанием процесса:
У многих машин Seat значения функции сброшены до минимальных [0, 0.5, 0, 5] и, в теории, изменение параметров может сильно влиять на детальность звука. Остается вопрос, это просто лень инженеров Seat или они “что-то знают”?
Практическое использование
Я персонально не верю, что бездумная правка АЧХ и задержек каналов без измерительного оборудования в салоне машины может привести к чему-то хорошему. Как и заливка параметрии от отличающихся в два раза по объему салонов. Но обнуление параметров выходного сигнала может помочь профессиональным инсталляторам при замене динамиков или подключении внешнего усилителя / процессора к “высокому” сигналу MIB2.
Очевидное применение — активация отключенных крутилок и второго профиля звука, в него можно попробовать вписать что-то интересное от других машин. Правки 0x003B00 упираются в наличие самих пунктов меню в прошивке конкретного MIB2 — у всех Audi, например, эквалайзер ограничен только двумя полосами (и они сохранили это даже в MIB3).
В параметрии 0x003B00 можно и включить байт всех возможных эффектов в прошивке, но их выбор ни к чему не приводит, в конфигурации каналов хранится только два профиля.
В завершение
Шаблоны раскраски параметрии опубликованы на GitHub. В папке tools/bin находятся 3 консольных утилиты для извлечения .bin файлов из ZDC-контейнеров и одиночных XML-файлов параметрии ODIS, а также создания новых XML из бинарных файлов с автоматическим подсчетом чексуммы. Примеры использования на скриншоте:
Я еще успел мельком глянуть на параметрию MIB3 устройств и там тоже есть похожие датасеты: 0x007204 — идентичен 3B00, с настройками крутилок и ползунков и 0x007201 — с поканальными фильтрами звука.
Stay tuned…
Комментарии
temp temp