-CANVAS_VARIABLE(canvasvar_MeterBar, "meterbar")
-CANVAS_VARIABLE(canvasvar_MarkerBar, "markerbar")
-CANVAS_VARIABLE(canvasvar_RangeMarkerBar, "rangemarker bar")
-CANVAS_VARIABLE(canvasvar_TransportMarkerBar, "TransportMarkerBar")
-CANVAS_VARIABLE(canvasvar_RangeDragBarRect, "RangeDragBarRect")
-CANVAS_VARIABLE(canvasvar_RangeDragRect, "RangeDragRect")
-CANVAS_VARIABLE(canvasvar_TransportDragRect, "TransportDragRect")
-CANVAS_VARIABLE(canvasvar_MarkerDragLine, "MarkerDragLine")
-CANVAS_VARIABLE(canvasvar_TransportLoopRect, "TransportLoopRect")
-CANVAS_VARIABLE(canvasvar_TransportPunchRect, "TransportPunchRect")
-CANVAS_VARIABLE(canvasvar_PunchLine, "PunchLine")
-CANVAS_VARIABLE(canvasvar_ZoomRect, "ZoomRect")
-CANVAS_VARIABLE(canvasvar_RubberBandRect, "RubberBandRect")
-CANVAS_VARIABLE(canvasvar_EnteredGainLine, "EnteredGainLine")
-CANVAS_VARIABLE(canvasvar_EnteredAutomationLine, "EnteredAutomationLine")
-CANVAS_VARIABLE(canvasvar_EnteredMarker, "EnteredMarker")
-CANVAS_VARIABLE(canvasvar_MeterMarker, "MeterMarker")
-CANVAS_VARIABLE(canvasvar_TempoMarker, "TempoMarker")
-CANVAS_VARIABLE(canvasvar_MeasureLineBeat, "MeasureLineBeat")
-CANVAS_VARIABLE(canvasvar_MeasureLineBar, "MeasureLineBar")
-CANVAS_VARIABLE(canvasvar_GhostTrackBase, "GhostTrackBase")
-CANVAS_VARIABLE(canvasvar_GhostTrackWave, "GhostTrackWave")
-CANVAS_VARIABLE(canvasvar_GhostTrackWaveClip, "GhostTrackWaveClip")
-CANVAS_VARIABLE(canvasvar_GhostTrackZeroLine, "GhostTrackZeroLine")
-CANVAS_VARIABLE(canvasvar_ImageTrack, "ImageTrack")
-CANVAS_VARIABLE(canvasvar_MarkerTrack, "MarkerTrack")
-CANVAS_VARIABLE(canvasvar_ZeroLine, "ZeroLine")
-CANVAS_VARIABLE(canvasvar_GainLine, "GainLine")
-CANVAS_VARIABLE(canvasvar_GainLineInactive, "GainLineInactive")
-CANVAS_VARIABLE(canvasvar_RecordingRect, "RecordingRect")
-CANVAS_VARIABLE(canvasvar_SelectionRect, "SelectionRect")
-CANVAS_VARIABLE(canvasvar_Selection, "Selection")
-CANVAS_VARIABLE(canvasvar_VestigialFrame, "VestigialFrame")
-CANVAS_VARIABLE(canvasvar_TimeAxisFrame, "TimeAxisFrame")
-CANVAS_VARIABLE(canvasvar_NameHighlightFill, "NameHighlightFill")
-CANVAS_VARIABLE(canvasvar_NameHighlightOutline, "NameHighlightOutline")
-CANVAS_VARIABLE(canvasvar_FrameHandle, "FrameHandle")
-CANVAS_VARIABLE(canvasvar_TrimHandleLocked, "TrimHandleLocked")
-CANVAS_VARIABLE(canvasvar_TrimHandle, "TrimHandle")
-CANVAS_VARIABLE(canvasvar_EditCursor, "EditCursor")
-CANVAS_VARIABLE(canvasvar_PlayHead, "PlayHead")
-CANVAS_VARIABLE(canvasvar_MidiSelectRectOutline, "MidiSelectRectOutline")
-CANVAS_VARIABLE(canvasvar_MidiSelectRectFill, "MidiSelectRectFill")
-CANVAS_VARIABLE(canvasvar_MidiNoteOutlineMin, "MidiNoteOutlineMin")
-CANVAS_VARIABLE(canvasvar_MidiNoteOutlineMid, "MidiNoteOutlineMid")
-CANVAS_VARIABLE(canvasvar_MidiNoteOutlineMax, "MidiNoteOutlineMax")
-CANVAS_VARIABLE(canvasvar_MidiNoteFillMin, "MidiNoteFillMin")
-CANVAS_VARIABLE(canvasvar_MidiNoteFillMid, "MidiNoteFillMid")
-CANVAS_VARIABLE(canvasvar_MidiNoteFillMax, "MidiNoteFillMax")
-CANVAS_VARIABLE(canvasvar_MidiNoteSelectedOutline, "MidiNoteSelectedOutline")
+CANVAS_VARIABLE(canvasvar_TempoMarker, "tempo marker")
+CANVAS_VARIABLE(canvasvar_TimeAxisFrame, "time axis frame")
+CANVAS_VARIABLE(canvasvar_SelectedTimeAxisFrame, "selected time axis frame")
+CANVAS_VARIABLE(canvasvar_TimeStretchFill, "time stretch fill")
+CANVAS_VARIABLE(canvasvar_TimeStretchOutline, "time stretch outline")
+CANVAS_VARIABLE(canvasvar_TransportDragRect, "transport drag rect")
+CANVAS_VARIABLE(canvasvar_TransportLoopRect, "transport loop rect")
+CANVAS_VARIABLE(canvasvar_TransportMarkerBar, "transport marker bar")
+CANVAS_VARIABLE(canvasvar_TransportPunchRect, "transport punch rect")
+CANVAS_VARIABLE(canvasvar_TrimHandleLocked, "trim handle locked")
+CANVAS_VARIABLE(canvasvar_TrimHandle, "trim handle")
+CANVAS_VARIABLE(canvasvar_VerboseCanvasCursor, "verbose canvas cursor")
+CANVAS_VARIABLE(canvasvar_VestigialFrame, "vestigial frame")
+CANVAS_VARIABLE(canvasvar_FrameBase, "region base")
+CANVAS_VARIABLE(canvasvar_CoveredRegion, "region area covered by another region")
+CANVAS_VARIABLE(canvasvar_WaveForm, "waveform outline")
+CANVAS_VARIABLE(canvasvar_WaveFormClip, "clipped waveform")
+CANVAS_VARIABLE(canvasvar_WaveFormFill, "waveform fill")
+CANVAS_VARIABLE(canvasvar_ZeroLine, "zero line")
+CANVAS_VARIABLE(canvasvar_ZoomRect, "zoom rect")
+CANVAS_VARIABLE(canvasvar_MonitorSectionKnob, "monitor knob")
+
+#define BUTTON_VARS(root,name) \
+CANVAS_VARIABLE(canvasvar_ ## root ## BorderStart, name ": border start") \
+CANVAS_VARIABLE(canvasvar_ ## root ## BorderEnd, name ": border end") \
+CANVAS_VARIABLE(canvasvar_ ## root ## BorderStartSelected, name ": border start selected") \
+CANVAS_VARIABLE(canvasvar_ ## root ## BorderEndSelected, name ": border end selected") \
+CANVAS_VARIABLE(canvasvar_ ## root ## FillStart, name ": fill start") \
+CANVAS_VARIABLE(canvasvar_ ## root ## FillEnd, name ": fill end") \
+CANVAS_VARIABLE(canvasvar_ ## root ## FillStartActive, name ": fill start active") \
+CANVAS_VARIABLE(canvasvar_ ## root ## FillEndActive, name ": fill end active") \
+CANVAS_VARIABLE(canvasvar_ ## root ## LED, name ": led") \
+CANVAS_VARIABLE(canvasvar_ ## root ## LEDActive, name ": led active") \
+CANVAS_VARIABLE(canvasvar_ ## root ## Text, name ": text") \
+CANVAS_VARIABLE(canvasvar_ ## root ## TextActive, name ": text active") \
+
+BUTTON_VARS(ProcessorPreFader, "processor prefader")
+BUTTON_VARS(ProcessorFader, "processor fader")
+BUTTON_VARS(ProcessorPostFader, "processor postfader")
+BUTTON_VARS(ProcessorControlButton, "processor control button")
+BUTTON_VARS(MonitorButton, "monitor button")
+BUTTON_VARS(SoloIsolateButton, "solo isolate")
+BUTTON_VARS(SoloSafeButton, "solo safe")
+BUTTON_VARS(MonitorSectionCutButton, "monitor section cut")
+BUTTON_VARS(MonitorSectionDimButton, "monitor section dim")
+BUTTON_VARS(MonitorSectionSoloButton, "monitor section solo")
+BUTTON_VARS(MonitorSectionInvertButton, "monitor section invert")
+BUTTON_VARS(MonitorSectionMonoButton, "monitor section mono")
+BUTTON_VARS(MonitorSectionSoloModelButton, "monitor section solo model")
+BUTTON_VARS(MonitorSectionSoloOverrideButton, "monitor solo override")
+BUTTON_VARS(MonitorSectionSoloExclusiveButton, "monitor solo exclusive")
+BUTTON_VARS(RudeSolo, "rude solo")
+BUTTON_VARS(RudeIsolate, "rude isolate")
+BUTTON_VARS(RudeAudition, "rude audition")
+BUTTON_VARS(FeedbackAlert, "feedback alert")
+BUTTON_VARS(MuteButton, "mute button")
+BUTTON_VARS(SoloButton, "solo button")
+BUTTON_VARS(RecEnableButton, "record enable button")
+BUTTON_VARS(SendButton, "send alert button")
+BUTTON_VARS(TransportButton, "transport button")
+BUTTON_VARS(TransportRecenableButton, "transport recenable button")
+BUTTON_VARS(TransportOptionButton, "transport option button")
+BUTTON_VARS(TransportActiveOptionButton, "transport active option button")
+BUTTON_VARS(PluginBypassButton, "plugin bypass button")
+BUTTON_VARS(PunchButton, "punch button")
+BUTTON_VARS(MouseModeButton, "mouse mode button")
+BUTTON_VARS(ZoomButton, "zoom button")
+BUTTON_VARS(RouteButton, "route button")
+BUTTON_VARS(MixerStripButton, "mixer strip button")
+BUTTON_VARS(MixerStripNameButton, "mixer strip name button")
+BUTTON_VARS(MidiInputButton, "midi input button")
+
+#define CLOCK_VARS(root,name) \
+ CANVAS_VARIABLE(canvasvar_ ## root ## Background, name ": background") \
+ CANVAS_VARIABLE(canvasvar_ ## root ## Text, name ": text") \
+ CANVAS_VARIABLE(canvasvar_ ## root ## EditedText, name ": edited text") \
+ CANVAS_VARIABLE(canvasvar_ ## root ## Cursor, name ": cursor")
+
+CLOCK_VARS(TransportClock, "transport clock")
+CLOCK_VARS(SecondaryClock, "secondary clock")
+CLOCK_VARS(TransportDeltaClock, "transport delta clock")
+CLOCK_VARS(SecondaryDeltaClock, "secondary delta clock")
+CLOCK_VARS(BigClock, "big clock")
+CLOCK_VARS(BigClockActive, "big clock active")
+CLOCK_VARS(PunchClock, "punch clock")
+CLOCK_VARS(SelectionClock, "selection clock")
+CLOCK_VARS(NudgeClock, "nudge clock")
+CLOCK_VARS(GenericClock, "clock")