使用c ++或C#实时录制声音

时间:2013-12-17 12:28:43

标签: c# c++ audio real-time signal-processing

我有一张专业的声卡,我想用c ++或c#录制吉他的信号,以便实时开发吉他效果。

如何通过c ++方法实时录制?

这是否意味着我需要声卡API? this one就够了吗?

4 个答案:

答案 0 :(得分:3)

尽管可能不像使用预先构建的库那么容易,但您可以从制造商那里获得声卡的C ++ SDK。我首先浏览他们的网站或联系支持。

如果这不是一个选项,您也可以使用DirectSound,它是DirectX系列产品的一部分。学习曲线相当陡峭,但我相信它应该做任何你想做的事情。

最后一个选项是查看喜欢的工具(例如声音锻造)。许多这些工具支持自动化,这意味着您可以单击应用程序,决定您想要的内容,然后自动执行该事件序列(See this作为示例)。

希望有所帮助,祝你好运!

旁注:我已经开发了许多硬件接口,根据我的经验,最好先从一个例子开始,至少做一些你想要的东西,然后从那里修改代码。如果任何特定选项没有这样的示例,我可能会跳过它,支持一个例子。

<强>实施例

直接声音 - Microsoft有一个直接声音的学习网站,您可以find here。我还发现this blog article有一个用直接声音录制音频的例子。

Sound Forge - 如果您下载“脚本开发人员工具包”,脚本文件夹中的C#示例应该可以帮助您入门。我相信这个特别的工具更侧重于编辑和效果,但我猜测应该有自动记录。

答案 1 :(得分:1)

为此使用第三方库可能是个好主意。 有很多选择。我所知道的是portaudioSTK

答案 2 :(得分:1)

要实时录制音频,任何API都可以。请注意,WASAPI是主要的API(自Vista以来),而WaveIn API,DirectSound等传统API在WASAPI之上作为兼容层实现。

常规API假设您可以处理某些处理延迟/开销,大约几十毫秒。

如果您要比这更快,并且您需要实时性能,例如处理数据并尽快返回以进行回放,则需要所谓的exclusive mode streams,您可以在其中实现延迟大约几毫秒,与专业音频开发套件相当。

Windows SDK在\Samples\multimedia\audio(C ++)

中有一些录音样本

答案 3 :(得分:1)

我喜欢支持录制(Fmod API)和实时效果的Sound recording with FMOD library