aboutsummaryrefslogtreecommitdiffstats
path: root/tests/com/jsyn/examples/HearSinePM.java
diff options
context:
space:
mode:
Diffstat (limited to 'tests/com/jsyn/examples/HearSinePM.java')
-rw-r--r--tests/com/jsyn/examples/HearSinePM.java129
1 files changed, 0 insertions, 129 deletions
diff --git a/tests/com/jsyn/examples/HearSinePM.java b/tests/com/jsyn/examples/HearSinePM.java
deleted file mode 100644
index 1e19505..0000000
--- a/tests/com/jsyn/examples/HearSinePM.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * Copyright 2010 Phil Burk, Mobileer Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.jsyn.examples;
-
-import java.awt.BorderLayout;
-import java.awt.GridLayout;
-
-import javax.swing.BorderFactory;
-import javax.swing.JApplet;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-
-import com.jsyn.JSyn;
-import com.jsyn.Synthesizer;
-import com.jsyn.ports.UnitInputPort;
-import com.jsyn.scope.AudioScope;
-import com.jsyn.swing.DoubleBoundedRangeModel;
-import com.jsyn.swing.JAppletFrame;
-import com.jsyn.swing.PortModelFactory;
-import com.jsyn.swing.RotaryTextController;
-import com.jsyn.unitgen.LineOut;
-import com.jsyn.unitgen.SineOscillator;
-import com.jsyn.unitgen.SineOscillatorPhaseModulated;
-
-/**
- * Play a tone using a phase modulated sinewave oscillator. Phase modulation (PM) is very similar to
- * frequency modulation (FM) but is easier to control.
- *
- * @author Phil Burk (C) 2010 Mobileer Inc
- */
-public class HearSinePM extends JApplet {
- private static final long serialVersionUID = -2704222221111608377L;
- private Synthesizer synth;
- SineOscillatorPhaseModulated carrier;
- SineOscillator modulator;
- LineOut lineOut;
- AudioScope scope;
-
- @Override
- public void init() {
- synth = JSyn.createSynthesizer();
- // Add a tone generator.
- synth.add(modulator = new SineOscillator());
- // Add a trigger.
- synth.add(carrier = new SineOscillatorPhaseModulated());
- // Add an output mixer.
- synth.add(lineOut = new LineOut());
-
- modulator.output.connect(carrier.modulation);
- carrier.output.connect(0, lineOut.input, 0);
- carrier.output.connect(0, lineOut.input, 1);
- modulator.amplitude.setup(0.0, 1.0, 10.0);
- carrier.amplitude.setup(0.0, 0.25, 1.0);
- setupGUI();
- }
-
- private void setupGUI() {
- setLayout(new BorderLayout());
-
- add(new JLabel("Show Phase Modulation in an AudioScope"), BorderLayout.NORTH);
-
- // Arrange the knob in a row.
- JPanel knobPanel = new JPanel();
- knobPanel.setLayout(new GridLayout(1, 0));
-
- knobPanel.add(setupPortKnob(modulator.frequency, "MFreq"));
- knobPanel.add(setupPortKnob(modulator.amplitude, "MAmp"));
- knobPanel.add(setupPortKnob(carrier.frequency, "CFreq"));
- knobPanel.add(setupPortKnob(carrier.amplitude, "CAmp"));
- add(knobPanel, BorderLayout.SOUTH);
-
- scope = new AudioScope(synth);
- scope.addProbe(carrier.output);
- scope.addProbe(modulator.output);
- scope.setTriggerMode(AudioScope.TriggerMode.NORMAL);
- scope.getView().setControlsVisible(true);
- add(scope.getView(), BorderLayout.CENTER);
- scope.start();
- validate();
- }
-
- private RotaryTextController setupPortKnob(UnitInputPort port, String label) {
- DoubleBoundedRangeModel model = PortModelFactory.createExponentialModel(port);
- RotaryTextController knob = new RotaryTextController(model, 10);
- knob.setBorder(BorderFactory.createTitledBorder(label));
- knob.setTitle(label);
- return knob;
- }
-
- @Override
- public void start() {
- // Start synthesizer using default stereo output at 44100 Hz.
- synth.start();
- scope.start();
- // We only need to start the LineOut. It will pull data from the
- // oscillator.
- lineOut.start();
- }
-
- @Override
- public void stop() {
- scope.stop();
- synth.stop();
- }
-
- /* Can be run as either an application or as an applet. */
- public static void main(String args[]) {
- HearSinePM applet = new HearSinePM();
- JAppletFrame frame = new JAppletFrame("Hear Phase Modulation", applet);
- frame.setSize(640, 400);
- frame.setVisible(true);
- frame.test();
- }
-
-}