我正在尝试设置 Jack,因为我听说它在 Linux 上相当于 Windows 上的 ASIO。我弹吉他是为了好玩,我觉得用 Ardour 弹奏或者找到一个相当于 Guitar Rig 的自由开源软件会很酷。
然而我不明白……好吧,什么都不懂。我不明白杰克在做什么。据我所知,一般流程是
[sound hardware]
→ [kernel]
→ [JACK]
→ [ALSA]
→ [PulseAudio]
→ [Phonon]
→[my headphones]
(Phonon 出现是因为我使用 KDE。我想。)
我其实不知道什么箭头代表。 JACK 网站包含基本上从零开始的面向用户的文档,除了一页描述如何将 JACK 与 PulseAudio 结合使用。
作为一个初学者,无论JACK如何,都不了解Linux中声音是如何工作的,我可以去哪里学习?我想了解声音堆栈。但对于杰克我能找到的就是其贫瘠的维基(包括两个名为配置并运行 JACK 服务器和设置简单的音频链,结果都是“即将推出”页面,五年没有编辑过)和2005 年的 Linux Journal 文章。
很多事情让我困惑。我如何知道 Linux 可以识别哪些声音设备?我有三个:板载芯片、USB 音频接口(M-Audio FastTrack)和带麦克风的 USB 网络摄像头。所有这些东西都能被 Linux 识别吗?它们都专门注册为声音设备吗?每个设备是否都必须有独立的 JACK、ALSA、PulseAudio 等驱动程序?有没有一种基本方法可以测试我的设备以确保它有输出?有没有办法可以监控我的设备以查看软件是否确实在使用它们?
现在可以听到 Amarok 声音,但听不到 Youtube 声音。 Amarok 还通过我的 USB FastTrack 而不是我的板载声音芯片运行。 Hydrogen 拒绝启动,大概是因为我有 JACK 或 Alsa 或其他配置错误的东西。我不知道如何找出这些事情的韵律或原因。
答案1
在我对 Linux 声音的努力中,我最终禁用了 Pulse Audio 的自动生成(因此它在关闭时不会重新启动):
添加。autospawn=no
~/.pulse/client.conf
- 停止与
pactl exit
- 从...开始
pulseaudio
正在做现场声音的东西或者类似的,我关闭 PA 并只运行 JACK。没有 PA 桥。我从未使用 PA 或 JACK+PA 令人满意地降低延迟。
本文似乎对各层进行了相当好的快速介绍,其中还提到了Phonon
.
您可能已经读过这篇文章,而且也不是最新的,但也许会让您更接近理解:Linux 音乐工作流程:与 Kim Cascone 一起从 Mac OS X 切换到 Ubuntu。请注意标题上方的图表「工作流程」。 (您也可以在此处找到JACK示意图.) 另请阅读链接,例如顶部的链接Linux 音频简介,尽管从 2004 年开始,它可以让您快速了解 ALSA。
尽管我自己对这两者都不太熟悉,但我相信一个好的方法是将学习分成不同的部分。
- 了解 ALSA
- 了解 JACK(特别是因为您想做工作室工作。)
- 了解脉冲音频
以该顺序。难怪人们很难掌握 Linux 声音。这与历史及其演变有很大关系。这也是为什么,如果想真正了解它,了解它的历史是一件好事。因此,ALSA 是一个很好的起点。在 OSS 上进行一些嗅探。并努力向上。
快速方法可能让它工作是遵循这些指南中的任何一个。
简单地说; ALSA是内核的一部分,知道如何处理各种硬件。 JACK 和 Pulse Audio 使用 API 来控制硬件并与硬件交互。 ALSA也可以单独用作声音服务器。应用程序使用 JACK/PA API 进行多线程声音工作。
通过运行以下命令可以快速查看您的系统alsa-info.sh
找到脚本这里。
一个非常简化的模糊视图图,显示了一些连接:
+------------------------------------------------+
| SOUNDCARD |
|------------------------------------------------| _____ __
| ___________ | / \/ \
| | ADC | <---- analog in --[o---7 :===========|==|==|=[';]
| -----|----- | \____7 \__/
| __________ AMP | |
| | MIXER |----+------o |
| +---|---+-- AMP_____|______ | _______
| | | DAC | ---> analog out -[o------[ o o o ] ♫ ♬ ♪ ♩ ♭ ♪
| | +----------+ | | |
| | | | (o) |
| -- -+---^-- --v-- -- -- --^-- --v-- --+-- | | |
| CONTROLS | | ((0)) |
| | |_______|
| |
+------------------------------||----------------+
||
ADC: Analog to digital ||
DAC: Digital to analog |- udev trigged and mounted
_______________________________||________________
| |
| KERNEL |
|¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨ -|-|-|-|- ¨ ¨ ¨ ¨ ¨|
| |
| ALSA API <--> [Device Drivers] |
| ^ | module-alsa-card +--------|--
| | | | |
+---------|--|---------------------------| Memory Buffer I/O
: | v | |
| +----|---|--
| JACK ------------ PULSE AUDIO --------------+ |
| sinks | |--
| * hardware-access-points * hardware-sink | | Uses ALSA API for HW I/O
| * virtual-devices * mediaplayer-sink | | Mixing, Control etc.
| * recorder-sink | |
| * ... | |--
| | |
|-----------------|------|--------------------|---|
| APPLICATIONS -----------------+ |
|-------------------------------------------------|
| |
| Software based mixing |
| |
+-------------------------------------------------+