Class BasicVolumeControl

  • All Implemented Interfaces:
    javax.media.Control, javax.media.GainControl, VolumeControl
    Direct Known Subclasses:
    HardwareVolumeControl

    public class BasicVolumeControl
    extends Object
    implements VolumeControl, javax.media.GainControl
    Provides a basic implementation of VolumeControl which stores the volume level/value set on it in the ConfigurationService.
    Author:
    Damian Minkov, Lyubomir Marinov
    • Field Detail

      • MAX_VOLUME_LEVEL

        protected static final float MAX_VOLUME_LEVEL
        The maximum volume level accepted by AbstractVolumeControl.
        See Also:
        Constant Field Values
      • MAX_VOLUME_PERCENT

        public static final int MAX_VOLUME_PERCENT
        The maximum volume level expressed in percent accepted by AbstractVolumeControl.
        See Also:
        Constant Field Values
      • MIN_VOLUME_LEVEL

        protected static final float MIN_VOLUME_LEVEL
        The minimum volume level accepted by AbstractVolumeControl.
        See Also:
        Constant Field Values
      • MIN_VOLUME_PERCENT

        public static final int MIN_VOLUME_PERCENT
        The minimum volume level expressed in percent accepted by AbstractVolumeControl.
        See Also:
        Constant Field Values
      • volumeLevel

        protected float volumeLevel
        The current volume level.
    • Constructor Detail

      • BasicVolumeControl

        public BasicVolumeControl​(String volumeLevelConfigurationPropertyName)
        Creates volume control instance and initializes initial level value if stored in the configuration service.
        Parameters:
        volumeLevelConfigurationPropertyName - the name of the configuration property which specifies the value of the volume level of the new instance
    • Method Detail

      • applyGain

        public static void applyGain​(javax.media.GainControl gainControl,
                                     byte[] buffer,
                                     int offset,
                                     int length)
        Applies the gain specified by gainControl to the signal defined by the length number of samples given in buffer starting at offset.
        Parameters:
        gainControl - the GainControl which specifies the gain to apply
        buffer - the samples of the signal to apply the gain to
        offset - the start of the samples of the signal in buffer
        length - the number of samples of the signal given in buffer
      • getDefaultVolumeLevel

        protected static float getDefaultVolumeLevel()
        Returns the default volume level.
        Returns:
        The default volume level.
      • getGainReferenceLevel

        protected static float getGainReferenceLevel()
        Returns the reference volume level for computing the gain.
        Returns:
        The reference volume level for computing the gain.
      • addGainChangeListener

        public void addGainChangeListener​(javax.media.GainChangeListener listener)
        Register for gain change update events. A GainChangeEvent is posted when the state of the GainControl changes.
        Specified by:
        addGainChangeListener in interface javax.media.GainControl
        Parameters:
        listener - The object to deliver events to.
      • addVolumeChangeListener

        public void addVolumeChangeListener​(VolumeChangeListener listener)
        Adds a VolumeChangeListener to be informed for any change in the volume levels.
        Specified by:
        addVolumeChangeListener in interface VolumeControl
        Parameters:
        listener - volume change listener.
      • getControlComponent

        public Component getControlComponent()
        Not used.
        Specified by:
        getControlComponent in interface javax.media.Control
        Returns:
        null
      • getDB

        public float getDB()
        Get the current gain set for this object in dB.
        Specified by:
        getDB in interface javax.media.GainControl
        Returns:
        The gain in dB.
      • getLevel

        public float getLevel()
        Get the current gain set for this object as a value between 0.0 and 1.0
        Specified by:
        getLevel in interface javax.media.GainControl
        Returns:
        The gain in the level scale (0.0-1.0).
        See Also:
        GainControl
      • getMaxValue

        public float getMaxValue()
        Returns the maximum allowed volume value.
        Specified by:
        getMaxValue in interface VolumeControl
        Returns:
        the maximum allowed volume value.
        See Also:
        VolumeControl
      • getMinValue

        public float getMinValue()
        Returns the minimum allowed volume value.
        Specified by:
        getMinValue in interface VolumeControl
        Returns:
        the minimum allowed volume value.
        See Also:
        VolumeControl
      • getMute

        public boolean getMute()
        Get mute state of sound.
        Specified by:
        getMute in interface javax.media.GainControl
        Specified by:
        getMute in interface VolumeControl
        Returns:
        mute state of sound.
      • loadVolume

        protected void loadVolume()
        Reads the initial volume level from the system.
      • removeGainChangeListener

        public void removeGainChangeListener​(javax.media.GainChangeListener listener)
        Remove interest in gain change update events.
        Specified by:
        removeGainChangeListener in interface javax.media.GainControl
        Parameters:
        listener - The object that has been receiving events.
      • setDB

        public float setDB​(float gain)
        Set the gain in decibels. Setting the gain to 0.0 (the default) implies that the audio signal is neither amplified nor attenuated. Positive values amplify the audio signal and negative values attenuate the signal.
        Specified by:
        setDB in interface javax.media.GainControl
        Parameters:
        gain - The new gain in dB.
        Returns:
        The gain that was actually set.
        See Also:
        GainControl
      • setLevel

        public float setLevel​(float level)
        Set the gain using a floating point scale with values between 0.0 and 1.0. 0.0 is silence; 1.0 is the loudest useful level that this GainControl supports.
        Specified by:
        setLevel in interface javax.media.GainControl
        Parameters:
        level - The new gain value specified in the level scale.
        Returns:
        The level that was actually set.
        See Also:
        GainControl
      • setMute

        public void setMute​(boolean mute)
        Mutes current sound.
        Specified by:
        setMute in interface javax.media.GainControl
        Specified by:
        setMute in interface VolumeControl
        Parameters:
        mute - mutes/unmutes.
      • setVolume

        public float setVolume​(float value)
        Changes volume level.
        Specified by:
        setVolume in interface VolumeControl
        Parameters:
        value - the new level to set.
        Returns:
        the actual level which was set.
        See Also:
        VolumeControl
      • updateHardwareVolume

        protected void updateHardwareVolume()
        Modifies the hardware microphone sensibility (hardware amplification). This is a void function for AbstractVolumeControl since it does not have any connection to hardware volume. But, this function must be redefined by any extending class.