2013-03-11 102 views
1

我正在创建一个MIDI钢琴,我在其中使用transmitter来接收MIDI键盘按键,并且receivers在一些字节操作后将这些消息发送到扬声器。如何检查变送器是否处于活动状态?

我的问题是,我想检测用户是否按住一个键。如果用户按住一个键,那么该笔记应该被保持。如果他们不是,那么这个音符应该逐渐消失。

Java MIDI没有我可以调用的发送器的方法,例如isRunning()isActive()来告诉是发送器,即用户正在按住一个键。有什么办法可以检测到吗?

在我的代码,我有一个无限循环while如果transmitter已发送的任何数据到receiver(如果有),然后处理这些数据,否则什么都不干。这会不断检查。但是,当按下键并按住MIDI键盘上的按键时,MIDI数据将被发送到接收机,但当while循环再次开始时,由于键保持原位,因此不会收到MIDI数据。

回答

1

当用户按下某个键时,会发送Note On消息。松开钥匙时,会发送一条音符关闭消息(或速度为0的Note On消息)。您可以使用该信息来确定是否正在保存笔记。

一种方法:每次看到“注意”(速度> 0)时都会增加一个计数器。每当您看到一个音符关闭(或速度为0的音符开启)时,计数器就会减少。如果您看到所有注释关闭,请将计数器设置为零。只要计数器大于零,键就被保持。

相关问题