javax.media.j3d
Class Sound

java.lang.Object
  |
  +--javax.media.j3d.SceneGraphObject
        |
        +--javax.media.j3d.Node
              |
              +--javax.media.j3d.Leaf
                    |
                    +--javax.media.j3d.Sound
Direct Known Subclasses:
BackgroundSound, PointSound

public abstract class Sound
extends Leaf

Sound node is an abstract class that defines the properties common to all sound sources. A scene graph can contain multiple sounds. Associated with each sound source are: a reference to sound data, an amplitude scale factor, a release flag denoting that the sound associated with this node is to play to end when it is disabled, the number of times sound is to be repeated, the sound's state (on or off), a scheduling region, and flag denoting if the sound is to continue playing "silently" even while it is inactive. Whenever the listener is within a sound node's scheduling bounds this sound is potentially audible.

Sound Data

Initial Gain

Loop

Release Flag

Continuous Flag

Enable Sound

Scheduling Bounds

Scheduling Bounding Leaf

Prioritize Sound

Duration

Number of Channels used on Audio Device to Play Sound

Preparing a Sound to be Played Sound data associated with a Sound node, either during construction (when the MediaContainer is passed into the constructor as a parameter) or by calling setSoundData(), it can be prepared to begin playing only after the following conditions are satisfied: 1) the Sound node has non-null sound data associated with it; 2) the Sound node is live; 3) there is an active View in the Universe; and 4) there is an initialized AudioDevice associated with the PhysicalEnvironment. Depending on the type of MediaContainer the sound data is and on the implementation of the AudioDevice used, sound data preparation could consist of opening, attaching, loading or copying into memory the associated sound data. The query method, isReady() returns true when the sound is fully preprocessed so that it is playable (audibly if active, silently if not active).

Playing Status


Field Summary
static int ALLOW_CHANNELS_USED_READ
          Specifies that this node allows access to its number of channels used by this sound.
static int ALLOW_CONT_PLAY_READ
          Specifies that this node allows access to its object's continuous play information.
static int ALLOW_CONT_PLAY_WRITE
          Specifies that this node allows writing to its object's continuous play information.
static int ALLOW_DURATION_READ
          Specifies that this node allows access to its object's sound duration information.
static int ALLOW_ENABLE_READ
          Specifies that this node allows access to its object's sound on information.
static int ALLOW_ENABLE_WRITE
          Specifies that this node allows writing to its object's sound on information.
static int ALLOW_INITIAL_GAIN_READ
          Specifies that this node allows access to its object's initial gain information.
static int ALLOW_INITIAL_GAIN_WRITE
          Specifies that this node allows writing to its object's initial gain information.
static int ALLOW_IS_PLAYING_READ
          Specifies that this node allows access to its object's sound audibly playing or playing silently status.
static int ALLOW_IS_READY_READ
          Specifies that this node allows access to its object's sound status denoting if it is ready to be played 'immediately'.
static int ALLOW_LOOP_READ
          Specifies that this node allows access to its object's loop information.
static int ALLOW_LOOP_WRITE
          Specifies that this node allows writing to its object's loop information.
static int ALLOW_PRIORITY_READ
          Specifies that this node allows read access to its priority order value.
static int ALLOW_PRIORITY_WRITE
          Specifies that this node allows write access to its priority order value.
static int ALLOW_RELEASE_READ
          Specifies that this node allows access to its object's release flag information.
static int ALLOW_RELEASE_WRITE
          Specifies that this node allows writing to its object's release flag information.
static int ALLOW_SCHEDULING_BOUNDS_READ
          Specifies that this node allows read access to its scheduling bounds information.
static int ALLOW_SCHEDULING_BOUNDS_WRITE
          Specifies that this node allows write access to its scheduling bounds information.
static int ALLOW_SOUND_DATA_READ
          Specifies that this node allows access to its object's sound data information.
static int ALLOW_SOUND_DATA_WRITE
          Specifies that this node allows writing to its object's sound data information.
static int DURATION_UNKNOWN
          Denotes that the sound's duration could not be calculated.
static int INFINITE_LOOPS
          When used as a loop count sound will loop an infinite number of time until explicitly stopped (setEnabled(false)).
static float NO_FILTER
          Denotes that there is no filter value associated with object's distance or angular attenuation array.
 
Fields inherited from class javax.media.j3d.Node
ALLOW_AUTO_COMPUTE_BOUNDS_READ, ALLOW_AUTO_COMPUTE_BOUNDS_WRITE, ALLOW_BOUNDS_READ, ALLOW_BOUNDS_WRITE, ALLOW_COLLIDABLE_READ, ALLOW_COLLIDABLE_WRITE, ALLOW_LOCAL_TO_VWORLD_READ, ALLOW_PICKABLE_READ, ALLOW_PICKABLE_WRITE, ENABLE_COLLISION_REPORTING, ENABLE_PICK_REPORTING
 
Constructor Summary
Sound()
          Constructs and initializes a new Sound node using default parameters.
Sound(MediaContainer soundData, float initialGain)
          Constructs and initializes a new Sound node object using the provided data and gain parameter values, and defaults for all other fields.
Sound(MediaContainer soundData, float initialGain, int loopCount, boolean release, boolean continuous, boolean enable, Bounds region, float priority)
          Constructs and initializes a new Sound node using provided parameter values.
 
Method Summary
 boolean getContinuousEnable()
          Retrieves sound's continuous play flag.
 long getDuration()
          Get the Sound's duration
 boolean getEnable()
          Retrieves sound's enabled flag.
 float getInitialGain()
          Get the overall gain applied to the sound data associated with source.
 int getLoop()
          Retrieves loop count for this sound
 int getNumberOfChannelsUsed()
          Retrieves number of channels that are being used to render this sound on the audio device associated with the Virtual Universe's primary view.
 float getPriority()
          Retrieves sound's priority value.
 boolean getReleaseEnable()
          Retrieves release flag for sound associated with sound.
 BoundingLeaf getSchedulingBoundingLeaf()
          Retrieves the Sound node's scheduling bounding leaf.
 Bounds getSchedulingBounds()
          Retrieves the Sound node's scheduling bounds.
 MediaContainer getSoundData()
          Retrieves description/data associated with this sound source.
 boolean isPlaying()
          Retrieves sound's play status.
 boolean isPlayingSilently()
          Retrieves sound's silent status.
 boolean isReady()
          Retrieves sound's 'ready' status.
 void setContinuousEnable(boolean state)
          Enables or disables continuous play flag.
 void setEnable(boolean state)
          Enable or disable sound.
 void setInitialGain(float amplitude)
          Set the overall gain scale factor applied to data associated with this source to increase or decrease its overall amplitude.
 void setLoop(int loopCount)
          Sets a sound's loop count.
 void setPriority(float priority)
          Set sound's priority value.
 void setReleaseEnable(boolean state)
          Enables or disables the release flag for the sound associated with this sound.
 void setSchedulingBoundingLeaf(BoundingLeaf region)
          Set the Sound's scheduling region to the specified bounding leaf.
 void setSchedulingBounds(Bounds region)
          Set the Sound's scheduling region to the specified bounds.
 void setSoundData(MediaContainer soundData)
          Sets fields that define the sound source data of this node.
 void updateNodeReferences(NodeReferenceTable referenceTable)
          Callback used to allow a node to check if any scene graph objects referenced by that node have been duplicated via a call to cloneTree.
 
Methods inherited from class javax.media.j3d.Node
cloneNode, cloneTree, cloneTree, cloneTree, cloneTree, cloneTree, cloneTree, duplicateNode, getBounds, getBoundsAutoCompute, getCollidable, getLocalToVworld, getLocalToVworld, getParent, getPickable, setBounds, setBoundsAutoCompute, setCollidable, setPickable
 
Methods inherited from class javax.media.j3d.SceneGraphObject
clearCapability, duplicateSceneGraphObject, getCapability, getUserData, isCompiled, isLive, setCapability, setUserData
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

ALLOW_SOUND_DATA_READ

public static final int ALLOW_SOUND_DATA_READ
Specifies that this node allows access to its object's sound data information.

ALLOW_SOUND_DATA_WRITE

public static final int ALLOW_SOUND_DATA_WRITE
Specifies that this node allows writing to its object's sound data information.

ALLOW_INITIAL_GAIN_READ

public static final int ALLOW_INITIAL_GAIN_READ
Specifies that this node allows access to its object's initial gain information.

ALLOW_INITIAL_GAIN_WRITE

public static final int ALLOW_INITIAL_GAIN_WRITE
Specifies that this node allows writing to its object's initial gain information.

ALLOW_LOOP_READ

public static final int ALLOW_LOOP_READ
Specifies that this node allows access to its object's loop information.

ALLOW_LOOP_WRITE

public static final int ALLOW_LOOP_WRITE
Specifies that this node allows writing to its object's loop information.

ALLOW_RELEASE_READ

public static final int ALLOW_RELEASE_READ
Specifies that this node allows access to its object's release flag information.

ALLOW_RELEASE_WRITE

public static final int ALLOW_RELEASE_WRITE
Specifies that this node allows writing to its object's release flag information.

ALLOW_CONT_PLAY_READ

public static final int ALLOW_CONT_PLAY_READ
Specifies that this node allows access to its object's continuous play information.

ALLOW_CONT_PLAY_WRITE

public static final int ALLOW_CONT_PLAY_WRITE
Specifies that this node allows writing to its object's continuous play information.

ALLOW_ENABLE_READ

public static final int ALLOW_ENABLE_READ
Specifies that this node allows access to its object's sound on information.

ALLOW_ENABLE_WRITE

public static final int ALLOW_ENABLE_WRITE
Specifies that this node allows writing to its object's sound on information.

ALLOW_SCHEDULING_BOUNDS_READ

public static final int ALLOW_SCHEDULING_BOUNDS_READ
Specifies that this node allows read access to its scheduling bounds information.

ALLOW_SCHEDULING_BOUNDS_WRITE

public static final int ALLOW_SCHEDULING_BOUNDS_WRITE
Specifies that this node allows write access to its scheduling bounds information.

ALLOW_PRIORITY_READ

public static final int ALLOW_PRIORITY_READ
Specifies that this node allows read access to its priority order value.

ALLOW_PRIORITY_WRITE

public static final int ALLOW_PRIORITY_WRITE
Specifies that this node allows write access to its priority order value.

ALLOW_DURATION_READ

public static final int ALLOW_DURATION_READ
Specifies that this node allows access to its object's sound duration information.

ALLOW_IS_READY_READ

public static final int ALLOW_IS_READY_READ
Specifies that this node allows access to its object's sound status denoting if it is ready to be played 'immediately'.

ALLOW_IS_PLAYING_READ

public static final int ALLOW_IS_PLAYING_READ
Specifies that this node allows access to its object's sound audibly playing or playing silently status.

ALLOW_CHANNELS_USED_READ

public static final int ALLOW_CHANNELS_USED_READ
Specifies that this node allows access to its number of channels used by this sound.

NO_FILTER

public static final float NO_FILTER
Denotes that there is no filter value associated with object's distance or angular attenuation array.

DURATION_UNKNOWN

public static final int DURATION_UNKNOWN
Denotes that the sound's duration could not be calculated. A fall back for getDuration of a non-cached sound.

INFINITE_LOOPS

public static final int INFINITE_LOOPS
When used as a loop count sound will loop an infinite number of time until explicitly stopped (setEnabled(false)).
Constructor Detail

Sound

public Sound()
Constructs and initializes a new Sound node using default parameters. The following defaults values are used:

Sound

public Sound(MediaContainer soundData,
             float initialGain)
Constructs and initializes a new Sound node object using the provided data and gain parameter values, and defaults for all other fields. This constructor implicitly loads the sound data associated with this node if the implementation uses sound caching.
Parameters:
soundData - description of JMF source data used by this sound source
initialGain - overall amplitude scale factor applied to sound source

Sound

public Sound(MediaContainer soundData,
             float initialGain,
             int loopCount,
             boolean release,
             boolean continuous,
             boolean enable,
             Bounds region,
             float priority)
Constructs and initializes a new Sound node using provided parameter values.
Parameters:
soundData - description of JMF source data used by this sound source
initialGain - overall amplitude scale factor applied to sound source
loopCount - number of times sound is looped when played
release - flag specifying whether the sound is to be played to end when stopped
continuous - flag specifying whether the sound silently plays when disabled
enable - flag specifying whether the sound is enabled
region - scheduling bounds
priority - defines playback priority if too many sounds started
Method Detail

setSoundData

public void setSoundData(MediaContainer soundData)
Sets fields that define the sound source data of this node.
Parameters:
soundData - description of JMF source data used by this sound source
Throws:
CapabilityNotSetException - if appropriate capability is not set and this object is part of live or compiled scene graph

getSoundData

public MediaContainer getSoundData()
Retrieves description/data associated with this sound source.
Parameters:
soundData - description of JMF source data used by this sound source
Throws:
CapabilityNotSetException - if appropriate capability is not set and this object is part of live or compiled scene graph

setInitialGain

public void setInitialGain(float amplitude)
Set the overall gain scale factor applied to data associated with this source to increase or decrease its overall amplitude.
Parameters:
amplitude - (gain) scale factor
Throws:
CapabilityNotSetException - if appropriate capability is not set and this object is part of live or compiled scene graph

getInitialGain

public float getInitialGain()
Get the overall gain applied to the sound data associated with source.
Returns:
overall gain scale factor applied to sound source data.
Throws:
CapabilityNotSetException - if appropriate capability is not set and this object is part of live or compiled scene graph

setLoop

public void setLoop(int loopCount)
Sets a sound's loop count.
Parameters:
loopCount - number of times sound is looped during play
Throws:
CapabilityNotSetException - if appropriate capability is not set and this object is part of live or compiled scene graph

getLoop

public int getLoop()
Retrieves loop count for this sound
Returns:
loop count
Throws:
CapabilityNotSetException - if appropriate capability is not set and this object is part of live or compiled scene graph

setReleaseEnable

public void setReleaseEnable(boolean state)
Enables or disables the release flag for the sound associated with this sound.
Parameters:
state - release flag
Throws:
CapabilityNotSetException - if appropriate capability is not set and this object is part of live or compiled scene graph

getReleaseEnable

public boolean getReleaseEnable()
Retrieves release flag for sound associated with sound.
Returns:
sound's release flag
Throws:
CapabilityNotSetException - if appropriate capability is not set and this object is part of live or compiled scene graph

setContinuousEnable

public void setContinuousEnable(boolean state)
Enables or disables continuous play flag.
Parameters:
state - denotes if deactivated sound silently continues playing
Throws:
CapabilityNotSetException - if appropriate capability is not set and this object is part of live or compiled scene graph

getContinuousEnable

public boolean getContinuousEnable()
Retrieves sound's continuous play flag.
Returns:
flag denoting if deactivated sound silently continues playing
Throws:
CapabilityNotSetException - if appropriate capability is not set and this object is part of live or compiled scene graph

setEnable

public void setEnable(boolean state)
Enable or disable sound.
Parameters:
state - enable (on/off) flag denotes if active sound is heard
Throws:
CapabilityNotSetException - if appropriate capability is not set and this object is part of live or compiled scene graph

getEnable

public boolean getEnable()
Retrieves sound's enabled flag.
Returns:
sound enabled flag
Throws:
CapabilityNotSetException - if appropriate capability is not set and this object is part of live or compiled scene graph

setSchedulingBounds

public void setSchedulingBounds(Bounds region)
Set the Sound's scheduling region to the specified bounds. This is used when the scheduling bounding leaf is set to null.
Parameters:
region - the bounds that contains the Sound's new scheduling region.
Throws:
CapabilityNotSetException - if appropriate capability is not set and this object is part of live or compiled scene graph

getSchedulingBounds

public Bounds getSchedulingBounds()
Retrieves the Sound node's scheduling bounds.
Returns:
this Sound's scheduling bounds information
Throws:
CapabilityNotSetException - if appropriate capability is not set and this object is part of live or compiled scene graph

setSchedulingBoundingLeaf

public void setSchedulingBoundingLeaf(BoundingLeaf region)
Set the Sound's scheduling region to the specified bounding leaf. When set to a value other than null, this overrides the scheduling bounds object.
Parameters:
region - the bounding leaf node used to specify the Sound node's new scheduling region.
Throws:
CapabilityNotSetException - if appropriate capability is not set and this object is part of live or compiled scene graph

getSchedulingBoundingLeaf

public BoundingLeaf getSchedulingBoundingLeaf()
Retrieves the Sound node's scheduling bounding leaf.
Returns:
this Sound's scheduling bounding leaf information
Throws:
CapabilityNotSetException - if appropriate capability is not set and this object is part of live or compiled scene graph

setPriority

public void setPriority(float priority)
Set sound's priority value.
Parameters:
priority - value used to order sound's importance for playback.
Throws:
CapabilityNotSetException - if appropriate capability is not set and this object is part of live or compiled scene graph

getPriority

public float getPriority()
Retrieves sound's priority value.
Returns:
sound priority value
Throws:
CapabilityNotSetException - if appropriate capability is not set and this object is part of live or compiled scene graph

getDuration

public long getDuration()
Get the Sound's duration
Returns:
this Sound's duration in milliseconds including repeated loops
Throws:
CapabilityNotSetException - if appropriate capability is not set and this object is part of live or compiled scene graph

isReady

public boolean isReady()
Retrieves sound's 'ready' status. If this sound is fully prepared to begin playing (audibly or silently) on all initiallized audio devices then this method returns true.
Returns:
flag denoting if sound is immediate playable or not
Throws:
CapabilityNotSetException - if appropriate capability is not set and this object is part of live or compiled scene graph

isPlaying

public boolean isPlaying()
Retrieves sound's play status. If this sound is audibly playing on any initiallized audio device then this method returns true.
Returns:
flag denoting if sound is playing (potentially audible) or not
Throws:
CapabilityNotSetException - if appropriate capability is not set and this object is part of live or compiled scene graph

isPlayingSilently

public boolean isPlayingSilently()
Retrieves sound's silent status. If this sound is silently playing on any initiallized audio device then this method returns true.
Returns:
flag denoting if sound is silently playing (enabled but not active)
Throws:
CapabilityNotSetException - if appropriate capability is not set and this object is part of live or compiled scene graph

getNumberOfChannelsUsed

public int getNumberOfChannelsUsed()
Retrieves number of channels that are being used to render this sound on the audio device associated with the Virtual Universe's primary view.
Returns:
number of channels used by sound; returns 0 if not playing
Throws:
CapabilityNotSetException - if appropriate capability is not set and this object is part of live or compiled scene graph

updateNodeReferences

public void updateNodeReferences(NodeReferenceTable referenceTable)
Callback used to allow a node to check if any scene graph objects referenced by that node have been duplicated via a call to cloneTree. This method is called by cloneTree after all nodes in the sub-graph have been duplicated. The cloned Leaf node's method will be called and the Leaf node can then look up any object references by using the getNewObjectReference method found in the NodeReferenceTable object. If a match is found, a reference to the corresponding object in the newly cloned sub-graph is returned. If no corresponding reference is found, either a DanglingReferenceException is thrown or a reference to the original object is returned depending on the value of the allowDanglingReferences parameter passed in the cloneTree call.

NOTE: Applications should not call this method directly. It should only be called by the cloneTree method.

Overrides:
updateNodeReferences in class SceneGraphObject
Parameters:
referenceTable - a NodeReferenceTableObject that contains the getNewObjectReference method needed to search for new object instances.
See Also:
NodeReferenceTable, Node.cloneTree(), DanglingReferenceException