/** FMSpectrumApplet.java GUI provides controls to plot spectrum of simple FM pair. * @author Phil Burk and Nick Didkovsky */ /* * (C) 1997 Phil Burk and Nick Didkovsky, All Rights Reserved * JMSL is based upon HMSL (C) Phil Burk, Larry Polansky and David Rosenboom. */ package jmsltutorial; import java.awt.*; import com.softsynth.jmsl.view.JMSLScrollbar; import com.softsynth.jmsl.view.JMSLScrollbarProcessor; public class FMSpectrumApplet extends java.applet.Applet implements JMSLScrollbarProcessor { FMSpectrumCalculator myFMSpectrumCalculator; SpectrumCanvas mySpectrumCanvas; JMSLScrollbar carrFreqScrollbar; JMSLScrollbar modAmpScrollbar; JMSLScrollbar modFreqScrollbar; Label carrFreqLabel; Label modAmpLabel; Label modFreqLabel; Label modIndexLabel; public void init() { myFMSpectrumCalculator = new FMSpectrumCalculator(); carrFreqScrollbar = new JMSLScrollbar(this, (int) myFMSpectrumCalculator.getCarrierFreq(), 20, 20000); carrFreqScrollbar.setSize(320, 25); modAmpScrollbar = new JMSLScrollbar(this, (int) myFMSpectrumCalculator.getModAmp(), 0, 20000); modAmpScrollbar.setSize(320, 25); modFreqScrollbar = new JMSLScrollbar(this, (int) myFMSpectrumCalculator.getModFreq(), 20, 20000); modFreqScrollbar.setSize(320, 25); carrFreqLabel = new Label("Carrier Freq =" + myFMSpectrumCalculator.getCarrierFreq() + " "); modAmpLabel = new Label("Mod Amp =" + myFMSpectrumCalculator.getModAmp() + " "); modFreqLabel = new Label("Mod Freq =" + myFMSpectrumCalculator.getModFreq() + " "); modIndexLabel = new Label("Modulation Index "); Panel controlPanel = new Panel(); controlPanel.setLayout(new GridLayout(0, 1)); Panel p = new Panel(); p.add(carrFreqScrollbar); p.add(carrFreqLabel); controlPanel.add(p); p = new Panel(); p.add(modAmpScrollbar); p.add(modAmpLabel); controlPanel.add(p); p = new Panel(); p.add(modFreqScrollbar); p.add(modFreqLabel); controlPanel.add(p); p = new Panel(); p.add(modIndexLabel); controlPanel.add(p); add(controlPanel); mySpectrumCanvas = new SpectrumCanvas(); add(mySpectrumCanvas); } public void start() { newSpectrum(); } public void stop() { } void recalculateSpectrum() { myFMSpectrumCalculator.setModAmp((double) modAmpScrollbar.getValue()); myFMSpectrumCalculator.setModFreq((double) modFreqScrollbar.getValue()); myFMSpectrumCalculator.setCarrierFreq((double) carrFreqScrollbar.getValue()); myFMSpectrumCalculator.calculateSpectrum(); } void handleModFreq() { modFreqLabel.setText("Mod Freq =" + modFreqScrollbar.getValue()); } void handleModAmp() { modAmpLabel.setText("Mod Amp =" + modAmpScrollbar.getValue()); } void handleCarrFreq() { carrFreqLabel.setText("Carrier Freq =" + carrFreqScrollbar.getValue()); } void setModIndexLabel() { modIndexLabel.setText("Modulation Index = " + myFMSpectrumCalculator.getIndexOfModulation()); } void newSpectrum() { recalculateSpectrum(); setModIndexLabel(); mySpectrumCanvas.setSpectrum(myFMSpectrumCalculator.getSpectrum()); mySpectrumCanvas.repaint(); } public void JMSLScrollbarValueChanged(JMSLScrollbar jsb) { if (jsb == modFreqScrollbar) handleModFreq(); if (jsb == modAmpScrollbar) handleModAmp(); if (jsb == carrFreqScrollbar) handleCarrFreq(); newSpectrum(); } }