我想使用来自MIDI输入设备的数据。当某些事件发生时,我需要得到通知,这样我就可以做一些事情,比如动态地转置某些音符,或者调用一个方法,或者任何你能想到的东西。
虽然我对一般编程,特别是java编程比较陌生,但我已经能够使用javax.sound.midi播放序列发生器中的序列。我甚至可以添加一个侦听器,它会告诉我序列器何时播放某些事件。现在我希望能够用MIDI IN stream做一些类似的事情,但我不知道怎么做。
任何想法或变通方法都将是受欢迎的,因为我现在完全被困住了。
发布于 2013-09-22 15:41:27
要录制 MIDI 数据,您必须
setReceiver方法将输入端口的Transmitter连接到Sequencer的 Receiver,Sequence/Track 对象,并将它们连接到 Sequencer,Sequencer.上录制。(见文档)
发布于 2013-09-23 07:50:06
我终于找到了解决方案,我想澄清这个问题,并添加我的解决方案,以防对其他人有帮助。
我正在做的项目(顺便说一句,这个项目超出了我的理解)是一个midi键盘编排器。如果你不知道它是什么,它是一个键盘,可以播放模式(风格),并根据所演奏的和弦改变音调和排列。我需要的是我认为是来自midi输入端口的转储,这样我的程序就可以找出演奏了什么和弦,这样它就可以让音序器以不同的方式响应。
因此,为了回答我最初的问题,你需要为你的midi输入端口创建一个新的发射器。然后创建一个新的接收器来接收来自新发送器的数据流。最后,让接收器将数据发送到PrintStream,然后您就可以对数据流执行您想要的操作了!
发布于 2014-06-18 23:28:22
在您自己的类中实现javax.sound.midi.Receiver接口的send(javax.sound.midi.ShortMessage,long)方法,并像使用其他接收器对象一样使用后者的实例。
https://stackoverflow.com/questions/18851866
复制相似问题