Первым делом запустил AudioCanvas в режиме симуляции и сгенерировал дефолтный конфиг в двух форматах: стандартный формат программы (File -> Save Config) и в формат языка Си (File -> Export -> CFG Header File).
В двух форматах по той простой причине, что в первом содержатся регистры и их значения в удобном для дальнейшей обработки HEX-формате, а при сохранении во втором генерятся два файла, в одном из которых(файл RegisterSet.h) содержится список параметров в виде констант языка Си, имена которых можно использовать для понятного именования параметра в целях упрощения работы и восприятия данных.
Вот так выглядят данные в этих двух конфигах:
Далее написал простенький скрипт, который на вход получал эти два конфига, а на выходе выдавал слитый из них файл списка команд в формате CSV для I2C-терминала. Список команд был сформирован
на чтение , т.е. из дефолтного конфига использовались только адреса для того, чтобы в последствии по ним вытащить заводские значения из DSP.
Вот так выглядит список команд в текстовом виде и после импорта в Эксель:
Теперь подключаемся к шине I2C, загружаем получившийся список команд в I2C-терминал, нажимаем Send All и ждем окончания обмена данными.
После выполнения всех запросов смотрим лог внизу и убеждаемся в отсутствии ошибок. Если всё ОК, то жмем Save Log и сохраняем протокол обмена в текстовый файл.
Всё, теперь у нас есть заводской конфиг, но пока его нельзя загрузить в Канву. Пришлось написать ещё один простенький скриптец, который преобразовал лог I2C-терминала в ранее упомянутый формат конфига Канвы.
Запускаем Канву, делаем File -> Load config и выбираем свежесобранный конфиг. А теперь начинается самое интересное...
Первое, что видим - это общие для обоих полос корректировки. Задействованы эквалайзеры, 5-полосный и некий Спикер-EQ.
Далее смотрим, как порезаны твиттер и вуфер:
После фильтров для каждой из полос задействован ещё и 3-полосный EQ. Вот это поворот!
А теперь для каждой из полос соберем всё в кучу и посмотри на итоговые АЧХ:
Далее можно сделать корректировки, сохранить конфиг (нужен только один формат), преобразовать в список команд
на запись для I2C-терминала и загрузить новые данные в DSP.