作为大学项目的一部分,我必须进行一些信号处理,并希望使用 PC 声卡输出结果。该软件必须用 C 语言编写,并且需要与 Windows(最好是 7 和 XP)一起工作。
我找到了输出 .wav 和类似文件的代码示例,但我对连续输出数据而不是从文件输出感兴趣。尽管一些声音 API 似乎有自己的处理缓冲区的方式,但输出的数据很可能会以数组的形式呈现。
任何建议都会很棒,代码示例甚至最好的 API 也一样。我看过 DirectSound 和 OpenAL,但仍然不确定如何开始。
作为大学项目的一部分,我必须进行一些信号处理,并希望使用 PC 声卡输出结果。该软件必须用 C 语言编写,并且需要与 Windows(最好是 7 和 XP)一起工作。
我找到了输出 .wav 和类似文件的代码示例,但我对连续输出数据而不是从文件输出感兴趣。尽管一些声音 API 似乎有自己的处理缓冲区的方式,但输出的数据很可能会以数组的形式呈现。
任何建议都会很棒,代码示例甚至最好的 API 也一样。我看过 DirectSound 和 OpenAL,但仍然不确定如何开始。
PortAudio是一个可以满足您需求的 C 库。有一个教程可以帮助您入门。
PortAudio 是一个免费、跨平台、开源的音频 I/O 库。它让您可以使用“C”或 C++ 编写简单的音频程序,这些程序可以在许多平台上编译和运行,包括 Windows、Macintosh OS X 和 Unix (OSS/ALSA)。它旨在促进不同平台上的开发者之间的音频软件交流。许多应用程序将 PortAudio 用于音频 I/O。
PortAudio 提供了一个非常简单的 API,用于使用简单的回调函数或阻塞读/写接口来录制和/或播放声音。示例程序包括播放正弦波、处理音频输入(吉他模糊)、录制和播放音频、列出可用的音频设备等。
如果您想使用 directshow,https://github.com/rdp/directshow-demo-audio-input-open-source可能会有所帮助。