The AuralAttributes object is a component object of a Soundscape node that
defines environmental audio parameters that affect sound rendering. These
attributes include gain scale factor, atmospheric rolloff, and parameters
controlling reverberation, distance frequency filtering, and velocity-based
Doppler effect.
Attribute Gain
Scale factor applied to all sound's amplitude active within this region.
This factor attenuates both direct and reflected/reverbered amplitudes.
Valid values are >= 0.0
Attribute Gain Rolloff
Rolloff scale factor is used to model atmospheric changes from normal
speed of sound. The base value, 0.344 meters/millisecond is used
to approximate the speed of sound through air at room temperature,
is multipled by this scale factor whenever the speed of sound is
applied during spatialization calculations.
Valid values are >= 0.0. Values > 1.0 increase the speed of sound,
while values < 1.0 decrease its speed. A value of zero makes sound
silent (but it continues to play).
Auralization
Auralization is the environmental modeling of sound iteratively
reflecting off the surfaces of the bounded region the listener is in.
Auralization components include
early, distinct, low-order reflections and later, dense,
higher-order reflections referred to as reverberation.
These reflections are attenuated relative to the direct, unreflected
sound. The difference in gain between direct and reflected sound
gives the listener a sense of the surface material and
the relative distance of the sound.
The delay between the start of the direct sound and start of
reverberation (as detected by the listener),
as well as the length of time reverberation is audible as it
exponentially decays, give the listener a sense of the size of the
listening space.
In Java3D's model for auralization there are several parameters
that approximate sound reflection and reverberation for a particular
listening space:
Reflection Coefficient Gain attenuation of the initial
reflections across all frequencies.
(Early) Reflection Delay The time it takes for the first
low-order reflected sound to reach the listener.
Reverb Coefficient Gain attenuation of the late reflections
(referred to as 'reverb') across all frequencies.
Reverb Delay The time it takes for reverbered sound
to reach the listener.
Decay Time Describes the reverb decay curve by defining the
length of time reverb takes to decay to effective zero.
Decay Filter High-frequencies of the late reverberation
can be attenuated at a different rate.
Density Modal density (spectral coloration) of
reverberation.
Diffusion Echo dispersement of reverberation.
Reverb Bounds Approximates the volume of the listening space.
If specified, it defines the reverberation delay.
Reverb Order Optionally limits the amount of times during
reverb calculation that a sound is recursively reflected off the
bounding region.
Reflection Coefficient
The reflection coefficient is an amplitude scale factor used to
approximate the average reflective or absorptive characteristics
for early reflections
of the composite surfaces in the region the listener is in.
This scale factor is applied to the sound's amplitude regardless of the
sound's position.
The range of valid values is 0.0 to 1.0.
A value of 1.0 denotes that reflections are unattenuated -
the amplitude of reflected sound waves are not decreased.
A value of 0.0 represents full absorption of reflections
by the surfaces in the listening space (no reflections occur
thus reverberation is disabled).
Reflection Delay
The early reflection delay time (in milliseconds) can be explicitly
set. Well-defined values are floats > 0.0.
A value of 0.0 results in reverberation being added as soon as
possible after the sound begins.
Reverberation Coefficient
The reverb coefficient is an amplitude scale factor used to
approximate the average reflective or absorptive characteristics
of late reflections.
A value of 0.0 represents full absorption of reflections
by the surfaces in the listening space (no reflections occur
thus reverberation is disabled).
Reverberation Delay
The reverb delay time (in milliseconds) is set either explicitly,
or implicitly by supplying a reverb bounds volume (from which the
delay time can be calculated). Well-defined values are floats > 0.0.
A value of 0.0 results in reverberation being added as soon as
possible after the sound begins. Reverb delay, as calculated from non-
null reverb bounds, takes precedence over explicitly set delay time.
Reverberation Bounds
The reverb bounding region defines the overall size of space
that reverberation is calculated for.
This optional bounds does not have to be the same as the application
region of the Soundscape node referencing this AuralAttributes object.
If this bounding region is specified then reverb decay and delay are
internally calculated from this bounds.
Reverberation Order
The reverb order is a hint that can be used during reverberation
to limit the number of late reflections required in calculation of
reverb decay.
All positive values can be interpreted during reverb rendering
as the maximum order of reflections to be calculated.
A non-positive value signifies that no limit is placed on the order of
reflections calculated during reverberation rendering.
In the case where reverb order is not limited, reverb decay is defined
strictly by the Reverberation Decay Time parameter.
Decay Time
The reverberation decay time explicitly defines the length of time in
milliseconds it takes for the amplitude of late reflections to
exponentally decrease to effective zero.
In the case where reverb delay is set non-positive
the renderer will perform the shortest reverberation decay
possible.
If ReverbOrder is set, this parameter is clamped by the reverb
time calculated as time = reverb Delay * reverb Order.
If ReverbOrder is 0, the decay time parameter is not clamped.
Decay Filter
The reverberation decay filter defines how frequencies above a given
value are attenuated by the listening space. This allows for modelling
materials on surfaces that absorb high frequencies at a faster rate
than low frequencies.
Reverberation Diffusion
The reverberation diffusion explicitly defines echo dispersement
(sometimes refered to as echo density). The value for diffusion
is proportional to the number of echos per second heard in late
reverberation, especially noticable at the tail of the reverberation
decay. The greater the diffusion the more 'natural' the reverberation
decay sounds. Reducing diffusion makes the decay sound hollow as
produced in a small highly reflecive space (such as a bathroom).
Reverberation Density
The reverberation density explicitly defines modal reverb density
The value for this modal density is proportional to the number of
resonances heard in late reverberation perceived as spectral
coloration. The greater the density, the smoother, less grainy the
later reverberation decay.
Distance Filter
This parameter specifies a (distance, filter) attenuation pairs array.
If this is not set, no distance filtering is performed (equivalent to
using a distance filter of Sound.NO_FILTER for all distances). Currently,
this filter is a low-pass cutoff frequency. This array of pairs defines
a piece-wise linear slope for range of values. This attenuation array is
similar to the PointSound node's distanceAttenuation pair array, except
paired with distances in this list are frequency values. Using these
pairs, distance-based low-pass frequency filtering can be applied during
sound rendering. Distances, specified in the local coordinate system in
meters, must be > 0. Frequencies (in Hz) must be > 0.
If the distance from the listener to the sound source is less than the
first distance in the array, the first filter is applied to the sound
source. This creates a spherical region around the listener within
which a sound is uniformly attenuated by the first filter in the array.
If the distance from the listener to the sound source is greater than
the last distance in the array, the last filter is applied to the sound
source.
Distance elements in these array of pairs is a monotonically-increasing
set of floating point numbers measured from the location of the sound
source. FrequencyCutoff elements in this list of pairs can be any
positive float. While for most applications this list of values will
usually be monotonically-decreasing, they do not have to be.
The getDistanceFilterLength method returns the length of the distance filter
arrays. Arrays passed into getDistanceFilter methods should all be at
least this size.
Doppler Effect Model
Doppler effect can be used to create a greater sense of movement of
sound sources, and can help reduce front-back localization errors.
The frequency of sound waves emanating from the source are raised or
lowered based on the speed of the source in relation to the listener,
and several AuralAttribute parameters.
The FrequencyScaleFactor can be used to increase or reduce the change
of frequency associated with normal Doppler calculation, or to shift
the pitch of the sound directly if Doppler effect is disabled.
Values must be > zero for sounds to be heard. If the value is zero,
sounds affected by this AuralAttribute object are paused.
To simulate Doppler effect, the relative velocity (change in
distance in the local coordinate system between the sound source and
the listener over time, in meters per second) is calculated. This
calculated velocity is multipled by the given VelocityScaleFactor.
Values must be >= zero. If is a scale factor value of zero is given,
Doppler effect is not calculated or applied to sound.