在 Linux 中驱动声卡

Posted

技术标签:

【中文标题】在 Linux 中驱动声卡【英文标题】:Driving the sound card in Linux 【发布时间】:2011-10-15 05:25:08 【问题描述】:

在具有单行输出的基本嵌入式系统扬声器上,在给定时间段内将输出摆动为 0 或 1 会产生声音。

我想在现代 Linux 桌面上做类似的事情。对 Portaudio、OpenAL 和 ALSA 的简要介绍告诉我,大多数人在相当高的水平上做事。没关系,但不是我想要的。

(我以前从未在 Linux 上使用过声音,所以如果有教程存在,我很想看看)。

【问题讨论】:

你的问题是......? :) 【参考方案1】:

实际上,它...有点像。虽然您可以自己生成波形,但您仍然需要使用 API 对其进行排队并将其发送到音频硬件;甚至不再存在一种理智的方式来直接旋转音频线。此外,您还可以免费获得跨平台兼容性。

【讨论】:

【参考方案2】:

[...] 具有单行输出的嵌入式系统扬声器,在给定周期内将输出摆动为 0 或 1 会产生声音。

听起来很像旧的 PC 扬声器。您可能仍会在 Linux 内核中找到它的代码。

我想在现代 Linux 桌面上做类似的事情。

那么您需要 AFAIK 驱动程序 ALSA。在那里你可以找到how to write an ALSA driver 的信息。使用 PWM 产生声音。

【讨论】:

【参考方案3】:

由于不同公司生产的声卡和音频接口种类繁多,因此没有统一的方法来对它们进行低级访问。对于大多数健全的 I/O API,您需要做的是生成 PCM 数据并将其发送给驱动程序。这几乎是您可以达到的最低级别。

但是 PCM 数据与您描述的 0-1 方法非常相似。只是您也有中间选项。 0-1 是 1 位音频。您可以在现代声卡上找到 8、16、24 位音频。还有 32 位和 64 位浮点格式。但它们仍然相似。

【讨论】:

以上是关于在 Linux 中驱动声卡的主要内容,如果未能解决你的问题,请参考以下文章

在 Linux 中驱动声卡

linux 下显卡网卡声卡信息的查看,求高人帮忙!!!

Linux ALSA声卡驱动之二:声卡的创建

Linux声卡驱动框图

Linux 驱动程序:如何访问 PCI 声卡 ADC 和 DAC

Linux ALSA驱动之二:声卡的创建流程