package fr.utc.leapband.utilities; import javax.sound.midi.*; import java.util.ArrayList; public class GuitarChordSequence { // this is the first one public void playChords(int instrument, ArrayList<ArrayList<Integer>> chords) { try { Sequencer player = MidiSystem.getSequencer(); player.open(); Sequence seq = new Sequence(Sequence.PPQ, 4); Track track = seq.createTrack(); 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<chords.size(); c++) { // n is for note ArrayList<Integer> chord = chords.get(c); for (int n=0; n<chord.size(); n++) { ShortMessage a = new ShortMessage(); a.setMessage(ShortMessage.NOTE_ON, 1, chord.get(n), 100); MidiEvent noteOn = new MidiEvent(a, 1+(c*beatDuration)); track.add(noteOn); } for (int n=0; n<chord.size(); n++) { ShortMessage b = new ShortMessage(); b.setMessage(ShortMessage.NOTE_OFF, 1, chord.get(n), 100); MidiEvent noteOff = new MidiEvent(b, (c+1)*beatDuration); track.add(noteOff); } // n for loop } // c for loop player.setSequence(seq); player.start(); Thread.sleep(5000); player.close(); } catch (Exception ex) {ex.printStackTrace();} } // close play } // close class