繁体   English   中英

C#和音频生成/播放

[英]C# and Audio Generation/Playback

我正在制作一个音频合成器,我在找出用于音频播放的内容时遇到了问题。 我正在使用物理和数学来计算源波形,然后需要将该波形馈送到可以将其作为声音播放的东西。 我需要的东西可以1)播放我计算的波形和2)同时播放多个声音(比如按住其他键的同时按住钢琴上的一个键)。 我已经对此做了一些研究,我找不到能完成这两件事的东西。 据我所知,我有5个可能的选择:

  1. DirectSound的。 它可以将波形(短[])作为参数并将其作为声音播放,并且可以同时播放多个声音。 但它不适用于.NET 4.5。
  2. System.Media.SoundPlayer。 它适用于.NET 4.5并且具有比Direct Sound更高质量的音频,但它必须从.wav文件播放声音,并且不能一次播放多个声音(也不能播放SoundPlayer的多个声音)。 我通过将我的波形转换为内存中的.wav格式,然后向SoundPlayer发送内存中.wav文件的MemoryStream来''使SoundPlayer工作。 我可以通过改变流来实现对播放的控制吗? 我不能将字节附加到流(我尝试过)但我可能会使流成为任意大小,并且每次到达流末尾时,只需用下一段音频数据重新写入流中的所有字节。
  3. System.Windows.Controls.MediaElement 我还没有尝试过这个,但是从MSDN文档中我看不到一种方法可以在内存中发送波形而不先将其保存到磁盘然后再读取它; 我认为我不能发送它。
  4. System.Windows.Controls.MediaPlayer 我也没有对此进行过实验,但是文档说它可以用作某种动画的伴侣。 我可以在不做任何真实(用户可感知的)动画的情况下使用它来实现我想要的效果。
  5. 一个开源解决方案 我对使用开源解决方案犹豫不决,因为我发现它们通常记录不完整且不易维护,但如果有一个有详细记录并可以做我需要的建议,我愿意接受。

任何人都可以为我提供任何指导或如何创建灵活的音频播放?

http://naudio.codeplex.com ,毫无疑问。 马克是SO的常客,产品很好,有很好的代码示例。

有用。 我们用它制作了一些很棒的东西。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM