diff options
25 files changed, 214 insertions, 177 deletions
@@ -1,5 +1,6 @@ -# ignore Eclipse BUild files +# ignore Eclipse and Ant generated directories /build/ /bin/ /dist/ +/doc/ @@ -3,8 +3,9 @@ Build JSyn Java Synthesizer </description> <!-- set global properties for this build --> - <property name="src" location="src"/> - <property name="build" location="build"/> + <property name="src.dir" location="src"/> + <property name="doc.dir" location="doc"/> + <property name="build.dir" location="build"/> <property name="dist" location="dist"/> <property name="main-class" value="com.jsyn.apps.AboutJSyn"/> <property name="jarname" value="jsyn"/> @@ -13,14 +14,16 @@ <target name="init"> <!-- Create the time stamp --> <tstamp/> - <!-- Create the build directory structure used by compile --> - <mkdir dir="${build}"/> + <!-- Create the necessary directories. --> + <mkdir dir="${build.dir}"/> + <mkdir dir="${doc.dir}"/> </target> <target name="compile" depends="init" description="compile the source " > <!-- Compile the java code from ${src} into ${build} --> - <javac target="${java-version}" source="${java-version}" srcdir="${src}" destdir="${build}"> + <javac target="${java-version}" source="${java-version}" + srcdir="${src.dir}" destdir="${build.dir}"> <classpath> <pathelement path="libs/jportaudio.jar"/> </classpath> @@ -33,17 +36,26 @@ <mkdir dir="${dist}/lib"/> <!-- Put everything in ${build} into the jsyn-${DSTAMP}.jar file --> - <jar jarfile="${dist}/lib/${jarname}-${DSTAMP}.jar" basedir="${build}"> + <jar jarfile="${dist}/lib/${jarname}-${DSTAMP}.jar" basedir="${build.dir}"> <manifest> <attribute name="Main-Class" value="${main-class}"/> </manifest> </jar> </target> + <!-- Generate javadocs for current project into ${doc.dir} --> + <target name="doc" depends="init" description="generate documentation"> + <javadoc sourcepath="${src.dir}" destdir="${doc.dir}"/> + <echo message = "=================================================================" /> + <echo message = "Javadocs have been generated and placed in the ${doc.dir} folder!" /> + <echo message = "=================================================================" /> + </target> + <target name="clean" description="clean up" > - <!-- Delete the ${build} and ${dist} directory trees --> - <delete dir="${build}"/> + <!-- Delete the directories created by ant. --> + <delete dir="${build.dir}"/> + <delete dir="${doc.dir}"/> <delete dir="${dist}"/> </target> </project> diff --git a/src/com/jsyn/JSyn.java b/src/com/jsyn/JSyn.java index 6185bb0..e42d141 100644 --- a/src/com/jsyn/JSyn.java +++ b/src/com/jsyn/JSyn.java @@ -24,7 +24,9 @@ import com.jsyn.engine.SynthesisEngine; /** * JSyn Synthesizer for Java. Use this factory class to create a synthesizer. This code demonstrates - * how to start playing a sine wave: <code><pre> + * how to start playing a sine wave: + * + * <pre><code> // Create a context for the synthesizer. synth = JSyn.createSynthesizer(); @@ -46,7 +48,7 @@ import com.jsyn.engine.SynthesisEngine; // We only need to start the LineOut. It will pull data from the oscillator. lineOut.start(); - </pre></code> +</code> </pre> * * @author Phil Burk (C) 2010 Mobileer Inc */ diff --git a/src/com/jsyn/Synthesizer.java b/src/com/jsyn/Synthesizer.java index ca23ee8..784b355 100644 --- a/src/com/jsyn/Synthesizer.java +++ b/src/com/jsyn/Synthesizer.java @@ -185,7 +185,7 @@ public interface Synthesizer { * This task must be very quick and should not perform any blocking operations. If you are not * certain that you need an Audio rate task then don't use this. * - * @param blockTask + * @param task */ public void addAudioTask(Runnable task); diff --git a/src/com/jsyn/ports/UnitDataQueuePort.java b/src/com/jsyn/ports/UnitDataQueuePort.java index 0c88711..f96e12a 100644 --- a/src/com/jsyn/ports/UnitDataQueuePort.java +++ b/src/com/jsyn/ports/UnitDataQueuePort.java @@ -4,9 +4,9 @@ * 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. @@ -25,11 +25,11 @@ import com.softsynth.shared.time.TimeStamp; /** * Queue for SequentialData, samples or envelopes - * + * * @author Phil Burk (C) 2009 Mobileer Inc */ public class UnitDataQueuePort extends UnitPort { - private LinkedList<QueuedBlock> blocks = new LinkedList<QueuedBlock>(); + private final LinkedList<QueuedBlock> blocks = new LinkedList<QueuedBlock>(); private QueueDataCommand currentBlock; private int frameIndex; private int numChannels = 1; @@ -330,7 +330,7 @@ public class UnitDataQueuePort extends UnitPort { /** * Queue entire amount of data with no options. - * + * * @param queueableData */ public void queue(SequentialData queueableData) { @@ -391,8 +391,8 @@ public class UnitDataQueuePort extends UnitPort { /** * Convenience method that will queue the decay portion of a SequentialData object, or the gap * and release loop portions if they exist. This could be used to implement a NoteOff method. - * - * @ifStop Will setAutostop(true) if release portion queued without a release loop. This will + * + * @param ifStop Will setAutostop(true) if release portion queued without a release loop. This will * stop execution of the unit. */ public void queueOff(SequentialData queueableData, boolean ifStop, TimeStamp timeStamp) { diff --git a/src/com/jsyn/swing/ASCIIMusicKeyboard.java b/src/com/jsyn/swing/ASCIIMusicKeyboard.java index 40f7792..f1379d8 100644 --- a/src/com/jsyn/swing/ASCIIMusicKeyboard.java +++ b/src/com/jsyn/swing/ASCIIMusicKeyboard.java @@ -4,9 +4,9 @@ * 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. @@ -30,25 +30,25 @@ import javax.swing.JPanel; /** * Support for playing musical scales on the ASCII keyboard of a computer. Has a Sustain checkbox * that simulates a sustain pedal. Auto-repeat keys are detected and suppressed. - * + * * @author Phil Burk (C) 2012 Mobileer Inc */ @SuppressWarnings("serial") public abstract class ASCIIMusicKeyboard extends JPanel { - private JCheckBox sustainBox; - private JButton focusButton; + private final JCheckBox sustainBox; + private final JButton focusButton; public static final String PENTATONIC_KEYS = "zxcvbasdfgqwert12345"; public static final String SEPTATONIC_KEYS = "zxcvbnmasdfghjqwertyu1234567890"; private String keyboardLayout = SEPTATONIC_KEYS; /* default music keyboard layout */ private int basePitch = 48; - private KeyListener keyListener; - private JLabel countLabel; + private final KeyListener keyListener; + private final JLabel countLabel; private int onCount; private int offCount; private int pressedCount; private int releasedCount; - private HashSet<Integer> pressedKeys = new HashSet<Integer>(); - private HashSet<Integer> onKeys = new HashSet<Integer>(); + private final HashSet<Integer> pressedKeys = new HashSet<Integer>(); + private final HashSet<Integer> onKeys = new HashSet<Integer>(); public ASCIIMusicKeyboard() { focusButton = new JButton("Click here to play ASCII keys."); @@ -143,15 +143,15 @@ public abstract class ASCIIMusicKeyboard extends JPanel { /** * This will be called when a key is released. It may also be called for sustaining notes when * the Sustain check box is turned off. - * - * @param pitch + * + * @param keyIndex */ public abstract void keyOff(int keyIndex); /** * This will be called when a key is pressed. - * - * @param pitch + * + * @param keyIndex */ public abstract void keyOn(int keyIndex); @@ -160,9 +160,11 @@ public abstract class ASCIIMusicKeyboard extends JPanel { } /** - * Specify the keys that will be active for music. If the first character in the layout is + * Specify the keys that will be active for music. + * For example "qwertyui". + * If the first character in the layout is * pressed then keyOn() will be called with 0. Default is SEPTATONIC_KEYS. - * + * * @param keyboardLayout defines order of playable keys */ public void setKeyboardLayout(String keyboardLayout) { @@ -175,7 +177,7 @@ public abstract class ASCIIMusicKeyboard extends JPanel { /** * Define offset used by convertIndexToPitch(). - * + * * @param basePitch */ public void setBasePitch(int basePitch) { diff --git a/src/com/jsyn/swing/EnvelopeEditorBox.java b/src/com/jsyn/swing/EnvelopeEditorBox.java index b7b224a..44fe53c 100644 --- a/src/com/jsyn/swing/EnvelopeEditorBox.java +++ b/src/com/jsyn/swing/EnvelopeEditorBox.java @@ -4,9 +4,9 @@ * 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. @@ -23,11 +23,16 @@ import java.awt.event.MouseListener; import java.awt.event.MouseMotionListener; import java.util.ArrayList; +import com.jsyn.data.SegmentedEnvelope; +import com.jsyn.unitgen.VariableRateDataReader; + /** * Edit a list of ordered duration,value pairs suitable for use with a SegmentedEnvelope. - * + * * @author (C) 1997-2013 Phil Burk, SoftSynth.com - * @see SynthEnvelope + * @see EnvelopePoints + * @see SegmentedEnvelope + * @see VariableRateDataReader */ /* ========================================================================== */ diff --git a/src/com/jsyn/swing/RotaryController.java b/src/com/jsyn/swing/RotaryController.java index 87f1d34..6cc84f3 100644 --- a/src/com/jsyn/swing/RotaryController.java +++ b/src/com/jsyn/swing/RotaryController.java @@ -4,9 +4,9 @@ * 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. @@ -32,22 +32,22 @@ import javax.swing.event.ChangeListener; /** * Rotary controller looks like a knob on a synthesizer. You control this knob by clicking on it and - * dragging <b>up</b> or down</b>. If you move the mouse to the <b>left</b> of the knob then you + * dragging <b>up</b> or <b>down</b>. If you move the mouse to the <b>left</b> of the knob then you * will have <b>coarse</b> control. If you move the mouse to the <b>right</b> of the knob then you * will have <b>fine</b> control. * <P> - * + * * @author (C) 2010 Phil Burk, Mobileer Inc * @version 16.1 */ public class RotaryController extends JPanel { private static final long serialVersionUID = 6681532871556659546L; private static final double SENSITIVITY = 0.01; - private BoundedRangeModel model; + private final BoundedRangeModel model; - private double minAngle = 1.4 * Math.PI; - private double maxAngle = -0.4 * Math.PI; - private double unitIncrement = 0.01; + private final double minAngle = 1.4 * Math.PI; + private final double maxAngle = -0.4 * Math.PI; + private final double unitIncrement = 0.01; private int lastY; private int startX; private Color knobColor = Color.LIGHT_GRAY; @@ -109,7 +109,7 @@ public class RotaryController extends JPanel { /** * A fractional value is useful for drawing. - * + * * @return model value as a normalized fraction between 0.0 and 1.0 */ public double getFractionFromModel() { @@ -235,7 +235,7 @@ public class RotaryController extends JPanel { /** * Override this method if you want to draw your own knob. - * + * * @param g graphics context * @param x position of center of knob * @param y position of center of knob diff --git a/src/com/jsyn/swing/XYController.java b/src/com/jsyn/swing/XYController.java index b9cf90a..0d97c62 100644 --- a/src/com/jsyn/swing/XYController.java +++ b/src/com/jsyn/swing/XYController.java @@ -4,9 +4,9 @@ * 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. @@ -21,7 +21,7 @@ import javax.swing.JPanel; /** * Root class for 2 dimensional X,Y controller for wave editors, Theremins, etc. Maps pixel * coordinates into "world" coordinates. - * + * * @author (C) 1997 Phil Burk, SoftSynth.com */ @@ -111,7 +111,7 @@ public class XYController extends JPanel { return height - (int) (((wy - minWorldY) * height) / (maxWorldY - minWorldY)); } - /** Clip wx to the min & max World X values. */ + /** Clip wx to the min and max World X values. */ public double clipWorldX(double wx) { if (wx < minWorldX) wx = minWorldX; @@ -120,7 +120,7 @@ public class XYController extends JPanel { return wx; } - /** Clip wy to the min & max World Y values. */ + /** Clip wy to the min and max World Y values. */ public double clipWorldY(double wy) { if (wy < minWorldY) wy = minWorldY; diff --git a/src/com/jsyn/unitgen/ChannelIn.java b/src/com/jsyn/unitgen/ChannelIn.java index e42c06a..0d8584e 100644 --- a/src/com/jsyn/unitgen/ChannelIn.java +++ b/src/com/jsyn/unitgen/ChannelIn.java @@ -4,9 +4,9 @@ * 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. @@ -20,8 +20,8 @@ import com.jsyn.ports.UnitOutputPort; /** * Provides access to one specific channel of the audio input. For ChannelIn to work you must call - * the Synthesizer start() method with numInputChannels > 0. - * + * the Synthesizer start() method with numInputChannels > 0. + * * @author Phil Burk (C) 2009 Mobileer Inc * @see ChannelOut * @see LineIn diff --git a/src/com/jsyn/unitgen/Compare.java b/src/com/jsyn/unitgen/Compare.java index 4d55740..7de2e53 100644 --- a/src/com/jsyn/unitgen/Compare.java +++ b/src/com/jsyn/unitgen/Compare.java @@ -4,9 +4,9 @@ * 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. @@ -17,9 +17,9 @@ package com.jsyn.unitgen; /** - * - Output 1.0 if inputA > inputB. Otherwise output 0.0. - * + * + Output 1.0 if inputA > inputB. Otherwise output 0.0. + * * @author Phil Burk (C) 2009 Mobileer Inc * @version 016 * @see Maximum diff --git a/src/com/jsyn/unitgen/FilterBiquad.java b/src/com/jsyn/unitgen/FilterBiquad.java index 5e5d508..f9b792f 100644 --- a/src/com/jsyn/unitgen/FilterBiquad.java +++ b/src/com/jsyn/unitgen/FilterBiquad.java @@ -4,9 +4,9 @@ * 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. @@ -20,13 +20,13 @@ import com.jsyn.ports.UnitInputPort; /** * Base class for a set of IIR filters. - * + * * @author Phil Burk (C) 2011 Mobileer Inc * @see FilterBandStop * @see FilterBandPass * @see FilterLowPass * @see FilterHighPass - * @see FilterTwoPoleTwoZero + * @see FilterTwoPolesTwoZeros */ public abstract class FilterBiquad extends TunableFilter { public UnitInputPort amplitude; @@ -67,20 +67,29 @@ public abstract class FilterBiquad extends TunableFilter { /** * Each filter calls performBiquadFilter() through the generate(int, int) method. This method * has converted Robert Bristow-Johnson's coefficients for the Direct I form in this way: Here - * is the equation that JSyn uses for this filter: y(n) = A0*x(n) + A1*x(n-1) + A2*x(n-2) - - * B1*y(n-1) - B2*y(n-2) Here is the equation that Robert Bristow-Johnson uses: y[n] = - * (b0/a0)*x[n] + (b1/a0)*x[n-1] + (b2/a0)*x[n-2] - (a1/a0)*y[n-1] - (a2/a0)*y[n-2] So to - * translate between JSyn coefficients and RBJ coefficients: - * + * is the equation that JSyn uses for this filter: + * + * <pre> + * y(n) = A0*x(n) + A1*x(n-1) + A2*x(n-2) -vB1*y(n-1) - B2*y(n-2) + * </pre> + * + * Here is the equation that Robert Bristow-Johnson uses: + * + * <pre> + * y[n] = (b0/a0)*x[n] + (b1/a0)*x[n-1] + (b2/a0)*x[n-2] - (a1/a0)*y[n-1] - (a2/a0)*y[n-2] + * </pre> + * + * So to translate between JSyn coefficients and RBJ coefficients: + * * <pre> - * JSyn => RBJ - * A0 => b0/a0 - * A1 => b1/a0 - * A2 => b2/a0 - * B1 => a1/a0 - * B2 => a2/a0 + * JSyn => RBJ + * A0 => b0/a0 + * A1 => b1/a0 + * A2 => b2/a0 + * B1 => a1/a0 + * B2 => a2/a0 * </pre> - * + * * @param start * @param limit */ diff --git a/src/com/jsyn/unitgen/FourWayFade.java b/src/com/jsyn/unitgen/FourWayFade.java index ac30739..c7fd22a 100644 --- a/src/com/jsyn/unitgen/FourWayFade.java +++ b/src/com/jsyn/unitgen/FourWayFade.java @@ -4,9 +4,9 @@ * 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. @@ -25,7 +25,7 @@ import com.jsyn.ports.UnitOutputPort; * Mix inputs 0-3 based on the value of two fade ports. You can think of the four inputs arranged * clockwise as follows. * <P> - * + * * <PRE> * input[0] ---- input[1] * | | @@ -33,20 +33,20 @@ import com.jsyn.ports.UnitOutputPort; * | | * input[3] ---- input[2] * </PRE> - * - * The "fade" port has two parts. Fade[0] fades between the pair of inputs (0&3) and the pair of - * inputs (1&2). Fade[1] fades between the pair of inputs (0&1) and the pair of inputs (3&2). - * + * + * The "fade" port has two parts. Fade[0] fades between the pair of inputs (0,3) and the pair of + * inputs (1,2). Fade[1] fades between the pair of inputs (0,1) and the pair of inputs (3,2). + * * <PRE> * Fade[0] Fade[1] Output * -1 -1 Input[3] * -1 +1 Input[0] * +1 -1 Input[2] * +1 +1 Input[1] - * - * - * -----Fade[0]-----> - * + * + * + * -----Fade[0]-----> + * * A * | * | @@ -55,7 +55,7 @@ import com.jsyn.ports.UnitOutputPort; * | * </PRE> * <P> - * + * * @author (C) 1997-2009 Phil Burk, Mobileer Inc */ public class FourWayFade extends UnitGenerator { diff --git a/src/com/jsyn/unitgen/GrainFarm.java b/src/com/jsyn/unitgen/GrainFarm.java index 7cff6f1..78179bc 100644 --- a/src/com/jsyn/unitgen/GrainFarm.java +++ b/src/com/jsyn/unitgen/GrainFarm.java @@ -4,9 +4,9 @@ * 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. @@ -24,11 +24,13 @@ import com.jsyn.util.PseudoRandom; * A unit generator that generates a cloud of sound using multiple Grains. Special thanks to my * friend Ross Bencina for his excellent article on Granular Synthesis. Several of his ideas are * reflected in this architecture. "Implementing Real-Time Granular Synthesis" by Ross Bencina, - * Audio Anecdotes III, 2001. <code><pre> + * Audio Anecdotes III, 2001. + * + * <pre><code> synth.add( sampleGrainFarm = new GrainFarm() ); grainFarm.allocate( NUM_GRAINS ); -</pre><code> - * +</code></pre> + * * @author Phil Burk (C) 2011 Mobileer Inc * @see Grain * @see GrainSourceSine @@ -48,7 +50,7 @@ public class GrainFarm extends UnitGenerator implements UnitSource { PseudoRandom randomizer; private GrainState[] states; private double countScaler = 1.0; - private GrainScheduler scheduler = new StochasticGrainScheduler(); + private final GrainScheduler scheduler = new StochasticGrainScheduler(); public GrainFarm() { randomizer = new PseudoRandom(); diff --git a/src/com/jsyn/unitgen/Latch.java b/src/com/jsyn/unitgen/Latch.java index 5818101..0518f69 100644 --- a/src/com/jsyn/unitgen/Latch.java +++ b/src/com/jsyn/unitgen/Latch.java @@ -4,9 +4,9 @@ * 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. @@ -20,11 +20,11 @@ import com.jsyn.ports.UnitInputPort; /** * Latch or hold an input value. - * <P> + * <p> * Pass a value unchanged if gate true, otherwise output held value. - * <P> - * output = ( gate > 0.0 ) ? input : previous_output; - * + * <p> + * output = ( gate > 0.0 ) ? input : previous_output; + * * @author (C) 1997-2010 Phil Burk, Mobileer Inc * @see EdgeDetector */ diff --git a/src/com/jsyn/unitgen/LineIn.java b/src/com/jsyn/unitgen/LineIn.java index 500b55c..aeef965 100644 --- a/src/com/jsyn/unitgen/LineIn.java +++ b/src/com/jsyn/unitgen/LineIn.java @@ -4,9 +4,9 @@ * 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. @@ -22,8 +22,8 @@ import com.jsyn.ports.UnitOutputPort; /** * External audio input is sent to the output of this unit. The LineIn provides a stereo signal * containing channels 0 and 1. For LineIn to work you must call the Synthesizer start() method with - * numInputChannels > 0. - * + * numInputChannels > 0. + * * @author Phil Burk (C) 2009 Mobileer Inc * @see Synthesizer * @see ChannelIn diff --git a/src/com/jsyn/unitgen/Pan.java b/src/com/jsyn/unitgen/Pan.java index 329342a..bc90984 100644 --- a/src/com/jsyn/unitgen/Pan.java +++ b/src/com/jsyn/unitgen/Pan.java @@ -4,9 +4,9 @@ * 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. @@ -26,9 +26,9 @@ import com.jsyn.ports.UnitOutputPort; * is input, and output[1] is zero. When pan is 0, output[0] and output[1] are both input/2. When * pan is +1, output[0] is zero, and output[1] is input. * <P> - * + * * @author (C) 1997 Phil Burk, SoftSynth.com - * @see SelectUnit + * @see Select */ public class Pan extends UnitGenerator { public UnitInputPort input; diff --git a/src/com/jsyn/unitgen/SampleGrainFarm.java b/src/com/jsyn/unitgen/SampleGrainFarm.java index 93a694f..3f908d6 100644 --- a/src/com/jsyn/unitgen/SampleGrainFarm.java +++ b/src/com/jsyn/unitgen/SampleGrainFarm.java @@ -4,9 +4,9 @@ * 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. @@ -21,16 +21,18 @@ import com.jsyn.ports.UnitInputPort; /** * A GrainFarm that uses a FloatSample as source material. In this example we load a FloatSample for - * use as a source material. <code><pre> - synth.add( sampleGrainFarm = new SampleGrainFarm() ); + * use as a source material. + * + * <pre><code> + synth.add(sampleGrainFarm = new SampleGrainFarm()); // Load a sample that we want to "granulate" from a file. - sample = SampleLoader.loadFloatSample( sampleFile ); - sampleGrainFarm.setSample( sample ); + sample = SampleLoader.loadFloatSample(sampleFile); + sampleGrainFarm.setSample(sample); // Use a ramp to move smoothly within the file. - synth.add( ramp = new ContinuousRamp() ); - ramp.output.connect( sampleGrainFarm.position ); -</pre><code> - * + synth.add(ramp = new ContinuousRamp()); + ramp.output.connect(sampleGrainFarm.position); +</code></pre> + * * @author Phil Burk (C) 2011 Mobileer Inc */ public class SampleGrainFarm extends GrainFarm { diff --git a/src/com/jsyn/unitgen/Select.java b/src/com/jsyn/unitgen/Select.java index 14186a8..6d8792e 100644 --- a/src/com/jsyn/unitgen/Select.java +++ b/src/com/jsyn/unitgen/Select.java @@ -4,9 +4,9 @@ * 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. @@ -21,12 +21,11 @@ import com.jsyn.ports.UnitOutputPort; /** * SelectUnit unit. Select InputA or InputB based on value on Select port. - * - * <pre> - * output = ( select > 0.0 ) ? inputB : inputA; - * - * <pre> - * + * + *<pre> <code> + output = ( select > 0.0 ) ? inputB : inputA; +</code> </pre> + * * @author (C) 2004-2009 Phil Burk, SoftSynth.com */ diff --git a/src/com/jsyn/unitgen/UnitGenerator.java b/src/com/jsyn/unitgen/UnitGenerator.java index 6d71270..a9a7459 100644 --- a/src/com/jsyn/unitgen/UnitGenerator.java +++ b/src/com/jsyn/unitgen/UnitGenerator.java @@ -4,9 +4,9 @@ * 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. @@ -31,7 +31,7 @@ import com.softsynth.shared.time.TimeStamp; /** * Base class for all unit generators. - * + * * @author Phil Burk (C) 2009 Mobileer Inc */ public abstract class UnitGenerator { @@ -39,12 +39,12 @@ public abstract class UnitGenerator { public static final double FALSE = 0.0; public static final double TRUE = 1.0; protected SynthesisEngine synthesisEngine; - private LinkedHashMap<String, UnitPort> ports = new LinkedHashMap<String, UnitPort>(); + private final LinkedHashMap<String, UnitPort> ports = new LinkedHashMap<String, UnitPort>(); private Circuit circuit; private long lastFrameCount; private boolean enabled = true; private static int nextId; - private int id = nextId++; + private final int id = nextId++; private int frameRate; private double framePeriod; @@ -85,7 +85,7 @@ public abstract class UnitGenerator { /** * Perform essential synthesis function. - * + * * @param start offset into port buffers * @param limit limit offset into port buffers for loop */ @@ -213,9 +213,9 @@ public abstract class UnitGenerator { * executed. If not enabled then it will not execute and will not pull data from units that are * connected to its inputs. Disabling a unit at the output of a tree of units can be used to * turn off the entire tree, thus saving CPU cycles. - * + * * @param enabled - * @see UnitGate.setupAutoDisabled + * @see UnitGate#setupAutoDisable(UnitGenerator) * @see start */ public void setEnabled(boolean enabled) { @@ -232,7 +232,7 @@ public abstract class UnitGenerator { * inputs. Those units will then pull data their inputs until the entire chain is executed. If * units are connected in a circle then this will be detected and the infinite recursion will be * blocked. - * + * * @see setEnabled */ public void start() { @@ -245,7 +245,7 @@ public abstract class UnitGenerator { /** * Start a unit at the specified time. - * + * * @param time * @see start */ @@ -255,7 +255,7 @@ public abstract class UnitGenerator { /** * Start a unit at the specified time. - * + * * @param timeStamp * @see start */ @@ -269,7 +269,7 @@ public abstract class UnitGenerator { /** * Stop a unit at the specified time. - * + * * @param time * @see start */ diff --git a/src/com/jsyn/unitgen/VariableRateMonoReader.java b/src/com/jsyn/unitgen/VariableRateMonoReader.java index 3af660e..52b7f1e 100644 --- a/src/com/jsyn/unitgen/VariableRateMonoReader.java +++ b/src/com/jsyn/unitgen/VariableRateMonoReader.java @@ -4,9 +4,9 @@ * 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. @@ -23,11 +23,13 @@ import com.jsyn.ports.UnitOutputPort; /** * This reader can play any SequentialData and will interpolate between adjacent values. It can play - * both {@link SegmentedEnvelope envelopes} and {@link FloatSample samples}. <code><pre> + * both {@link SegmentedEnvelope envelopes} and {@link FloatSample samples}. + * + * <pre><code> // Queue an envelope to the dataQueue port. - ampEnv.dataQueue.queue( ampEnvelope ); -</pre></code> - * + ampEnv.dataQueue.queue(ampEnvelope); +</code></pre> + * * @author Phil Burk (C) 2009 Mobileer Inc * @see FloatSample * @see ShortSample diff --git a/src/com/jsyn/util/SampleLoader.java b/src/com/jsyn/util/SampleLoader.java index 611a7d6..170b4cb 100644 --- a/src/com/jsyn/util/SampleLoader.java +++ b/src/com/jsyn/util/SampleLoader.java @@ -4,9 +4,9 @@ * 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. @@ -30,14 +30,14 @@ import com.jsyn.util.soundfile.CustomSampleLoader; * such as unsigned 8-bit, uLaw, A-Law and MP3 are not support. If you need to load one of those * files try setJavaSoundPreferred(true). Or convert it to a supported format using Audacity or Sox * or some other sample file tool. Here is an example of loading a sample from a file. - * + * * <pre> * <code> * File sampleFile = new File("guitar.wav"); * FloatSample sample = SampleLoader.loadFloatSample( sampleFile ); - * </code> + * </code> * </pre> - * + * * @author Phil Burk (C) 2011 Mobileer Inc */ public class SampleLoader { @@ -46,7 +46,7 @@ public class SampleLoader { /** * Try to create an implementation of AudioSampleLoader. - * + * * @return A device supported on this platform. */ private static AudioSampleLoader createLoader() { @@ -97,8 +97,9 @@ public class SampleLoader { * If set true then the audio file parser from JavaSound will be used. Note that JavaSound * cannot load audio files containing floating point data. But it may be able to load some * compressed data formats such as uLaw. - * - * @note JavaSound is not supported on Android. + * + * Note: JavaSound is not supported on Android. + * * @param javaSoundPreferred */ public static void setJavaSoundPreferred(boolean javaSoundPreferred) { @@ -108,7 +109,7 @@ public class SampleLoader { /** * Decode 24 bit samples from a BigEndian byte array into a float array. The samples will be * normalized into the range -1.0 to +1.0. - * + * * @param audioBytes raw data from an audio file * @param offset first element of byte array * @param numBytes number of bytes to process diff --git a/src/com/softsynth/math/Polynomial.java b/src/com/softsynth/math/Polynomial.java index 8670e97..5f29f38 100644 --- a/src/com/softsynth/math/Polynomial.java +++ b/src/com/softsynth/math/Polynomial.java @@ -4,9 +4,9 @@ * 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. @@ -23,13 +23,13 @@ import java.util.Vector; * Implement polynomial using Vector as coefficient holder. Element index is power of X, value at a * given index is coefficient.<br> * <br> - * + * * @author Nick Didkovsky, (C) 1997 Phil Burk and Nick Didkovsky */ public class Polynomial { - private Vector terms; + private final Vector terms; class DoubleHolder { double value; @@ -118,14 +118,14 @@ public class Polynomial { return ((DoubleHolder) terms.elementAt(power)).get(); } - /** @ return number of terms in this polynomial */ + /** @return number of terms in this polynomial */ public int size() { return terms.size(); } /** * Add two polynomials together - * + * * @return new Polynomial that is the sum of p1 and p2 */ public static Polynomial plus(Polynomial p1, Polynomial p2) { @@ -138,7 +138,7 @@ public class Polynomial { /** * Subtract polynomial from another. (First arg - Second arg) - * + * * @return new Polynomial p1 - p2 */ public static Polynomial minus(Polynomial p1, Polynomial p2) { @@ -151,7 +151,7 @@ public class Polynomial { /** * Multiply two Polynomials - * + * * @return new Polynomial that is the product p1 * p2 */ @@ -167,7 +167,7 @@ public class Polynomial { /** * Multiply a Polynomial by a scaler - * + * * @return new Polynomial that is the product p1 * p2 */ diff --git a/src/com/softsynth/math/PrimeFactors.java b/src/com/softsynth/math/PrimeFactors.java index 5607951..06c0d55 100644 --- a/src/com/softsynth/math/PrimeFactors.java +++ b/src/com/softsynth/math/PrimeFactors.java @@ -4,9 +4,9 @@ * 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. @@ -21,7 +21,7 @@ import java.util.ArrayList; /** * Tool for factoring primes and prime ratios. This class contains a static array of primes * generated using the Sieve of Eratosthenes. - * + * * @author Phil Burk (C) 2011 Mobileer Inc */ public class PrimeFactors { @@ -170,13 +170,13 @@ public class PrimeFactors { /** * Get prime from table. - * - * @warning Do not exceed getPrimeCount()-1. - * @param i + * + * + * @param n Warning: Do not exceed getPrimeCount()-1. * @return Nth prime number, the 0th prime is 2 */ - public static int getPrime(int i) { - return primes[i]; + public static int getPrime(int n) { + return primes[n]; } /** diff --git a/src/com/softsynth/shared/time/TimeStamp.java b/src/com/softsynth/shared/time/TimeStamp.java index fd054d2..6d243ed 100644 --- a/src/com/softsynth/shared/time/TimeStamp.java +++ b/src/com/softsynth/shared/time/TimeStamp.java @@ -4,9 +4,9 @@ * 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. @@ -31,7 +31,7 @@ public class TimeStamp implements Comparable<TimeStamp> { } /** - * @return -1 if (this < t2), 0 if equal, or +1 + * @return -1 if (this < t2), 0 if equal, or +1 */ @Override public int compareTo(TimeStamp t2) { @@ -45,7 +45,7 @@ public class TimeStamp implements Comparable<TimeStamp> { /** * Create a new TimeStamp at a relative offset in seconds. - * + * * @param delta * @return earlier or later TimeStamp */ |