# Class BackgroundSound

java.lang.Object
javax.media.j3d.SceneGraphObject
javax.media.j3d.Node
javax.media.j3d.Leaf
javax.media.j3d.Sound
javax.media.j3d.BackgroundSound

public class BackgroundSound extends Sound
A BackgroundSound node defines an unattenuated, nonspatialized sound source that has no position or direction. It has the same attributes as a Sound node. This type of sound is simply added to the sound mix without modification and is useful for playing a mono or stereo music track, or an ambient sound effect. Unlike a Background (visual) node, more than one BackgroundSound node can be simultaneously enabled and active.

## Field Summary

### Fields inherited from class Sound

`ALLOW_CHANNELS_USED_READ, ALLOW_CONT_PLAY_READ, ALLOW_CONT_PLAY_WRITE, ALLOW_DURATION_READ, ALLOW_ENABLE_READ, ALLOW_ENABLE_WRITE, ALLOW_INITIAL_GAIN_READ, ALLOW_INITIAL_GAIN_WRITE, ALLOW_IS_PLAYING_READ, ALLOW_IS_READY_READ, ALLOW_LOOP_READ, ALLOW_LOOP_WRITE, ALLOW_MUTE_READ, ALLOW_MUTE_WRITE, ALLOW_PAUSE_READ, ALLOW_PAUSE_WRITE, ALLOW_PRIORITY_READ, ALLOW_PRIORITY_WRITE, ALLOW_RATE_SCALE_FACTOR_READ, ALLOW_RATE_SCALE_FACTOR_WRITE, ALLOW_RELEASE_READ, ALLOW_RELEASE_WRITE, ALLOW_SCHEDULING_BOUNDS_READ, ALLOW_SCHEDULING_BOUNDS_WRITE, ALLOW_SOUND_DATA_READ, ALLOW_SOUND_DATA_WRITE, DURATION_UNKNOWN, INFINITE_LOOPS, NO_FILTER`

### Fields inherited from class 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_LOCALE_READ, ALLOW_PARENT_READ, ALLOW_PICKABLE_READ, ALLOW_PICKABLE_WRITE, ENABLE_COLLISION_REPORTING, ENABLE_PICK_REPORTING`

## Constructor Summary

Constructors
Constructor
Description
`BackgroundSound()`
Constructs a new BackgroundSound node using the default parameters for Sound nodes.
`BackgroundSound(MediaContainer soundData, float initialGain)`
Constructs a BackgroundSound node object using only the provided parameter values for sound data and sample gain.
`BackgroundSound(MediaContainer soundData, float initialGain, int loopCount, boolean release, boolean continuous, boolean enable, Bounds region, float priority)`
Constructs a BackgroundSound object accepting all the parameters associated with a Sound node.

## Method Summary

Modifier and Type
Method
Description
`Node`
`cloneNode(boolean forceDuplicate)`
Creates a new instance of the node.
`void`
`duplicateNode(Node originalNode, boolean forceDuplicate)`
Copies all node information from `originalNode` into the current node.

### Methods inherited from class Sound

`getContinuousEnable, getDuration, getEnable, getInitialGain, getLoop, getMute, getNumberOfChannelsUsed, getNumberOfChannelsUsed, getPause, getPriority, getRateScaleFactor, getReleaseEnable, getSchedulingBoundingLeaf, getSchedulingBounds, getSoundData, isPlaying, isPlaying, isPlayingSilently, isPlayingSilently, isReady, isReady, setContinuousEnable, setEnable, setInitialGain, setLoop, setMute, setPause, setPriority, setRateScaleFactor, setReleaseEnable, setSchedulingBoundingLeaf, setSchedulingBounds, setSoundData, updateNodeReferences`

### Methods inherited from class Node

`cloneTree, cloneTree, cloneTree, cloneTree, cloneTree, cloneTree, getBounds, getBoundsAutoCompute, getCollidable, getLocale, getLocalToVworld, getLocalToVworld, getParent, getPickable, setBounds, setBoundsAutoCompute, setCollidable, setPickable`

### Methods inherited from class SceneGraphObject

`clearCapability, clearCapabilityIsFrequent, duplicateSceneGraphObject, getCapability, getCapabilityIsFrequent, getName, getUserData, isCompiled, isLive, setCapability, setCapabilityIsFrequent, setName, setUserData, toString`

### Methods inherited from class Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

## Constructor Details

### BackgroundSound

public BackgroundSound()
Constructs a new BackgroundSound node using the default parameters for Sound nodes.

### BackgroundSound

public BackgroundSound(MediaContainer soundData, float initialGain)
Constructs a BackgroundSound node object using only the provided parameter values for sound data and sample gain. The remaining fields are set to the default values for a Sound node.

Parameters:
  `soundData` - sound data associated with this sound source node
  `initialGain` - amplitude scale factor applied to sound source

### BackgroundSound

public BackgroundSound(MediaContainer soundData, float initialGain, int loopCount, boolean release, boolean continuous, boolean enable, Bounds region, float priority)
Constructs a BackgroundSound object accepting all the parameters associated with a Sound node.

Parameters:
  `soundData` - sound data associated with this sound source node
  `initialGain` - amplitude scale factor applied to sound source
  `loopCount` - number of times loop is looped
  `release` - flag denoting playing sound data to end
  `continuous` - denotes that sound silently plays when disabled
  `enable` - sound switched on/off
  `region` - scheduling bounds
  `priority` - playback ranking value

## Method Details

### cloneNode

public Node cloneNode(boolean forceDuplicate)
Creates a new instance of the node. This routine is called by `cloneTree` to duplicate the current node.

Overrides:
  `cloneNode` in class `Node`
Parameters:
  `forceDuplicate` - when set to `true`, causes the `duplicateOnCloneTree` flag to be ignored. When `false`, the value of each node's `duplicateOnCloneTree` variable determines whether NodeComponent data is duplicated or copied.
See Also:
  - `Node.cloneTree()`
  - `Node.cloneNode(boolean)`
  - `Node.duplicateNode(Node, boolean)`
  - `NodeComponent.setDuplicateOnCloneTree(boolean)`

### duplicateNode

public void duplicateNode(Node originalNode, boolean forceDuplicate)
Copies all node information from `originalNode` into the current node. This method is called from the `cloneNode` method which is, in turn, called by the `cloneTree` method.

For any `NodeComponent` objects contained by the object being duplicated, each `NodeComponent` object's `duplicateOnCloneTree` value is used to determine whether the `NodeComponent` should be duplicated in the new node or if just a reference to the current node should be placed in the new node. This flag can be overridden by setting the `forceDuplicate` parameter in the `cloneTree` method to `true`.
NOTE: Applications should not call this method directly. It should only be called by the cloneNode method.

Overrides:
  `duplicateNode` in class `Node`
Parameters:
  `originalNode` - the original node to duplicate.
  `forceDuplicate` - when set to `true`, causes the `duplicateOnCloneTree` flag to be ignored. When `false`, the value of each node's `duplicateOnCloneTree` variable determines whether NodeComponent data is duplicated or copied.
Throws:
  `ClassCastException` - if originalNode is not an instance of `Sound`
See Also:
  - `Node.cloneTree()`
  - `Node.cloneNode(boolean)`
  - `NodeComponent.setDuplicateOnCloneTree(boolean)`