0

我想利用来自设备中 MIDI 的数据。当某些事件发生时,我需要得到通知,以便我可以做一些事情,比如即时转调某些音符或调用方法或任何你能想到的东西。

虽然我对一般编程特别是 java 还是很陌生,但我已经能够使用 javax.sound.midi 使用音序器播放序列。我什至可以添加一个侦听器,告诉我音序器何时播放某些事件。现在我希望能够用 MIDI IN 流做类似的事情,但我不知道怎么做。

欢迎任何想法或解决方法,因为我现在很困惑。

4

3 回答 3

0

在您自己的类中实现 javax.sound.midi.Receiver 接口的 send(javax.sound.midi.ShortMessage, long) 方法,并像使用其他 Receiver 对象一样使用后者的实例。

于 2014-06-18T15:28:21.943 回答
0

我终于找到了解决方案,我想澄清这个问题并添加我的解决方案,以防它对其他人有帮助。

我正在从事的项目(顺便说一句,这超出了我的想象)是一个 MIDI 键盘编曲器。如果您不知道它是什么,它是一个键盘,可以演奏模式(风格)并根据演奏的和弦改变音调和排列。我需要的是我认为从端口中的 midi 转储的东西,这样我的程序就可以找出播放的和弦,以便它可以让音序器以不同的方式响应。

因此,要回答我自己的原始问题,您需要为您的 midi in 端口创建一个新的发射器。然后创建一个新的接收器来接收来自新发射器的数据流。最后让接收者将数据发送到 PrintStream,然后您就可以对数据流做您想做的事情了!

于 2013-09-22T23:50:06.310 回答
0

要录制 MIDI 数据,您必须

  • 通过调用其方法将输入端口连接Transmitter到您Sequencer的端口,ReceiversetReceiver
  • 创建新的Sequence/Track对象,并将它们连接到Sequencer,
  • 在您的轨道上启用录音,以及
  • 开始在您的Sequencer.

(见文档

于 2013-09-22T07:41:26.503 回答