Name: fb126949 Date: 11/08/2002
Currently, Java Sound uses a default mixer provider when you do not specify a specific Mixer. The spec does not define how this default mixer provider is chosen. 3rd party plugins can provide custom MixerProvider implementations, which will be taken as default in 1.4.2 (the last found provider will be used as default). However, it is impossible to use one of the provided MixerProviders that ship with Java Sound, e.g. to allow binary Java programs benefit of new functionality of secondary MixerProviders (e.g. ALSA on Linux).
The solution is to use a system property, similar as explained in the documentation of the method provider()in class java.nio.channels.spi.SelectorProvider. The system property would be named "javax.sound.sampled.spi.MixerProvider" and its content would be the fully qualified classpath of the class to be used as default mixer provider. If the specified default mixer provider class is not accessible, or does not exist, the system property will be ignored.
Such a mechanism allows portable code to use special features. It is also fully backwards and forward compatible: it integrates easily with the planned extension to Java Sound's service provider mechanism in 1.5.0 (see 4666881: RFE: Add methods to load and unload service providers at runtime).
This RFE applies equally to MidiDeviceProvider.