Float controls, on the other hand, are well suited to represent continuously variable controls, such as pan, balance, or volume. Boolean controls, for example, represent binary-state controls, such as on/off controls for mute or reverb. Many typical audio-processing controls can be described by abstract subclasses of Control based on a data type (such as boolean, enumerated, or float). It's up to you to decide what sort of graphical representations (sliders, buttons, etc.), if any, to use in your program.Īll controls are implemented as concrete subclasses of the abstract class Control. The controls are not themselves graphical they just allow you to retrieve and change their settings. If the mixer or any of its lines have controls, you might wish to expose the controls via graphical objects in your program's user interface, so that the user can adjust the audio characteristics as desired. For example, a global reverb control might choose the sort of reverberation to apply to a mixture of the input signals, and this "wet" (reverberated) signal would get mixed back into the "dry" signal before delivery to the mixer's target lines. Others of the mixer's own controls might affect a special line, neither a source nor a target, that the mixer uses internally for its processing. For example, the mixer might have a master gain control whose value in decibels is added to the values of individual gain controls on its target lines. These might serve as master controls affecting all the mixer's source or target lines. In each case, the controls are all accessed through methods of the Line interface.īecause the Mixer interface extends Line, the mixer itself can have its own set of controls. A mixer used for audio playback might have sample-rate controls on its source data lines. For example, a mixer used for audio capture might have an input port with a gain control, and target data lines with gain and pan controls. This page discusses the first technique in greater detail, because there is no special API for the second technique.Ī mixer can have various sorts of signal-processing controls on some or all of its lines. If the kind of processing you need isn't provided by the mixer or its lines, your program can operate directly on the audio bytes, manipulating them as desired.Typical controls supported by mixers and lines include gain, pan, and reverberation controls. You can use any processing supported by the mixer or its component lines, by querying forĬontrol objects and then setting the controls as the user desires.There are two ways to apply signal processing: This page discusses the Java Sound API features that provide these kinds of signal processing. The user might want it to sound louder, quieter, fuller, more reverberant, higher or lower in pitch, and so on. Sometimes, however, you want to be able to modify the signal. The implicit goal has been to deliver samples as faithfully as possible, without modification (other than possibly mixing the samples with those from other audio lines). Previous sections have discussed how to play or capture audio samples.
0 Comments
Leave a Reply. |
Details
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |