package org.deeplearning4j.examples.recurrent.character.melodl4j; import javax.sound.midi.InvalidMidiDataException; import javax.sound.midi.MidiEvent; import javax.sound.midi.MidiMessage; import javax.sound.midi.ShortMessage; import javax.sound.midi.Track; public class InstrumentChange extends NoteOrInstrumentChange { private final int instrumentNumber; private final int channel; public InstrumentChange(int instrumentNumber, long tick, int channel) { this.instrumentNumber=instrumentNumber; this.startTick=tick; this.channel=channel; } @Override public String toString() { return "Change instrument to " + instrumentNumber + " (" + Midi2MelodyStrings.programs[instrumentNumber] + ") at " + startTick; } public int getInstrumentNumber() { return instrumentNumber; } @Override public void addMidiEvents(Track track) throws InvalidMidiDataException { MidiMessage midiMessage = new ShortMessage(ShortMessage.PROGRAM_CHANGE,channel,instrumentNumber,0); System.out.println("Adding instrument change to track for channel " + channel + " and instrumentName = " + Midi2MelodyStrings.programs[instrumentNumber]); track.add(new MidiEvent(midiMessage, startTick)); } }