AIMP Forum

AIMP for Android => Вопросы / Questions => Topic started by: Mechannic on April 09, 2019, 23:03:58

Title: Определение частот дискретизации устройства и "особенности" даунсемплинга.
Post by: Mechannic on April 09, 2019, 23:03:58
Обратил внимание, что в Аимп "находит" значительно большее количество возможно выводимых частот дискретизации на устройствах, чем другие программы. Например, телефон HUAWEI P10 Plus обычно умел выводить только 48 кГц, а тут - вся сетка от 44 до 192, HUAWEI  G525 обычно 44кГц, здесь - выбор между 44 и 48 кГц, планшет GS700 обычно 44, здесь - выбор между 44 и 48 кГц.
Обрадовавшись новым возможностям не очень нового HUAWEI P10 Plus, решил это дело потестить - закинул на него WAV-ки 192кГц 16 бит с синусоидальными частотами от 10 до 50 кГц с шагом 5 кГц и стал смотреть осциллом, что же он выдаст.
В результате, независимо от выставленной частоты плеера, частоты 10, 15, 20 пролезли довольно ровно, почти без потерь.
25 кгц - дали сильный завал по амплитуде с искривлением и дрожанием формы (завал - похоже на LPF, который обычно ставят на 22кГц, дрожание - издержки менее чем двукратно превышающей сигнал частоты семплирования 48кгц). В общем по частотам дискретизации - оказалось очень сильно похоже на 48 кГц во всех режимах(от 44 до 192кГц) при входном файле 192 кГц.
И по поводу "особенностей даунсемплинга".
При дальнейшем повышении тестовой частоты в файлах, амплитуда опять набрала прежний размах (при 30кГц на входе, ~18 кГц с хорошей амплитудой на выходе).
Далее 35кГц- ~13кГц,
40кГц - ~8.8кГц,
45кГц- ~4.5кГц,
50кГц - ~5.2кГц
Все измерения частот приблизительные.
Вот такой эффект. Предположу, что похоже на эффект децимации...
В итоге получается, если прослушивать через данный плеер HI-RES файлы(имеющие громкие гармоники выше 22 кгц), не обрезанные при мастере, после оцифровки с винила LPF-ом выше 22 кГц, то данные файлы будут звучать, мягко говоря, не совсем корректно - с примесью негармоничных (смещенных по тону) откликов от высокочастотных гармоник...
Причем замечу, что обычно на  плеерах, и звуковых картах все звуки с высокочастотных источников, выше половины частоты сэмплирования тракта на выход не проходят.
Title: Re: Определение частот дискретизации устройства и "особенности" даунсемплинга.
Post by: Soolo on April 10, 2019, 06:55:50
Вот тесты HUAWEI P10 Plus
https://www.gsmarena.com/huawei_p10_plus-review-1598p7.php
Не стОит ожидать от него лучшего вывода на завышенных частотах.

Хочу заметить, у некоторых (а может у всех) Андроидов есть своя "собственная" частота, и что бы вы ни настроили в плеере - Андроид всё переделает, как ему удобно, вполне возможно именно этот момент создаёт "лишние" частоты на выходе - алиасинг (https://ru.wikipedia.org/wiki/%D0%90%D0%BB%D0%B8%D0%B0%D1%81%D0%B8%D0%BD%D0%B3).

Вы какую версию АИМПа тестировали? На 2.90 есть настройки ресемплера - на высшем качестве он практически не вносит собственных искажений, все результаты будут зависеть от Андроида и от железа. То есть настраиваете в АИМПе 44,1 или 48 кГц ("родную" для Андроида), лучшее качество - и на выходе не получите эффект алиасинга (https://ru.wikipedia.org/wiki/%D0%90%D0%BB%D0%B8%D0%B0%D1%81%D0%B8%D0%BD%D0%B3).
Title: Re: Определение частот дискретизации устройства и "особенности" даунсемплинга.
Post by: Mechannic on April 10, 2019, 14:31:34
>Не стОит ожидать от него лучшего вывода на завышенных частотах.
никто не ожидает от конкретного девайса вывода на завышенных частотах.
Речь здесь идет о способности определения плеером РЕАЛЬНЫХ параметров звукового тракта. То есть реальной частоты L/R интерфейса I2S встроенного аудиокодека, которая чаще всего в телефонах фиксированная. То есть предполагалось, что плеер способен видеть и предлагать к выбору единственно возможную частоту девайса.
>То есть настраиваете в АИМПе 44,1 или 48 кГц ("родную" для Андроида)
А как ее узнать? Ведь в обычном доступном описании телефона частота не указывается - ставить специальный софт? Хотелось бы видеть эту самую "родную" частоту в настройках плеера.
А вот зачем предлагается выбрать какую-то другую частоту перед выводом в андройд c 44-килогерцовым трактом - вот это больше всего непонятно....
Если бы был драйвер прямого вывода в USB, или вывод на UPnP/DLNA - другое дело, там действительно выбор частот актуален.
>Андроид всё переделает, как ему удобно, вполне возможно именно этот момент создаёт "лишние" частоты на выходе - алиасинг.
Опыт показал, что эффект абсолютно не зависит от выбора частоты в списке.
>Вы какую версию АИМПа тестировали?
Тестировал 2.85 - то, что "автообновилось" через гугл маркет.
Насчет 2.90 - попробую тоже потестировать, но насчет алиазинга - тестировал вывод файла высокой частоты на разном железе и разных программах - нигде частота выше половины дискретизации не пролазит на выход... я имею в иду, что эта "особенность" больше похожа все таки на баг.
Title: Re: Определение частот дискретизации устройства и "особенности" даунсемплинга.
Post by: Soolo on April 11, 2019, 07:31:11
Речь здесь идет о способности определения плеером РЕАЛЬНЫХ параметров звукового тракта. То есть реальной частоты L/R интерфейса I2S встроенного аудиокодека, которая чаще всего в телефонах фиксированная. То есть предполагалось, что плеер способен видеть и предлагать к выбору единственно возможную частоту девайса.
Список поддерживаемых частот отдаёт ОС, вы же сами видите, что для разных устройств список разный.
Ну а как поступает Андроид (или ЦАП) с этими частотами в последствии - отдаётся на откуп Андроиду (ЦАПу).
OpenSL вывод считается прямым, но он прямой только для ОС, микрокод ЦАПа может что-то потом сотворить со звуком.
Чтобы много не размышлять над этим есть вариант "Авто" - его так же отдаёт ОС. "Правильная" эта частота или "не правильная" АИМП знать не может.

но насчет алиазинга - тестировал вывод файла высокой частоты на разном железе и разных программах - нигде частота выше половины дискретизации не пролазит на выход... я имею в иду, что эта "особенность" больше похожа все таки на баг.
Из той информации, что вы дали - я нигде не увидел вывод частот выше половины частоты дискретизации.
Title: Re: Определение частот дискретизации устройства и "особенности" даунсемплинга.
Post by: Mechannic on April 11, 2019, 10:10:14
Quote
"Правильная" эта частота или "не правильная" АИМП знать не может.
Лично видел, как частота всегда правильно определяется, и причем одна, в некоторых платных плеерах(если интересно, каких именно - назову).

Quote
Из той информации, что вы дали - я нигде не увидел вывод частот выше половины частоты дискретизации.
Вывод делался из WAV файла 192кГц 16 бит. в файле 10сек. фиксированная синусоида (файлы с синусоидой на 10, 15, 20, 25, 30, 35, 40, 45, 50 кГц)
Эксперимент проводится с ипользованием аппарата Huawei P10 Plus. Версия плеера 2.85. В выходных параметрах плеера поочередно выбирались выходные частоты дискретизации 44, 48, 88, 96, 192 кГц для всех файлов. Если нужны скриншоты осцилограмм - сделаю, только уточните, каких именно. Если нужна еще какая информация - всегда пожалуйста.
Title: Re: Определение частот дискретизации устройства и "особенности" даунсемплинга.
Post by: Mechannic on April 13, 2019, 22:52:26
Наконец немного потестировал бету 2.90.
Есть выбор алгоритма передискретизации. Причем алгоритм передискретизации реально влияет на выходной сигнал от "очень быстрый" до "очень качественный". Размах сигнала, превышающего половину частоты дискретизации, и пролазящего на выход в искаженной форме, ступенчато уменьшается до нуля при увеличении качества передискретизации (а его там не должно быть совсем, как сделано во многих аудиоприложениях как под андроид, так и под windows).
Окно выбора частоты по прежнему предлагает весь ряд несуществующих частот, выбор которых абсолютно не влияет на выходной сигнал - по измерениям он всегда выводится на 48 кГц.
Подключил к USB внешнюю звуковую карту (Roland Rubix 22) с возможными режимами 44, 48, 96, 192 кГц. Окно выбора частот по прежнему предлагает весь ассортимент (в том числе 88 и 176кГц) В обоих режимах (OpenSL и AudioTrack), независимо от выбранной частоты, на звуковуху идет звук в формате 96 кгц (синусоида начинает "ломаться" на 45 кГц).
Осциллограммы(в аимпе проигрываются файлы в формате WAV 192kHz 16bit):

Вывод 15кГц через OpenSL и AudioTrack на внутренний 48кГц- ЦАП телефона при "быстрой" передискретизации(сигнал норм):
(https://i.ibb.co/kM5wRvP/aimp-15k-Hz.png)

Вывод 20кГц через OpenSL и AudioTrack на внутренний 48кГц- ЦАП телефона при "быстрой" передискретизации(сигнал норм):
(https://i.ibb.co/74gCD0M/aimp-20k-Hz.png)

Вывод 25кГц через OpenSL и AudioTrack на внутренний 48кГц- ЦАП телефона при "быстрой" передискретизации(сигнал сильно просел):
(https://i.ibb.co/J2XKSTT/aimp-25k-Hz.png)

Вывод 30кГц через OpenSL и AudioTrack на внутренний 48кГц- ЦАП телефона при "быстрой" передискретизации(наблюдается алиасинг- видится как 18 кГц):
(https://i.ibb.co/D4kZdnG/aimp-30k-Hz.png)

Вывод 35кГц через OpenSL и AudioTrack на внутренний 48кГц- ЦАП телефона при "быстрой" передискретизации(наблюдается алиасинг- видится как 13 кГц):
(https://i.ibb.co/yQ0bdss/aimp-35k-Hz.png)

Вывод 45кГц через OpenSL и AudioTrack на внешнюю звуковую карту Roland Rubix22 при "быстрой" передискретизации (наблюдается дрожание сигнала, что говорит о приближении к половине реальной частоты дискретизации(96кГц)):
(https://i.ibb.co/NTk8hrb/aimp-Rubix-45k-Hz.png)

Вывод 90 кГц через плеер Neutron в режиме USB драйвера RUBIX22  (наблюдается дрожание сигнала, что говорит о приближении к половине реальной частоты дискретизации(192кГц)):
(https://i.ibb.co/CnKQZD5/neutron-usdriver-rubix-90k-Hz.png)
Title: Re: Определение частот дискретизации устройства и "особенности" даунсемплинга.
Post by: Zhenya on April 14, 2019, 18:52:09
Mechannic, у вас в сообщение неправильно вставлены картинки.
Title: Re: Определение частот дискретизации устройства и "особенности" даунсемплинга.
Post by: Soolo on April 14, 2019, 19:01:21
Не вижу никаких противоречий в ваших исследованиях. На то передискретизация и "быстрая".
При "качественной" передискретизации, как я понял, алиасинга нет?
Про "несуществующие" частоты я уже писал: этот список не с потолка, его отдаёт ОС.
Title: Re: Определение частот дискретизации устройства и "особенности" даунсемплинга.
Post by: Mechannic on April 14, 2019, 19:19:34

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

Quote
При "качественной" передискретизации, как я понял, алиасинга нет?
Да, в положении "очень качественный" алиасинга не наблюдается.

Quote
Про "несуществующие" частоты я уже писал: этот список не с потолка, его отдаёт ОС.
Но ведь определяют же в других программах, значит как то можно же!   :)
Title: Re: Определение частот дискретизации устройства и "особенности" даунсемплинга.
Post by: Soolo on April 14, 2019, 20:38:27
Но ведь определяют же в других программах, значит как то можно же!
Ну ведь можно же как то "Авто" выбрать.

Может быть оно и терпимо, только реально не встречал, в аудиопрограммах, даже на самых минимальных параметрах фильтрации, чтобы на выход пропускалось что то выше половины дискретизации.
Перестаньте оперировать странными терминами. Это НЕ частоты выше половины частоты дискретизации. Это алиасинг. Это типовая проблема "быстрых" алгоритмов с упрощённым фильтром высоких частот.
В любом случае, ничего с этими алгоритмами мы поделать не можем: это алгоритмы звукового движка bass.
Title: Re: Определение частот дискретизации устройства и "особенности" даунсемплинга.
Post by: Mechannic on April 14, 2019, 21:11:19

Quote
Ну ведь можно же как то "Авто" выбрать.
Да, конечно можно, когда не паришься о качестве и точности вывода. Ведь между частотами 44 и 48 кГц, которые обе встречаются на встроенных цапах есть очень большое  отличие, причем на слух это отличие заметно намного больше, чем даже между 48 и 192 кГц, особенно когда на 48кГц вывод подсосвываешь 44 кГц файл (или наоборот) без качественного ресемплинга. Поэтому для мобильных девайсов(помимо стационарной hi-res) постоянно поддерживаю аудиобиблиотеку сразу в 2-х форматах - в 44 и в 48 кГц, сгенеренную из файлов высокого разрешения (использовать ресемплинг между 44 и 48 - не моё). И для того, чтобы правильно выбрать, что закачивать в новый  девайс (с не моим гугл аккаунтом), сначала приходится устанавливать платный плеер (триал версию) и смотреть реальную частоту. Может быть есть и более простой способ определить частоту звукового тракта, но я не сильно его искал...
Поэтому важно выставить именно правильную частоту, а выбор других частот, особенно если "не угадал", заведомо пустит звуковой поток через двойное преобразование - одно качественное, но не в ту частоту от аимпа, а второе - "какое уж есть",  от андроида в правильную частоту, окончательно убивающее "прозрачность"...

Quote
Перестаньте оперировать странными терминами. Это НЕ частоты выше половины частоты дискретизации. Это алиасинг. Это типовая проблема "быстрых" алгоритмов с упрощённым фильтром высоких частот.
В любом случае, ничего с этими алгоритмами мы поделать не можем: это алгоритмы звукового движка bass.
Понятно.
Title: Re: Определение частот дискретизации устройства и "особенности" даунсемплинга.
Post by: Zhenya on April 16, 2019, 15:47:31
Mechannic, у вас в сообщение неправильно вставлены картинки.

*кхм-кхм*
Ситуация с картинками в сообщении стала только хуже. Были непрямые ссылки, которые были видны только при цитировании сообщения, сейчас — возможно даже прямые, но уникальные, работающие только для их загрузившего.
Используйте, например, imgur (https://imgur.com/upload), или сервис из списка в пункте 4.10 отсюда (https://www.aimp.ru/forum/index.php?topic=74.0).
Title: Re: Определение частот дискретизации устройства и "особенности" даунсемплинга.
Post by: Mechannic on April 16, 2019, 16:08:25
Quote
Используйте, например, imgur, или сервис из списка в пункте 4.10 отсюда.
Спасибо, поправил.