Android javax midi音序器未播放mid文件
嗨,我在Android上使用javax midi库,它可以很好地处理midi消息,但当我打开并尝试播放midi文件时,它不会执行任何声音。我已经验证了所有这些步骤:Android javax midi音序器未播放mid文件,java,android,audio,midi,Java,Android,Audio,Midi,嗨,我在Android上使用javax midi库,它可以很好地处理midi消息,但当我打开并尝试播放midi文件时,它不会执行任何声音。我已经验证了所有这些步骤: 处理midi文件时没有异常 之前我用winamp和DAW播放midi文件 我已将soundbank.gm放在目录C:\Program Files\Java\jdk1.7.0_45\lib\audio和C:\Program Files(x86)\Java\jre1.8.0_66\lib\audio中 我已经在MediaPlayer类
- 处理midi文件时没有异常
- 之前我用winamp和DAW播放midi文件
- 我已将soundbank.gm放在目录C:\Program Files\Java\jdk1.7.0_45\lib\audio和C:\Program Files(x86)\Java\jre1.8.0_66\lib\audio中
- 我已经在MediaPlayer类中成功地使用了它
- 我的代码:
private Sequencer playMidiFile() { try { Sequencer mSeqr = MidiSystem.getSequencer(); InputStream in = getAssets().open(MIDI_FILE); Sequence mSeq = MidiSystem.getSequence(in); mSeqr.open(); mSeqr.setSequence(mSeq); mSeqr.start(); //it is supposed this execution will perform the play of the file return mSeqr; } catch (MidiUnavailableException e) { e.printStackTrace(); } catch (InvalidMidiDataException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; }
我该怎么做才能听到什么?谢谢 从java端,您必须连接到合成器,以便执行以下操作-如果您的音序器被占用或无法获得默认值,则应检查系统中所有其他可用的音序器。有关更多信息,请查看oracle的教程
static void play(Sequence sequence)
throws MidiUnavailableException, InvalidMidiDataException, IOException
{
Sequencer sequencer=MidiSystem.getSequencer( );
sequencer.open();
Synthesizer synthesizer = MidiSystem.getSynthesizer();
synthesizer.open();
sequencer.getTransmitter().setReceiver(synthesizer.getReceiver( ));
sequencer.setSequence(sequence);
sequencer.addMetaEventListener(new MetaEventListener( ) {
public void meta(MetaMessage m) {
if (m.getType( ) == END_OF_TRACK) {
System.out.println("end of track");
return;
}
}
});
sequencer.start( );
}