package JSynTutorial; /* Put resulting class into tutorial package. */ import java.util.*; import java.awt.*; import java.awt.event.*; // must import event handling from AWT 1.1 import java.applet.Applet; import com.softsynth.jsyn.*; /** * Start or stop an oscillator using JSyn. * AWT 1.1 version * @author (C) 1998 Phil Burk, All Rights Reserved *
* Modifications for AWT 1.1 by Nick Didkovsky */ /* DO: Change TUT_SineWave to match the name of your class. Must match file name!
NOTE: this class implements ItemListener, so it can receive ItemEvents from its Checkbox. Buttons and TextFields, for example, send ActionEvents, so if you want to use those, implement ActionListener. */ public class TUT_SineWave extends Applet implements ItemListener { /* DO: Declare Synthesis Objects here */ SineOscillator sineOsc; LineOut lineOut; Checkbox checker; /* Can be run as either an application or as an applet. */ public static void main(String args[]) { /* DO: Change TUT_SineWave to match the name of your class. Must match file name! */ TUT_SineWave applet = new TUT_SineWave(); AppletFrame frame = new AppletFrame("Test JSyn", applet); frame.setSize(300,100); // resize() is deprecated, use setSize() frame.show(); /* Begin test after frame opened so that DirectSound will use Java window. */ frame.test(); } /* * Setup synthesis by overriding start() method. */ public void start() { try { Synth.startEngine(0); /* DO: Your setup code goes here. ******************/ /* Create unit generators. */ sineOsc = new SineOscillator() ; lineOut = new LineOut(); /* Connect oscillator to LineOut so we can hear it. */ sineOsc.output.connect( 0, lineOut.input, 0 ); sineOsc.output.connect( 0, lineOut.input, 1 ); /* Create a button that causes a beep. */ add( checker = new Checkbox("Play Sine Wave Oscillator") ); /* Call us if the user clicks on the checkbox. */ checker.addItemListener( this ); /* Start unit. */ lineOut.start(); /* *****************************************/ /* Synchronize Java display to make buttons appear. */ getParent().validate(); getToolkit().sync(); } catch(SynthException e) { SynthAlert.showError(this,e); } } /* * Clean up synthesis by overriding stop() method. */ public void stop() { try { /* Your cleanup code goes here. */ removeAll(); // remove components from Applet panel. Synth.stopEngine(); } catch(SynthException e) { SynthAlert.showError(this,e); } } /** Start or stop depending on state of checkbox. */ void handleChecker() { try { if( checker.getState() ) { sineOsc.start(); } else { sineOsc.stop(); } } catch (SynthException e) { SynthAlert.showError(this,e); } } /* Respond to event using AWT 1.1 Event model. */ public void itemStateChanged(ItemEvent e) { Object source = e.getSource(); if( source == checker ) handleChecker(); // if you have more than one checkbox, add tests and responses here } }