This class implements behavior that is common to all MIDI controllers. You will not use this class directly in normal cases.
If you need to define a custom controller, inherit from this class.
AbstractMIDIControl.syncByDefault = false
. It is currently not supported to choose this behavior per responder.A Boolean, determining whether future MIDI controllers will update immediately (if false) or wait until the new value is close to the old one (if true).
Creates an instance of the socket subclass being invoked. Arguments are generic, and are forwarded to the subclass's init
method.
chan |
The messages' source. See ddwMIDI_Guide: Identifying MIDI channels. |
num |
The controller number. See ddwMIDI_Guide: Controller numbers. |
destination |
In general, controllers target another object. This target object is the destination. |
... args |
Additional arguments are up to the subclass. |
The controller instance.
The controller number. If the controller was automatically allocated, the return value may be an instance of CControl. Otherwise, the return value should be an Integer.
A symbol, indicating the default controller type to look up, if no controller number is given. See CCAllocator for details.
(Optionally supported by subclasses.) If the destination has a concrete value, return the value here.
Method not used at present.
Reset the controller-sync status -- i.e., force the next incoming MIDI CC message for this responder to update the active value, regardless of its distance from the previous value.
Called internally by MIDIChannel. Implements the value-sync logic: If the new value is close to, or crosses, the old value, then update. Otherwise, ignore.
The destination's ControlSpec, if it has one.
Remove the controller completely from the ddwMIDI hierarchy.
The controller's target object.
The controller's parent MIDIChannel object. From this, you can get information about the device and channel from which the controller is receiving messages.
Subclasses may implement clear
to keep the controller registered in the hierarchy, but become inactive.
Subclasses should implement init
for their specific requirements. Users should not call init
directly.