X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=_MIDI.pde;h=68cc8328e7a7ff013ec29267bf8964592a7888c4;hb=0e6f37cf0e50c84115701645d5062e3ae0768583;hp=4b3f3136ee9c7c03ce9835fb4d5552cd52d83590;hpb=d6ac1ee83fec42f9c5ba4a14248879b541f1f58d;p=SugarCubes.git diff --git a/_MIDI.pde b/_MIDI.pde index 4b3f313..68cc832 100644 --- a/_MIDI.pde +++ b/_MIDI.pde @@ -50,7 +50,8 @@ class MidiEngine { } else if (device.getName().contains("SLIDER/KNOB KORG")) { midiControllers.add(new KorgNanoKontrolMidiInput(device).setEnabled(true)); } else { - midiControllers.add(new SCMidiInput(device)); + boolean enabled = device.getName().contains("KEYBOARD KORG"); + midiControllers.add(new SCMidiInput(device).setEnabled(enabled)); } } } @@ -348,14 +349,31 @@ public class APC40MidiInput extends SCMidiInput { } } + + + private double Tap1 = 0; + private double getNow() { return millis() + 1000*second() + 60*1000*minute() + 3600*1000*hour(); } + private boolean dbtwn (double a,double b,double c) { return a >= b && a <= c; } + protected void handleNoteOn(Note note) { - switch (note.getPitch()) { + int nPitch = note.getPitch(), nChan = note.getChannel(); + switch (nPitch) { + + case 82: EFF_boom .trigger(); break; // BOOM! + case 83: EFF_flash .trigger(); break; // Flash + + case 90: lx.tempo.trigger(); Tap1 = getNow(); break; // dan's dirty tapping mechanism + + case 91: // play + case 95: // bank + midiEngine.setFocusedDeck(0); + break; + + case 93: // rec case 94: // right bank midiEngine.setFocusedDeck(1); break; - case 95: // left bank - midiEngine.setFocusedDeck(0); - break; + case 96: // up bank if (shiftOn) { glucose.incrementSelectedEffectBy(1); @@ -385,8 +403,7 @@ public class APC40MidiInput extends SCMidiInput { lx.tempo.setBpm(lx.tempo.bpm() - (shiftOn ? 1 : .1)); break; - case 91: // play - case 93: // rec + case 62: // Detail View releaseEffect = glucose.getSelectedEffect(); if (releaseEffect.isMomentary()) { releaseEffect.enable(); @@ -395,22 +412,33 @@ public class APC40MidiInput extends SCMidiInput { } break; - case 92: // stop + case 63: // rec quantize glucose.getSelectedEffect().disable(); break; } } protected void handleNoteOff(Note note) { - switch (note.getPitch()) { - case 93: // rec + int nPitch = note.getPitch(), nChan = note.getChannel(); + switch (nPitch) { + case 90: + if (dbtwn(getNow() - Tap1,5000,300*1000)) { // hackish tapping mechanism + double bpm = 32.*60000./(getNow()-Tap1); + while (bpm < 20) bpm*=2; + while (bpm > 40) bpm/=2; + lx.tempo.setBpm(bpm); lx.tempo.trigger(); Tap1=0; println("Tap Set - " + bpm + " bpm"); + } + break; + + + case 63: // rec quantize if (releaseEffect != null) { if (releaseEffect.isMomentary()) { releaseEffect.disable(); } } break; - + case 98: // shift shiftOn = false; break;