package jmsltestsuite; import com.softsynth.jmsl.JMSL; import com.softsynth.jmsl.MusicShape; import com.softsynth.jmsl.midi.MidiIO; import com.softsynth.jmsl.midi.MidiInstrument; /** Midi instrument that sends pitchbend in play() */ public class PitchBendInstrument extends MidiInstrument { public PitchBendInstrument() { super(); MusicShape s = new MusicShape(2); s.setDimensionName(0, "duration"); s.setDefault(0, 1.0); s.setLimits(0, 0, 2.0); s.setDimensionName(1, "pitchbend"); s.setDefault(1, (double) MidiIO.PITCH_BEND_CENTER); s.setLimits(1, 0, (double) 0x3FFF); this.setDimensionNameSpace(s); } public PitchBendInstrument(int channel) { this(); setChannel(channel); } /** duration in dar[0], bend in dar[1] */ public double play(double playTime, double timeStretch, double[] dar) { double duration = dar[0]; int bend = (int) dar[1]; // System.out.println("PitchBendInstrument.play(), channel=" + getChannel() + ", bend=" + bend); JMSL.midi.bendPitch(playTime, getChannel(), bend); return playTime + duration * timeStretch; } }