/**
* An anonymous type representing a complex MIDI controller event.
*
* MidiController events can be passed to anywhere that expects MIDI Data (eg: a target MIDI binding point), or can be
* used as a condition on a MIDI source binding point.
*
* @class MidiControllerEvent
*/
/**
* The zero based MIDI channel number of the event (0-15)
* @property channel
* @type {Number}
*/
/**
* The kind of MIDI event
*
* * Controller
* * FineController
* * ControllerButton
* * ControllerNonEdgeButton
* * ControllerSwitch
* * ProgramChange
* * BankedProgramChange
* * PitchBend
* * ChannelPressure
* * Note
* * NoteOff
* * NoteSwitch
* * RpnCoarse
* * RpnFine
* * NRpnCoarse
* * NRpnFine
* * MasterVolume
* * MasterBalance
* * MmcStop
* * MmcPlay
* * MmcDeferredPlay
* * MmcFastForward
* * MmcRewind
* * MmcRecordPunchIn
* * MmcRecordPunchOut
* * MmcRecordReady
* * MmcPause
* * MmcEject
* * MmcChase
* * MmcReset
* * SongSelect
* * ClockStart
* * ClockContinue
* * ClockStop
*
* @property kind
* @type {String}
*/
/**
* The associated controller number for any of the controller event kinds, or the program
* number for program change event kinds.
*
* When used as a source binding condition, this property can be set to -1 for program change
* events to be triggered on any program change.
*
* @property controller
* @type {Number}
*/
/**
* Value
*
* The value property is only used when sending MIDI data and is ignored if specified when
* setting a source binding condition.
*
* @property value
* @type {Number}
*/