耳机网-耳机大家坛

标题: 华硕stx2老虎卡1792a 24bit,直推耳机,如何调节软件音量,使音质尽量不受损失? [打印本页]

作者: kretz    时间: 2017-4-11 14:35
标题: 华硕stx2老虎卡1792a 24bit,直推耳机,如何调节软件音量,使音质尽量不受损失?
本帖最后由 kretz 于 2017-4-11 14:45 编辑

      根据常识,所有系统软件的音量都应该调到100%最高,然后使用 外部的解码器的旋钮调节音量,这样才是令音质保真的最好方法.
      但是 华硕 stx2 老虎卡 1792a 24bit, 属于直插pc主板的独立声卡,没有 硬件旋钮 调节音量,所以只能使用windows 系统或者软件 数字调节音量. 又是 直推耳机,不接 带有音量旋钮的耳放或者功放.

      软件调节音量有3处: 1.此卡自带的驱动控制软件  2. windows 系统音量  3. 播放器软件
      此卡内置耳放,宣称支持600欧姆耳机,推力很大,所以直推一般耳机,软件音量可能只能调到5%左右,另外,此卡 解码芯片为1792a,只有24bit,非32bit,bit余量好像吃紧.

      这么低的软件音量,bit余量又吃紧,音质会损失多少?
      在这种情况下,华硕 stx2 老虎卡 1792a 24bit,如何调节软件音量,才能使 音质 尽量不受损失?


      各位高手多多指教!





作者: aarwwefdds    时间: 2017-4-11 14:45
本帖最后由 aarwwefdds 于 2017-4-11 17:54 编辑

你又纠结这个了...跟你说FB2K自带调节你不信

Windows系统音量理论上WASAPI输出是不可调节音量的 但是某些卡的驱动可以调节 不知道内部是如何实现的 既然不知道那就pass它

所以FB2K设置24bit输出 然后FB2K调节音量 完

p.s.楼下看不懂的可以看下楼主发过的帖子...

edit:最终结论见下方回帖
作者: aarwwefdds    时间: 2017-4-11 14:55
本帖最后由 aarwwefdds 于 2017-4-11 15:13 编辑

另外5%的音量太小了 咋搞都不好 会有相当一部分信息量被埋没到噪声里 你这声卡内置了个TPA6210A2 属于比较蛋疼的“缩小再放大”的典型

既然咋弄都不好 那就别纠结了 出声就好


我又看了下 这放大芯片理论支持从I2C取音量设定 那么说不准驱动调节音量是硬件调节。还有这卡驱动面板还有增益设定,虽然不知道是否是控制硬件来实现的,如果是的话楼主增益显然开太高了。。

楼主去找华硕的售后技术支持问一下吧
作者: kretz    时间: 2017-4-11 15:17
本帖最后由 kretz 于 2017-4-11 15:30 编辑
aarwwefdds 发表于 2017-4-11 14:45
你又纠结这个了...跟你说FB2K自带调节你不信

Windows系统音量理论上WASAPI输出是不可调节音量的 但是某 ...

      多谢你的指点!
      但是音量调节和音质损失的关系,一直都是hifi界极为重视的问题,将来也是!  无论是软件音量调节还是硬件音量调节,这里面都有很大的学问.
软件音量调节有24bit,32bit,算法等差异,硬件音量调节有物理材料性质等差异。
     你是不是都完全懂得这些学问和各种不同情况下的音质差别?

     在我的帖子中,可以看出不少高手也存在和我类似的疑问,或者在交流的过程中,会提出新的问题,这样,借助我的问题帖子,一起开拓眼界和思路,共同探索,共同提高,有什么不好?

     可能我的问题是深了一些,但是这些都是在实际中经常会遇到的问题,老是局限在FB2K,恐怕不好吧。






作者: aarwwefdds    时间: 2017-4-11 15:51
kretz 发表于 2017-4-11 15:17
多谢你的指点!
      但是音量调节和音质损失的关系,一直都是hifi界极为重视的问题,将来也是!  无 ...

我帮你去查了开源驱动实现,增益调节和音量控制都是通过软控DAC芯片实现的(很遗憾不是通过I2C控制耳放芯片实现的)。而且从开源驱动实现上看,音量调节是不可避免的,那么就用驱动音量调节吧

不过这仅是开源驱动实现 Windows下实现的我不保证是这样。

http://lxr.free-electrons.com/source/sound/pci/oxygen/xonar_pcm179x.c
相关代码的连接。如果你想进一步纠结 你只能找华硕的技术支持了
作者: kretz    时间: 2017-4-11 16:14
aarwwefdds 发表于 2017-4-11 15:51
我帮你去查了开源驱动实现,增益调节和音量控制都是通过软控DAC芯片实现的(很遗憾不是通过I2C控制耳放芯 ...

“我帮你去查了开源驱动实现,增益调节和音量控制都是通过软控DAC芯片实现的(很遗憾不是通过I2C控制耳放芯片实现的)。而且从开源驱动实现上看,音量调节是不可避免的,那么就用驱动音量调节吧

不过这仅是开源驱动实现 Windows下实现的我不保证是这样。

http://lxr.free-electrons.com/source/sound/pci/oxygen/xonar_pcm179x.c
相关代码的连接。如果你想进一步纠结 你只能找华硕的技术支持了”


多谢这么快速积极的帮助!

是的,1792 是可以编程的,你是想让我去学编程?呵呵!

作者: aarwwefdds    时间: 2017-4-11 16:57
本帖最后由 aarwwefdds 于 2017-4-11 17:13 编辑
kretz 发表于 2017-4-11 16:14
“我帮你去查了开源驱动实现,增益调节和音量控制都是通过软控DAC芯片实现的(很遗憾不是通过I2C控制耳放 ...

我没让你去学编程 只是告诉你 开源驱动的音量调节实际上是控制DAC来实现的。如果开源驱动是这么实现的 那么基本可以推出Windows的官方驱动很可能也是这么实现的。因为开源驱动要么来源于官方 要么来源于第三方对官方驱动的“分析” 从开源驱动作者署名看 似乎属于后者

另外Windows允许右下角小喇叭的音量调节由驱动控制,称作:Hardware-Offloaded Audio Processing。

假设Windows下驱动的音量调节也是和Linux驱动一样的话:
那么可以推出你的系统音量调节/驱动面板音量调节等同于很多外置解码器的自带的“电位器”。

因此该用什么音量调节还需要说么?显然解码器的音量调节能够保证最精确的PCM数据能够传输到DAC芯片。你也可以信任DAC的数字音量调节算法(如果你连这都不信任怎么能信任DAC出来的模拟信号)。虽然遗憾的是它控制的不是你声卡上的那个耳放芯片的音量使得它依然会有“缩小再放大”的问题

如果还有疑问 可以去问华硕技术支持。
作者: cagejin    时间: 2017-4-11 17:32
老虎卡耳机口用windows音量调节,就相当于你用耳放调节音量了,他耳机口100%音量并不是0db

作者: aarwwefdds    时间: 2017-4-11 17:40
本帖最后由 aarwwefdds 于 2017-4-11 17:50 编辑
cagejin 发表于 2017-4-11 17:32
老虎卡耳机口用windows音量调节,就相当于你用耳放调节音量了,他耳机口100%音量并不是0db

从开源驱动的实现看 不是调节的耳放音量 是调节的DAC音量 不够完美的。设置为推600欧耳机的时候100%音量才是0电平。其它的设置都会有一定衰减值

当然这也是不错了
作者: kretz    时间: 2017-4-11 18:27
    我现在有一个想法:
    很多人嫌 windows 系统音量(严格说应该叫 扬声器 主音量)100%还太轻,需要调大到120%,甚至200%.
    但是我实际尝试下来, windows 系统音量需要减轻,就是说: 其100%的音量.只需要原来的50%,或者30%,或者更少,这样,windows 系统音量开到100%时,播放器软件的音量可以提高到30%左右,这样调节响度就比较轻松从容了!  否则,原来的系统音量开到100%,播放器软件的音量只能调到5%左右,5%太轻,6%又太响,非常苦逼.
    所以,请教高手:
    能否将 windows 系统音量 在100%最大时,音量降低到原来的50%或者更低,从而使 播放器软件的音量可以大幅提高,以便轻松从容地调节音乐的音量,同时又完全不损失音质?
作者: aarwwefdds    时间: 2017-4-11 19:03
本帖最后由 aarwwefdds 于 2017-4-11 19:13 编辑
kretz 发表于 2017-4-11 18:27
我现在有一个想法:
    很多人嫌 windows 系统音量(严格说应该叫 扬声器 主音量)100%还太轻,需要调大 ...

你还是没懂。上面的结论已经告诉你用系统音量调节是最好的了 播放器直接100%出
你硬要两个一起调 数据不可能不损 多产生一次量化误差 但是损的能不能听得出 是另一回事
要想损少点 就24位输出 完

作者: kretz    时间: 2017-4-11 20:17
aarwwefdds 发表于 2017-4-11 19:03
你还是没懂。上面的结论已经告诉你用系统音量调节是最好的了 播放器直接100%出
你硬要两个一起调 数据不 ...

"你还是没懂。上面的结论已经告诉你用系统音量调节是最好的了 播放器直接100%出
你硬要两个一起调 数据不可能不损 多产生一次量化误差 但是损的能不能听得出 是另一回事
要想损少点 就24位输出 完"


多谢多次耐心详细的指教!


      按照你的说法,我们常说的系统音量调节,其实是dac芯片自带的算法在调节,而不是windows操作系统,我也这么想过,比如,windows没装音频驱动之前,右下方是没有喇叭的,可见,系统音量调节,很可能就是dac芯片自带的算法在调节.
      实际操作中,比如,播放器软件音量,直接100%最高,而系统音量30%,其实在 右下角的 音量合成器 控制面板上,播放器软件音量和系统音量,都是30%,因为 播放器软件音量 会把系统音量一起顶上去,所以系统音量,不会比播放器软件音量 更低,只会更高.
      那么问题来了,目前常规的说法,如果没有外部的硬件音量旋钮,要音质尽量保真, 系统音量应该100%最高,而调节播放器软件的音量,这种做法,其实是认为系统音量的调节算法或者说dac芯片自带的音量调节算法,没有播放器软件的音量调节算法好,更信任 播放器软件的算法,所以只调节播放器软件的音量.
     所以,常规的说法和你的说法,是相反的,形成了对立.
     其实在实际操作中,你提出的播放器软件音量直接100%,用系统音量调节,可以使系统音量和播放器软件音量都维持在20%左右,使音量调节变得轻松,不像常规的说法,使播放器软件的音量只能维持在5%左右的接近极端的苦逼位置!
     所以,我倒是很希望你的说法是正确的! 即: 播放器软件 音量直接100%最高,系统音量调节是最好的!


      





作者: kretz    时间: 2017-4-11 22:06
windows 可能可以通过 修改注册表,改变系统的最大音量。
但是这方面的资料很少,另外,不知道这样改变 系统的最大音量,音质是否无损?
作者: aarwwefdds    时间: 2017-4-12 06:04
本帖最后由 aarwwefdds 于 2017-4-12 09:33 编辑
kretz 发表于 2017-4-11 20:17
"你还是没懂。上面的结论已经告诉你用系统音量调节是最好的了 播放器直接100%出
你硬要两个 ...

我对你无语了。你缺乏很多基础知识

每种声卡/解码器调节音量的方式是不同的 我说的只对你的声卡有意义 对其它声卡毫无意义。

有些声卡系统音量调节是系统软件合成器在调节 而你的声卡是硬件调节 不一样的。我贴几张来自MSDN的图(出处:https://msdn.microsoft.com/en-us/windows/hardware/drivers/audio/architectural-overview

有些人的声卡不支持硬件调节(大多数外置解码器都是这样的)。那么怎么办呢 系统来帮你用软件处理音频数据后再送入声卡

注意是Software Audio Engine。不懂英语的话告诉你:软件音频引擎
所以使用外置解码器的会告诉你,ASIO输出以后系统音量不再可控。小喇叭音量调整损失比较大等等。他们说错了吗?没有,对于他们的设备确实那样做最好

你的声卡是这样

Audio Hardware Processing。硬件音频处理。
原文还有一张整合起来的图 我就不发了 我怕你又误解人家的意思

有些人的声卡ASIO/WASAPI独占输出以后小喇叭照样调音量 有些人就不行 就是这个道理。ASIO/WASAPI只是跳过了软件音量控制器 而那些ASIO/WASAPI输出以后还能调音量是硬件音量调整在作怪

上面的一切都已经证明了 你硬要搬来什么普世通用概念。这还真没有

另外你说的什么改变100%音量的 我跟你说 老虎卡有个阻抗增益调整 调的就是这个。但是它只能往下调 永远不可能超过0db。它设置为推600欧耳机的时候 才是0db输出。而它调整的方式和你调系统音量的方式无异,只是加了个偏移值
  1. 634 static void update_pcm1796_volume(struct oxygen *chip)
  2. 635 {
  3. 636         struct xonar_pcm179x *data = chip->model_data;
  4. 637         unsigned int i;
  5. 638         s8 gain_offset;
  6. 639
  7. 640         gain_offset = data->hp_active ? data->hp_gain_offset : 0;
  8. 641         for (i = 0; i < data->dacs; ++i) {
  9. 642                 pcm1796_write_cached(chip, i, 16, chip->dac_volume[i * 2]
  10. 643                                      + gain_offset);
  11. 644                 pcm1796_write_cached(chip, i, 17, chip->dac_volume[i * 2 + 1]
  12. 645                                      + gain_offset);
  13. 646                 gain_offset = 0;
  14. 647         }
  15. 648 }
复制代码
注意到gain_offset了吗 offset

我再来一段代码 设置增益量的
  1. 874 static int st_hp_volume_offset_put(struct snd_kcontrol *ctl,
  2. 875                                    struct snd_ctl_elem_value *value)
  3. 876 {
  4. 877         static const s8 offsets[] = { 2*-18, 2*-12, 2*-6, 0 };
  5. 878         struct oxygen *chip = ctl->private_data;
  6. 879         struct xonar_pcm179x *data = chip->model_data;
  7. 880         s8 offset;
  8. 881         int changed;
  9. 882
  10. 883         if (value->value.enumerated.item[0] > 3)
  11. 884                 return -EINVAL;
  12. 885         offset = offsets[value->value.enumerated.item[0]];
  13. 886         mutex_lock(&chip->mutex);
  14. 887         changed = offset != data->hp_gain_offset;
  15. 888         if (changed) {
  16. 889                 data->hp_gain_offset = offset;
  17. 890                 update_pcm1796_volume(chip);
  18. 891         }
  19. 892         mutex_unlock(&chip->mutex);
  20. 893         return changed;
  21. 894 }
复制代码

注意到它的值了吗,都是负值,-18,-12,-6,最大是0。结合前面的代码 相信我不用教你负数加减法吧
这些代码都是从你声卡的Linux开源驱动里扒出来的,就在前面回帖给的连接里

别用脚思考,如果真的能让100%音量变成120% 你知道会发生什么吗?破音。多数情况下的数字音频领域 0db输出水平是上限 超过0db的都是破音。数字调整除非使用动态压缩压限不超过0db才能不破音(那个损失的程度可大了去了),很可惜现在很多音源都动态压缩过导致听起来很不舒服。可以百度“音量竞赛”。啊对了..音频放大器因为是在模拟领域工作 没有这个概念

跑题了,回到我主题帖第一句话 你该补一下基础知识而不是想当然然后又来发帖求证你的想当然。我二楼的回帖就没有考虑到你声卡的具体情况,不过我在二楼说的确实是一种弄不清楚你声卡机制的前提下的,比较通用的办法

p.s1硬件音频处理也不是什么稀奇玩意 连很多人不齿的小螃蟹都有了
p.s2想要反驳先找到比开源驱动代码以及MSDN更有权威性的来源支持你的观点否则不再回复,明白人都能看懂我在说什么,看不懂先去把知识补齐了再来看。你也可以致电华硕技术支持,网站http://www.asus.com.cn/support/CallUs/。啊对了,我估计除非你能找到写驱动的工程师不然我估计你问不出什么,问出来也很可能是错的。建议你问开源驱动的作者更好:clemens@ladisch.de 作者是个德国人,问之前记得把英语学好把代码看懂。另一种反驳我的方法就是反编译你的声卡驱动并且证明反编译出来的结果与开源驱动不符 没别的了
作者: aarwwefdds    时间: 2017-4-12 10:23
本帖最后由 aarwwefdds 于 2017-4-12 10:58 编辑

怕楼主还弄不明白 我简单科普下音量调节会产生的两种失真类型:
1.量化失真 这个是数字音频处理(DSP 音量调节是DSP的一种)特有的失真。之前给你解释过
http://www.erji.net/forum.php?mo ... 0718&fromuid=736949
2.信号被埋没到噪声里 例如本来一个信号的电平是-95db 你给它缩小到-130db了 而你设备的信噪比只有-123db。自然被埋没到噪声之中了。这本来没什么 只是如果你后面又加一个放大器 这部分的信号由于被埋没到噪声里 之后放大是还原不回来的。无论是数字音量调节还是模拟电位器调节都会有
我给你解释过 避免“缩小再放大”

而根据开源驱动的代码显示,缩小再放大无法避免 因为调控的不是耳放的输出而是DAC的输出。因此耳放必然会对DAC缩小后的声音进行放大

所以总结一下:

楼主这卡 用系统音量调节最好 可以保留最精确的数据到声卡DAC。虽然第二条避免不了 但至少可以避免第一条 播放器调节音量后 量化行为产生的失真

但我想起了楼主另一个帖子:
http://www.erji.net/forum.php?mo ... 0884&fromuid=736949
你在这里说起了你喜欢WMP用SRS SRS是DSP的一种 因此很不幸的是 播放器的量化失真你没法避免了。既然如此 何必纠结?
作者: kretz    时间: 2017-4-12 13:17
本帖最后由 kretz 于 2017-4-12 13:20 编辑
aarwwefdds 发表于 2017-4-12 10:23
怕楼主还弄不明白 我简单科普下音量调节会产生的两种失真类型:
1.量化失真 这个是数字音频处理(DSP 音量 ...

   多谢指教,慢慢学习!
   对了,你的设备是AK4495SEQ ?正是我感兴趣的!
   请介绍一下 4495SEQ的听感?是否接近于吵得火热的tda1541?
   ak4495SEQ,ak4490,ak4399,这3剑客的音质或者说听感有什么不同?差别大不大?(指不加渲染的本色), 因为网上介绍的很少!
   请再次指教!

作者: kretz    时间: 2017-4-12 17:24
aarwwefdds 发表于 2017-4-12 10:23
怕楼主还弄不明白 我简单科普下音量调节会产生的两种失真类型:
1.量化失真 这个是数字音频处理(DSP 音量 ...

AK4495SEQ的问题,请回复到我的4495s 4490 4399 的新帖,谢谢!





欢迎光临 耳机网-耳机大家坛 (http://www2.erji.net/) Powered by Discuz! X3.2