Created
February 2, 2025 16:30
-
-
Save kmorrill/32039889d3c5f9698311c57fb11d58e3 to your computer and use it in GitHub Desktop.
Mozaic Touché for OP-XY
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@OnLoad | |
ShowLayout 0 | |
gActiveChannel = 1 | |
// Set initial knob and pad labels | |
Call @UpdateKnobLabels | |
Call @UpdatePadLabels | |
@End | |
@UpdateKnobLabels | |
LabelXY {Cutoff, Resonance} | |
LabelKnob 0, {Param 1} | |
LabelKnob 1, {Param 2} | |
LabelKnob 2, {Param 3} | |
LabelKnob 3, {Param 4} | |
LabelKnob 4, {Key Track} | |
LabelKnob 5, {Filter Env} | |
LabelKnob 6, {FX1} | |
LabelKnob 7, {FX2} | |
LabelKnob 8, {AmpSus} | |
LabelKnob 9, {FilterSus} | |
@End | |
@UpdatePadLabels | |
if ShiftPressed | |
LabelPad 0, {Ch 5} | |
LabelPad 1, {Ch 6} | |
LabelPad 2, {Ch 7} | |
LabelPad 3, {Ch 8} | |
else | |
LabelPad 0, {Ch 1} | |
LabelPad 1, {Ch 2} | |
LabelPad 2, {Ch 3} | |
LabelPad 3, {Ch 4} | |
endif | |
@End | |
@OnPadDown | |
if ShiftPressed | |
gActiveChannel = LastPad + 5 | |
else | |
gActiveChannel = LastPad + 1 | |
endif | |
Log {Active Channel:} | |
Log gActiveChannel | |
@End | |
@OnPadUp | |
@End | |
@OnShiftDown | |
Call @UpdatePadLabels | |
Log {Shift Pressed - Higher Channels Available} | |
@End | |
@OnShiftUp | |
Call @UpdatePadLabels | |
Log {Shift Released - Lower Channels Available} | |
@End | |
@OnXYChange | |
// Get X/Y values and calculate distance from center | |
delta1 = Abs(GetXValue - 64) | |
delta2 = Abs(GetYValue - 64) | |
pyt = Sqrt((delta1 * delta1) + (delta2 * delta2)) | |
// Send the CC messages with updated CC numbers | |
SendMIDICC (gActiveChannel - 1), 32, GetXValue | |
SendMIDICC (gActiveChannel - 1), 33, GetYValue | |
// Log the values | |
Log {XY Position:} | |
Log {X (CC32):} | |
Log GetXValue | |
Log {Y (CC33):} | |
Log GetYValue | |
Log {Distance from center:} | |
Log pyt | |
@End | |
@OnKnobChange | |
knobvalue = GetKnobValue LastKnob | |
if LastKnob = 0 | |
SendMIDICC (gActiveChannel - 1), 12, knobvalue // Param 1 | |
Log {Param 1 (CC12) Channel:} | |
Log gActiveChannel | |
Log {Value:} | |
Log knobvalue | |
elseif LastKnob = 1 | |
SendMIDICC (gActiveChannel - 1), 13, knobvalue // Param 2 | |
Log {Param 2 (CC13) Channel:} | |
Log gActiveChannel | |
Log {Value:} | |
Log knobvalue | |
elseif LastKnob = 2 | |
SendMIDICC (gActiveChannel - 1), 14, knobvalue // Param 3 | |
Log {Param 3 (CC14) Channel:} | |
Log gActiveChannel | |
Log {Value:} | |
Log knobvalue | |
elseif LastKnob = 3 | |
SendMIDICC (gActiveChannel - 1), 15, knobvalue // Param 4 | |
Log {Param 4 (CC15) Channel:} | |
Log gActiveChannel | |
Log {Value:} | |
Log knobvalue | |
elseif LastKnob = 4 | |
SendMIDICC (gActiveChannel - 1), 35, knobvalue // Key Tracking | |
Log {Key Tracking (CC35) Channel:} | |
Log gActiveChannel | |
Log {Value:} | |
Log knobvalue | |
elseif LastKnob = 5 | |
SendMIDICC (gActiveChannel - 1), 34, knobvalue // Filter Envelope | |
Log {Filter Env (CC34) Channel:} | |
Log gActiveChannel | |
Log {Value:} | |
Log knobvalue | |
elseif LastKnob = 6 | |
SendMIDICC (gActiveChannel - 1), 38, knobvalue // Key Tracking | |
Log {Key Tracking (CC38) Channel:} | |
Log gActiveChannel | |
Log {Value:} | |
Log knobvalue | |
elseif LastKnob = 7 | |
SendMIDICC (gActiveChannel - 1), 39, knobvalue // FX 1 | |
Log {FX 1 (CC39) Channel:} | |
Log gActiveChannel | |
Log {Value:} | |
Log knobvalue | |
elseif LastKnob = 8 | |
SendMIDICC (gActiveChannel - 1), 22, knobvalue // FX 2 | |
Log {FX 2 (CC22) Channel:} | |
Log gActiveChannel | |
Log {Value:} | |
Log knobvalue | |
elseif LastKnob = 9 | |
SendMIDICC (gActiveChannel - 1), 26, knobvalue // PitchBend | |
Log {PitchBend (CC26) Channel:} | |
Log gActiveChannel | |
Log {Value:} | |
Log knobvalue | |
endif | |
SetKnobValue LastKnob, knobvalue | |
@End |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment