Shift Function Using Drum Pads, any easier way to do this?

logite

2014-01-24 02:17:49

Hey guys!

Here's an idea I had, (or a problem depending on how you want to look at it :D ) and what I did to solve it- the topic's title was named in hopes of getting feedback on my design, but I hope this post can help others in the same situation :)

I've been mapping out all my VSTs in my DAW with my Akai MPK25 to make my creative flow a bit less tedious, and the MPK25 has a good number of knobs, 24 if you count the second bank, which each can have their own MIDI CC edited and saved in different presets. That's cool and all. 12 isn't enough for me. So being able to have presets, again cool, still not right. Editing the individual knobs, in the individual banks, in each individual patch, in addition to then having to switching between patches, every time I want to quickly access different parts of a VST...it didn't really help make my attempts to be creative any less tedious, yeah. So!

I didn't see too much info on this topic when my searching began, so made my own solution; I did use metastatik's cool toggling rule and went over all his other tutorials including the Launchpad Matrix though, so props to him for bringing me up to speed :)

One of the solutions I thought out was to make shift buttons to solve the problem, using my controller's bottom 3 drum pads on it's Pad Bank B, to expand the amount of available knobs I had access to totaling 72, I did it using this:

3 Translators receiving from each of the drum pads Program Changes, with an outgoing mouse movement as a sort of indicator to know I've toggled the pads, with each pad setting a variable to on or off accordingly upon being struck in essence "opening the faucet" in the example below, in addition to toggling off any other pad that might be active:

Code: Select all

Translator 1: Pad 0
Options: stop=false
Incoming: MIDI C0 00
Rules: 
  g0=1-g0
  g1=0
  g2=0
Outgoing: Mouse move to X=640 Y=512

Code: Select all

Translator 2: Pad 1
Options: stop=false
Incoming: MIDI C0 01
Rules: 
  g1=1-g1
  g0=0
  g2=0
Outgoing: Mouse move to X=640 Y=512

Code: Select all

Translator 3: Pad 2
Options: stop=false
Incoming: MIDI C0 02
Rules: 
  g2=1-g2
  g0=0
  g1=0
Outgoing: Mouse move to X=640 Y=512
4 Translators, the first 3 translating the MIDI on Channel 16A, to Midi Channels 15A 14A and 13A respectively, and here's where it gets messy, each simultaneously receiving the knobs' 16A input MIDI data, but only outputting MIDI data when the variable is toggled on by hitting the pad translators above-

So if you can imagine 4 water faucets water only coming to the faucets that are off when the knobs are turned, and that when the faucet is toggled by the drum pad only then will let that water come out. And in the 4th translator's case, that only allows water to come out when the knobs are turned, when all the other translators (faucets) are toggled off.

Code: Select all

Translator 4: 01 - Knob 0
Options: stop=false
Incoming: MIDI BF vv pp
Rules: 
  if g0==1 then exit rules, execute Outgoing Action
  if g0==0 then exit rules, skip Outgoing Action
Outgoing: MIDI BE vv pp

Code: Select all

Translator 5: 02 - Knob 1
Options: stop=false
Incoming: MIDI BF vv pp
Rules: 
  if g1==1 then exit rules, execute Outgoing Action
  if g1==0 then exit rules, skip Outgoing Action
Outgoing: MIDI BD vv pp

Code: Select all

Translator 6: 03 - Knob 2
Options: stop=false
Incoming: MIDI BF vv pp
Rules: 
  if g2==1 then exit rules, execute Outgoing Action
  if g2==0 then exit rules, skip Outgoing Action
Outgoing: MIDI BC vv pp

Code: Select all

Translator 7: Knobs Passthrough
Options: stop=false
Incoming: MIDI BF vv pp
Rules: 
  g8=g1+g2
  g9=g0+g8
  if g9==0 then exit rules, execute Outgoing Action
  if g9==1 then exit rules, skip Outgoing Action
Outgoing: MIDI BF vv pp
Hope this helps, and any comments or ideas to expand/redesign this would be awesome-

Thanks!

logite

2014-01-27 11:58:51

Just got done with this beast...will update tomorrow

update:

Will explain tomorrow! New code woohoo

Code: Select all

Preset 3: Shifts

Translator 3.0: Button 1
Options: stop=false
Incoming: MIDI B8 vv pp
Rules: 
  if vv==26 then Goto "1"
  if vv==27 then Goto "2"
  if vv==28 then Goto "3"
  if vv==29 then Goto "4"
  Label "1"
  if pp==0 then g1=0
  if pp==127 then g1=1
  Goto "exit"
  Label "2"
  if pp==0 then g2=0
  if pp==127 then g2=1
  Goto "exit"
  Label "3"
  if pp==0 then g3=0
  if pp==127 then g3=1
  Goto "exit"
  Label "4"
  if pp==0 then g4=0
  if pp==127 then g4=1
  Goto "exit"
  Label "exit"
  ga=g1+g2
  gd=g3+g4
  gb=ga+g3
  gc=ga+gd
Outgoing: (none)

Translator 3.1: Knob Passthrough
Options: stop=false
Incoming: MIDI BF vv pp
Rules: 
  if gc!=0 then exit rules, skip Outgoing Action
  exit rules, execute Outgoing Action
Outgoing: MIDI B6 vv pp

Translator 3.2: Shift 1
Options: stop=false
Incoming: MIDI BF vv pp
Rules: 
  if g1!=1 then Goto "Skip"
  if gc!=1 then Goto "Skip"
  vv=88+vv
  exit rules, execute Outgoing Action
  Label "Skip"
  exit rules, skip Outgoing Action
Outgoing: MIDI B6 vv pp

Translator 3.3: Shift 2
Options: stop=false
Incoming: MIDI BF vv pp
Rules: 
  if g2!=1 then Goto "Skip"
  if gc!=1 then Goto "Skip"
  exit rules, execute Outgoing Action
  Label "Skip"
  exit rules, skip Outgoing Action
Outgoing: MIDI B7 vv pp

Translator 3.4: Shift 3
Options: stop=false
Incoming: MIDI BF vv pp
Rules: 
  if g3!=1 then Goto "Skip"
  if gc!=1 then Goto "Skip"
  vv=88+vv
  exit rules, execute Outgoing Action
  Label "Skip"
  exit rules, skip Outgoing Action
Outgoing: MIDI B7 vv pp

Translator 3.5: Shift 4
Options: stop=false
Incoming: MIDI BF vv pp
Rules: 
  if g4!=1 then Goto "Skip"
  if gc!=1 then Goto "Skip"
  exit rules, execute Outgoing Action
  Label "Skip"
  exit rules, skip Outgoing Action
Outgoing: MIDI B9 vv pp

Translator 3.6: Shift 1+2
Options: stop=false
Incoming: MIDI BF vv pp
Rules: 
  if ga!=2 then Goto "Skip"
  if gc!=2 then Goto "Skip"
  vv=88+vv
  exit rules, execute Outgoing Action
  Label "Skip"
  exit rules, skip Outgoing Action
Outgoing: MIDI B9 vv pp

Translator 3.7: Shift 1+2+3
Options: stop=false
Incoming: MIDI BF vv pp
Rules: 
  if gb!=3 then Goto "Skip"
  if gc!=3 then Goto "Skip"
  exit rules, execute Outgoing Action
  Label "Skip"
  exit rules, skip Outgoing Action
Outgoing: MIDI BA vv pp

Translator 3.8: Shift 1+2+3+4
Options: stop=false
Incoming: MIDI BF vv pp
Rules: 
  if gc!=4 then Goto "Skip"
  vv=88+vv
  exit rules, execute Outgoing Action
  Label "Skip"
  exit rules, skip Outgoing Action
Outgoing: MIDI BA vv pp
OUTDATED:

Code: Select all

Preset 3: Shifts

Translator 3.0: Button 1
Options: stop=false
Incoming: MIDI B8 vv pp
Rules: 
  if vv==26 then Goto "1"
  if vv==27 then Goto "2"
  if vv==28 then Goto "3"
  if vv==29 then Goto "4"
  Label "1"
  if pp==0 then g1=0
  if pp==127 then g1=1
  Goto "exit"
  Label "2"
  if pp==0 then g2=0
  if pp==127 then g2=1
  Goto "exit"
  Label "3"
  if pp==0 then g3=0
  if pp==127 then g3=1
  Goto "exit"
  Label "4"
  if pp==0 then g4=0
  if pp==127 then g4=1
  Goto "exit"
  Label "exit"
  g5=g1+g2
  g6=g3+ga
  g7=g3+g4
  ga=g2+g3
  gb=ga+g1
Outgoing: (none)

Translator 3.1: Shift 1
Options: stop=false
Incoming: MIDI BF vv pp
Rules: 
  if g1==0 then exit rules, skip Outgoing Action
  if g2==1 then exit rules, skip Outgoing Action
  if g3==1 then exit rules, skip Outgoing Action
  if g4==1 then exit rules, skip Outgoing Action
  if g5==2 then exit rules, skip Outgoing Action
  if g6==2 then exit rules, skip Outgoing Action
  if g7==2 then exit rules, skip Outgoing Action
  vv=88+vv
  if g1==1 then exit rules, execute Outgoing Action
Outgoing: MIDI B6 vv pp

Translator 3.2: Shift 2
Options: stop=false
Incoming: MIDI BF vv pp
Rules: 
  if g1==1 then exit rules, skip Outgoing Action
  if g2==0 then exit rules, skip Outgoing Action
  if g3==1 then exit rules, skip Outgoing Action
  if g4==1 then exit rules, skip Outgoing Action
  if g5==2 then exit rules, skip Outgoing Action
  if g6==2 then exit rules, skip Outgoing Action
  if g7==2 then exit rules, skip Outgoing Action
  vv=88+vv
  if g2==1 then exit rules, execute Outgoing Action
Outgoing: MIDI B7 vv pp

Translator 3.3: Shift 3
Options: stop=false
Incoming: MIDI BF vv pp
Rules: 
  if g1==1 then exit rules, skip Outgoing Action
  if g2==1 then exit rules, skip Outgoing Action
  if g3==0 then exit rules, skip Outgoing Action
  if g4==1 then exit rules, skip Outgoing Action
  if g5==2 then exit rules, skip Outgoing Action
  if g6==3 then exit rules, skip Outgoing Action
  if g7==2 then exit rules, skip Outgoing Action
  vv=88+vv
  if g3==1 then exit rules, execute Outgoing Action
Outgoing: MIDI B8 vv pp

Translator 3.4: Shift 4
Options: stop=false
Incoming: MIDI BF vv pp
Rules: 
  if g1==1 then exit rules, skip Outgoing Action
  if g2==1 then exit rules, skip Outgoing Action
  if g3==1 then exit rules, skip Outgoing Action
  if g4==0 then exit rules, skip Outgoing Action
  if g5==2 then exit rules, skip Outgoing Action
  if g6==2 then exit rules, skip Outgoing Action
  if g7==2 then exit rules, skip Outgoing Action
  vv=88+vv
  if g4==1 then exit rules, execute Outgoing Action
Outgoing: MIDI B9 vv pp

Translator 3.5: Shift 1+2
Options: stop=false
Incoming: MIDI BF vv pp
Rules: 
  g5=g1+g2
  if g3==1 then exit rules, skip Outgoing Action
  if g4==1 then exit rules, skip Outgoing Action
  if g5<2 then exit rules, skip Outgoing Action
  vv=88+vv
  if g5==2 then exit rules, execute Outgoing Action
Outgoing: MIDI BA vv pp

Translator 3.6: Shift 1+2+3
Options: stop=false
Incoming: MIDI BF vv pp
Rules: 
  ga=g2+g3
  g6=g3+ga
  if g4==1 then exit rules, skip Outgoing Action
  if g6<3 then exit rules, skip Outgoing Action
  vv=88+vv
  if g6==2 then exit rules, execute Outgoing Action
Outgoing: MIDI BB vv pp

Translator 3.7: Shift 1+2+3+4
Options: stop=false
Incoming: MIDI BF vv pp
Rules: 
  gb=ga+g1
  g7=g3+g4
  if g5==1 then exit rules, skip Outgoing Action
  if g7<2 then exit rules, skip Outgoing Action
  vv=88+vv
  if g7==2 then exit rules, execute Outgoing Action
Outgoing: MIDI BC vv pp

Translator 3.8: Knob Passthrough
Options: stop=false
Incoming: MIDI BF vv pp
Rules: 
  g5=g1+g2
  g6=g3+ga
  g7=g3+g4
  ga=g2+g3
  gb=ga+g1
  if g1>0 then exit rules, skip Outgoing Action
  if g2>0 then exit rules, skip Outgoing Action
  if g3>0 then exit rules, skip Outgoing Action
  if g4>0 then exit rules, skip Outgoing Action
  if g5>0 then exit rules, skip Outgoing Action
  if g6>0 then exit rules, skip Outgoing Action
  if g7>0 then exit rules, skip Outgoing Action
  if ga>0 then exit rules, skip Outgoing Action
  if gb>0 then exit rules, skip Outgoing Action
Outgoing: MIDI BF vv pp