diff options
Diffstat (limited to 'tests/com/jsyn/examples/PlayNotes.java')
-rw-r--r-- | tests/com/jsyn/examples/PlayNotes.java | 103 |
1 files changed, 0 insertions, 103 deletions
diff --git a/tests/com/jsyn/examples/PlayNotes.java b/tests/com/jsyn/examples/PlayNotes.java deleted file mode 100644 index 65dc930..0000000 --- a/tests/com/jsyn/examples/PlayNotes.java +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Copyright 2009 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 com.jsyn.JSyn; -import com.jsyn.Synthesizer; -import com.jsyn.unitgen.LineOut; -import com.jsyn.unitgen.SawtoothOscillator; -import com.jsyn.unitgen.UnitGenerator; -import com.jsyn.unitgen.UnitVoice; -import com.softsynth.shared.time.TimeStamp; - -/** - * Play notes using timestamped noteOn and noteOff methods of the UnitVoice. - * - * @author Phil Burk (C) 2009 Mobileer Inc - */ -public class PlayNotes { - Synthesizer synth; - UnitGenerator ugen; - UnitVoice voice; - LineOut lineOut; - - private void test() { - // Create a context for the synthesizer. - synth = JSyn.createSynthesizer(); - // Set output latency to 123 msec because this is not an interactive app. - synth.getAudioDeviceManager().setSuggestedOutputLatency(0.123); - - // Add a tone generator. - synth.add(ugen = new SawtoothOscillator()); - // synth.add( ugen = new SineOscillator() ); - // synth.add( ugen = new SubtractiveSynthVoice() ); - voice = (UnitVoice) ugen; - // Add an output mixer. - synth.add(lineOut = new LineOut()); - - // Connect the oscillator to the left and right audio output. - voice.getOutput().connect(0, lineOut.input, 0); - voice.getOutput().connect(0, lineOut.input, 1); - - // Start synthesizer using default stereo output at 44100 Hz. - synth.start(); - - // Get synthesizer time in seconds. - double timeNow = synth.getCurrentTime(); - - // Advance to a near future time so we have a clean start. - TimeStamp timeStamp = new TimeStamp(timeNow + 0.5); - - // We only need to start the LineOut. It will pull data from the - // oscillator. - synth.startUnit(lineOut, timeStamp); - - // Schedule a note on and off. - double freq = 200.0; // hertz - double duration = 1.4; - double onTime = 1.0; - voice.noteOn(freq, 0.5, timeStamp); - voice.noteOff(timeStamp.makeRelative(onTime)); - - // Schedule this to happen a bit later. - timeStamp = timeStamp.makeRelative(duration); - freq *= 1.5; // up a perfect fifth - voice.noteOn(freq, 0.5, timeStamp); - voice.noteOff(timeStamp.makeRelative(onTime)); - - timeStamp = timeStamp.makeRelative(duration); - freq *= 4.0 / 5.0; // down a major third - voice.noteOn(freq, 0.5, timeStamp); - voice.noteOff(timeStamp.makeRelative(onTime)); - - // Sleep while the song is being generated in the background thread. - try { - System.out.println("Sleep while synthesizing."); - synth.sleepUntil(timeStamp.getTime() + 2.0); - System.out.println("Woke up..."); - } catch (InterruptedException e) { - e.printStackTrace(); - } - - // Stop everything. - synth.stop(); - } - - public static void main(String[] args) { - new PlayNotes().test(); - } -} |