我应该选择哪种技术?我应该写一个驱动程序还是什么?非常感谢
4 回答
延迟将是这里最大的障碍——你必须非常快,即使是 10 毫秒的延迟也会使乐器无法演奏(因为你听到的东西是在你的手感觉之后发生的,这真的很分散注意力)。ASIO 是满足此类低延迟要求的最佳选择。
您不必编写驱动程序,一切都应该在用户空间中可行。
一方面,放大器部分你甚至不需要电脑,除非你在谈论模拟过载或其他效果。
在这种情况下,您需要能够读取麦克风,对波形进行一些转换,然后将它们输出到扬声器。如果我这样做,我会使用 matlab,但并不是每个人都有一堆 24x7 的 matlab 商业许可证。
您应该能够使用 DirectSound 或 SDL 或其他可用的声音库之一进行数学运算。
然而,最重要的不是你的技术,而是操纵传入声音信息所涉及的数学。学习喜欢快速傅立叶变换,学习高通、低通、带通滤波器背后的数学原理,学习吉他效果踏板对音频波的作用等。学习一些 EE DSP 魔法。
我会做一个VST。我做了几个失真效果。对于乐器(而不是效果),您可以制作 VSTi。
使用主机(接受 VST 或 DX 或两种插件),您将能够通过任意数量的效果来路由声音,包括您自己编写的效果。有几十个商业和免费主机。
您可以弹奏吉他并实时显示结果(或者实际上,延迟非常低,具体取决于您在效果中使用的算法和主机的延迟),或者您可以插入吉他部分,然后用效果来处理音频(绘制曲线、输入数字或添加 LFO 以更改效果的参数)。您还可以使用 MIDI 键盘或控制器。
无论您编写哪种插件,您都可以在 KVR Audio的论坛帖子中找到大量的编程信息,并且许多程序员都在闲逛,带您从初学者到大师。
DirectX - 请参阅常见问题解答http://msdn.microsoft.com/en-us/library/bb219721.aspx