/** * Attempt to enable the {@link MidiDevice} which requires the high resolution timer. */ public static synchronized void enable() { if (null != MIDI_DEVICE && !MIDI_DEVICE.isOpen()) { try { MIDI_DEVICE.open(); } catch (final MidiUnavailableException ignore) { isEnabled = false; return; } isEnabled = true; } }
Sequence sequence = MidiSystem.getSequence(new File("test.mid")); for (Track track : sequence.getTracks()) { trackNumber++; System.out.println("Track " + trackNumber + ": size = " + track.size()); System.out.println(); for (int i=0; i < track.size(); i++) { MidiEvent event = track.get(i); System.out.print("@" + event.getTick() + " "); MidiMessage message = event.getMessage(); if (message instanceof ShortMessage) { ShortMessage sm = (ShortMessage) message; System.out.print("Channel: " + sm.getChannel() + " "); if (sm.getCommand() == NOTE_ON) { int key = sm.getData1(); int octave = (key / 12)-1; int note = key % 12; String noteName = NOTE_NAMES[note]; int velocity = sm.getData2(); System.out.println("Note on, " + noteName + octave + " key=" + key + " velocity: " + velocity); } else if (sm.getCommand() == NOTE_OFF) { int key = sm.getData1(); int octave = (key / 12)-1; int note = key % 12; String noteName = NOTE_NAMES[note]; int velocity = sm.getData2(); System.out.println("Note off, " + noteName + octave + " key=" + key + " velocity: " + velocity); } else { System.out.println("Command:" + sm.getCommand());
Sequencer sequencer = MidiSystem.getSequencer(); sequencer.open(); sequencer.setSequence(is); sequencer.start(); while (sequencer.isRunning()) sequencer.close();
int[] midiTypes = MidiSystem.getMidiFileTypes(); data = new Object[midiTypes.length][2]; for (int ii=0; ii<midiTypes.length; ii++) { "Attribute", "Value"}; MidiDevice.Info[] midiDeviceInfo = MidiSystem.getMidiDeviceInfo() ; for (int ii=0; ii<midiDeviceInfo.length; ii++) { data = new Object[6][2]; data[0][0] = "Name"; data[0][1] = midiDeviceInfo[ii].getName(); data[1][1] = midiDeviceInfo[ii].getVendor(); String version = midiDeviceInfo[ii].getVersion(); data[2][1] = version.replaceAll("Version ", ""); data[3][1] = midiDeviceInfo[ii].getDescription(); MidiDevice midiDevice = MidiSystem.getMidiDevice(midiDeviceInfo[ii]); Object valueTransmitter; if (midiDevice.getMaxTransmitters()==AudioSystem.NOT_SPECIFIED) { valueTransmitter = "Not specified"; } else { valueTransmitter = new Integer(midiDevice.getMaxTransmitters()); if (midiDevice.getMaxReceivers()==AudioSystem.NOT_SPECIFIED) { valueReceiver = "Not specified"; } else {
Sequence sequence = MidiSystem.getSequence(stream); Track[] tracks = sequence.getTracks(); metadata.set("tracks", String.valueOf(tracks.length)); Patch[] patches = sequence.getPatchList(); metadata.set("patches", String.valueOf(patches.length)); float type = sequence.getDivisionType(); if (type == Sequence.PPQ) { metadata.set("divisionType", "PPQ"); for (int i = 0; i < track.size(); i++) { MidiMessage message = track.get(i).getMessage(); if (message instanceof MetaMessage) { MetaMessage meta = (MetaMessage) message; if (meta.getType() >= 1 && meta.getType() <= 15) { new String(meta.getData(), ISO_8859_1));
import javax.sound.midi.*; import java.net.URL; class PlayMidi { public static void main(String[] args) throws Exception { URL url = new URL("http://www.vgmusic.com/music/computer/microsoft/windows/touhou_6_stage3_boss.mid"); Sequence sequence = MidiSystem.getSequence(url); Sequencer sequencer = MidiSystem.getSequencer(); sequencer.open(); sequencer.setSequence(sequence); sequencer.start(); } }
MidiDevice.Info[] infos = MidiSystem.getMidiDeviceInfo(); for (int i = 0; i < infos.length; i++) { try { device = MidiSystem.getMidiDevice(infos[i]); List<Transmitter> transmitters = device.getTransmitters(); transmitters.get(j).setReceiver( new MidiInputReceiver(device.getDeviceInfo().toString()) ); Transmitter trans = device.getTransmitter(); trans.setReceiver(new MidiInputReceiver(device.getDeviceInfo().toString())); device.open(); System.out.println(device.getDeviceInfo()+" Was Opened");
public void writeLaunchpadLightState(int lightNum, int lightState) throws Throwable { ShortMessage noteOnMsg = new ShortMessage(); // Novation LPad listens on channel "1" = zero-offset 0. noteOnMsg.setMessage(ShortMessage.NOTE_ON, 0, lightNum, lightState); myLpadDevWrap.myReceiver.send(noteOnMsg, -1); } // Invalid column numbers (9 to 15) are also interpreted as column 8.
/** * We assume that we are holding the "this" monitor */ private void addStopEvent(int note) throws InvalidMidiDataException { assert Thread.holdsLock(this); ShortMessage message = new ShortMessage(); message.setMessage(ShortMessage.NOTE_OFF, 0, note, 0); track.add(new MidiEvent(message, pos)); } }
int instrument = 36; Sequence sequence = new Sequence(Sequence.PPQ, 1); Track track = sequence.createTrack(); ShortMessage sm = new ShortMessage( ); sm.setMessage(ShortMessage.PROGRAM_CHANGE, 9, instrument, 0); //9 ==> is the channel 10. track.add(new MidiEvent(sm, 0));
Synthesizer synthesizer = MidiSystem.getSynthesizer(); synthesizer.open(); Instrument[] orchestra = synthesizer.getAvailableInstruments(); sb.append(eol); synthesizer.close();
/** * Logs available synthesizer instruments. */ public void logInstruments() { for (Instrument instrument : synthesizer.getAvailableInstruments()) { logger.info("Instrument {} ({}/{})", instrument.getName(), instrument.getPatch().getBank(), instrument.getPatch().getProgram()); } } }
/** Sets the instrument to be used for sequence playback. This implicitly loads the * given instrument. * @param instr The instrument to be used for sequence playback. */ public void setInstrument(Instrument instr) throws MidiUnavailableException { MidiSystem.getSynthesizer().loadInstrument(instr); instrument = instr; }
/** * Stops playing. */ public void stopPlay() { sequencer.stop(); }
seq.addMetaEventListener(new MetaEventListener() { @Override public void meta(MetaMessage metaMsg) { if (metaMsg.getType() == 0x2F) { seq.close(); } } });
/** * Sets the mute flag for all tracks in the sequence. * * @param sequencer the sequencer. * @param sequence the sequence. * @param mute the mute flag. */ public static void setMute(Sequencer sequencer, Sequence sequence, boolean mute) { Track[] tracks = sequence.getTracks(); for (int i = 0; i < tracks.length; i++) { sequencer.setTrackMute(i, mute); } }
/** * Loads all instruments to the synthesizer from the soundbank. * * @param synthesizer the synthesizer. * @param soundbank the soundbank. * @return {@code true} on success. */ public static boolean loadAllInstruments(Synthesizer synthesizer, Soundbank soundbank) { return synthesizer.loadAllInstruments(soundbank); }