如何使用C ++通过外部PC扬声器输出不同的波形信号?

时间:2014-07-22 13:51:53

标签: c++ audio waveform phase acoustics

对于我的学校项目,我想知道是否有人可以帮我找到通过我的电脑扬声器实时输出声音的方法。 这必须通过我的声卡完成,同时播放正在播放的信号的参数,如相位,幅度,波形等? 如果可能的话,我会优先使用C ++语言的库,并且出于实际原因,我会在Windows平台上。 Ofcourse Linux也是可能的。

最重要的是,我还希望通过每个扬声器发送不同的波形,以创建静止波,如本实验所示: www.youtube.com/watch?v=T56waxJ7bB8

2 个答案:

答案 0 :(得分:1)

一个有趣的可能性是使用JACK。它适用于Linux,Windows和OSX,并提供对音频输出的低延迟访问。它还允许将输出任意路由到其他程序。

JACK的编程模型非常简单 - 支持的唯一数据类型是32位float的单个通道,因此您可以改为使用手动交错数据通道,而不是提供单独的数据通道。左右音频正弦波发生器的实例,并将每个发生器路由到适当的输出通道。

此外,作为一个小问题,JACK2是用C ++编写的(虽然外部API仍然是C)。我建议从JACK wiki开始,也许修改一个简单的示例客户端来执行您尝试的操作。

答案 1 :(得分:0)

有一些API可以做到这一点。

  • 对于Windows XP及以上使用DirectSound
  • 对于Windows Vista / 7/8及以上版本,请使用WASAPI
  • 有一些跨平台的API,如OpenAL和SDL。

在网上搜索一些示例。暂时使用这些API和示例,看看你是怎么做的。