Исследование звуковой параметрии MIB2

Давно интересовала тема настроек звука 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 файла.

☝️ Мои эксперименты не закончились и в обоих файлах есть пробелы и неподтвержденные места. Скорее всего и этот пост еще 5 раз обновится. В самом низу я предоставил инструменты, пробуйте и помогайте.

Заканчивается каждый 5F датасет двумя байтами версии (её отображает ODIS после прошивки) и чексуммой, посчитаной по алгоритму CRC-16/CCITT.

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

Обработка звука

Для проигрывания готовых треков вся обработка сводится к попытке выравнивания неравномерной АЧХ динамиков до идеального нуля. Весь процессинг звука можно условно представить так:

Иллюстрация от EQuick by DMGAudio

На график набрасываются точки-эффекты (фильтры), своим присутствием искажающие кривую звука. Они описываются простейшей математикой и в минимальном варианте состоят просто из своих координат по осям X и Y. Фильтры бывают нескольких типов:

Peak точка (она же Notch, Bell) прогибает кривую АЧХ под себя на определенной частоте (frequency) с определенной силой (gain) вверх или вниз с определенным “качеством” (добротностью / резонансом / радиусом охвата). (В разных редакторах используется несколько терминов, в моем парсере это quality. Уверен, специалисты поправят в комментариях.) На примере выше пиковые точки — это желтая 🟡, салатовая 🟡, зеленая 🟢 и бирюзовая 🟢.

Lowpass / Highpass фильтры (пурпурная точка 🟣) предполагают только одно дальнейшее направление кривой и тянут её вниз на всем остатке влево (low) или вправо (high).

Low Shelf / High Shelf фильтры (красная 🔴 и синяя 🔵 точки) заставляют график понизится или поднятся на определенный gain в пределах своего радиуса действия, но не влияют на него дальше.

Намного больше, лучше (и правильнее) работа фильтров описана в этих статьях:

Теперь возвращаемся к практике:

Dataset 0x003000

Здесь хранятся:

  • Режим работы усилителя (2, 4, 6 каналов)
  • 5 фильтров, используемых эквавалайзером (у VW/Skoda/Seat заполнены 3, у Audi — только 2)
  • Уровень регулировки сабвуфера
  • 2 фильтра с 19-байтовыми шкалами для поднятия высоких и низких частот на небольшой громкости. Полностью перестают действовать аж на 18 уровне, что дальше середины ползунка.
  • Таблица из 7 уровней GALA по 19 значений в строке. Это поднятие уровня громкости с ростом скорости авто. Предположительно, в качестве заголовков столбцов используется шкала из 3В00 датасета, там очень похожие значения, заканчивающиеся на 240 (км/ч?).
  • 2 неизвестных фильтра, со своими шкалами зависимостей по 19 значений. Первый фильтр имеет нулевые гейны у большинства машин (по факту не используется). Скорее всего второй фильтр (или оба) описывают математику работы GADK (парная к GALA технология, сжатие динамического диапазона с ростом скорости) и я неправильно трактую параметры.

После глобальных настроек процессора идут два профиля с персональными настройками каждого из 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…

  ← Ранее
Модификация прошивок Sound Actuator / Active Exhaust

Комментарии

temp temp

Похожие записи