Апгрейд стримера. Всё можно настроить!

Олег

Administrator
Команда форума
На двух примерах научимся изменять проекты загруженные в DSP стримера.
В первом примере изменим стоковую загрузку сабвуфера. После внесенных изменений при включении стримера режим супербас будет отключен, а включатся будет уже после нажатия кнопки S-bass. (сейчас наоборот)
Во втором примере добавим супербас в широкополосный стереоканал.
Оба примера будут созданы в ChipStudio.

Для понимания принципа работы сначала рассмотрим проекты в PurePathStudio.

PP_project.jpg



На верхней схеме проект номер один, который загружен в PCM5242 широкополосного канала.

Слева направо:

I2S_In_1 = I2S-вход,

Volume_1 = регулятор громкости,

Stereo_Balance_1 = алгоритм баланса,

bass_L, bass_R = фильтры НЧ

treble_L, treble_R = фильтры ФЧ

StereoSplit_1 = сплиттер, разделяет аудио сигнал на два потока.

Int8xOutROM_1 = аналоговый стерео выход

D_I2S_Out_1 = цифровой I2S выход.


К этому выходу подключён вход второй микросхемы PCM5242. В неё загружен проект который на нижнем рисунке.

Слева направо:

I2S_In_1 = I2S-вход,

Biquad_L, Biquad_R = Фильтры НЧ.

Int8xOutROM_1 = аналоговые выходы на сабы.


Пример 1. Меняем логику режима Super Bass.

Скачиваем стоковый проект. Распаковываем. Импортируем на ваш компьютер по инструкции. В проекте нас интересуют только два блока — Biquad_L1 и Biquad_R1 - это фильтры НЧ для сабов.

chipStudio.jpg


Коэффициенты для этих фильтров загружаются через кнопку Add из папки DataTables . Это файлы SuperB2_**.txt число (**) в имени файла это частота дискретизации для которой подготовлены коэффициенты. Нужно открыть каждый файл и поменять местами группу коэффициентов затем сохранить файл с тем же именем.

filter.jpg


Этим действием мы изменили порядок работы фильтров в зависимости от нажатия кнопки S-Bass. Теперь Супербас будет включатся после нажатия кнопки (НЕ после загрузки).
Нужно ещё изменить свечения светодиода. Чтобы он включался когда включен супербас Biquad_R. За эту функцию отвечает модуль LED_1. Поменяем местами установки OFF – ON. Это нужно проделать в каждом проекте комбопроекта (изменить-сохранить). Между проектами переключаемся на вкладке ComboProject.
LED.jpg


Сохраняем комбопроект и загружаем его через разъем микроUSB на плате управления.

Пример 2. Добавим супербас в широкополосный стереоканал.

Для того чтобы супербас включался и в широкополосном стереоканале в схеме необходимо поставить ещё по одному BassShelf фильтру. Это низкочастотный шельфовый (или полочный) фильтр. Усиливает или ослабляет частоты ниже заданной. В PurePathStudio перед аналоговым выходом первой PCM5242 поставим по одному такому фильтру. Biquad_L1 и Biquad_R1.

PP_Stereo_NEW.jpg


Учитывая то, что не у всех есть PurePathStudio. Предлагаю скачать Комбопроект в который эти модули уже вставлены. Распакуйте и импортируйте его на свой ПК.
biquadS.jpg


Малиновым цветом выделены эти BassShelf. Сейчас они пустые, без коэффициентов описывающих настройку (частоту, добротность и.т.п). Заметьте, эти фильтры подключены к той же кнопке к которой подключены фильтры НЧ для сабвуфера. Будут включатся одновременно.
Настроим эти фильтры. Воспользуемся программой TIBQ она есть в архиве. Это калькулятор коэффициентов для всевозможных фильтров.

TI_BQ_coef.jpg


Нам нужны две НЧ полки BassShelf. Они будут переключатся кнопкой Супербас. На первой усиление в 5дБ, вторая с нулевым усилением. Частоту среза выберем например в 40Гц. Можно посмотреть графики. Далее выбираем частоту дискретизации в Гц (44100 … 192000), нажимаем кнопку Coeff.

TI_BQ_coef_txt.jpg


Устанавливаем Resolution: 24bit. Нажимаем Save и сохраняем файл с коэффициентами для первой частоты дискретизации 44100Гц. Далее для каждой частоты создаем и сохраняем файлы с коэффициентами. Сохранять их лучше всего в папку DataTables назовите их например так: SuperB_44_Stereo.txt … SuperB_192_Stereo.txt
Теперь нужно провести несколько простых действий:

Открываем комбопроект → выбираем проект 44,1/16 → Находим модули Biquad_L1_1 и Biquad_R1_1 → на каждом нажимаем кнопку Add и загружаем коэффициенты из файла SuperB_44_Stereo.txt → сохраняем проект → сохраняем комбопроект.

Дальше проделаем эти операции для проектов на всех частотах/битах.
Затем загрузим подготовленный проект в модуль управления.
 
Последнее редактирование:

Bin

Active member
Вопрос Олегу!
С чем связана разница в форме графика частотной характеристики в Вашем примере и моих показаниях? На картинке скриншот - слева описание с форума, правее график в работающего TIBQ в моем случае - параметры вбиты одинаковые.
Если менять частоту то график "скачет" - вместо изменения частоты среза полки меняется форма самого графика.
Еще вопрос по TIBQ- на него хелп есть? Что за параметры "S" и "O"? Как видите у Вас в колонке О стоят Y, у меня N.
N на Y сменится если двигать усиление в dB. При этом рассчитанные коэффициенты получились такие же как у Вас.


TIBQ.JPG
 

Bin

Active member
Сам спросил, сам отвечаю - возможно это глюк моей системы : все начинает правильно показывать, если по новой вбить частоту дискретизации Fs. (любую, можно ту же самую).

Еще вопросик, если позволите - чтобы реализовать "тонкомпенсацию" НЧ+ВЧ (по нажатию кнопки "СУПЕРБАСС" достаточно ли последовательно с фильтром BassShelf добавить фильтр TrebleShelf и в ЧипСтудии на управление кнопкой button1 добавить еще один новый фильтр? (естественно посчитав коэффициенты)?

121212.JPG



Или имеющийся в пакете PurePath Studio фильтр "Loudness" достаточен (у него фиксированные настройки)?
 
Последнее редактирование:

ivashka777

Well-known member
Сам спросил, сам отвечаю - возможно это глюк моей системы : все начинает правильно показывать, если по новой вбить частоту дискретизации Fs. (любую, можно ту же самую)....
Нет. У меня все так же.
У вас получилось "оживить кнопку "супербас" в стерео режиме? Я так и не увидел разницу, хотя все делал, как написал Олег (либо не все :), потому и не заработала кнопка).
 

Олег

Administrator
Команда форума
Еще вопросик, если позволите - чтобы реализовать "тонкомпенсацию" НЧ+ВЧ (по нажатию кнопки "СУПЕРБАСС" достаточно ли последовательно с фильтром BassShelf добавить фильтр TrebleShelf и в ЧипСтудии на управление кнопкой button1 добавить еще один новый фильтр? (естественно посчитав коэффициенты)?
Да, так будет работать.

Или имеющийся в пакете PurePath Studio фильтр "Loudness" достаточен (у него фиксированные настройки)?
Я не пробовал фильтр "Loudness" из PPStudio. Если получится обязательно расскажите
 

Олег

Administrator
Команда форума
У вас получилось "оживить кнопку "супербас" в стерео режиме? Я так и не увидел разницу, хотя все делал, как написал Олег (либо не все :), потому и не заработала кнопка).
А пришлите(разместите где-то) свой проект. Посмотрю что там. Я видел промелькнула ваша ссылка. Но не успел скачать(
 

ivashka777

Well-known member
А пришлите(разместите где-то) свой проект....
Как я написал выше, супербасс не заработал, более того, почему то пропала возможность воспроизведения файлов с расширением flac. Архив с проектом закинул на яндекс диск. Ссылка тут. Спасибо!
 

Олег

Administrator
Команда форума
Как я написал выше, супербасс не заработал, более того, почему то пропала возможность воспроизведения файлов с расширением flac. Архив с проектом закинул на яндекс диск. Ссылка тут. Спасибо!
Неправильно сделали.

Это же ваш файл:

Text "* Sample Rate = 44100"
Text "* Filter 1 Low Pass 2nd Order Butterworth, 30 Hz Fc 6,5 dB "

Text "* BQ: H(z) = (N0 + 2*N1/z + N2/(z2)) / (8388608 - 2*D1/z - D2/(z2))"
Text "* Filter Coefficients in format N0, N1, N2, D1, D2"

Text "* 1O: H(z) = (N0 + N1/z) / (8388608 - D1/z)"
Text "* Filter Coefficients in format N0, N1, D1"

Text "* Filter 1 BQ "
0x000050
0x000050
0x000050
0x7F9CF1
0x80C583

Во первых у вас данные только для одного фильтра. А переключалка работает между двумя (тремя...) фильтрами. Нужны значения для второго фильтра например 30 Hz Fc 0 dB. А еще лучше его вообще отключать строчками:

0x7FFFFF
0x000000
0x000000
0x000000
0x000000

Во вторых для супер баса нужен не фильтр НЧ, а полка НЧ.

у вас ФНЧ отрезает всё что за 30 Hz

LPass.jpg


а вам нужно поднять всё что ниже 30Hz не изменяя уровень остального. Это полка - Bass Shelf

shelf.jpg


Я сделал для вас полку на 100 Гц плюс 6,5 дБ (ваши 30 Гц, мне кажется, только для саба хороши). С отключением при повторном нажатии. Попробуйте загрузить.

Text "* Sample Rate = 44100"
Text "* Filter 1 Bass Shelf 100 Hz Fc 6,5 dB"

Text "* BQ: H(z) = (N0 + 2*N1/z + N2/(z2)) / (8388608 - 2*D1/z - D2/(z2))"
Text "* Filter Coefficients in format N0, N1, N2, D1, D2"

Text "* 1O: H(z) = (N0 + N1/z) / (8388608 - D1/z)"
Text "* Filter Coefficients in format N0, N1, D1"

Text "* Filter 1 BQ "
0x7FFFFF
0x819DB4
0x7CCEEA
0x7EE36A
0x823443

Text "* Filter OFF "
0x7FFFFF
0x000000
0x000000
0x000000
0x000000
 

ivashka777

Well-known member
Олег, при всем моем желании ничего не получается. Если не сложно, выложите уже готовый для заливки проект с работающей кнопкой супербасс в режиме стерео. Спасибо.
 

Bin

Active member
Олег, при всем моем желании ничего не получается. Если не сложно, выложите уже готовый для заливки проект с работающей кнопкой супербасс в режиме стерео. Спасибо.
Приветствую! Про супербас - может вопрос некорректен, но все же: а Вы уверены, что ваша акустика позволяет нормально воспроизвести (позволяет услышать) частоты ниже 45 Герц? Почему спрашиваю - уже несколько раз сталкивался с тем, что ребята на 6" динамиках пытаются услышать 40 Герц. Хрипы, свист воздуха, дребезг и тд запросто, а вот чистый тон с частотой ниже резонансной фазоинвертора вряд ли. (про сабы разговор отдельный - они не у всех есть). Для примера - у меня в нч секции стоят 8" динамики (акустика, скажем так, не из дешевых) - на тональном сигнале минимум 38Герц слышно, увеличивать его смысла нет - это частота фазика и кроме шума воздуха в трубе лучше не станет (опять же повторюсь - это не касается полноценных сабов и записей с ОЧЕНЬ малым уровнем НЧ). Если в проекте сделать фильтр "бассшелф" до частоты 80 Герц - вот это будет сразу слышно и на не слишком крупных динамиках.
Это просто предположение, так как не знаю какая у Вас акустика.
Можно попробовать погонять файлы с тоном - и граница воспроизведения будет понятна и работа фильтра.
PS. Прошу прощения - сразу на Ваш вопрос не ответил - что-то плотно с работой - на хобби времени пара часов в неделю.
Сам пробовал разные проекты делать - с разными типами фильтров и настройками - работает все, но требует внимательности при их создании - много нюансов и в Pure Path и в Чип Студии. (по чип студии в этом форуме много подсмотрел в разных темах и закинул себе в заметки), с Purepath сам разбирался.
 

Bin

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

Конструктив:

111.jpg


222.jpg


На мой вкус усилителю тут не место - тесно и довольно жарко, а вот как стример с линейными выходами - просто отличное решение.
HiFi-Pi №2 и корпус как у всех.
Блок питания MeanWell 5В, 3А - с нормальным таким запасом вышло. Дешевые китайские и уж тем более зарядки от телефонов тут не здорово использовать - очень "шумные" и частенько стабилизация так себе.
Релейный блок из деталек (платка от Чипа) собрана - готовый в продаже так и не появился.
Под тестовую заднюю панель взята заглушка от 5" отсека старого компа - подходит с минимальной подрезкой и испортить не жалко.
Кнопки круглые - проще ставить :)
Выходы - пара RCA на небалансный выход и пара мини XLR - балансный.
Вентилятор (а точнее два) - чистой воды перфекционизм, но тепло внутри корпуса не приемлю. Один на задней панели , один будет стоять сбоку малинки и дуть в нее. Запуск плавный от блочка с программированием температуры запуска, термодатчик приклеен к радиатору проца малинки. Питание на этот колхоз от изолированного DC/DC преобразователя 5-12В на 2 Ватта.

Программно:
Два независимых стереоканала - один на балансные выходы (XLR), один на небалансный (RCA).
Проекты в PPS и Чипстудии: Первый чип PCM5242 (картинка ниже), второй чип - вход I2S напрямую на интерполятор (LR выход).
С супербассом поигрался и убрал - не мое, да и не надо при нормальной акустике и той музыке, которую слушаю. Регулировок НЧ и ВЧ вполне достаточно. А вот нормальной тонкомпенсации очень не хватает и особенно при негромком прослушивании.
Поэтому в проект PPS добавлен модуль "Loudness".
Он имеет прописанные коэффициенты, которые зависят от положения регулятора громкости.
Единственно, алгоритм работы тонкомпенсации у TI несколько , я бы сказал, своеобразный - он технически логичен, но от модели "кривых равной громкости" все-таки отличается. В настоящий момент играюсь коэффициентами Loudness - слушаю как лучше (а по честному как мне больше нравится :)), будет время - уже с осциллографом настрою как правильнее.
Вот проект из PPS:
1622915171469.png

При импорте в Чипстудию появляется несколько блоков от Loudness
1622412378773.png

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

Все, в принципе, работает.


ИЗ НЮАНСОВ (может пригодится) - при изменении частоты семплирования проектов в PPS необходимо пробежаться и открыть (дабл клик по блоку ) все блоки фильтров, иначе коэффициенты сбросятся в ноль, после "активации" блока они восстановятся. Это важно когда начальные параметры фильтра для чипстудии берутся из проекта PPS, а не рассчитываются вручную и потом вносятся в DataTables.
Так же не забыть менять тип выходного блока- для 44 кГц, например это Int8xOut. (Если не прав- поправьте)


Вопрос к Олегу или Евгению - все-таки неясно для чего сделано деление два блока для регулировки громкости Volume и RegVol? У меня не вышло в PPS получить блок RegVol. То есть какой блок в PurePath соответствует Regvol в Чипстудии?

Из замеченных косяков:
1. Уже писали - подтверждаю, что на плате неправильно подписаны выходы звука с каждого ЦАП.
Для правильной фазировки нужно поменять местами контакты разъема P и N в любом канале (левом или правом) для каждого из ЦАПов.
Посоветовал бы для проверки этого момента треки 2,3,4 с диска " AudioDoctor FSQ 2". Там же есть прекрасные инструменты для проверки частотного диапазона, искажений и т.д.
Ниже в качестве примера прицеплен файл для проверки фазы на средних частотах (внутри wav):


2. При регулировке громкости очень тихо, но все же слышно "щелчки" переключения. Слышно только в паузе или на низких уровнях громкости.

По звуку устройство вполне достойное. Отсутствие программной обработки в малине и очень неплохой алгоритм и его реализация в PCM5242 дали прекрасный результат.
Даже в сравнении с моим RME ADI-2DAC не разочаровал.
Всякую ересь про прозрачность, сцену и тд писать не буду - это к аудиофилам или еще куда.
Просто качественный звук с минимальным количеством искажений.

В одной из тем на этом форуме писали про необходимость изолированного питания и изоляции шины данных - не увидел необходимости. Шумы питания и мусор с цифровых шин минимален (измеряются где-то на уровне шумовой полки, определяемой битностью цапа, но точно не слышны). Правда буду честен - "тишину" на максимуме двухсот ваттного усилителя не слушал :) Хотя можно и попробовать.

PS. Еще один нюанс для тех кто берет небалансный выход - в данной схеме по выходу ЦАПов нет разделительных конденсаторов (что логично для диф выхода) и как не странно - у некоторых устройств (усилители для наушников например) нет разделительных конденсаторов на входе!!! - видимо в расчете на их наличие в источнике сигнала. Если такое соединить , скорее всего, ничего не сгорит, но спецэффекты по звуку гарантированы, а в определенных схемах постоянка прилетит на выход и тогда уже ТОЧНО поплохеет наушникам или динамикам.
 

Вложения

Последнее редактирование:

ivashka777

Well-known member
Приветствую! Про супербас - может вопрос некорректен, но все же: а Вы уверены, что ваша акустика позволяет нормально воспроизвести (позволяет услышать) частоты ниже 45 Герц? .....
Доброго дня! У меня, конечно, далеко не высший класс колонки (фото в низу), но уверен, что разницу я все равно бы услышал по низам при включении супербаса.
По большому счету в нем нет необходимости, просто хочется что бы кнопка работала, раз уж она есть на лицевой панели :).
Я далек от программирования, разбираться практически с нуля ради одного проекта, нет особого желания и времени, увы.

.Колонки.jpg
 
Последнее редактирование:
  • Like
Реакции: Bin

Bin

Active member
Доброго дня! У меня, конечно, далеко не высший класс колонки (фото в низу), но уверен, что разницу я все равно бы услышал по низам при включении супербаса.
По большому счету в нем нет необходимости, просто хочется что бы кнопка работала, раз уж она есть на лицевой панели :).
Я далек от программирования, разбираться практически с нуля ради одного проекта, нет особого желания и времени, увы.
Мне бы пошаговую инструкцию, типа такой как сам писал на 4pda или уж готовый проект :geek:
Думаю не только я сказали бы большое спасибо.
.Посмотреть вложение 938 Посмотреть вложение 939
Приветствую!
Не нашел явные характеристики ss-d570, но по виду нч дин - 8". Должно быть слышно.
Я тоже, к сожалению, не программер, но привык рассчитывать только на себя :( - поэтому разбираюсь, по возможности, сам. Могу предложить помощь в создании проекта, нопосле 6 июня. Большое питерское мероприятие (ПМЭФ) времени даже на сон не оставляет :(
Пока предлагаю все-таки найти в сети и скачать диск для тестирования аудио тракта AudioDoctor FSQ 2 - там реально много интересного.
На всем известном ресурсе он есть.
Если что - пишите в личку.
 

Евгений

Administrator
Команда форума
опрос к Олегу или Евгению - все-таки неясно для чего сделано деление два блока для регулировки громкости Volume и RegVol? У меня не вышло в PPS получить блок RegVol. То есть какой блок в PurePath соответствует Regvol в Чипстудии?
Volume- это блок громкости из проекта PPS. Regvol - это громкость, изменяемая в регистрах PCM5242, ее нет в PPS.
 
  • Like
Реакции: Bin
Неправильно сделали.

Это же ваш файл:

Text "* Sample Rate = 44100"
Text "* Filter 1 Low Pass 2nd Order Butterworth, 30 Hz Fc 6,5 dB "

Text "* BQ: H(z) = (N0 + 2*N1/z + N2/(z2)) / (8388608 - 2*D1/z - D2/(z2))"
Text "* Filter Coefficients in format N0, N1, N2, D1, D2"

Text "* 1O: H(z) = (N0 + N1/z) / (8388608 - D1/z)"
Text "* Filter Coefficients in format N0, N1, D1"

Text "* Filter 1 BQ "
0x000050
0x000050
0x000050
0x7F9CF1
0x80C583

Во первых у вас данные только для одного фильтра. А переключалка работает между двумя (тремя...) фильтрами. Нужны значения для второго фильтра например 30 Hz Fc 0 dB. А еще лучше его вообще отключать строчками:

0x7FFFFF
0x000000
0x000000
0x000000
0x000000

Во вторых для супер баса нужен не фильтр НЧ, а полка НЧ.

у вас ФНЧ отрезает всё что за 30 Hz

Посмотреть вложение 914

а вам нужно поднять всё что ниже 30Hz не изменяя уровень остального. Это полка - Bass Shelf

Посмотреть вложение 915

Я сделал для вас полку на 100 Гц плюс 6,5 дБ (ваши 30 Гц, мне кажется, только для саба хороши). С отключением при повторном нажатии. Попробуйте загрузить.

Text "* Sample Rate = 44100"
Text "* Filter 1 Bass Shelf 100 Hz Fc 6,5 dB"

Text "* BQ: H(z) = (N0 + 2*N1/z + N2/(z2)) / (8388608 - 2*D1/z - D2/(z2))"
Text "* Filter Coefficients in format N0, N1, N2, D1, D2"

Text "* 1O: H(z) = (N0 + N1/z) / (8388608 - D1/z)"
Text "* Filter Coefficients in format N0, N1, D1"

Text "* Filter 1 BQ "
0x7FFFFF
0x819DB4
0x7CCEEA
0x7EE36A
0x823443

Text "* Filter OFF "
0x7FFFFF
0x000000
0x000000
0x000000
0x000000
Добрый вечер Олег! Вопрос по калькулятору. 24 бита из-за разрядности контроллера или все таки надо для каждого проекта выбирать свое разрешение?
 

Bin

Active member
Добрый вечер Олег! Вопрос по калькулятору. 24 бита из-за разрядности контроллера или все таки надо для каждого проекта выбирать свое разрешение?
24 бита - это разрядность дсп PCM5242, она и вбивается в калькуляторе, а для проектов важна частота дискретизации
 

Bin

Active member
Ура! "Допилил" машинку до того звука, о котором мечтал. В своем посте выше внес исправления. Фильтр Loudness в PurePath ставится ПЕРЕД регулировкой громкости!!! (всегда полезно после трех ночей попыток разобраться почему все не так как планировал, прочитать внимательно HELP).
Теперь есть полноценная тонкомпенсация, ну прям очень рекомендую!
Фишка в том, что этот фильтр завязан с изменением значений из регулятора громкости и делает обработку в зависимости от уровня громкости (при уменьшении громкости от заданного уровня начинает по алгоритму увеличиваться уровень низких и высоких частот - в итоге на любой громкости тональный баланс ровный и правильный, то есть все частоты слышны) , плюс можно настроить фильтр так, что срабатывать он начнет от оптимальной громкости (для кого то комфортно погромче, кому то потише).
К кнопке Супербасс прикрутил изменение уровня тонкомпенсации - послабее, посильнее.
Если кому то интересно - пишите, распишу подробнее что и как.
 
Последнее редактирование:
Верх