我正在尝试在Android应用程序中从 MIDI 文件中的正确时间检索所有 MIDI 事件。
以下代码使用javax.sound.midi
API 在标准 JVM(在我的计算机上)上工作。
Sequencer sequencer = MidiSystem.getSequencer();
Sequence sequence = MidiSystem.getSequence(new File(FILENAME));
sequencer.setSequence(sequence);
sequencer.open();
sequencer.getTransmitter().setReceiver(new Receiver()
{
@Override
public void send(MidiMessage message, long timeStamp)
{
System.out.println(Arrays.toString(message.getMessage()));
}
@Override
public void close()
{
}
});
sequencer.start();
不幸的是,javax.sound.*
包在 Android 上不可用。Github ( https://github.com/kshoji/javax.sound.midi-for-Android )上提供了适用于 Android 的移植,但我上面的代码示例不起作用(sequencer.getTransmitter()
返回 null)。
有谁知道这是怎么做到的吗?对于我想做的事情,我没有找到任何有趣的库(http://www.midi.org/aboutmidi/android.php )。
谢谢你。