重复使用 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() 函数不断增长。系统不释放内存

在python中的错误点使用哔声

python 如何实现发出特定频率的声音

Objective c int 加倍计算[重复]

我可以在 c# 中使用 Console.Beep 播放 mp3 文件吗?

python:如何改变音量?