The
AudioSystem
class acts as the entry point to the
sampled-audio system resources. This class lets you query and
access the mixers that are installed on the system.
AudioSystem
includes a number of
methods for converting audio data between different formats, and for
translating between audio files and streams. It also provides a method
for obtaining a
Line
directly from the
AudioSystem
without dealing explicitly
with mixers.
Properties can be used to specify the default mixer
for specific line types.
Both system properties and a properties file are considered.
In the Sun reference implementation, the properties file is
"lib/sound.properties" in the JRE
directory. If a property exists both as a system property and in the
properties file, the system property takes precedence. If none is
specified, a suitable default is chosen among the available devices.
The syntax of the properties file is specified in
Properties.load
. The
following table lists the available property keys and which methods
consider them:
The property value consists of the provider class name
and the mixer name, separated by the hash mark ("#").
The provider class name is the fully-qualified
name of a concrete
mixer provider
class. The mixer name is matched against
the
String
returned by the
getName
method of
Mixer.Info
.
Either the class name, or the mixer name may be omitted.
If only the class name is specified, the trailing hash mark
is optional.
If the provider class is specified, and it can be
successully retrieved from the installed providers, the list of
Mixer.Info
objects is retrieved
from the provider. Otherwise, or when these mixers
do not provide a subsequent match, the list is retrieved
from AudioSystem.getMixerInfo()
to contain
all available Mixer.Info
objects.
If a mixer name is specified, the resulting list of
Mixer.Info
objects is searched:
the first one with a matching name, and whose
Mixer
provides the
respective line interface, will be returned.
If no matching Mixer.Info
object
is found, or the mixer name is not specified,
the first mixer from the resulting
list, which provides the respective line
interface, will be returned.
For example, the property javax.sound.sampled.Clip
with a value
"com.sun.media.sound.MixerProvider#SunClip"
will have the following consequences when
getLine
is called requesting a Clip
instance:
if the class com.sun.media.sound.MixerProvider
exists
in the list of installed mixer providers,
the first Clip
from the first mixer with name
"SunClip"
will be returned. If it cannot
be found, the first Clip
from the first mixer
of the specified provider will be returned, regardless of name.
If there is none, the first Clip
from the first
Mixer
with name
"SunClip"
in the list of all mixers
(as returned by getMixerInfo
) will be returned,
or, if not found, the first Clip
of the first
Mixer
that can be found in the list of all
mixers is returned.
If that fails, too, an IllegalArgumentException
is thrown.