import java.io.IOException;import jm.music.data.*;import jm.JMC;import jm.util.*;import jm.music.tools.*;/** * Music for Pieces of Wood. Steve Riech's 1980 score. Five percussion parts. * @author Andrew R. Brown */public final class PiecesOfWood implements JMC{	public static void main(String[] args){		//Create the data objects we want to use		Score score = new Score("Music for Pieces of Wood", 120);                //set: name, instrument and channel		Part clave1 = new Part("Clave 1", 116, 0); 		Part clave2 = new Part("Clave 2", 116, 1);		Part clave3 = new Part("Clave 3", 116, 2);		Part clave4 = new Part("Clave 4", 116, 3);		Part clave5 = new Part("Clave 5", 116, 4);				//The music for phrase 1.		Phrase c1Phr1 = new Phrase(0.0);		int[] pitchArray = {ds7,REST,ds7,REST,ds7,REST,ds7,REST,ds7,                                    REST,ds7,REST};		double[] rhythmArray = {0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,                                        0.5,0.5};		c1Phr1.addNoteList(pitchArray, rhythmArray);		Mod.repeat(c1Phr1, 55); //up to page 4 bar 3		clave1.addPhrase(c1Phr1); //c1 up to beat 336				//The music for 6/4 rest phrase.(Not really required but neat!)		Phrase sixFourRest = new Phrase(0.0);		Note note = new Note(REST,6.0);		sixFourRest.addNote(note);		Mod.repeat(sixFourRest, 1);		clave2.addPhrase(sixFourRest); // c2 up to beat 12					//The music for c2 phrase 2.		Phrase c2Phr2 = new Phrase(12.0);		int[] pitchArray2 = {b5,b5,b5,REST,b5,b5,REST,b5,REST,b5,b5,                                     REST};		double[] rhythmArray2 = {0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,                                         0.5,0.5,0.5};		c2Phr2.addNoteList(pitchArray2, rhythmArray2);		Mod.repeat(c2Phr2, 53); //up to page 4 bar 3		clave2.addPhrase(c2Phr2); // c2 up to beat 336				//The music for c3 phrase 1. (Note really required but neat.)		Phrase c3Phr1 = new Phrase(0.0);		c3Phr1 = sixFourRest.copy();		Mod.repeat(c3Phr1, 3); // up to page 1 bar 3		clave3.addPhrase(c3Phr1); //c3 up to beat 24				//The music for c3 phrase 2.		Phrase c3Phr2 = new Phrase(24.0); 		int[] pitchArray3 = {REST,a5,REST};		double[] rhythmArray3 = {1.5,0.5,4.0};		c3Phr2.addNoteList(pitchArray3, rhythmArray3);                //change loundess of the note		((Note) (c3Phr2.getNoteList().elementAt(1))).setDynamic(126); 		Mod.repeat(c3Phr2, 1); // up to page 1 bar 4		clave3.addPhrase(c3Phr2); //c3 up to beat 36				//The music for c3 phrase 3.		Phrase c3Phr3 = new Phrase(36.0);		int[] pitchArray4 = {REST,a5,REST,a5,REST};		double[] rhythmArray4 = {0.5,0.5,0.5,0.5,4.0};		c3Phr3.addNoteList(pitchArray4, rhythmArray4);		Mod.repeat(c3Phr3, 1); // up to page 1 bar 5		clave3.addPhrase(c3Phr3); //c3 up to beat 48				//The music for c3 phrase 4.		Phrase c3Phr4 = new Phrase(48.0);		int[] pitchArray5 = {REST,a5,REST,a5,REST,a5,REST};		double[] rhythmArray5 = {0.5,0.5,0.5,0.5,3.0,0.5,0.5};		c3Phr4.addNoteList(pitchArray5, rhythmArray5);		Mod.repeat(c3Phr4, 1); // up to page 1 bar 6		clave3.addPhrase(c3Phr4); //c3 up to beat 60				//The music for c3 phrase 5.		Phrase c3Phr5 = new Phrase(60.0);		int[] pitchArray6 = {REST,a5,REST,a5,a5,REST,a5,REST};		double[] rhythmArray6 = {0.5,0.5,0.5,0.5,0.5,2.5,0.5,0.5};		c3Phr5.addNoteList(pitchArray6, rhythmArray6);		Mod.repeat(c3Phr5, 1); // up to page 1 bar 7		clave3.addPhrase(c3Phr5); //c3 up to beat 72				//The music for c3 phrase 6.		Phrase c3Phr6 = new Phrase(72.0);		int[] pitchArray7 = {REST,a5,REST,a5,a5,REST,a5,REST,a5,REST};		double[] rhythmArray7 = {0.5,0.5,0.5,0.5,0.5,0.5,0.5,1.5,0.5,                                         0.5};		c3Phr6.addNoteList(pitchArray7, rhythmArray7);		Mod.repeat(c3Phr6, 1); // up to page 1 bar 8		clave3.addPhrase(c3Phr6); //c3 up to beat 84				//The music for c3 phrase 7.		Phrase c3Phr6a = new Phrase(84.0);		int[] pitchArray7a = {REST,a5,REST,a5,a5,REST,a5,a5,REST,a5,                                      REST};		double[] rhythmArray7a = {0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,1.0,                                          0.5,0.5};		c3Phr6a.addNoteList(pitchArray7a, rhythmArray7a);		Mod.repeat(c3Phr6a, 1); // up to page 1 bar 8		clave3.addPhrase(c3Phr6a); //c3 up to beat 84				//The music for c3 phrase 7.		Phrase c3Phr7 = new Phrase(96.0);		int[] pitchArray8 = {REST,a5,REST,a5,a5,REST,a5,a5,a5,REST,a5,                                     a5};		double[] rhythmArray8 = {0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,                                         0.5,0.5,0.5};		c3Phr7.addNoteList(pitchArray8, rhythmArray8);		Mod.repeat(c3Phr7, 35); // up to page 3 bar 1		clave3.addPhrase(c3Phr7); //c3 up to beat 96				//The music for c3 phrase 8.		Phrase c3Phr8 = new Phrase(312.0);		int[] pitchArray9 = {a5,a5,a5,REST,a5,a5,REST,a5,REST,a5,a5,                                     REST};		double[] rhythmArray9 = {0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,                                         0.5,0.5,0.5};		c3Phr8.addNoteList(pitchArray9, rhythmArray9);		Mod.repeat(c3Phr8, 1); // up to page 3 bar 2		clave3.addPhrase(c3Phr8); //c3 up to beat 324				//The music for c4 phrase 1.		Phrase c4Phr1 = new Phrase(120.0);		int[] pitchArray10 = {REST,cs6,REST};		double[] rhythmArray10 = {0.5,0.5,5.0};		c4Phr1.addNoteList(pitchArray10, rhythmArray10);		Mod.repeat(c4Phr1, 1); // up to page 1 bar 12		clave4.addPhrase(c4Phr1); //c3 up to beat 132				//The music for c4 phrase 2.		Phrase c4Phr2 = new Phrase(132.0);		int[] pitchArray11 = {REST,cs6,REST,cs6,REST};		double[] rhythmArray11 = {0.5,0.5,2.5,0.5,2.0};		c4Phr2.addNoteList(pitchArray11, rhythmArray11);		Mod.repeat(c4Phr2, 1); 		clave4.addPhrase(c4Phr2); //c3 up to bar 13				//The music for c4 phrase 3.		Phrase c4Phr3 = new Phrase(144.0);		int[] pitchArray12 = {REST,cs6,REST,cs6,REST,cs6,REST};		double[] rhythmArray12 = {0.5,0.5,0.5,0.5,1.5,0.5,2.0};		c4Phr3.addNoteList(pitchArray12, rhythmArray12);		Mod.repeat(c4Phr3, 1); 		clave4.addPhrase(c4Phr3); //c4 up to bar 14				//The music for c4 phrase 4.		Phrase c4Phr4 = new Phrase(156.0);		int[] pitchArray13 = {REST,cs6,REST,cs6,REST,cs6,cs6,REST};		double[] rhythmArray13 = {0.5,0.5,0.5,0.5,1.5,0.5,0.5,1.5};		c4Phr4.addNoteList(pitchArray13, rhythmArray13);		Mod.repeat(c4Phr4, 1); 		clave4.addPhrase(c4Phr4); //c4 up to bar 15				//The music for c4 phrase 5.		Phrase c4Phr5 = new Phrase(168.0);		int[] pitchArray14 = {REST,cs6,REST,cs6,REST,cs6,cs6,REST,cs6,                                      REST};		double[] rhythmArray14 = {0.5,0.5,0.5,0.5,1.5,0.5,0.5,0.5,0.5,                                          0.5};		c4Phr5.addNoteList(pitchArray14, rhythmArray14);		Mod.repeat(c4Phr5, 1); 		clave4.addPhrase(c4Phr5); //c4 up to bar 16				//The music for c4 phrase 6.		Phrase c4Phr6 = new Phrase(180.0);		int[] pitchArray15 = {REST,cs6,REST,cs6,REST,cs6,cs6,REST,cs6,                                      cs6};		double[] rhythmArray15 = {0.5,0.5,0.5,0.5,1.5,0.5,0.5,0.5,0.5,                                          0.5};		c4Phr6.addNoteList(pitchArray15, rhythmArray15);		Mod.repeat(c4Phr6, 1); 		clave4.addPhrase(c4Phr6); //c4 up to bar 17				//The music for c4 phrase 7.		Phrase c4Phr7 = new Phrase(192.0);		int[] pitchArray16 = {REST,cs6,REST,cs6,cs6,REST,cs6,cs6,REST,                                      cs6,cs6};		double[] rhythmArray16 = {0.5,0.5,0.5,0.5,0.5,1.0,0.5,0.5,0.5,                                          0.5,0.5};		c4Phr7.addNoteList(pitchArray16, rhythmArray16);		Mod.repeat(c4Phr7, 1); 		clave4.addPhrase(c4Phr7); //c4 up to bar 18				//The music for c4 phrase 8.		Phrase c4Phr8 = new Phrase(204.0);		int[] pitchArray17 = {REST,cs6,REST,cs6,cs6,REST,cs6,cs6,cs6,                                      REST,cs6,cs6};		double[] rhythmArray17 = {0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,                                          0.5,0.5,0.5};		c4Phr8.addNoteList(pitchArray17, rhythmArray17);		Mod.repeat(c4Phr8, 17); 		clave4.addPhrase(c4Phr8); //c4 up to bar 27				//The music for c4 phrase 9.		Phrase c4Phr9 = new Phrase(312.0);		int[] pitchArray18 = {cs6,cs6,cs6,REST,cs6,cs6,REST,cs6,REST,                                      cs6,cs6,REST};		double[] rhythmArray18 = {0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,                                          0.5,0.5,0.5};		c4Phr9.addNoteList(pitchArray18, rhythmArray18);		Mod.repeat(c4Phr9, 1); 		clave4.addPhrase(c4Phr9); //c4 up to bar 28				//The music for c5 phrase 1.		Phrase c5Phr1 = new Phrase(216.0);		int[] pitchArray19 = {REST,ds6,REST};		double[] rhythmArray19 = {3.5,0.5,2.0};		c5Phr1.addNoteList(pitchArray19, rhythmArray19);		Mod.repeat(c5Phr1, 1); 		clave5.addPhrase(c5Phr1); //c5 up to bar 20				//The music for c5 phrase 2.		Phrase c5Phr2 = new Phrase(228.0);		int[] pitchArray20 = {REST,ds6,REST,ds6,REST};		double[] rhythmArray20 = {0.5,0.5,2.5,0.5,2.0};		c5Phr2.addNoteList(pitchArray20, rhythmArray20);		Mod.repeat(c5Phr2, 1); 		clave5.addPhrase(c5Phr2); //c5 up to bar 21				//The music for c5 phrase 3.		Phrase c5Phr3 = new Phrase(240.0);		int[] pitchArray21 = {REST,ds6,REST,ds6,REST,ds6,REST};		double[] rhythmArray21 = {0.5,0.5,2.5,0.5,0.5,0.5,1.0};		c5Phr3.addNoteList(pitchArray21, rhythmArray21);		Mod.repeat(c5Phr3, 1); 		clave5.addPhrase(c5Phr3); //c5 up to bar 22				//The music for c5 phrase 4.		Phrase c5Phr4 = new Phrase(252.0);		int[] pitchArray22 = {REST,ds6,ds6,REST,ds6,REST,ds6,REST};		double[] rhythmArray22 = {0.5,0.5,0.5,2.0,0.5,0.5,0.5,1.0};		c5Phr4.addNoteList(pitchArray22, rhythmArray22);		Mod.repeat(c5Phr4, 7); 		clave5.addPhrase(c5Phr4); //c5 up to bar 26				//The music for c5 phrase 5.		Phrase c5Phr5 = new Phrase(300.0);		int[] pitchArray23 = {ds6,ds6,ds6,REST,ds6,ds6,REST,ds6,REST,                                      ds6,ds6,REST};		double[] rhythmArray23 = {0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,                                          0.5,0.5,0.5};		c5Phr5.addNoteList(pitchArray23, rhythmArray23);		Mod.repeat(c5Phr5, 1); 		clave5.addPhrase(c5Phr5); //c5 up to bar 27				//The music for c5 phrase 6.		Phrase c5Phr6 = new Phrase(312.0);		int[] pitchArray24 = {cs6,cs6,cs6,REST,cs6,cs6,REST,cs6,REST,                                      cs6,cs6,REST};		double[] rhythmArray24 = {0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,                                          0.5,0.5,0.5};		c5Phr6.addNoteList(pitchArray24, rhythmArray24);		Mod.repeat(c5Phr6, 1); 		clave4.addPhrase(c5Phr6); //c4 up to bar 28				//--------------		//  4 4 Section		//---------------				//The music for c5 phrase 6.		Phrase c1Bar29 = new Phrase(336.0);		int[] pitchArray25 = {cs6,cs6,cs6,REST,cs6,cs6,REST,cs6,REST,                                      cs6,cs6,REST};		double[] rhythmArray25 = {0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,                                          0.5,0.5,0.5};		c1Bar29.addNoteList(pitchArray25, rhythmArray25);		Mod.repeat(c1Bar29, 1); 		clave4.addPhrase(c1Bar29); //c4 up to bar 28				//add instruments to the score		score.addPart(clave1);			score.addPart(clave2);			score.addPart(clave3);			score.addPart(clave4);			score.addPart(clave5);						//OK now we test SMF write and read		Write.midi(score, "piecesOfWood.mid");	}}