/** * PlayerComposer.java * * Implementation of abstract composer class. * Demonstrates the use of simplePlayer object * by building a simple sequence from a chromatic * scale of unbent pitches. * * This module is part of Karl Brown's MIDI programming project. * */ package MidiApps; import java.io.*; import java.util.*; import javax.sound.midi.*; /** * * @author Karl Brown * @version 1.0 * last updated 2/16/2003 */ public class PlayerComposer extends composer { player p; int note; int patch; public void setNote(int noteIn) { note = noteIn; } public void setPatch(int patchIn) { patch = patchIn; } public void compose() { try { if (s == null) { createSequence(); } Track t = s.createTrack(); String TrackName; simplePlayer sp = new simplePlayer(); p = (player)(sp); p.setTracer(tr); p.setTrack(t); p.setTick(0); p.generalMidiOn(); p.setTempo((byte)0x02, (byte)0xA1, (byte)0x20); p.setTrackName("Automatic Pilot track"); p.addChannel(0); p.omniOn(); p.polyOn(); p.setPatch(patch); p.setVelOn(0x60); p.setVelOff(0x60); p.setDur((long)60); for (int i = 0; i < 24; i++) { p.resetPitch(); p.addMidiPitch((byte)(note + (byte)i)); p.play(); } for (int i = 24; i > 0; i--) { p.resetPitch(); p.addMidiPitch((byte)(note + (byte)i)); p.play(); } p.setDur((long)720); p.resetPitch(); p.addMidiPitch((byte)note); p.play(); p.endOfTrack(); } //try catch(Exception e) { tr.trace("playerComposer::compose: Exception caught:"); tr.trace(e.toString()); } //catch } }