Alsa 和 PulseAudio (csound):连接被拒绝

Alsa 和 PulseAudio (csound):连接被拒绝

我遇到了一个让我完全难住的问题。第一的;一些系统信息

Linux quasar-nixos-tr 4.19.87 #1-NixOS SMP Sun Dec 1 08:17:47 UTC 2019 x86_64 GNU/Linux

现在;我正在玩一个名为的声音生成/音乐库声音我看到一个奇怪的问题。

我通过 Haskell 使用 csound 层;该库被调用csound-expression,它只是根据一些 Haskell 代码生成一个 csound 文件,然后通过 csound 运行它。

据我了解;然后,csound 将音频路由到 Alsa,在我的系统上,Alsa 尝试通过 PulseAudio 的default设备进行路由。

现在,我的系统上发生了一些奇怪的事情。

  1. 重新启动后,如果我运行 csound 相关代码,我会听到声音。,一旦我停止运行该代码段,其他应用程序似乎就无法再连接到 PA。检查systemctl --user status pulseaudio.service pulsaudio.socket发现该服务已死亡并且已耗尽最大值。不。尝试启动。
  2. 全新启动后;如果我运行其他应用程序,比如说pavucontrol;我现在可以连接到 PA 服务,但我的 haskell csound 代码无法再连接。相反,它退出时显示:

    λ> dac . osc $ 200 
    0dBFS level = 32768.0
    --Csound version 6.13 (double samples) Jan  1 1970
    [commit: none]
    libsndfile-1.0.28
    UnifiedCSD:  tmp.csd
    STARTING FILE
    Creating options
    Creating orchestra
    closing tag
    Creating score
    rtaudio: ALSA module enabled
    rtmidi: ALSA Raw MIDI module enabled
    Elapsed time at end of orchestra compile: real: 0.001s, CPU: 0.001s
    sorting score ...
        ... done
    Elapsed time at end of score sort: real: 0.001s, CPU: 0.001s
    displays suppressed
    0dBFS level = 1.0
    orch now loaded
    audio buffered in 256 sample-frame blocks
    ALSA lib pulse.c:243:(pulse_connect) PulseAudio: Unable to connect: Connection refused
    
     *** Cannot open device 'default' for audio input: Connection refused
    Failed to initialise real time audio input
    inactive allocs returned to freespace
    end of score.          overall amps:  0.00000
           overall samples out of range:        0
    1 errors in performance
    Elapsed time at end of performance: real: 0.169s, CPU: 0.004s
    

对于情况 1(上述);我在日志中看到了一些有趣的东西,但我对 PA 如何工作、Alsa 如何工作以及两者如何协同工作的理解有限:

Dec 16 09:28:16 quasar-nixos-tr systemd[1708]: Starting Sound Service...
Dec 16 09:28:16 quasar-nixos-tr pulseaudio[2382]: E: [pulseaudio] socket-server.c: bind(): Address already in use
Dec 16 09:28:16 quasar-nixos-tr pulseaudio[2382]: E: [pulseaudio] module.c: Failed to load module "module-esound-protocol-unix" (argument: ""): initialization failed.
Dec 16 09:28:16 quasar-nixos-tr pulseaudio[2382]: E: [pulseaudio] main.c: D-Bus name org.PulseAudio1 already taken.
Dec 16 09:28:16 quasar-nixos-tr systemd[1708]: pulseaudio.service: Main process exited, code=exited, status=1/FAILURE
Dec 16 09:28:16 quasar-nixos-tr systemd[1708]: pulseaudio.service: Failed with result 'exit-code'.
Dec 16 09:28:16 quasar-nixos-tr systemd[1708]: Failed to start Sound Service.
Dec 16 09:28:16 quasar-nixos-tr systemd[1708]: pulseaudio.service: Service RestartSec=500ms expired, scheduling restart.
Dec 16 09:28:16 quasar-nixos-tr systemd[1708]: pulseaudio.service: Scheduled restart job, restart counter is at 4.
Dec 16 09:28:16 quasar-nixos-tr systemd[1708]: Stopped Sound Service.
Dec 16 09:28:16 quasar-nixos-tr systemd[1708]: Starting Sound Service...
Dec 16 09:28:17 quasar-nixos-tr pulseaudio[2390]: E: [pulseaudio] socket-server.c: bind(): Address already in use
Dec 16 09:28:17 quasar-nixos-tr pulseaudio[2390]: E: [pulseaudio] module.c: Failed to load module "module-esound-protocol-unix" (argument: ""): initialization failed.
Dec 16 09:28:17 quasar-nixos-tr pulseaudio[2390]: E: [pulseaudio] main.c: D-Bus name org.PulseAudio1 already taken.
Dec 16 09:28:17 quasar-nixos-tr systemd[1708]: pulseaudio.service: Main process exited, code=exited, status=1/FAILURE
Dec 16 09:28:17 quasar-nixos-tr systemd[1708]: pulseaudio.service: Failed with result 'exit-code'.
Dec 16 09:28:17 quasar-nixos-tr systemd[1708]: Failed to start Sound Service.
Dec 16 09:28:17 quasar-nixos-tr systemd[1708]: pulseaudio.service: Service RestartSec=500ms expired, scheduling restart.
Dec 16 09:28:17 quasar-nixos-tr systemd[1708]: pulseaudio.service: Scheduled restart job, restart counter is at 5.
Dec 16 09:28:17 quasar-nixos-tr systemd[1708]: Stopped Sound Service.
Dec 16 09:28:17 quasar-nixos-tr systemd[1708]: pulseaudio.service: Start request repeated too quickly.
Dec 16 09:28:17 quasar-nixos-tr systemd[1708]: pulseaudio.service: Failed with result 'exit-code'.

这里的用户在audiosound组中,我使用的是 NixOS;这可能与这个问题无关。

任何人都可以帮忙解决这里可能发生的事情吗?


另请注意;情况2;alsamixer正确列出所有设备。

答案1

我终于找到问题所在了;我已经描述过了这里以防其他人将来偶然发现这一点。

相关内容