/* * Created by Nick on Jan 4, 2005 * */ package jmslexamples.simple; import com.softsynth.jmsl.*; import com.softsynth.jmsl.jsyn.JSynInsFromClassName; import com.softsynth.jmsl.jsyn.JSynMusicDevice; /** * * Just play one pitched sound once. * * @author Nick Didkovsky, (c) 2004 All rights reserved, Email: * didkovn@mail.rockefeller.edu * */ public class OneSoundOnce extends java.applet.Applet { JMSLMixerContainer mixer; Instrument instrument; MusicShape musicShape; public void init() { JMSL.setIsApplet(true); } public void start() { synchronized (JMSL.class) { initJMSL(); initMusicDevices(); buildMixer(); buildInstrument(); buildMusicShape(); launchMusicShape(); } } private void initJMSL() { JMSL.scheduler = new EventScheduler(); JMSL.scheduler.start(); JMSL.clock.setAdvance(0.1); } private void initMusicDevices() { JSynMusicDevice.instance().open(); } private void buildMixer() { mixer = new JMSLMixerContainer(); mixer.start(); } private void buildInstrument() { // 8 voice polyphony, use FilteredSawtoothBL sound instrument = new JSynInsFromClassName(8, com.softsynth.jsyn.circuits.FilteredSawtoothBL.class.getName()); mixer.addInstrument(instrument); } private void buildMusicShape() { // 4 dimensional MusicShape: duration, pitch, amplitude, sustain time ("hold") musicShape = new MusicShape(4); musicShape.setInstrument(instrument); // 1 second, middle C, 0.6 amp, hold 0.95 sec musicShape.add(1, 60, 0.6, 0.95); } private void launchMusicShape() { musicShape.launch(JMSL.now()); } public void stop() { synchronized (JMSL.class) { musicShape.finishAll(); try { musicShape.waitForDone(); } catch (InterruptedException e) { e.printStackTrace(); } JMSL.scheduler.stop(); JMSL.closeMusicDevices(); } } }