找回密码
 -注册-
楼主: xxbin1911
打印 上一主题 下一主题

[数播] xTune - Squeezebox Controller (piCorePlayer/Daphile的Android控制端APP)

[复制链接]
221
 楼主| 发表于 2024-6-19 17:46 | 只看该作者 来自 江苏
另外再啰嗦几句

如果有比较好的USB DAC,实际上是可以不用双达菲。
USB DAC的隔离性在理论上已经相当好,服务器端以及播放端的JITTER都不会传递到DAC中,如果加上USB隔离,桥的数字信号和电源的干扰也不会传递到USB DAC中。

数字领域,不像模拟领域,数字领域是很容易做到解耦和隔离。USB是异步的数字信号处理,核心以及播放端的晶振以及是否是实时内核之类的根本不会影响到USB DAC的Jitter,USB DAC的数字信号是用的自己的时钟。如果你有一个好的USB DAC,用树莓派当播放器还是用个手机做播放器,以及有没有服务器之类的,只要能保证源码输出到USB DAC,都没啥影响和区别。

数字领域的信号处理,实际上就是要在某个点上搞解耦和隔离,一旦这个点搞好了,那么这个点之前的所有的设备和信号传输路径,只要保证数字信号的准确性就OK了。
回复

使用道具 举报

222
 楼主| 发表于 2024-6-19 17:57 | 只看该作者 来自 江苏
用核桥分离的方案,核心可以做升频和数字滤波,那是另外一种玩法。但是这种情况下要注意DAC得支持跳过数字滤波和重采样的选项,并且打开这个选项。
实际上大部分DAC都没有Non Over-Sampling的选项(NOS),有些DAC支持NOS,其实是挂羊头卖狗肉,把某种数字滤波器简写成了NOS而已。

在大部分的USB DAC的数字信号处理路径中,播放端到USB界面(XMOS)是异步信号,USB的数据会缓存在XMOS中,然后用XMOS或者DAC的本地时钟重新整理之后处理,此处已经是一次完整的JITTER隔离。
如果没有NOS选项的话,XMOS之类的USB界面将音频数字信号用本地时钟从I2S接口发出给DAC芯片,然后现代的DAC芯片多半会做一个Over-Sampling的事情,就是主动做升频然后再处理,在这种情况下,XMOS通过I2S发给DAC芯片的数字信号的JITTER会影响到最终的声音,但是这个JITTER和USB的播放端无关,是XMOS或者DAC内部时钟以及内部电路引起的JITTER。
所以,钱还是得花在钢刃上,买个好的DAC,数播的很多事情就不用操心了。
回复

使用道具 举报

223
发表于 2024-6-19 22:04 来自手机 | 只看该作者 来自 中国
xxbin1911 发表于 2024-6-19 17:57
用核桥分离的方案,核心可以做升频和数字滤波,那是另外一种玩法。但是这种情况下要注意DAC得支持跳过数字 ...

您真是专家。您觉得国产的双木三林拓品的那些在这里不入法眼的dac科学机能做到优质音质吗?
回复

使用道具 举报

224
发表于 2024-6-20 10:37 | 只看该作者 来自 中国
xxbin1911 发表于 2024-6-19 17:29
关键是精力的问题另外我希望遥控器这样的app还是免费给大家用

楼主,适当的收点费用,也是对楼主辛勤付出的肯定。这么好的APP,我愿意付费支持您!谢谢
回复

使用道具 举报

225
发表于 2024-6-20 10:47 来自手机 | 只看该作者 来自 中国
xxbin1911 发表于 2024-6-19 17:46
另外再啰嗦几句

如果有比较好的USB DAC,实际上是可以不用双达菲。

我也是一直认为数字信号就是01,在传输过程中只要不丢失,数据传输速度正常,就不会对后期的音质有影响,关键是dac,影响音质主要数字转模拟以后这块。我很奇怪很多老烧对这块有那么多脑洞。
回复

使用道具 举报

226
 楼主| 发表于 2024-6-20 10:52 | 只看该作者 来自 江苏
Sunnyboysl 发表于 2024-6-20 10:37
楼主,适当的收点费用,也是对楼主辛勤付出的肯定。这么好的APP,我愿意付费支持您!谢谢

感谢支持!
手机端遥控器我还是希望能坚持免费,以后真想收费,可能平板啊之类的会考虑收费。
回复

使用道具 举报

227
 楼主| 发表于 2024-6-20 11:22 | 只看该作者 来自 江苏
jiangyb 发表于 2024-6-20 10:47
我也是一直认为数字信号就是01,在传输过程中只要不丢失,数据传输速度正常,就不会对后期的音质有影响, ...

不要叫我大神也别叫我专家,我就是喜欢听听音乐的普通人而已。
数字信号的处理不影响到DAC出来的声音的前提有几个,一个是数字信号是原始的信号,第二是数字信号的Jitter不会传递给DAC,第三是数字信号的干扰以及数字域的电源不会影响DAC。
前者其实是很多人忽略的,后两者用异步DAC加上隔离(光耦隔离芯片或者直接光电隔离)就可以了。

我做这个APP,第一版,我就在考虑要不要增加一个开关来控制禁止调整音量,以普通的达菲为例,如果用软件音量控制,那么在小音量的情况下,对音质的影响是相当大的。

我抄一个例子过来说明一下:
一个16bit的数据
0111010100110011 = 30,003

假设我们要把音量调整到原来的听感的一半大小(-10dB),也就是0.3162,结果是
0010010100010000 = 9,488

而实际上30,003 * 0.3162并不是等于9,488
30,003 * 0.3162 = 9487.7817

这就引入了噪音,而且这个噪音的总量是不变的,音量调整到越小,性噪比就越差

达菲的播放器squeezelite在linux下基本都是使用ALSA底层驱动来输出音频,如果DAC不支持音量控制,那么就会使用ALSA来实现软件音量控制,据我所知,ALSA就是用的我上面的计算来控制音量,而且ALSA是输入输出一样的格式的,你给它16BIT的PCM数据流,它调整音量之后输出的还是16BIT的数据流,这里,就会引入大量的计算上的数据丢失(9487.7817丢失成了9,488)。



回复

使用道具 举报

228
 楼主| 发表于 2024-6-20 11:28 | 只看该作者 来自 江苏
实际上现代的DAC芯片,已经提供了DAC内部的digital(数字)音量控制。例如ESS 9038PRO之类的,它的原理大概是这样的。

这些DAC,内部用32位来处理数据,还是上面的例子,32位的30003是这样的
0111010100110011.0000000000000000 = 30,003

降低10dB
0000001000010110.1000100110000100 = 533.5372

30,003 * 0.3162 = 533.5372
这是无损的音量调整

使用DAC的音量控制的前提是DAC得支持,并不是使用了ESS 9038PRO之类的芯片的DAC成品都支持这种音量调整,多半是不支持的,厂商偷懒了没做出来。

回复

使用道具 举报

229
 楼主| 发表于 2024-6-20 11:34 | 只看该作者 来自 江苏
数字领域的音量控制还有一种方案,就是ROON采用的软件音量控制的方案。
ROON在内部使用64位来存储数据和计算,在最终输出的时候,会尽量使用DAC最高或者最合适的位深来输出音频数据。

比如我们刚才的例子,16bit的30,003,调整到-10dB,假设我先转换成32bit,然后再进行计算,最后输出给DAC的是经过计算之后的32BITS的数据,那依然是无损的。
也就是原始的是44.1KHz/16bits,经过音量控制算法之后处理成44.1KHz/32bits输出给DAC。

这也是一种比较好的数字音量控制的方案。
回复

使用道具 举报

230
 楼主| 发表于 2024-6-20 11:38 | 只看该作者 来自 江苏
本帖最后由 xxbin1911 于 2024-6-20 11:40 编辑

DAC或者ROON那样的数字音量控制的方案实际上有个前提,就是音量不要调整得太小,太小的话,还是会有数据丢失。

以目前的技术,最高端的模拟音量控制的技术指标是要比数字音量控制要好的,那个是Hi-End级别的对比,基本不是普通人能用上的玩意。
反过来,在合理的范围内,靠谱的数字音量控制是要超过大多数模拟音量控制的。

所以,买DAC还得看看能否提供DAC的数字音量控制(digital volume control)
回复

使用道具 举报

231
发表于 2024-6-20 15:48 | 只看该作者 来自 上海
xxbin1911 发表于 2024-6-19 17:25
我解释一下xTune连接服务器的逻辑

首先你上一次连接的那台服务器的IP地址和端口会记录在app里面,app ...

谢谢回复,这样的话看来稍微改变一下开机顺序也许可以解决。我现在这么做的原因是——根据有些烧友提出的双达菲的玩法,不是在从机上设置主机的IP地址,而是在主机上选择从机连接的DAC,因为按照他的说法如果在从机上设置主机IP作为media sever,跟从机做单达菲播放没什么两样。帖子地址:雙達菲無罪 (erji.net) 49楼和69楼的讨论。我反复对比过,似乎好像是有区别。但是这样设置双达菲的时候,常会发生在主机上找不到DAC的情况。在你的APP里就没有办法操作了,而在主机的浏览器界面上可以在右下角选择DAC。第二个问题playlist是指从我的播放列表播放,如下图。比如我想选择播放所有的pop风格的歌曲,从风格界面中点击POP,只能显示所有POP风格的专辑,要进入单张专辑才有播放命令,没法一次性播放所有的POP风格的曲目。那只能把所有POP风格的曲目变成一个列表,从列表播放时,就没有封面了。如下图:




Screenshot_20240620-104945_xTune.jpg (122.82 KB, 下载次数: 66)

Screenshot_20240620-104945_xTune.jpg
回复

使用道具 举报

232
 楼主| 发表于 2024-6-20 16:14 | 只看该作者 来自 江苏苏州
dolittlesh 发表于 2024-6-20 15:48
谢谢回复,这样的话看来稍微改变一下开机顺序也许可以解决。我现在这么做的原因是——根据有些烧友提出的 ...

先说第二个问题,第一个问题我稍后给你解释一下,让你能更好的做出选择。

第二个问题如果我在曲风分类的专辑列表或者歌曲列表中提供一个播放所有的功能,是否就能解决你的问题?
我不知道你的playlist是怎么做出来的,看你的截图,封面是一个空白的专辑封面图片,意味着app从服务器取到的数据中就没有专辑封面的信息(专辑封面为空)。

回复

使用道具 举报

233
发表于 2024-6-20 16:59 | 只看该作者 来自 北京
xxbin1911 发表于 2024-6-20 11:22
不要叫我大神也别叫我专家,我就是喜欢听听音乐的普通人而已。
数字信号的处理不影响到DAC出来的声音的 ...

楼主好,我想请教个问题,我也是用树莓派安装了个squeezelite播放器作为达菲的桥使用,设置里面填的类似hw:CARD=Audio,DEV=0意思是不是直接给xmos界面而不通过任何转换,linux音频驱动alsa打开alsamixer里面为什么还能调节音量,当然我调到最大100,我不懂这个原理,这样对音质有影响吗?播放pcm格式这个音量可以调节,播放dsd调节是不管用的
回复

使用道具 举报

234
 楼主| 发表于 2024-6-20 17:07 | 只看该作者 来自 江苏苏州
达菲实际上是在lms+squeezelite的基础上做的一套数播系统。

LMS,Logitech Media Server,罗技媒体服务器,已经改名叫做Lyrion Music Server,简称还是LMS。LMS有时候会被叫做slimserver,也有人会叫做squeezebox,实际上都是不同的叫法实际上是一个东西。

squeezelite,是一个无显示界面的播放器(headless,无头播放器),官方叫法是Lightweight headless squeezebox player for Lyrion Media Server。
在lms+squeezelite的架构中,还有一个叫做遥控器的东西,就是我做的app这样的,遥控器是直接连接到lms服务器,并只与lms服务器交互。遥控器按下播放按钮之后,实际上只是通过服务器的接口告诉服务器需要播放某个音乐,然后由lms服务器通知squeezelite播放器需要播放一个音频,并给出音频的网址(这个网址实际上由lms服务器提供),然后squeezelite播放器从这个网址(lms服务器)上抓取音频文件的数据,缓存并播放。

以上是lms+squeezelite播放的大致流程,总结一下大概如此:
(nas/硬盘)->lms server -> 网络/本地网络 -> squeezelite -> dac

在从机的达菲上指定使用外部的media server,实际上就是主机跑lms server,从机运行squeezelite并连接主机的lms server。右下角选择dac,其实不是选择dac,而是选择播放器squeezelite。
这种方式,与一台主机同时跑lms server + squeezelite是有些区别的,毕竟会多运行一个lms server多一些处理和干扰,当DAC的隔离性(无论是jitter隔离还是信号及电源隔离)不够好的时候,那么这台主机的一些干扰可能会传递到dac上并影响声音。

如果接dac的主机有没有运行lms server都能影响到听感的话,实际上要调整的不是主机上的软硬件设置,而是换个dac或者增加dac隔离。(具体可以参考这个帖子的221楼)

也许有玩达菲的不相信我说的,我原文引用一下达菲作者的回答:

Q10. How should I configure the audio settings in order to maximize
     the audio quality?
A10. In short: Use bit-perfect playback and have good enough
     DAC. Longer version: My own view and experience is that if you
     have good enough DAC (using asynchronous data transfer from PC,
     independently powered, galvanic isolation between USB receiver
     and actual DAC+analog circuitry, etc...) any audio device
     parameters don't effect on sound quality as long as you use bit
     perfect playback and keep the parameters sensible so that they
     don't cause any buffer under-runs (and have also some tolerance
     for high system load situations). If the DAC does not meet those
     requirements the chances that computer HW+SW combination effect
     on sound quality are much higher and the effects may be caused by
     many unpredictable reasons (HW, SW, parameters, specific
     combinations of them, etc...). You just have to experiment and
     try to find the best setup (or buy better DAC ;-).

简单解释一下:
In short: Use bit-perfect playback and have good enough DAC
简短的回答:使用源码输出并用足够好的DAC(达菲之类的系统,最大音量下,就是bit-perfect输出的)

Longer version: My own view and experience is that if you
     have good enough DAC (using asynchronous data transfer from PC,
     independently powered, galvanic isolation between USB receiver
     and actual DAC+analog circuitry, etc...) any audio device
     parameters don't effect on sound quality
as long as you use bit
     perfect playback and keep the parameters sensible so that they
     don't cause any buffer under-runs (and have also some tolerance
     for high system load situations).
     
更长的回答版本: 如果你有用足够好的DAC(使用异步数据传输,独立的供电,使用光耦隔离确保USB接收部分和DAC及模拟电路部分没有连接),在这种情况下,只要使用无损回放(无软件音量调整等),任何播放设备的参数都不会影响音质。
合理的参数设置仅仅是为了确保不发生缓冲区欠载(当缓冲区欠载时,会出现音频数据供应不及时的情况,从而导致声音断续或噪声) 。
回复

使用道具 举报

235
 楼主| 发表于 2024-6-20 17:16 | 只看该作者 来自 江苏苏州
发烧烧得厉害 发表于 2024-6-20 16:59
楼主好,我想请教个问题,我也是用树莓派安装了个squeezelite播放器作为达菲的桥使用,设置里面填的类似h ...

你这种使用的是软件音量控制。就是我上面说的ALSA底层的软件音量控制,实际上输出到DAC的PCM流已经被修改过的,是有损的。


  1. -U <control>
  2. Unmute the given ALSA <control> at daemon startup and set it to full volume. Use software volume adjustment for playback. This option is mutually exclusive with the -V option. Only applicable when using ALSA output.
  3. -V <control>
  4. Use the given ALSA <control> for volume adjustment during playback. This prevents the use of software volume control within squeezelite. This option is mutually exclusive with the -U option. If neither -U nor -V options are provided, no ALSA controls are adjusted while running squeezelite and software volume control is used instead. Only applicable when using ALSA output.
复制代码

上面是squeezlite的两个参数,如果你的DAC支持音量控制的话,可以通过这两个参数来使用DAC上的音量控制,如果没有指定这两个参数,实际上用的就是软件音量控制。『If neither -U nor -V options are provided, no ALSA controls are adjusted while running squeezelite and software volume control is used instead.
回复

使用道具 举报

236
发表于 2024-6-20 17:32 | 只看该作者 来自 北京
xxbin1911 发表于 2024-6-20 17:16
你这种使用的是软件音量控制。就是我上面说的ALSA底层的软件音量控制,实际上输出到DAC的PCM流已经被修改 ...

squeezelite配置里写的是SB_EXTRA_ARGS="-o hw:CARD=Audio,DEV=0 -a 100:4:1 -b 307200:409600 -D dop -W -V Master",这里面的-V是这个意思吗


回复

使用道具 举报

237
 楼主| 发表于 2024-6-20 17:49 | 只看该作者 来自 江苏苏州
发烧烧得厉害 发表于 2024-6-20 17:32
squeezelite配置里写的是SB_EXTRA_ARGS="-o hw:CARD=Audio,DEV=0 -a 100:4:1 -b 307200:409600 -D dop -W ...

贴一下你的树莓派上面
sudo amixer输出的信息我看看
回复

使用道具 举报

238
发表于 2024-6-20 18:01 | 只看该作者 来自 北京
xxbin1911 发表于 2024-6-20 17:49
贴一下你的树莓派上面
sudo amixer输出的信息我看看

Simple mixer control 'Nowna Audio ',0
  Capabilities: pvolume pvolume-joined pswitch pswitch-joined
  Playback channels: Mono
  Limits: Playback 0 - 100
  Mono: Playback 100 [100%] [0.00dB] [on]


回复

使用道具 举报

239
 楼主| 发表于 2024-6-20 18:04 | 只看该作者 来自 江苏苏州
发烧烧得厉害 发表于 2024-6-20 18:01
Simple mixer control 'Nowna Audio ',0
  Capabilities: pvolume pvolume-joined pswitch pswitch-join ...

这个设备应该是dac的数字音量控制。这种方式控制音量是几乎无损的。也许比你的放大器上的模拟音量控制要好。

你的squeezelite用了那个参数。你从xtune这样的遥控器上调整音量,实际上改的是dac上的音量。


回复

使用道具 举报

240
发表于 2024-6-20 18:11 | 只看该作者 来自 北京
xxbin1911 发表于 2024-6-20 18:04
这个设备应该是dac的数字音量控制。这种方式控制音量是几乎无损的。也许比你的放大器上的模拟音量控制要 ...

哦哦那就好,还有个问题不得其解;播放16bit的音频时我用cat /proc/asound/card0/pcm0p/sub0/hw_params命令查看输出显示为access: MMAP_INTERLEAVEDformat: S32_LE
subformat: STD
channels: 2
rate: 44100 (44100/1)
period_size: 882
buffer_size: 3528
这里的format: S32_LE是什么意思转成32位了吗?
还有用cat /proc/asound/card0/stream0查看声卡参数
显示为Nowna Nowna Audio at usb-0000:01:00.0-1.4, high speed : USB Audio

Playback:
  Status: Running
    Interface = 1
    Altset = 1
    Packet Size = 272
    Momentary freq = 176421 Hz (0x16.0d78)
    Feedback Format = 16.16
  Interface 1
    Altset 1
    Format: S32_LE
    Channels: 2
    Endpoint: 0x01 (1 OUT) (ASYNC)
    Rates: 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000, 705600, 768000
    Data packet interval: 125 us
    Bits: 32
    Channel map: FL FR
    Sync Endpoint: 0x81 (1 IN)
    Sync EP Interface: 1
    Sync EP Altset: 1
    Implicit Feedback Mode: No
  Interface 1
    Altset 2
    Format: S32_LE
    Channels: 2
    Endpoint: 0x01 (1 OUT) (ASYNC)
    Rates: 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000, 705600, 768000
    Data packet interval: 125 us
    Bits: 24
    Channel map: FL FR
    Sync Endpoint: 0x81 (1 IN)
    Sync EP Interface: 1
    Sync EP Altset: 2
    Implicit Feedback Mode: No
  Interface 1
    Altset 3
    Format: SPECIAL DSD_U32_BE
    Channels: 2
    Endpoint: 0x01 (1 OUT) (ASYNC)
    Rates: 44100, 48000, 88200, 96000, 176400, 192000, 352800, 384000, 705600, 768000
    Data packet interval: 125 us
    Bits: 32
    DSD raw: DOP=0, bitrev=0
    Channel map: FL FR
    Sync Endpoint: 0x81 (1 IN)
    Sync EP Interface: 1
    Sync EP Altset: 3
    Implicit Feedback Mode: No
为什么都是S32_LE什么的不应该有16位的吗?


回复

使用道具 举报

您需要登录后才可以回帖 登录 | -注册-

本版积分规则

Archiver|手机版|粤icp备09046054号|耳机网-耳机大家坛

粤公网安备 44030602000598号 耳机大家坛、www.erji.net、网站LOGO图形均为注册商标

GMT+8, 2024-11-28 08:07

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表