C ++ / Python中的声音监控

时间:2009-11-30 03:40:03

标签: c++ python c macos audio

我正在寻找一个API(或关于在哪里查看/开始的一些信息),这最终将允许我监控计算机正在播放的声音。

我的最终目标(好吧,最终肯定会成为踏脚石)是示波器。

我应该从哪里开始查看(除了谷歌,它已经产生了令人不满意的结果),以了解有关计算机(特别是Mac)处理的声音以及如何获取声音的更多信息。

谢谢!

2 个答案:

答案 0 :(得分:2)

正如@cobbal所说,在Mac OS X上你需要以某种方式使用PortAudio来播放音频。唯一的另一种方法是使用具有插件API的音频播放器,然后将您的代码编写为该播放器的插件。但是,CoreAudio解决方案应该可以监控Mac上播放的所有声音。

您的CoreAudio代码根本无法移植到Windows和Linux。目前没有便携式解决方案。在Windows上你可能想要使用WaveIn / WaveOut API,除非你有专业设备,在这种情况下你可能想要使用ASIO。在Linux上,我不确定;我想你可能会挂钩到ALSA / PulseAudio来获取音频。除非你有专业装备,否则你可能想要使用JACK。

如果您想要一个便携式解决方案,您可能需要认真考虑插件选项。找到适用于所有平台的便携式免费软件媒体播放器,并为其制作范围插件。

对于示波器,您将需要一本关于数字信号处理(“DSP”)的书。您可能希望使用离散傅里叶变换(“DFT”)从离散音频样本中获取频率信息; DFT库可能被称为“FFT”库(“FFT”是“快速傅里叶变换”的缩写)。

我最喜欢的关于DSP的单本书是:Richard G. Lyons的Understanding Digital Signal Processing

编辑:顺便说一下,大多数媒体播放器都有“可视化”插件,其中一些是基于频率的显示器。 (有些甚至有像“范围”这样的名字。)是否有媒体播放器可以完全显示你想要的显示器?

答案 1 :(得分:1)

我过去曾使用SoundflowerPyAudio的组合来达到类似目的。

Soundflower允许您将所有音频输出路由到输入,然后由PyAudio读取。

如果您希望使用c ++而不是python,请使用PortAudio,PyAudio库基于。