X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=_MIDI.pde;h=68cc8328e7a7ff013ec29267bf8964592a7888c4;hb=7c7625ec088b93148f46adc19ba8f1cb4baa8321;hp=d2fb69bd8d9d95d753a08d0fd4ed24883d9db659;hpb=cc8b3f8210cea5377cc7e28116626e7bc4defa7a;p=SugarCubes.git diff --git a/_MIDI.pde b/_MIDI.pde index d2fb69b..68cc832 100644 --- a/_MIDI.pde +++ b/_MIDI.pde @@ -349,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); @@ -386,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(); @@ -396,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;