import javax.sound.midi.*; import java.util.ArrayList; public class GuitarChordSequence2 { // this is the first one public static void main(String[] args) { GuitarTuning gt = new GuitarTuning(); ArrayList eMajor = new ArrayList(); eMajor.add(gt.midiNum(6,0)); eMajor.add(gt.midiNum(5,2)); eMajor.add(gt.midiNum(4,2)); eMajor.add(gt.midiNum(3,1)); eMajor.add(gt.midiNum(2,0)); eMajor.add(gt.midiNum(1,0)); ArrayList aMajor = new ArrayList(); aMajor.add(gt.midiNum(6,0)); aMajor.add(gt.midiNum(5,0)); aMajor.add(gt.midiNum(4,2)); aMajor.add(gt.midiNum(3,2)); aMajor.add(gt.midiNum(2,2)); aMajor.add(gt.midiNum(1,0)); ArrayList> chords = new ArrayList>(); chords.add(eMajor); chords.add(aMajor); chords.add(eMajor); chords.add(aMajor); int instrument = 25; // SEE http://soundprogramming.net/file_formats/general_midi_instrument_list /* 25 Acoustic Guitar (nylon) 26 Acoustic Guitar (steel) 27 Electric Guitar (jazz) 28 Electric Guitar (clean) 29 Electric Guitar (muted) 30 Overdriven Guitar 31 Distortion Guitar 32 Guitar harmonics */ GuitarChordSequence2 mini = new GuitarChordSequence2(); if (args.length >= 1) { instrument = Integer.parseInt(args[0]); } mini.playChords(instrument, chords); System.exit(0); } public void playChords(int instrument, ArrayList> chords) { try { Sequencer player = MidiSystem.getSequencer(); player.open(); Sequence seq = new Sequence(Sequence.PPQ, 4); Track track = seq.createTrack(); MidiEvent event = null; ShortMessage first = new ShortMessage(); first.setMessage(192, 1, instrument, 0); MidiEvent changeInstrument = new MidiEvent(first, 1); track.add(changeInstrument); final int beatDuration = 4; // how many beats to hold each chord // c is for chord for (int c=0; c chord = chords.get(c); for (int n=0; n