diff options
Diffstat (limited to 'src/classes/share/com/sun/j3d/audioengines/Sample.java')
-rw-r--r-- | src/classes/share/com/sun/j3d/audioengines/Sample.java | 480 |
1 files changed, 0 insertions, 480 deletions
diff --git a/src/classes/share/com/sun/j3d/audioengines/Sample.java b/src/classes/share/com/sun/j3d/audioengines/Sample.java deleted file mode 100644 index 3506dc8..0000000 --- a/src/classes/share/com/sun/j3d/audioengines/Sample.java +++ /dev/null @@ -1,480 +0,0 @@ -/* - * Copyright (c) 2007 Sun Microsystems, Inc. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * - Redistribution of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistribution in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in - * the documentation and/or other materials provided with the - * distribution. - * - * Neither the name of Sun Microsystems, Inc. or the names of - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. - * - * This software is provided "AS IS," without a warranty of any - * kind. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND - * WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY - * EXCLUDED. SUN MICROSYSTEMS, INC. ("SUN") AND ITS LICENSORS SHALL - * NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF - * USING, MODIFYING OR DISTRIBUTING THIS SOFTWARE OR ITS - * DERIVATIVES. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR - * ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, - * CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND - * REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR - * INABILITY TO USE THIS SOFTWARE, EVEN IF SUN HAS BEEN ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGES. - * - * You acknowledge that this software is not designed, licensed or - * intended for use in the design, construction, operation or - * maintenance of any nuclear facility. - * - */ - -package com.sun.j3d.audioengines; - -import javax.media.j3d.MediaContainer; -import javax.media.j3d.Sound; -import javax.media.j3d.Transform3D; -import javax.media.j3d.View; -import javax.vecmath.Point3d; -import javax.vecmath.Point3f; -import javax.vecmath.Vector3d; -import javax.vecmath.Vector3f; - -/** - * The Sample class defines the data and methods associated with a sound - * sample played through the AudioDevice. - * This contains all the data fields for non-spatialized and spatialized - * (positional and directional) sound samples. - */ -public class Sample { - - // Debug print flags and methods - static final protected boolean debugFlag = false; - static final protected boolean internalErrors = false; - - protected void debugPrint(String message) { - if (debugFlag) - System.out.println(message); - } - - protected void debugPrintln(String message) { - if (debugFlag) - System.out.println(message); - } - - /** - * Null Sound identifier denotes sound is not created or initialized - */ - public static final int NULL_SAMPLE = -1; - - /** - * sound data associated with sound source - */ - protected MediaContainer soundData = null; - - /** - * sound data associated with sound source - */ - protected int soundType = -1; - - /** - * Overall Scale Factor applied to sound gain. - */ - protected float gain = 1.0f; // Valid values are >= 0.0. - - /** - * Overall Scale Factor applied to sound. - * @since Java 3D 1.3 - */ - protected float rateScaleFactor = 1.0f; // Valid values are >= 0.0. - - /** - * Number of times sound is looped/repeated during play - */ - protected int loopCount = 0; // Range from 0 to POSITIVE_INFINITY(-1) - - - /* - * Duration of sample - * This should match the Sound node constant of same name - */ - public static final int DURATION_UNKNOWN = -1; - protected long duration = DURATION_UNKNOWN; - - protected int numberOfChannels = 0; - protected boolean mute = false; // denotes if sample is muted - // (playing with zero gain) - - /* - * - * Fields associated with positional sound samples - * - */ - /* - * Local to Vworld transform - */ - protected Transform3D vworldXfrm = new Transform3D(); - protected boolean vwXfrmFlag = false; - - /* - * Origin of Sound source in Listener's space. - */ - protected Point3f position = new Point3f(0.0f, 0.0f, 0.0f); - - /* - * Pairs of distances and gain scale factors that define piecewise linear - * gain attenuation between each pair. - */ - protected double[] attenuationDistance = null; - protected float[] attenuationGain = null;; - - /** - * dirty flags denoting what has changed since last rendering - */ - protected int dirtyFlags = 0xFFFF; - - /* - * - * Direction sample fields - * - */ - /** - * The Cone Sound's direction vector. This is the cone axis. - */ - protected Vector3f direction = new Vector3f(0.0f, 0.0f, 1.0f); - - /** - * Pairs of distances and gain scale factors that define piecewise linear - * gain BACK attenuation between each pair. - * These are used for defining elliptical attenuation regions. - */ - protected double[] backAttenuationDistance = null; - protected float[] backAttenuationGain = null; - - /** - * Directional Sound's gain can be attenuated based on the listener's - * location off-angle from the source source direction. - * This can be set by three parameters: - * angular distance in radians - * gain scale factor - * filtering (currently the only filtering supported is lowpass) - */ - protected double[] angularDistance = {0.0, (Math.PI * 0.5)}; - protected float[] angularGain = {1.0f, 0.0f}; - - /** - * Distance Filter - * Each sound source is attenuated by a filter based on it's distance - * from the listener. - * For now the only supported filterType will be LOW_PASS frequency - * cutoff. - * At some time full FIR filtering will be supported. - */ - public static final int NO_FILTERING = -1; - public static final int LOW_PASS = 1; - - protected int angularFilterType = NO_FILTERING; - protected float[] angularFilterCutoff = {Sound.NO_FILTER, Sound.NO_FILTER}; - - /* - * Obstruction and Occlusion parameters - * For now the only type of filtering supported is a low-pass filter - * defined by a frequency cutoff value. - * @since Java 3D 1.3 - */ - protected float obstructionGain = 1.0f; // scale factor - protected int obstructionFilterType = NO_FILTERING; - protected float obstructionFilterCutoff = Sound.NO_FILTER; - protected float occlusionGain = 1.0f; // scale factor - protected int occlusionFilterType = NO_FILTERING; - protected float occlusionFilterCutoff = Sound.NO_FILTER; - - /* - * Construct a new audio device Sample object - */ - public Sample() { - if (debugFlag) - debugPrintln("Sample constructor"); - } - - public long getDuration() { - return 0; - } - - public long getStartTime() { - return 0; - } - - public int getNumberOfChannelsUsed() { - return 0; - } - - public void setDirtyFlags(int flags) { - dirtyFlags = flags; - } - - public int getDirtyFlags() { - return dirtyFlags; - } - - public void setSoundType(int type) { - soundType = type; - } - - public int getSoundType() { - return soundType; - } - - public void setSoundData(MediaContainer ref) { - soundData = ref; - } - - public MediaContainer getSoundData() { - return soundData; - } - - public void setMuteFlag(boolean flag) { - mute = flag; - } - - public boolean getMuteFlag() { - return mute; - } - - public void setVWrldXfrmFlag(boolean flag) { - // this flag is ONLY true if the VirtualWorld Transform is ever set - vwXfrmFlag = flag; - } - - public boolean getVWrldXfrmFlag() { - return vwXfrmFlag; - } - - public void setGain(float scaleFactor) { - gain = scaleFactor; - } - - public float getGain() { - return gain; - } - - public void setLoopCount(int count) { - loopCount = count; - } - - public int getLoopCount() { - return loopCount; - } - - - public void setPosition(Point3d position) { - this.position.set(position); - return; - } - - // TODO: no get method for Position - - - public void setDistanceGain( - double[] frontDistance, float[] frontAttenuationScaleFactor, - double[] backDistance, float[] backAttenuationScaleFactor) { - if (frontDistance != null) { - int size = frontDistance.length; - attenuationDistance = new double[size]; - attenuationGain = new float[size]; - for (int i=0; i<size; i++) { - attenuationDistance[i] = frontDistance[i]; - attenuationGain[i] = frontAttenuationScaleFactor[i]; - } - } - else { - attenuationDistance = null; - attenuationGain = null; - } - if (backDistance != null && frontDistance != null) { - int size = backDistance.length; - backAttenuationDistance = new double[size]; - backAttenuationGain = new float[size]; - for (int i=0; i<size; i++) { - backAttenuationDistance[i] = backDistance[i]; - backAttenuationGain[i] = backAttenuationScaleFactor[i]; - } - } - else { - backAttenuationDistance = null; - backAttenuationGain = null; - } - return; - } - - // TODO: no get method for Back Attenuation - - - public void setDirection(Vector3d direction) { - this.direction.set(direction); - return; - } - - // TODO: no get method for Direction - - - public void setAngularAttenuation(int filterType, double[] angle, - float[] attenuationScaleFactor, float[] filterCutoff) { - if (angle != null) { - int size = angle.length; - angularDistance = new double[size]; - angularGain = new float[size]; - if (filterType != NO_FILTERING && filterCutoff != null) - angularFilterCutoff = new float[size]; - else - angularFilterCutoff = null; - for (int i=0; i<size; i++) { - angularDistance[i] = angle[i]; - angularGain[i] = attenuationScaleFactor[i]; - if (filterType != NO_FILTERING) - angularFilterCutoff[i] = filterCutoff[i]; - } - angularFilterType = filterType; - } - else { - angularDistance = null; - angularGain = null; - angularFilterCutoff = null; - angularFilterType = NO_FILTERING; - } - } - - // TODO: no get method for Angular Attenuation - - - /* - * Set Rate ScaleFactor - * @since Java 3D 1.3 - */ - public void setRateScaleFactor(float scaleFactor) { - rateScaleFactor = scaleFactor; - } - - /* - * Get Rate ScaleFactor - * @since Java 3D 1.3 - */ - public float getRateScaleFactor() { - return rateScaleFactor; - } - - - /* - * Set Obstruction Gain - * @since Java 3D 1.3 - */ - public void setObstructionGain(float scaleFactor) { - obstructionGain = scaleFactor; - } - - /* - * Get Obstruction Gain - * @since Java 3D 1.3 - */ - public float getObstructionGain() { - return obstructionGain; - } - - /* - * Set Obstruction Filter Cutoff Frequency - * @since Java 3D 1.3 - */ - public void setObstructionFilter(float cutoffFrequency) { - obstructionFilterType = LOW_PASS; - obstructionFilterCutoff = cutoffFrequency; - } - - // TODO: no get method for Obstruction Filtering - - - /* - * Set Occlusion Gain - * @since Java 3D 1.3 - */ - public void setOcclusionGain(float scaleFactor) { - occlusionGain = scaleFactor; - } - - /* - * Get Occlusion Gain - * @since Java 3D 1.3 - */ - public float getOcclusionGain() { - return occlusionGain; - } - - /* - * Set Occlusion Filter Cutoff Frequency - * @since Java 3D 1.3 - */ - public void setOcclusionFilter(float cutoffFrequency) { - occlusionFilterType = LOW_PASS; - occlusionFilterCutoff = cutoffFrequency; - } - - // TODO: no get method for Occlusion Filtering - - - /** - * Clears/re-initialize fields associated with sample data - * for this sound, - * and frees any device specific data associated with this sample. - */ - public void clear() { - if (debugFlag) - debugPrintln("Sample.clear() entered"); - soundData = (MediaContainer)null; - soundType = NULL_SAMPLE; - gain = 1.0f; - loopCount = 0; - duration = DURATION_UNKNOWN; - numberOfChannels = 0; - vworldXfrm.setIdentity(); - vwXfrmFlag = false; - position.set(0.0f, 0.0f, 0.0f); - attenuationDistance = null; - attenuationGain = null; - direction.set(0.0f, 0.0f, 1.0f); - backAttenuationDistance = null; - backAttenuationGain = null; - if (angularDistance != null) { - angularDistance[0] = 0.0f; - angularDistance[1] = (float)(Math.PI) * 0.5f; - } - if (angularGain != null) { - angularGain[0] = 1.0f; - angularGain[1] = 0.0f; - } - angularFilterType = NO_FILTERING; - if (angularFilterCutoff != null) { - angularFilterCutoff[0] = Sound.NO_FILTER; - angularFilterCutoff[1] = Sound.NO_FILTER; - } - obstructionGain = 1.0f; - obstructionFilterType = NO_FILTERING; - obstructionFilterCutoff = Sound.NO_FILTER; - occlusionGain = 1.0f; - occlusionFilterType = NO_FILTERING; - occlusionFilterCutoff = Sound.NO_FILTER; - } - - /* - * Render - */ - public void render(int dirtyFlags, View view, AuralParameters attribs) { - // meant to be overridden - } -} |