Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#和音频生成/播放_C#_Playback_Audio - Fatal编程技术网

C#和音频生成/播放

C#和音频生成/播放,c#,playback,audio,C#,Playback,Audio,我正在制作一个音频合成器,我在弄清楚用什么来播放音频时遇到了问题。我用物理和数学来计算源波形,然后需要将该波形输入到可以作为声音播放的东西。我需要的东西可以1)播放我计算的波形,2)同时播放多个声音(比如按住钢琴上的一个键同时按下其他键)。我对此做了大量的研究,但我找不到同时做这两件事的东西。据我所知,我有5种可能的选择: DirectSound。它可以将波形(短[])作为参数并将其作为声音播放,并且可以同时播放多个声音。但它不能与.NET4.5一起使用 System.Media.SoundPl

我正在制作一个音频合成器,我在弄清楚用什么来播放音频时遇到了问题。我用物理和数学来计算源波形,然后需要将该波形输入到可以作为声音播放的东西。我需要的东西可以1)播放我计算的波形,2)同时播放多个声音(比如按住钢琴上的一个键同时按下其他键)。我对此做了大量的研究,但我找不到同时做这两件事的东西。据我所知,我有5种可能的选择:

  • DirectSound。它可以将波形(短[])作为参数并将其作为声音播放,并且可以同时播放多个声音。但它不能与.NET4.5一起使用
  • System.Media.SoundPlayer。它与.NET 4.5配合使用,音频质量优于直接声音,但它必须从.wav文件播放声音,不能同时播放多个声音(SoundPlayer的多个实例也不能)。我在内存中将波形转换成.wav格式,然后向SoundPlayer发送内存中.wav文件的MemoryStream,从而“欺骗”SoundPlayer工作我可以通过改变流来控制播放吗?我无法向流中添加字节(我尝试过),但我可以将流设置为任意大小,并在每次流结束时使用下一段音频数据重新写入流中的所有字节
  • System.Windows.Controls.MediaElement。我还没有尝试过这种方法,但从MSDNs文档中我看不到一种方法,可以在内存中发送一个波形,而不先将其保存到磁盘,然后再读取它;我想我不能给它发送一条流
  • System.Windows.Controls.MediaPlayer。我也没有尝试过,但文档中说它是用来作为某种动画的伴奏的。我可以在不做任何真实的(用户可感知的)动画的情况下使用它来达到我想要的效果
  • 开源解决方案。我对使用开源解决方案犹豫不决,因为我发现它们的文档记录通常很差,不太容易维护,但如果有一个文档记录良好的解决方案可以满足我的需要,我愿意接受这些想法
  • 有谁能给我提供一些关于这方面的指导,或者如何创建灵活的音频播放

    ,毫无疑问。Mark是这里的常客,所以,该产品非常活跃,有很好的代码示例

    它起作用了。毫无疑问,我们用它制作了一些很棒的东西。

    。Mark是这里的常客,所以,该产品非常活跃,有很好的代码示例

    它起作用了。我们用它做了一些很棒的东西