首页 文章

只要用户持有密钥,如何播放音调?

提问于
浏览
2

只是为了好玩,我写了一个音乐程序(在 C#中),当用户按下一个键时,它以 P/Invoking 函数和适当的频率工作。

这种方法的一个问题是Beep要求将持续时间指定为 up-front,因此所有注释都具有相同的长度。这是对乐器的相当严格的限制。

我想做什么开始在 KeyDown 事件上播放音符,并停止在 KeyUp 事件上播放它。优选地,以使得可以同时播放多个音符的方式。有一种简单的方法可以在.NET 或 Win32 中完成此操作吗?

1 回答

  • 1

    嘟嘟声不是一个好的解决方案。为所需的频率生成短波形文件,然后使用带有 SND_LOOP 标志的 PlaySound 函数播放它们,如下所示:

    KeyDown: 
      PlaySound("wave440.wav", 0, SND_LOOP | SND_FILENAME | SND_ASYNC);
    ...
    KeyUp: 
      PlaySound(NULL, 0, SND_PURGE);
    

相关问题