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



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

我想知道,将一组数字数据(描述一定长度的音频)发送到3.5毫米音频输出的可能方法是什么。(当然,它可以用一些扬声器播放。)

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

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

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

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

我想我需要像OpenAL这样的东西,据我所知,它就像OpenGL。我似乎找不到太多关于它的信息。它似乎不再被开发,已经好几年没有使用了。我猜还有其他选择吗?

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

它最近可能没有改变,但仍在广泛使用。我个人在iOS/OSX上使用它。你应该仔细检查一下你选择的Linux风格。

我不知道它是否可以播放24位PCM。但如果底层音频芯片支持的话,它肯定可以接受44100的16位PCM。

这里有一个教程可以帮助你:

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

最新更新