LINUX.ORG.RU

недостоверное воспроизведение звука в alsa


0

0

Вот это новость! В линуксе вопроизведение звука не есть достоверным. Прослушивание качественной музыки сведено на ноль. http://rapidshare.de/files/48142291/SB_test.wav.html --тестовый трек. Прослушайте и сами все поймете. Именно в таком качестве работает вся музыка на оригинальных cd. Там синусоида, которая должна идеально ровно звучать. В виндовсе в foobar2000+ssrc96000 играет идеально, в линуксе в амарок ужасные искажения. Пробовал через wine запустить foobar2000+ssrc96000 - искажения просто ужасные


Ответ на: По горячим следам... от Deleted

И да, естественно это зависит от колонок/наушниках. У меня на ноутбучных пищалках писк практически не различим, а в наушниках ощутимо режет слух.

Deleted
()
Ответ на: комментарий от YAR

> Это синтезированная дорожка, тут нет погрешностей оцифровки - просто 3 отдельных дорожки с разными параметрами, показывающие возможности передачи сигнала. Как видишь, для более-менее точной передачи формы надо хотя бы 6-8 точек на период, следовательно, максимум, что ты можешь хоть как-то требовать от CD - это

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

---

Кстати, а как подавались тестовые 15 КГц на TEC, и на сколько КГц ЦАП там? Или вопрос, скорее, к автору скриншота?

http://linuxoid.hostopia.com/rain/sound/28_15000_tec.jpg

gag ★★★★★
()

В итоге всего прочитанного родился следующий asound.conf для HDA NVidia Realtek ALC262


pcm.!surround51 {
                type vdownmix
                slave.pcm "default"
        }
pcm.!surround40 {
                type vdownmix
                slave.pcm "default"
        }


defaults.pcm.dmix.rate 96000
defaults.pcm.rate_converter "samplerate"
defaults.pcm.dmix.format "S32_LE"


amarok ходит через esd из за бага xine-lib при выводе в alsa :(

kdf16rc
()
Ответ на: комментарий от gag

> Кстати, а как подавались тестовые 15 КГц на TEC

>> В случае плеера был записан тестовый диск.


> и на сколько КГц ЦАП там


В Audio CD подразумевается только одна частота дискретизации :). Или ты спрашиваешь, делается ли передискретизация? С учетом того, что это достаточно старый плеер (ему больше 20 лет) из дешевой категории, то вряд ли, скорее всего, так и гонится в 44100 на выход. А вот второй из достаточно современных, там не знаю. Да, и второго сейчас уже нет, зато появился 3-й, Orelle CD-100e, можно будет еще на нем поупражняться. А автор скриншотов я и есть.

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

Ну и я еще немного картинок поделал: http://juick.com/Rain/234760

YAR ★★★★★
()
Ответ на: комментарий от kdf16rc

alsa faq открыл мне, что ladspa можно юзать без jack и прочих лишних 
мне сущностей :) (да, я из анабиоза)

Окончательная версия asound.conf с нормализацией и компрессией.

pcm.todmix {
      type plug
      slave.pcm "dmix";
}

pcm.!default {
      type plug
      slave.pcm "ladcomp_compressor";
}

pcm.ladcomp_compressor {
      type ladspa
      slave.pcm "ladcomp_limiter";
      path "/usr/lib/ladspa";
      plugins [
          {
              label dysonCompress
              input {
                  #peak limit, release time, fast ratio, ratio
                  controls [0 1 0.5 0.99]
              }
          }
      ]
}

pcm.ladcomp_limiter {
      type ladspa
      slave.pcm "todmix";
      path "/usr/lib/ladspa";
      plugins [
          {
              label fastLookaheadLimiter
              input {
               #InputGain(Db) -20 -> +20 ; Limit (db) -20 -> 0 ; Release time (s) 0.01 -> 2
               controls [ 10 0 0.8  ]
              }
          }
     ]
}

pcm.!surround51 {
                type vdownmix
                slave.pcm "default"
        }
pcm.!surround40 {
                type vdownmix
                slave.pcm "default"
        }

defaults.pcm.dmix.rate 96000
defaults.pcm.dmix.format "S32_LE"
defaults.pcm.rate_converter "samplerate"

kdf16rc
()
Ответ на: комментарий от kdf16rc

Убрал компрессию с нормализацией, очень странно себя ведёт, вреда больше чем пользы.

kdf16rc
()
Ответ на: комментарий от kdf16rc

Примерно то же самое для pulseaudio (добавлять в /etc/pulse/daemon.conf):

===========================================================
; Чтобы не заикалось, когда система под нагрузкой
high-priority = yes
realtime-scheduling = yes

default-sample-format = s32le
default-sample-rate = 192000

; Оставляем по умолчанию
;resample-method = speex-float-3
===========================================================

Я поэкспериментировал с разными вариантами resample-method (все возможные варианты показывает pulseaudio --dump-resample-methods), но на слух лучше чем умолчальный speex-float-3 ничего не нашлось, а на некоторые варианты у меня не хватило процессора =).

WARNING! Экспериментировать с разными вариантами resample-method лучше с выключенным режимом реального времени (realtime-scheduling = no). Иначе вся система может зависнуть, когда pulseaudio откушает всё процессорное время.

Deleted
()
Ответ на: комментарий от kdf16rc

> alsa faq открыл мне, что ladspa можно юзать без jack и прочих лишних
мне сущностей :) (да, я из анабиоза)

Да вроде давно =). Только раньше перед включением в цепочку ladspa-плагина, нужно было преобразовать сэмплы во floating-point (а после плагина - обратно). Сейчас это видимо делается автоматически.

А что делают фильтры dysonCompress и fastLookaheadLimiter?

Deleted
()
Ответ на: комментарий от Deleted

>нужно было преобразовать сэмплы во floating-point (а после плагина - обратно)

Надо и сейчас. На эти грабли и наступил.

>dysonCompress

Компрессия диапазона.

>fastLookaheadLimiter

Старается нормализовать поток, заглядывая вперёд. Создаёт нехилую латентность, плюс глючит. Я микшером кручу более осмысленно, чем он :) Пришёл к выводу, что мне всё это не надо. Незачем звук портить.

kdf16rc
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.