完整的上下文
我想设置 Ardor 并在键盘音乐上稍微搞一下,我不久前得到了它,结果不需要,但无法返回。当我尝试testing
使用 JACK 作为音频系统,使用新会话启动 Ardour 时,我收到(启动 JACK 时)警告:
WARNING: Your system has a limit for maximum amount of locked memory. This might cause Ardour to run out of memory before your system runs out of memory.
You can view the memory limit with 'ulimit -l', and it is normally controlled by /etc/security/limits.conf`
当我尝试从那里继续时(因为我不希望很快使用太多内存,因为现在我只想能够发出任何声音),我收到错误 error Could not create session in "/home/qwertystop/multimedia/ardour/testing"
。
当我尝试通过 Qjackctl 启动 JACK(打开详细消息)时,它要么明显启动(但据我所知,没有注册来自键盘的任何输入),要么弹出其日志以报告失败。
在后一种情况下,向后滚动它们,我发现一个条目说音频设备已在使用中,或类似的内容。这已经有一段时间没有出现了,我认为我在两次尝试之间没有做任何不同的事情,不幸的是我没有复制上次出现时的确切日志消息。我知道这(纯粹)不是任何其他应用程序是否正在播放音频的问题。
如果我在 Ardor 配置中单击“关闭”而不是“确定”,我会得到Could not create session in "/home/qwertystop/multimedia/ardour/testing": Cannot connect to audio/midi engine
.
我有:
- 1 个“USB-MIDI 键盘控制器”(Alesis V25)
- 主板上的内置音频(未连接到任何 I/O,但确实存在并且偶尔会混淆应用程序)
- GPU 通过 HDMI 输出音频
- Linux薄荷
- Ardor 4.6(通过 apt)
- jackd 1.9.11(作为 Ardour 的依赖项安装)
/proc/asound/cards
有:
0 [PCH ]: HDA-Intel - HDA Intel PCH
HDA Intel PCH at 0xdf240000 irq 128
1 [NVidia ]: HDA-Intel - HDA NVidia
HDA NVidia at 0xdf080000 irq 17
2 [V25 ]: USB-Audio - V25
Alesis V25 at usb-0000:00:14.0-1, full speed
~/.jackdrc
/usr/bin/jackd -v -dalsa -dhw:0 -r44100 -p1024 -n2
我第一次看的时候有,但是当我打开Ardor时它变成了/usr/bin/jackd -t 200 -p 2048 -R -T -d alsa -n 2 -r 44100 -p 1024 -d hw:PCH,0 -X raw
。我尝试更改PCH
为Nvidia
但没有帮助; Ardour 将其改回原样,其他设备不会出现在 Ardour 的配置内容中。
Pulseaudio 确实存在于我的系统上并且当前正在运行。我尝试了pasuspender qjackctl
,但杰克仍然无法启动。我也将自己添加到该audio
组中,如下这,这似乎阻止了它出现内存错误。
当前状态
最近一次尝试的日志(将自己添加到audio
组后,通过 pasuspender 运行 qjackctl,驱动程序是alsa
,接口是hw:NVidia
)是:
20:13:47.156 Statistics reset.
20:13:47.162 ALSA connection change.
20:13:47.172 D-BUS: Service is available (org.jackaudio.service aka jackdbus).
Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for 4294967295, skipping unlock
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for 4294967295, skipping unlock
20:13:47.245 ALSA connection graph change.
20:13:52.295 D-BUS: JACK server could not be started. Sorry
Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for 4294967295, skipping unlock
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for 4294967295, skipping unlock
Wed Jan 2 20:13:52 2019: Starting jack server...
Wed Jan 2 20:13:52 2019: JACK server starting in realtime mode with priority 10
Wed Jan 2 20:13:52 2019: self-connect-mode is "Don't restrict self connect requests"
Wed Jan 2 20:13:52 2019: Jack: JackPosixThread::StartImp : create non RT thread
Wed Jan 2 20:13:52 2019: Jack: JackPosixThread::ThreadHandler : start
Wed Jan 2 20:13:52 2019: Jack: playback device hw:NVidia
Wed Jan 2 20:13:52 2019: Jack: capture device hw:NVidia
Wed Jan 2 20:13:52 2019: Jack: capture device hw:NVidia
Wed Jan 2 20:13:52 2019: Jack: playback device hw:NVidia
Wed Jan 2 20:13:52 2019: Jack: apparent rate = 44100
Wed Jan 2 20:13:52 2019: Jack: frames per period = 1024
Wed Jan 2 20:13:52 2019: Jack: JackDriver::Open capture_driver_name = hw:NVidia
Wed Jan 2 20:13:52 2019: Jack: JackDriver::Open playback_driver_name = hw:NVidia
Wed Jan 2 20:13:52 2019: Jack: Check protocol client = 8 server = 8
Wed Jan 2 20:13:52 2019: Jack: JackEngine::ClientInternalOpen: name = system
Wed Jan 2 20:13:52 2019: Jack: JackEngine::AllocateRefNum ref = 0
Wed Jan 2 20:13:52 2019: Jack: JackPosixSemaphore::Allocate name = jack_sem.1000_default_system val = 0
Wed Jan 2 20:13:52 2019: Jack: JackEngine::NotifyAddClient: name = system
Wed Jan 2 20:13:52 2019: Jack: JackGraphManager::SetBufferSize size = 1024
Wed Jan 2 20:13:52 2019: Jack: JackConnectionManager::DirectConnect first: ref1 = 0 ref2 = 0
Wed Jan 2 20:13:52 2019: Jack: JackGraphManager::ConnectRefNum cur_index = 0 ref1 = 0 ref2 = 0
Wed Jan 2 20:13:52 2019: Jack: JackDriver::SetupDriverSync driver sem in flush mode
Wed Jan 2 20:13:52 2019: Acquired audio card Audio1
Wed Jan 2 20:13:52 2019: creating alsa driver ... hw:NVidia|hw:NVidia|1024|2|44100|0|0|nomon|swmeter|-|32bit
Wed Jan 2 20:13:52 2019: ERROR: ALSA: Cannot open PCM device alsa_pcm for playback. Falling back to capture-only mode
Wed Jan 2 20:13:52 2019: Jack: JackDriver::Close
Wed Jan 2 20:13:52 2019: Jack: JackConnectionManager::DirectDisconnect last: ref1 = 0 ref2 = 0
Wed Jan 2 20:13:52 2019: Jack: JackGraphManager::DisconnectRefNum cur_index = 0 ref1 = 0 ref2 = 0
Wed Jan 2 20:13:52 2019: Jack: JackEngine::ClientInternalClose ref = 0
Wed Jan 2 20:13:52 2019: Jack: JackEngine::ClientCloseAux ref = 0
Wed Jan 2 20:13:52 2019: Jack: JackGraphManager::RemoveAllPorts ref = 0
Wed Jan 2 20:13:52 2019: Jack: JackPosixSemaphore::Destroy name = jack_sem.1000_default_system
Wed Jan 2 20:13:52 2019: Jack: ~JackDriver
Wed Jan 2 20:13:52 2019: ERROR: Cannot initialize driver
Wed Jan 2 20:13:52 2019: Jack: no message buffer overruns
Wed Jan 2 20:13:52 2019: Jack: JackPosixThread::Stop
Wed Jan 2 20:13:52 2019: Jack: JackPosixThread::ThreadHandler : exit
Wed Jan 2 20:13:52 2019: ERROR: JackServer::Open failed with -1
Wed Jan 2 20:13:52 2019: Jack: Succeeded in unlocking 82274202 byte memory area
Wed Jan 2 20:13:52 2019: Jack: JackShmMem::delete size = 0 index = 0
Wed Jan 2 20:13:52 2019: Jack: ~JackDriver
Wed Jan 2 20:13:52 2019: Jack: Succeeded in unlocking 1186 byte memory area
Wed Jan 2 20:13:52 2019: Jack: JackShmMem::delete size = 0 index = 1
Wed Jan 2 20:13:52 2019: Jack: Cleaning up shared memory
Wed Jan 2 20:13:52 2019: Jack: Cleaning up files
Wed Jan 2 20:13:52 2019: Jack: Unregistering server `default'
Wed Jan 2 20:13:52 2019: ERROR: Failed to open server
Wed Jan 2 20:13:54 2019: Saving settings to "/home/qwertystop/.config/jack/conf.xml" ...
20:13:54.478 Could not connect to JACK server as client. - Overall operation failed. - Unable to connect to server. Please check the messages window for more info.
Cannot connect to server socket err = No such file or directory
Cannot connect to server request channel
jack server is not running or cannot be started
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for 4294967295, skipping unlock
JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for 4294967295, skipping unlock
如果接口设置为hw:PCH
或hw:PCH,0
,则 JACK 启动,但除了屏幕上(位于显卡的 HDMI 上)外,我没有任何扬声器,因此我不确定是否有任何意义。
又做了一些实验。设置接口(default)
并分别设置输入和输出设备很有用。如果我将输入和输出都设置为 NVidia,我会得到ERROR: ALSA: Cannot open PCM device alsa_pcm for playback. Falling back to capture-only mode
与以前相同的错误。如果我将两者之一设置为 NVidia,另一个设置为 PCH,则不会出现错误。但是,这两种配置都不会从我的显示器中的扬声器产生音频输出。如果输出是 NVidia 并且输入是 PCH,Jack 可以看到可能与麦克风端口匹配的可读系统端口,但看不到可写系统端口。如果输出是 PCH 并且输入是 NVidia,Jack 可以看到我的耳机插孔的可写系统端口,但看不到可读端口。这与 JACK 由于某种原因无法与 NVidia 设备连接的想法是一致的?
答案1
从当前的最终状态开始,如果接口设置为 hw:PCH 或 hw:PCH,0,JACK 就会启动,但除了屏幕上(位于显卡的 HDMI 上)外,我没有任何扬声器,因此我不确定这有什么意义。”,我:
- 发现了一些糟糕的旧耳机
- 将它们插入我电脑的内置耳机插孔
- 跑
a2jmidid -j default
- 将 JACK 的接口设置为
hw:PCH
- 在 JACK 中连接了以下各种连接本指南
- 成功在(MIDI)键盘上录制一些随机噪音
- 通过耳机播放它们。
所以我剩下的问题是,当我尝试将 JACK 指向我的显卡的 HDMI 音频输出时,它仍然会产生问题中的错误。由于我没有单独的扬声器或其他未内置到我的显示器中的音频输出,这仍然是一个问题,对此我将保留这个问题。
答案2
界面打不开的原因这里不太清楚。它可能是多种多样的。
需要检查的事项:
- 是否有其他软件使用并因此锁定声卡?使用
lsof /dev/snd/*
来验证这一点。 - 您的声卡采样率设置是否正确?需要检查目录中的声卡功能
/proc/asound/
。有些声卡只接受 96000 作为采样率,我想我已经在 Nvidia HDMI 上看到了这一点。 /dev/snd/
您的用户的访问权限是否足够或已处于活动状态。
调试建议:
- 尝试使用尽可能少的参数来启动 jack。
- 尝试以 root 身份启动 jack,以消除文件权限问题作为启动失败的原因。一旦以 root 身份启动,请使用与用户相同的参数。如果权限正常,它也会以普通用户启动。
答案3
我遇到了这个问题,经过几个小时的挫折后,解决方案非常简单 - 使用 QJackCtrl 我更改了声卡上的输入和输出设备,它起作用了!
答案4
这可能不是您的解决方案,但我的问题显示几乎相同的症状,尽管比您落后一步,但它拒绝使用新会话打开程序。在 Linux Mint 19.3 上:
sudo adduser username audio
sudo nano /etc/security/limits.conf
将“@audio - memlock unlimited”添加到倒数第二行。
sudo nano /etc/pam.d/common-session
将“session required pam_limits.so”添加到倒数第二行。
ulimit -l -r
预计“unlimited”和“95”是两行输出的结尾。
现在,在创建会话时,请确保您选择 JACK 而不是 ALSA,还要确保您使用适当的比特率和适当的音频设备。以下是识别两者的方法:
要识别您的音频设备,请打开终端并输入:
ls -alh /proc/asound
您将寻找指示输出设备的“card#”。一般来说,笔记本电脑可能有 AUX、扬声器和 HDMI/显示端口,因此对于我的 ThinkPad,我的卡 0-2 带有 AUX、扬声器和显示端口。请注意,会有重复的符号链接,这同样适用于以下命令。
要识别您的音频设备的功能,请打开终端并输入:
grep -R -i 速率 /proc/asound/*
您将看到每个声音设备的可用频率。这就是我的全部。