package vafusion.gui; import jm.*; import jm.music.data.*; import jm.util.*; public class Test implements JMC { public static void main(String[] args){ Score s = new Score("JMDemo - Show Fractal"); Part p = new Part("Piano", PIANO, 0); Phrase phr = new Phrase(0.0); float sum; float[] rg = new float[16]; int k, kg, ng, threshold; int np = 1; int nbits = 1; int npts = 48; //number of notes float nr = (float)(npts); nr = nr/2; // create a phrase of fractal pitches quavers over the full MIDI // range. System.out.println("Calculating fractal melody. . ."); while (nr > 1) { nbits++; np = 2 * np; nr = nr/2; } for(kg=0; kg<nbits; kg++) { rg[kg] = (float)(Math.random()); } for(k=0; k<npts; k++) { threshold = np; ng = nbits; while(k%threshold != 0) { ng--; threshold = threshold / 2; } sum = 0; for(kg=0; kg<nbits; kg++) { if(kg<ng) {rg[kg]=(float)(Math.random());} sum += rg[kg]; } Note note = new Note((int)(sum/nbits*127), (float)((int)(Math.random()*8)/2)); phr.addNote(note); } // add the phrase to a part and that part to the score p.addPhrase(phr); s.addPart(p); System.out.println(s); //display score using ShowScore View.show(s); Write.midi(s, "ShowFractal.mid"); } }