diff options
Diffstat (limited to 'tests/com/jsyn/examples/PlaySample.java')
-rw-r--r-- | tests/com/jsyn/examples/PlaySample.java | 121 |
1 files changed, 0 insertions, 121 deletions
diff --git a/tests/com/jsyn/examples/PlaySample.java b/tests/com/jsyn/examples/PlaySample.java deleted file mode 100644 index ac3d5ff..0000000 --- a/tests/com/jsyn/examples/PlaySample.java +++ /dev/null @@ -1,121 +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.io.IOException; -import java.net.MalformedURLException; -import java.net.URL; - -import com.jsyn.JSyn; -import com.jsyn.Synthesizer; -import com.jsyn.data.FloatSample; -import com.jsyn.unitgen.LineOut; -import com.jsyn.unitgen.VariableRateDataReader; -import com.jsyn.unitgen.VariableRateMonoReader; -import com.jsyn.unitgen.VariableRateStereoReader; -import com.jsyn.util.SampleLoader; - -/** - * Play a sample from a WAV file using JSyn. - * - * @author Phil Burk (C) 2010 Mobileer Inc - */ -public class PlaySample { - private Synthesizer synth; - private VariableRateDataReader samplePlayer; - private LineOut lineOut; - - private void test() { - - URL sampleFile; - try { - sampleFile = new URL("http://www.softsynth.com/samples/Clarinet.wav"); - // sampleFile = new URL("http://www.softsynth.com/samples/NotHereNow22K.wav"); - } catch (MalformedURLException e2) { - e2.printStackTrace(); - return; - } - - synth = JSyn.createSynthesizer(); - - FloatSample sample; - try { - // Add an output mixer. - synth.add(lineOut = new LineOut()); - - // Load the sample and display its properties. - SampleLoader.setJavaSoundPreferred(false); - sample = SampleLoader.loadFloatSample(sampleFile); - System.out.println("Sample has: channels = " + sample.getChannelsPerFrame()); - System.out.println(" frames = " + sample.getNumFrames()); - System.out.println(" rate = " + sample.getFrameRate()); - System.out.println(" loopStart = " + sample.getSustainBegin()); - System.out.println(" loopEnd = " + sample.getSustainEnd()); - - if (sample.getChannelsPerFrame() == 1) { - synth.add(samplePlayer = new VariableRateMonoReader()); - samplePlayer.output.connect(0, lineOut.input, 0); - } else if (sample.getChannelsPerFrame() == 2) { - synth.add(samplePlayer = new VariableRateStereoReader()); - samplePlayer.output.connect(0, lineOut.input, 0); - samplePlayer.output.connect(1, lineOut.input, 1); - } else { - throw new RuntimeException("Can only play mono or stereo samples."); - } - - // Start synthesizer using default stereo output at 44100 Hz. - synth.start(); - - samplePlayer.rate.set(sample.getFrameRate()); - - // We only need to start the LineOut. It will pull data from the - // sample player. - lineOut.start(); - - // We can simply queue the entire file. - // Or if it has a loop we can play the loop for a while. - if (sample.getSustainBegin() < 0) { - System.out.println("queue the sample"); - samplePlayer.dataQueue.queue(sample); - } else { - System.out.println("queueOn the sample"); - samplePlayer.dataQueue.queueOn(sample); - synth.sleepFor(8.0); - System.out.println("queueOff the sample"); - samplePlayer.dataQueue.queueOff(sample); - } - - // Wait until the sample has finished playing. - do { - synth.sleepFor(1.0); - } while (samplePlayer.dataQueue.hasMore()); - - synth.sleepFor(0.5); - - } catch (IOException e1) { - e1.printStackTrace(); - } catch (InterruptedException e) { - e.printStackTrace(); - } - // Stop everything. - synth.stop(); - } - - public static void main(String[] args) { - new PlaySample().test(); - } -} |