/* * Created on Oct 8, 2012 by Nick Didkovsky * * */ package jmslexamples.jsyn2.unitvoices; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import javax.swing.JFrame; import com.jsyn.JSyn; import com.jsyn.Synthesizer; import com.jsyn.ports.UnitInputPort; import com.jsyn.ports.UnitOutputPort; import com.jsyn.swing.SoundTweaker; import com.jsyn.unitgen.*; /** * Classic FM Pair. Modified from the JSyn 1 version by Andrew Gram * * @author Nick Didkovsky */ public class FMPair extends Circuit implements UnitSource { // declare units SineOscillator modOsc; SineOscillator carOsc; Add adder; public UnitInputPort modfrequency; public UnitInputPort modamplitude; public UnitInputPort carfrequency; public UnitInputPort caramplitude; // constructor public FMPair() { // add SynthUnits to circuits add(modOsc = new SineOscillator()); add(carOsc = new SineOscillator()); add(adder = new Add()); // start connecting modOsc.output.connect(adder.inputB); adder.output.connect(carOsc.frequency); // add ports visible to other classes addPort(modfrequency = modOsc.frequency, "Mod Frequency"); addPort(modamplitude = modOsc.amplitude, "Mod Amplitude"); addPort(carfrequency = adder.inputA, "Carrier Frequency"); addPort(caramplitude = carOsc.amplitude, "Carrier Amplitude"); modfrequency.setup(0.0, 220, 1000.0); modamplitude.setup(0.0, 0.0, 1000.0); carfrequency.setup(0.0, 220, 4186.0); // 4186 Hz = C8; highest on piano caramplitude.setup(0.0, 0.5, 1.0); } public UnitOutputPort getOutput() { return carOsc.output; } public static void main(String args[]) { UnitSourceTester.test(new FMPair()); } }