: 推 linyoyo: 想请问foobar不管用Asio还Wasapi切歌时dac会有继电器声 06/13 14:42
: → linyoyo: 音该如何解决?但是用DS(似乎是windows内建的)时第一首歌 06/13 14:42
: → linyoyo: 播一下子再切下一首又不会有了... 06/13 14:42
:
: 有可能是dac或是pc的反应不够快
: 撇除掉dac本身的设计外
: 通常比较有关联的地方是buffer
: 你可以在DAC的driver或是播放软件的driver
: 找到buffer
: 将两者试着调高到2000ms以上看看有没有帮助
这应该跟 Buffer 无关,而是某些 DAC/系统 收到的 Audio data 两相邻采样点之间的
值差异太大,也就是曲线太陡峭时反应出的特性
foobar2000 对于快转或切歌,无论档案是什么采样率都是在中间插入 2048 个零来避
免产生所谓的 "POP" 声
除了插零外,foobar2000 默认并不会修改交接处的 Audio data 的值
大概是作者认为 foobar2000 对于 Audio data 应该要是透明的
但少数 DAC/系统 还是无法避免会出现异音,可以加挂一类似淡入淡出的 DSP 改善
或不想破坏所谓的位完美的话...可以改用一些默认有修改 Audio data 的播放软件 :D
图上方是 foobar2000 点击快转的结果,下方是己对齐过的原始音档
主要看的是点的部分,点是 PCM 数据。曲线是分析软件模拟 DAC 重建所画出来的
可见当截断处的两个点的值差大大时,波形会变得很奇怪
因为 DAC 的 DSP 重建时会试图以正弦曲线通过每一个点的位置
相邻的 PCM 值差异小=低频、值差越异大=越高频
但基于 Nyquist–Shannon 取样定理,这种值差太大陡峭的数据其实已经不合法,频率
超过了采样率的 1/2
DAC's Digital Filter 的脉冲响应特性就会反应在这里
分析软件应该是以 Sinc 来重建所以和下方原始档相比,可以看到出现了前后振铃
越陡峭振铃就越激烈,可见上方左声道比下方右声道的振铃起伏要大
实际上不同的 DAC 会依所选的数位滤波(插值)类型出现不同的响应
上图为播放中的数据被截断插入零,如果是点击快转 2048 个零之后会插入新的数据
但与截断时同样,新的数据多半也不会是从零开始,一样也会有碰到陡峭的问题
把上图左右镜像就可当例子,所以不再附图了
※
而为什么用 DS(DirectSound)多半就不会发生这个问题
foobar2000 送出去的 Audio data 还是跟上面同样的,不会有差异
但 DirectSound=共用模式,Audio data 会进 Windows Audio Engine
基本上会被重采样≒低通滤波,再被 DAC 过采样≒低通滤波
本来陡峭尖锐的被滤了两次后就平滑多了所以就不再这么激烈了
※
另外,如果 Audio interface 在传 Audio data 时,发生了掉资料(封包)的状况
也会发生跟这差不多的情况,只是没插入零而是少了中间一段资料
接起来的前后数据间差异越大,就越容易产生明显的异音
H/W buffer 大就容易发现跳针了,H/W buffer 小、且值又接近时就很难发现