YES!
solution by Andrew Davison:
http://fivedots.coe.psu.ac.th/~ad/jg/ch05/index.htmldoes NOT work with 1.5.0_02-b09
successfully tested with 1.5.0_04-b05 and 1.6.0-ea-b45
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
| private void initSequencer() { try { sequencer = obtainSequencer();
if (sequencer == null) { System.out.println("Cannot get a sequencer"); System.exit(0); }
sequencer.open(); if (!(sequencer instanceof Synthesizer)) { System.out.println("Linking the MIDI sequencer and synthesizer"); synthesizer = MidiSystem.getSynthesizer(); synthesizer.open(); Receiver synthReceiver = synthesizer.getReceiver(); Transmitter seqTransmitter = sequencer.getTransmitter(); seqTransmitter.setReceiver(synthReceiver); } else synthesizer = (Synthesizer) sequencer; } catch (MidiUnavailableException e){ System.out.println("No sequencer available"); System.exit(0); } }
private Sequencer obtainSequencer() { MidiDevice.Info[] mdi = MidiSystem.getMidiDeviceInfo(); int seqPosn = -1; for(int i=0; i < mdi.length; i++) { System.out.println(mdi[i].getName()); if (mdi[i].getName().indexOf("Sequencer") != -1) { seqPosn = i; System.out.println(" Found Sequencer"); } }
try { if (seqPosn != -1) return (Sequencer) MidiSystem.getMidiDevice( mdi[seqPosn] ); else return null; } catch(MidiUnavailableException e) { return null; } } |