|
| 1 | +package exceptionHandling; |
| 2 | + |
| 3 | +import javax.sound.midi.InvalidMidiDataException; |
| 4 | +import javax.sound.midi.MidiEvent; |
| 5 | +import javax.sound.midi.MidiSystem; |
| 6 | +import javax.sound.midi.MidiUnavailableException; |
| 7 | +import javax.sound.midi.Sequence; |
| 8 | +import javax.sound.midi.Sequencer; |
| 9 | +import javax.sound.midi.ShortMessage; |
| 10 | +import javax.sound.midi.Track; |
| 11 | + |
| 12 | +public class MiniMusicCmdLine { |
| 13 | + public static void main(String[] args) { |
| 14 | + MiniMusicCmdLine mini = new MiniMusicCmdLine(); |
| 15 | + if(args.length < 2) { |
| 16 | + System.out.println("Don't forget instrument and note"); |
| 17 | + } |
| 18 | + else { |
| 19 | + int instrument = Integer.parseInt(args[0]); |
| 20 | + int note = Integer.parseInt(args[1]); |
| 21 | + mini.play(instrument, note); |
| 22 | + } |
| 23 | + } |
| 24 | + |
| 25 | + public void play(int instrument, int note) { |
| 26 | + try { |
| 27 | + Sequencer player = MidiSystem.getSequencer(); |
| 28 | + player.open(); |
| 29 | + Sequence seq = new Sequence(Sequence.PPQ, 4); |
| 30 | + Track track = seq.createTrack(); |
| 31 | + |
| 32 | + ShortMessage first = new ShortMessage(); |
| 33 | + first.setMessage(192, 1, instrument, 0); |
| 34 | + MidiEvent changeInst = new MidiEvent(first, 1); |
| 35 | + track.add(changeInst); |
| 36 | + |
| 37 | + ShortMessage a = new ShortMessage(); |
| 38 | + a.setMessage(144, 1, note, 100); |
| 39 | + MidiEvent noteOn = new MidiEvent(a, 1); |
| 40 | + track.add(noteOn); |
| 41 | + |
| 42 | + ShortMessage b = new ShortMessage(); |
| 43 | + b.setMessage(128, 1, note, 100); |
| 44 | + MidiEvent noteOff = new MidiEvent(b, 16); |
| 45 | + track.add(noteOff); |
| 46 | + |
| 47 | + player.setSequence(seq); |
| 48 | + player.start(); |
| 49 | + } catch (MidiUnavailableException e) { |
| 50 | + // TODO Auto-generated catch block |
| 51 | + e.printStackTrace(); |
| 52 | + } catch (InvalidMidiDataException e) { |
| 53 | + // TODO Auto-generated catch block |
| 54 | + e.printStackTrace(); |
| 55 | + } |
| 56 | + } |
| 57 | +} |
0 commit comments