重复使用 beep(freq,duration)
Posted
技术标签:
【中文标题】重复使用 beep(freq,duration)【英文标题】:Using beep(freq,duration) Repeatedly 【发布时间】:2013-09-26 14:12:25 【问题描述】:我正在尝试创建一架钢琴,它可以通过按下指定的键或单击按钮来弹奏正确的音符。
到目前为止,它使用beep(freq, duration)
函数有效,但该命令有一次只能发出一个音符的限制。因此,如果我遍历所有音符,它将落后,直到它在设定的持续时间内播放完每个音符。
我只想在按下按钮或按下琴键时弹奏音符,并且一次可以弹奏多个音符。我知道大多数键盘的硬件限制,但我至少希望能够一次按下 3 个键,并让所有三个音符同时生成和播放,而不是在完成设置后背靠背持续时间。
我一直在使用的代码:
Beep(GlobalVariables.frqD, intDuration)
Beep 声明为:
Private Declare Function Beep Lib "kernel32" (ByVal soundFrequency As Int32, ByVal soundDuration As Int32) As Int32
【问题讨论】:
真的可以同时Beep
吗?例如在三个不同频率的三行上尝试ThreadPool.QueueUserWorkItem(Sub() Beep(xxx, 5))
。如果你真的得到了和弦,那么你想要的应该是可能的。
我尝试这样做,将我为“C”键设置的标准 Beep
函数替换为三组该代码,堆叠,为和弦设置正确的频率,并收到没有声音。
【参考方案1】:
只要按下键就可以轻松播放。
while(keypressed)
beep(freq,millisecond);
真正短哔声的频率应该使它听起来像一个音符(时间频率,而不是听觉频率,啊哈)。
不过,关于哔声方法的问题是,我上次检查它使用的是主板上的扬声器,而不是您的实际扬声器。我可能是错的,但似乎你一次只能得到一个音调。试试this 之类的东西,或者只是用谷歌搜索一个合适的音频播放库。这应该可以用来创建和弦。
【讨论】:
它可以在插入耳机时输出到我的耳机,所以我认为它们不仅仅输出到主板。我会研究你提到的链接。 VB.net 有什么好的音频库吗? 哦,那我可能错了。但如果你不能像韦恩所说的那样同时弹奏三个音符,那么似乎可能无法使用该功能来完成。到处寻找 VB.net 音频库,你会发现一堆可以工作的。 我发现有几个可以播放各种格式的音频,但没有一个可以生成正弦/余弦波?这些都在 C# 中 你只是弹奏 MIDI 音符很酷吗?那是你想要做的吗?只是哔哔声? 我研究了一下,它似乎调用了几个没有定义的东西,我不知道从哪里开始定义它们。以上是关于重复使用 beep(freq,duration)的主要内容,如果未能解决你的问题,请参考以下文章
audiodg.exe 随着我调用的每个 Beep() 函数不断增长。系统不释放内存