【问题标题】:Sound chords in C#?C#中的和弦?
【发布时间】:2023-03-20 07:18:01
【问题描述】:

我尝试过以低毫秒速率使用 Console.Beep() 两个“同时”播放两个频率,但哔声之间的停顿会破坏它。我已经尝试研究它,但除了我正在寻找的 DirectSound 之外,我什么也没找到,也不知道从哪里开始。我只需要用 C# 编写一个程序,用一个扬声器同时播放两个或多个频率。

谢谢。

【问题讨论】:

    标签: c# audio synthesis


    【解决方案1】:

    如果您事先知道频率,则可以将它们合成为波形文件(大胆或其他类似程序),然后使用 SoundPlayer 类播放波形文件。

    string path = /*path goes here*/;
    player = new SoundPlayer(path);
    player.Play();
    

    如果您需要在运行时合成它们,则必须手动编写文件。 Here's 一个 SO 问题,您可以参考它来构建波文件。

    【讨论】:

      【解决方案2】:

      这里有一些非常简单的示例代码,可以让您播放 WAV 或 MIDI 文件。这样,您只需编写一次代码,然后如果您想更改音效,只需维护 wav 或 mid 文件即可。

      Play Any Sound File - C#(将 DirectX 9.0 用于托管代码)

      【讨论】:

        【解决方案3】:

        我建议您查看 DirectSound,它具有很好的 .NET 绑定。您可以使用两个(或更多)Buffer 对象并调用它们的Play 方法来同时播放它们。

        This tutorial 展示了如何通过动态合成声音在 C# 中实现一个简单的鼓机。希望对您有所帮助。

        【讨论】:

          【解决方案4】:

          Console.Beep() 是同步的,直到声音结束才返回。

          尝试简单的 DirectMedia 层 (SDL.net)。

          【讨论】:

            【解决方案5】:

            尝试使用 MIDI。 This example 应该可以帮助您入门。它使用了几个人高度推荐的 MIDI 库。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2011-03-15
              • 2017-04-10
              • 1970-01-01
              • 1970-01-01
              • 2015-05-23
              • 1970-01-01
              • 2011-08-24
              • 1970-01-01
              相关资源
              最近更新 更多