Although understanding Compositions and Parts is vital to using Mass, neither of them actually output any messages to your MIDI gear. That responsibility is left entirely to the Events. That said, Events are incapable of performing their functions without data from the Parts that contain them. This symbiotic relationship is a core feature of Mass, however it is largely explained in other sections. This section focuses on understanding what an Event is, and how they use the most central piece of information: Part positions.
Conceptually, Events are generic objects. Parts own Events, and Compositions own Parts. So how does one Event cause a note to play, while another sends a CC? Events achieve this by using parameters
. Each Event has 1 or more parameters, and each Event type contains the exact parameters it needs to perform its function.
All parameters an Event owns display in the UI editor(s), and will immediately change to reflect the new parameter set if the Event's type is changed.
Events are always contained within a Part, and Parts always have a position within the Composition. Each time a Part moves, it notifies its contained Events of the new position, and each Event utilizes its parameters to set its internal values. What the "internal value" represents, and how it is computed, is entirely up to the parameter.
However, there are some basic constants:
Astute readers may notice that the Impulse Event type is left out of the constants above. Impulse Events do not like to follow conventions. They are agents of chaos.
Every Event can be set to one of the available types, and then further configured based on the parameters for that type.
For further details on each type, see:
Event Type - Note
Event Type - Control
Event Type - Transpose
Event Type - Impulse