2014-02-13 35 views
2

爲了好玩,我編寫了一個音樂程序(用C#編寫),當用戶按下某個鍵時,該程序通過P /以適當的頻率調用Beep函數。只要用戶持有鑰匙,如何演奏音調?

這種方法的一個問題是Beep要求預先指定持續時間,因此所有註釋都具有相同的長度。這對樂器來說是一個相當嚴重的限制。

我想要做什麼開始播放KeyDown事件的音符,並停止播放KeyUp事件。優選地,以使得可以同時播放多個音符的方式。有沒有簡單的方法來完成這個在.NET或Win32中?

+0

一個選項設置上的keydown一個標誌,開始在一個循環播放檢查keydown標誌,在keyup中重置標誌。你不會得到實時停止,但可以調整音樂的目的。注意:我從來沒有嘗試過,如果你願意,你可以試試。 – bansi

回答

1

嘟嘟聲在這裏不是一個好的解決方案。產生短波形文件所需頻率的頻道,然後用PlaySound功能發揮他們SND_LOOP標誌如下所示:

我可以用`Beep`想到
KeyDown: 
    PlaySound("wave440.wav", 0, SND_LOOP | SND_FILENAME | SND_ASYNC); 
... 
KeyUp: 
    PlaySound(NULL, 0, SND_PURGE);