X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=_MIDI.pde;h=a3363205f8914160418a9f15e34f38b44ef56dcc;hb=a981ea467653d27f5e1e9d4734746d7e378a4d77;hp=727742fa53295b71a63463b0bf8c43fce9a08efa;hpb=24fc03308b0fe0ee37c0143ce0e3c868a1a971be;p=SugarCubes.git diff --git a/_MIDI.pde b/_MIDI.pde index 727742f..a336320 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)); } } @@ -407,7 +411,7 @@ public class APC40MidiInput extends GenericDeviceMidiInput { case 7: switch (channel) { case 0: - effects.colorFucker.hueShift.setValue(value); + // effects.colorFucker.hueShift.setValue(value); return true; case 1: effects.colorFucker.desat.setValue(value); @@ -433,6 +437,19 @@ public class APC40MidiInput extends GenericDeviceMidiInput { case 15: lx.engine.getDeck(GLucose.RIGHT_DECK).getFader().setValue(value); return true; + + // Cue level + case 47: + float val = effects.colorFucker.hueShift.getValuef(); + int cv = cc.getValue(); + if (cv < 64) { + cv = 64 + cv; + } else { + cv = cv - 64; + } + val += (cv - 64) / 300.; + effects.colorFucker.hueShift.setValue((val+1) % 1); + return true; } int parameterIndex = -1; @@ -498,6 +515,10 @@ public class APC40MidiInput extends GenericDeviceMidiInput { effects.flash.trigger(); return true; + case 84: // scene 3 + getTargetPattern().reset(); + return true; + case 90: // dan's dirty tapping mechanism lx.tempo.trigger(); @@ -505,13 +526,23 @@ public class APC40MidiInput extends GenericDeviceMidiInput { return true; case 91: // play - case 97: // left bank - midiEngine.setFocusedDeck(0); + if (shiftOn) { + midiEngine.setFocusedDeck(GLucose.LEFT_DECK); + } else { + uiCrossfader.setDisplayMode("A"); + } return true; - + + case 92: // stop + uiCrossfader.setDisplayMode("COMP"); + return true; + case 93: // rec - case 96: // right bank - midiEngine.setFocusedDeck(1); + if (shiftOn) { + midiEngine.setFocusedDeck(GLucose.RIGHT_DECK); + } else { + uiCrossfader.setDisplayMode("B"); + } return true; case 94: // up bank @@ -727,9 +758,7 @@ class APC40MidiOutput implements LXParameter.Listener, GridOutput { } } public void onPresetStored(LXDeck deck, Preset preset) { - if (deck == getTargetDeck()) { - onPresetStored(deck, preset); - } + onPresetSelected(deck, preset); } }); resetParameters(); @@ -861,6 +890,42 @@ 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; + + case 75: + float val = effects.colorFucker.hueShift.getValuef(); + val += (cc.getValue() - 64) / 256.; + effects.colorFucker.hueShift.setValue((val+1) % 1); + 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;