【问题标题】:NAudio multiple WaveOut objectsNAudio 多个 WaveOut 对象
【发布时间】:2023-03-05 09:49:01
【问题描述】:

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

【问题讨论】:

    标签: naudio


    【解决方案1】:

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

    【讨论】:

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