/* * Created on Apr 25, 2004 * */ package jmslexamples.jsyn; import com.softsynth.jsyn.*; /** * For Speedy example * * @author Nick Didkovsky, email: didkovn@mail.rockefeller.edu, (c) 2004 Nick Didkovsky, all rights reserved. * */ public class SpeedySynthNote extends SynthNote { SineOscillator myOsc; LinearLag myLag; MultiplyUnit multy; public SpeedySynthNote() throws SynthException { super(); /* Make waveform unit generator. */ add(myOsc = new SineOscillator()); add(myLag = new LinearLag()); add(multy = new MultiplyUnit()); /* Hook 'em up */ myLag.time.set(0.01); // 10 msec // myLag.input.set(1.0); // stays alive multy.inputA.connect(myOsc.output); multy.inputB.connect(myLag.output); /* Make ports on internal units appear as ports on circuit. */ addPort(amplitude = myOsc.amplitude, "amplitude"); addPort(frequency = myOsc.frequency, "frequency"); addPort(output = multy.output); /* Set signal type for frequency control so that we can operate in hertz. */ frequency.setSignalType(Synth.SIGNAL_TYPE_OSC_FREQ); frequency.set(0.0); amplitude.set(0.0); // compile(); } /** Bang the circuit to make a sound */ public void noteOn(int time, double frq, double ampl) { start(time); // System.out.println("SpeedySynthNote noteon " + frq + ", " + ampl); try { myLag.input.set(time, 1.0); myOsc.frequency.set(time, frq); /* Hz */ myOsc.amplitude.set(time, ampl); } catch (SynthException se) { System.out.println("noteOn() error: " + se); } } public void noteOff(int time) { try { myLag.input.set(time, 0.0); // dies quick } catch (SynthException se) { System.out.println("noteOff() error: " + se); } } }