X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=_MIDI.pde;h=5e5236973ce5f501a2b7f3c912816719bb5b79ef;hb=d93c968f7b60cee84b7082e3e469a4c4309e6eda;hp=59c5f826f7eea8e88acc00c396efe00dc7885614;hpb=2910a170210e4465fe3c472085cbecaed544b4a6;p=SugarCubes.git diff --git a/_MIDI.pde b/_MIDI.pde index 59c5f82..5e52369 100644 --- a/_MIDI.pde +++ b/_MIDI.pde @@ -62,8 +62,12 @@ class MidiEngine { midiControllers.add(new APC40MidiInput(this, device, apcDeck).setEnabled(true)); } else if (device.getName().contains("SLIDER/KNOB KORG")) { midiControllers.add(new KorgNanoKontrolMidiInput(this, device).setEnabled(true)); + } else if (device.getName().contains("Arturia MINILAB")) { + midiControllers.add(new ArturiaMinilabMidiInput(this, device).setEnabled(true)); } else { - boolean enabled = device.getName().contains("KEYBOARD KORG") || device.getName().contains("Bus 1 Apple"); + boolean enabled = + device.getName().contains("KEYBOARD KORG") || + device.getName().contains("Bus 1 Apple"); midiControllers.add(new GenericDeviceMidiInput(this, device).setEnabled(enabled)); } } @@ -863,6 +867,36 @@ class APC40MidiOutput implements LXParameter.Listener, GridOutput { } } +class ArturiaMinilabMidiInput extends GenericDeviceMidiInput { + ArturiaMinilabMidiInput(MidiEngine midiEngine, MidiInputDevice d) { + super(midiEngine, d); + } + + protected boolean handleControllerChange(rwmidi.Controller cc) { + int parameterIndex = -1; + switch (cc.getCC()) { + case 7: parameterIndex = 0; break; + case 74: parameterIndex = 1; break; + case 71: parameterIndex = 2; break; + case 76: parameterIndex = 3; break; + case 114: parameterIndex = 4; break; + case 18: parameterIndex = 5; break; + case 19: parameterIndex = 6; break; + case 16: parameterIndex = 7; break; + } + if (parameterIndex >= 0) { + List parameters = midiEngine.getFocusedPattern().getParameters(); + if (parameterIndex < parameters.size()) { + LXParameter p = parameters.get(parameterIndex); + float curVal = p.getValuef(); + curVal += (cc.getValue() - 64) / 127.; + p.setValue(constrain(curVal, 0, 1)); + } + } + return false; + } +} + interface GridOutput { public static final int OFF = 0; public static final int GREEN = 1;