NAudio 多个 WaveOut 对象

Posted

技术标签:

【中文标题】NAudio 多个 WaveOut 对象【英文标题】:NAudio multiple WaveOut objects 【发布时间】:2013-03-13 00:27:00 【问题描述】:

目前我正在构建一个合成器。我想知道是否有多个 waveOut() 对象,因为我希望我的合成器是复音的(同时按下多个键)。

【问题讨论】:

【参考方案1】:

您不应打开多个 WaveOut 对象。相反,使用MixingSampleProvider 创建一个混音器,将所有合成器声音的输出相加。它允许动态添加输入并在完成时自动删除它们。如果没有输入,您需要将其配置为产生无休止的静音流,否则 WaveOut 将假定没有更多内容可播放并自动停止。

【讨论】:

感谢 Mark Heath,想知道是否有任何使用 MixingSampleProvider 的示例?亲切的问候 在 NAudioWPF 演示代码中,有一个使用它的鼓机示例。 我刚刚检查了源代码,有点吓到我了!目前我的程序使用 Wave Stream 创建一个正弦波,当按下一个键时,它使用 WaveOut() 播放它。我将如何在 MixingSampleProvider 中读取我的 waveStream 对象。抱歉,问题过多,亲切的问候 您的正弦波提供程序应该实现 ISampleProvider。然后它可以作为 MixingSampleProvider 的输入。最后,使用 SampleToWaveProvider 将混音器传递给 WaveOut

以上是关于NAudio 多个 WaveOut 对象的主要内容,如果未能解决你的问题,请参考以下文章

NAudio - WaveOut 与 WaveOffsetStream 一起使用时不会引发 PlaybackStopped 事件

Naudio - 处理 WaveIn / WaveOut

使用 nAudio 播放多个文件时的音量控制

NAudio 中的静音功能 (waveOut)

NAudio WaveOut 设备 ID

记录来自 NAudio WaveIn 的输入,并输出到 NAudio WaveOut