C ++将音频数据发送到Linux和Mac OS X上的扬声器输出

时间:2014-01-09 12:14:23

标签: c++ linux audio cross-platform openal

我有兴趣将Linux和OS X系统用作数字乐器,用于实验目的。

我想知道,将数字数据数组(描述一些音频长度)发送到3.5mm音频输出的可能方法是什么。 (当然,可以使用一些发言者播放。)

我的要求是可以使用C ++完成,因为我需要实时生成音频样本。 (Python可能不会削减它。)理想情况下我想跨平台做这个,但对这个窗口不太感兴趣。

这个想法是做类似的事情:

1:将输出模式设置为44100KHz,24位单声道(L& R)。 2:生成44100个带符号24位整数的数组。 3:告诉计算机播放XYZ秒/样本数据的样本,从样本号XYZ开始。

在像Arduino这样的东西上很容易做到这一点。 (也可以用C ++编程)对于那些熟悉的人,你可以直接使用数字输出引脚,或者更复杂的东西,建立一个简单的子板,正确地修改你的信号,使其正弦和正极负电压摆动。 (而不仅仅是积极的。)

我想我需要像OpenAL这样的东西,据我所知,就像OpenGL一样。我似乎无法找到有关它的更多信息。似乎它不再发展,并且已经使用了好几年。我猜还有另外一种选择吗?

1 个答案:

答案 0 :(得分:1)

OpenAL是一个非常好的选择。它比OpenGL更容易学习。剪切和粘贴编码。

最近可能没有变化,但仍在广泛使用。我个人在iOS / OS X上使用它。您应该仔细检查您的Linux风格。

我不知道它是否可以播放24位PCM。但如果基础音频芯片支持那么它肯定可以接受44100的16位PCM。

以下是一个可以帮助您的教程:

http://kcat.strangesoft.net/openal-tutorial.html