如何通过外接PC扬声器用c++输出不同的波信号

How to Ouput different wave signals through external PC speakers with C++?

本文关键字:输出 信号 c++ 何通过 PC 扬声器      更新时间:2023-10-16

对于我的学校项目,我想知道是否有人可以帮助我找到一种通过我的PC扬声器实时输出声音的方法。这必须通过我的声卡完成,而在同一时间播放的信号参数,如相位,幅度,波形等?如果可能的话,我更喜欢c++语言下的库,并且出于实际原因在Windows平台上。当然Linux也是可以的。

最重要的是,我还想通过每个扬声器发送不同的波形,以创建静波,可以通过这个实验看到:www.youtube.com/watch ? v = T56waxJ7bB8

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

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

另外,作为一个小的兴趣点,JACK2是用c++编写的(尽管外部API仍然是C)。我建议从JACK wiki开始,也许可以修改一个简单的示例客户端来做您正在尝试的事情。

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

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

在网上搜索一些例子。尝试一下这些api和示例,看看效果如何。