FileDocCategorySizeDatePackage
FloatControl.javaAPI DocJava SE 5 API15584Fri Aug 26 14:57:50 BST 2005javax.sound.sampled

FloatControl

public abstract class FloatControl extends Control
A FloatControl object provides control over a range of floating-point values. Float controls are often represented in graphical user interfaces by continuously adjustable objects such as sliders or rotary knobs. Concrete subclasses of FloatControl implement controls, such as gain and pan, that affect a line's audio signal in some way that an application can manipulate. The {@link FloatControl.Type} inner class provides static instances of types that are used to identify some common kinds of float control.

The FloatControl abstract class provides methods to set and get the control's current floating-point value. Other methods obtain the possible range of values and the control's resolution (the smallest increment between returned values). Some float controls allow ramping to a new value over a specified period of time. FloatControl also includes methods that return string labels for the minimum, maximum, and midpoint positions of the control.

see
Line#getControls
see
Line#isControlSupported
author
David Rivas
author
Kara Kytle
version
1.16, 03/12/19
since
1.3

Fields Summary
private float
minimum
The minimum supported value.
private float
maximum
The maximum supported value.
private float
precision
The control's precision.
private int
updatePeriod
The smallest time increment in which a value change can be effected during a value shift, in microseconds.
private final String
units
A label for the units in which the control values are expressed, such as "dB" for decibels.
private final String
minLabel
A label for the minimum value, such as "Left."
private final String
maxLabel
A label for the maximum value, such as "Right."
private final String
midLabel
A label for the mid-point value, such as "Center."
private float
value
The current value.
Constructors Summary
protected FloatControl(Type type, float minimum, float maximum, float precision, int updatePeriod, float initialValue, String units, String minLabel, String midLabel, String maxLabel)
Constructs a new float control object with the given parameters

param
type the kind of control represented by this float control object
param
minimum the smallest value permitted for the control
param
maximum the largest value permitted for the control
param
precision the resolution or granularity of the control. This is the size of the increment between discrete valid values.
param
updatePeriod the smallest time interval, in microseconds, over which the control can change from one discrete value to the next during a {@link #shift(float,float,int) shift}
param
initialValue the value that the control starts with when constructed
param
units the label for the units in which the control's values are expressed, such as "dB" or "frames per second"
param
minLabel the label for the minimum value, such as "Left" or "Off"
param
midLabel the label for the midpoint value, such as "Center" or "Default"
param
maxLabel the label for the maximum value, such as "Right" or "Full"

	
	super(type);
	
	this.minimum = minimum;
	this.maximum = maximum;
	
	this.precision = precision;
	this.updatePeriod = updatePeriod;
	this.value = initialValue;
	
	this.units = units;
	this.minLabel = ( (minLabel == null) ? "" : minLabel);
	this.midLabel = ( (midLabel == null) ? "" : midLabel);
	this.maxLabel = ( (maxLabel == null) ? "" : maxLabel);
    
protected FloatControl(Type type, float minimum, float maximum, float precision, int updatePeriod, float initialValue, String units)
Constructs a new float control object with the given parameters. The labels for the minimum, maximum, and mid-point values are set to zero-length strings.

param
type the kind of control represented by this float control object
param
minimum the smallest value permitted for the control
param
maximum the largest value permitted for the control
param
precision the resolution or granularity of the control. This is the size of the increment between discrete valid values.
param
updatePeriod the smallest time interval, in microseconds, over which the control can change from one discrete value to the next during a {@link #shift(float,float,int) shift}
param
initialValue the value that the control starts with when constructed
param
units the label for the units in which the control's values are expressed, such as "dB" or "frames per second"

	this(type, minimum, maximum, precision, updatePeriod, initialValue, units, "", "", "");
    
Methods Summary
public java.lang.StringgetMaxLabel()
Obtains the label for the maximum value, such as "Right" or "Full."

return
the maximum value label, or a zero-length string if no label * has been set

	return maxLabel;
    
public floatgetMaximum()
Obtains the maximum value permitted.

return
the maximum allowable value

	return maximum;
    
public java.lang.StringgetMidLabel()
Obtains the label for the mid-point value, such as "Center" or "Default."

return
the mid-point value label, or a zero-length string if no label * has been set

	return midLabel;
    
public java.lang.StringgetMinLabel()
Obtains the label for the minimum value, such as "Left" or "Off."

return
the minimum value label, or a zero-length string if no label * has been set

	return minLabel;
    
public floatgetMinimum()
Obtains the minimum value permitted.

return
the minimum allowable value

	return minimum;
    
public floatgetPrecision()
Obtains the resolution or granularity of the control, in the units that the control measures. The precision is the size of the increment between discrete valid values for this control, over the set of supported floating-point values.

return
the control's precision

	return precision;
    
public java.lang.StringgetUnits()
Obtains the label for the units in which the control's values are expressed, such as "dB" or "frames per second."

return
the units label, or a zero-length string if no label

	return units;
    
public intgetUpdatePeriod()
Obtains the smallest time interval, in microseconds, over which the control's value can change during a shift. The update period is the inverse of the frequency with which the control updates its value during a shift. If the implementation does not support value shifting over time, it should set the control's value to the final value immediately and return -1 from this method.

return
update period in microseconds, or -1 if shifting over time is unsupported
see
#shift

	return updatePeriod;
    
public floatgetValue()
Obtains this control's current value.

return
the current value

	return value;
    
public voidsetValue(float newValue)
Sets the current value for the control. The default implementation simply sets the value as indicated. If the value indicated is greater than the maximum value, or smaller than the minimum value, an IllegalArgumentException is thrown. Some controls require that their line be open before they can be affected by setting a value.

param
newValue desired new value
throws
IllegalArgumentException if the value indicated does not fall within the allowable range

	
	if (newValue > maximum) {
	    throw new IllegalArgumentException("Requested value " + newValue + " exceeds allowable maximum value " + maximum + ".");
	}
	
	if (newValue < minimum) {
	    throw new IllegalArgumentException("Requested value " + newValue + " smaller than allowable minimum value " + minimum + ".");
	}
	
	value = newValue;
    
public voidshift(float from, float to, int microseconds)
Changes the control value from the initial value to the final value linearly over the specified time period, specified in microseconds. This method returns without blocking; it does not wait for the shift to complete. An implementation should complete the operation within the time specified. The default implementation simply changes the value to the final value immediately.

param
from initial value at the beginning of the shift
param
to final value after the shift
param
microseconds maximum duration of the shift in microseconds
see
#getUpdatePeriod

	setValue(to);
    
public java.lang.StringtoString()
Provides a string representation of the control

return
a string description

	return new String(getType() + " with current value: " + getValue() + " " + units +
			  " (range: " + minimum + " - " + maximum + ")");