我想利用来自MIDI设备的数据。我需要在发生某些事件时收到通知,以便我可以做一些事情,例如动态调换某些音符或调用方法或任何你能想到的事情。
虽然我对编程很新,特别是java,但我已经能够使用javax.sound.midi在序列器中播放序列了。我甚至可以添加一个监听器,告诉我什么时候顺控器播放某些事件。现在我希望能够用MIDI IN流做类似的事情,但我不知道怎么做。
任何想法或变通办法都会受到欢迎,因为我现在很困惑。
答案 0 :(得分:0)
要录制MIDI数据,您必须
Transmitter
方法将输入端口Sequencer
连接到Receiver
的{{1}},setReceiver
/ Sequence
个对象,并将它们连接到Track
,Sequencer
上录制。(参见documentation)
答案 1 :(得分:0)
我终于找到了解决方案,我想澄清问题并添加我的解决方案以防其他人有用。
我正在研究的项目(顺便说一下,这是我的头脑)是midi键盘编曲。如果您不知道它是什么,它是一个键盘,可以播放模式(样式)并根据所演奏的和弦改变音调和排列。我需要的是我认为从端口midi中调用的转储,以便我的程序可以找出弹奏的和弦,以便它可以让音序器以不同的方式响应。
所以要回答我自己的原始问题,你需要为你的midi端口创建一个新的发射器。然后创建一个新接收器以接收来自新发射器的数据流。最后让接收器将数据发送到PrintStream,然后您可以使用数据流执行所需的操作!
答案 2 :(得分:0)
在您自己的类中实现javax.sound.midi.Receiver接口的send(javax.sound.midi.ShortMessage,long)方法,并像使用其他Receiver对象一样使用后者的实例。 / p>