holding MIDI note on to change fader controller #?

stoecklem

2007-03-12 23:35:15

I was wondering if it is possible with MT pro to change the controller number of a fader by pressing and holding down a note message.

I have a Peavey PC 1600 with buttons underneath each fader and I would like to be able to effectively use the same fader for two different things, one being triggered only when the note on is pressed.

Is there anyway to get this behavior somehow. changing a MIDI command with a rule?

any ideas would be appreciated.
I'll let you know if I figure something out.

thanks

florian

2007-03-13 10:08:21

Hi,

this is actually quite simple with MT Pro: just define a "flag" variable: while the note button is pressed, the flag variable is 1, otherwise it's 0 (the default). Now when you move the fader, a rule checks the flag. If it is 1, then the local variable with the controller number is changed to the alternate controller number.

Here is an example:

Code: Select all

Translator 1: Note press (release)
Options: stop=true
Incoming: MIDI 90 48 pp 
Rules: 
  ga=1
  if pp==0 then ga=0
Outgoing: (none)

Translator 2: Note Off message
Options: stop=true
Incoming: MIDI 80 48 pp 
Rules: 
  ga=0
Outgoing: (none)

Translator 3: Map Controller 18
Options: stop=true
Incoming: MIDI B0 12 qq 
Rules: 
  pp=18
  if ga>=1 then pp=20
Outgoing: MIDI B0 pp qq
This example uses Note 0x48 (hex) as the "Shift" note. The first translator entry is triggered by this note. It sets the flag variable ga to 1. If the velocity parameter of the note on message is 0, it actually means Note Off, so the flag is cleared then. Just for the case that your device sends actual Note Off message (with status 0x80), the second translator entry will clear the flag upon this message.
The third Translator entry is triggered by the fader controller, in the example fader 0x12, which is 18 decimal. A local variable pp is set to the default mapped controller (18, but you can set it to any other number, too), and then the rules examine the ga flag: if it is 1, then pp is changed to the alternative controller number, in the example 20. The Outgoing Action then sends the patched MIDI message with pp as controller number and the original value qq from the incoming action.

Numerous variations of this can be thought of, e.g. you could use the flag as a number to be added to all faders. Then you could formulate Translator 3 as incoming trigger "B0 pp qq" and the rules would just add the flag to the controller number: "pp = pp + ga". Like this you'd have a universal way to use the note as a shift for all controllers at once.

Let us know how it works!
Florian

stoecklem

2007-03-13 15:47:19

Hi

This works great to change the MIDI message and then send it out the MIDI port.

But I am having trouble using the changed message inside Bomes MIDI translator. I would like to be able to use the alternate controller to trigger keystrokes. Are the outputs of translators available to the next translators input? When I capture MIDI I only get the original controller on the next translator(when I press my button).

I could easily route MIDI out and back in to MIDI translator, but am I just missing something?

I appreciate your help. I just purchased the beta version last week and am just learning my way around.

thanks

florian

2007-03-13 18:41:25

great to hear it's working!

In the General tab, clear the "Stop Processing" checkbox, then you can add translators with the same incoming Trigger and they will be executed, too.

Florian

stoecklem

2007-03-13 21:24:33

I don't want it to have the same incoming trigger, but one translator triggered by the output of the previous.

I have tried clearing the stop processing. I still can't seem to get a translator to use the output as the MIDI input to the next translator.

When I capture incoming MIDI on the next translator, I would like it to capture the changed controller when I press the button. It still will only capture the original controller number, even though it is sending out the changed controller through the MIDI out.
I'll let you know if I figure it out.
thanks

florian

2007-03-14 15:53:36

MT does not allow feeding its output back to its input internally. I still don't understand why you want to do that. maybe you could write down here how you'd want those translators to look like?

Florian

stoecklem

2007-03-15 03:38:45

I would like to trigger keystrokes with the original MIDI message as well as different keystrokes with the changed MIDI message(which is triggered by pressing the button and moving the same fader)

Oh well, I suspected it wasn't supported, I'll have to do some MIDI routing/merging to get it to work

I do think that this would make MT more powerful for processing MIDI into keystrokes

too make things clearer , I want to access the changed and original message to send two keystrokes, one upon fader increase and one upon fader decrease (using a technique learned on this forum of sending one keystroke when I move the fader up and another when I move the fader down) but I want to use this technique with controller 17 as the input.
http://www.bome.com/forums/viewtopic.php?t=557

{translator 1:(to use the button as a trigger)
incoming: 90 3C pp
rules:ga=1, if pp==0 then ga=0
outgoing: none

translator 2:
incoming:80 3C pp
rules: ga=0
outgoing:none}


translator 3
incoming:B0 01 qq
rules:pp=1, if ga>=1 then pp=17(changing it to controller 17 when I press the note on)
outgoing:BO pp qq

Now I can then use the original controller number (1) to trigger the fader up and down keystrokes translators. but not controller 17.

florian

2007-03-20 20:30:40

Hi,

but you can just add another translator with this scheme:

translator 4
incoming:B0 01 qq
rules: if ga>=1 then Exit Rules, skip this Outgoing Action
outgoing: [your keypress for controller 01]

translator 5
incoming:B0 01 qq
rules: if ga=0 then Exit Rules, skip this Outgoing Action
outgoing: [your keypress for controller 17]

Make sure that the Translators have unchecked "stop processing" flags.

Does that make sense?

Florian

chris_dan

2007-03-22 23:14:55

stoecklem wrote:I would like to trigger keystrokes with the original MIDI message as well as different keystrokes with the changed MIDI message(which is triggered by pressing the button and moving the same fader)
Hi stoecklem,

If I understand your issue it sounds like you want to assign multiple tasks to a single fader and then have a single button to scroll through the multiple tasks that have been assigned to the fader. If this is correct or if I'm out in left field either way the following routine may be of some help.

I just recently picked up a FCB1010 controller so I've been experimenting by configuring different devices for the FCB1010 to control using MTpro.

The mtpro script (.bmtp) below allows control of all track parameters in Ableton Live6 and does it with one fader (0-127) and one button capable of sending note on/off messages. The cc message can be any defined controller message for that matter. Pressing the button advances through the available tracks. The fader is configured to control the volume of whatever track you stop at. In the script below I also added a button that allows for previous track selection. Two additional buttons allow up and down cursor movement, another button for toggle screen view and the last button will simulate an "enter" keypad press. Any DAW package that complies with midi remote control can be sub'd for Ableton Live.

The idea came from your initial post and I used the sample code that Florian suggested to capture the fader position. The script should work as described in a one fader, one button scenario. I only added the other buttons for testing purposes. I read the manual for the PC-1600 and it's got some nice midi features like the midi mode function.

If you can use the script great and if not it was worth the time investment for me.

Copy the following code and save it to your machine as a .bmtp file. Once opened in MTpro you should only have to configure your midi in/out ports and your off to the races.

Regards.
Chris

[Project]
Version=1
[Preset.0]
Name=track01
Active=1
Name0=Fader Position Trap
Incoming0=MID1B007pp
Outgoing0=None
Options0=Actv01Stop00OutO00StMa00000002gd=pp-gvgv=pp
Name1=Exp. Pedal A - Up
Incoming1=MID1B007pp
Outgoing1=MID1B007pp
Options1=Actv01Stop00OutO00StMa00000001if(gd<=0)noexecute
Name2=Exp. Pedal A - Dn
Incoming2=MID1B007pp
Outgoing2=MID1B007pp
Options2=Actv01Stop01OutO00StMa00000001if(gd>=0)noexecute
Name3=Switch to Preset 01
Incoming3=MID190187F
Outgoing3=MID190197F
Options3=Actv01Stop00OutO00
Name4=Switch to Preset 01
Incoming4=MID1901800
Outgoing4=Pres020007track02
Options4=Actv01Stop01OutO00
Name5=Switch to Preset 04
Incoming5=MID1903C7F
Outgoing5=MID1901C7F
Options5=Actv01Stop00OutO00
Name6=Switch to Preset 04
Incoming6=MID1903C00
Outgoing6=Pres020007track05
Options6=Actv01Stop01OutO00
Name7=Toggle View (Tab)
Incoming7=MID190637F
Outgoing7=KAM10100KSQ10002009209
Options7=Actv01Stop01OutO00
Name8=Cursor Up
Incoming8=MID190627F
Outgoing8=KAM10100KSQ10002126326
Options8=Actv01Stop01OutO00
Name9=Cursor Down
Incoming9=MID190617F
Outgoing9=KAM10100KSQ10002128328
Options9=Actv01Stop01OutO00
Name10=Return Key
Incoming10=MID190607F
Outgoing10=KAM10100KSQ1000200D20D
Options10=Actv01Stop01OutO00
[Preset.1]
Name=track02
Active=0
Name0=Fader Position Trap
Incoming0=MID1B007pp
Outgoing0=None
Options0=Actv01Stop00OutO00StMa00000002gd=pp-gvgv=pp
Name1=Exp. Pedal A - Up
Incoming1=MID1B007pp
Outgoing1=MID1B107pp
Options1=Actv01Stop00OutO00StMa00000001if(gd<=0)noexecute
Name2=Exp. Pedal A - Dn
Incoming2=MID1B007pp
Outgoing2=MID1B107pp
Options2=Actv01Stop01OutO00StMa00000001if(gd>=0)noexecute
Name3=Switch to Preset 02
Incoming3=MID190187F
Outgoing3=MID1901A7F
Options3=Actv01Stop00OutO00
Name4=Switch to Preset 02
Incoming4=MID1901800
Outgoing4=Pres020007track03
Options4=Actv01Stop01OutO00
Name5=Switch to Preset Main
Incoming5=MID1903C7F
Outgoing5=MID190187F
Options5=Actv01Stop00OutO00
Name6=Switch to Preset Main
Incoming6=MID1903C00
Outgoing6=Pres020007track01
Options6=Actv01Stop01OutO00
Name7=Toggle View (Tab)
Incoming7=MID190637F
Outgoing7=KAM10100KSQ10002009209
Options7=Actv01Stop01OutO00
Name8=Cursor Up
Incoming8=MID190627F
Outgoing8=KAM10100KSQ10002126326
Options8=Actv01Stop01OutO00
Name9=Cursor Down
Incoming9=MID190617F
Outgoing9=KAM10100KSQ10002128328
Options9=Actv01Stop01OutO00
Name10=Return Key
Incoming10=MID190607F
Outgoing10=KAM10100KSQ1000200D20D
Options10=Actv01Stop01OutO00
[Preset.2]
Name=track03
Active=0
Name0=Fader Position Trap
Incoming0=MID1B007pp
Outgoing0=None
Options0=Actv01Stop00OutO00StMa00000002gd=pp-gvgv=pp
Name1=Exp. Pedal A - Up
Incoming1=MID1B007pp
Outgoing1=MID1B207pp
Options1=Actv01Stop00OutO00StMa00000001if(gd<=0)noexecute
Name2=Exp. Pedal A - Dn
Incoming2=MID1B007pp
Outgoing2=MID1B207pp
Options2=Actv01Stop01OutO00StMa00000001if(gd>=0)noexecute
Name3=Switch to Preset 03
Incoming3=MID190187F
Outgoing3=MID1901B7F
Options3=Actv01Stop00OutO00
Name4=Switch to Preset 03
Incoming4=MID1901800
Outgoing4=Pres020007track04
Options4=Actv01Stop01OutO00
Name5=Switch to Preset 01
Incoming5=MID1903C7F
Outgoing5=MID190197F
Options5=Actv01Stop00OutO00
Name6=Switch to Preset 01
Incoming6=MID1903C00
Outgoing6=Pres020007track02
Options6=Actv01Stop01OutO00
Name7=Toggle View (Tab)
Incoming7=MID190637F
Outgoing7=KAM10100KSQ10002009209
Options7=Actv01Stop01OutO00
Name8=Cursor Up
Incoming8=MID190627F
Outgoing8=KAM10100KSQ10002126326
Options8=Actv01Stop01OutO00
Name9=Cursor Down
Incoming9=MID190617F
Outgoing9=KAM10100KSQ10002128328
Options9=Actv01Stop01OutO00
Name10=Return Key
Incoming10=MID190607F
Outgoing10=KAM10100KSQ1000200D20D
Options10=Actv01Stop01OutO00
[Preset.3]
Name=track04
Active=0
Name0=Fader Position Trap
Incoming0=MID1B007pp
Outgoing0=None
Options0=Actv01Stop00OutO00StMa00000002gd=pp-gvgv=pp
Name1=Exp. Pedal A - Up
Incoming1=MID1B007pp
Outgoing1=MID1B307pp
Options1=Actv01Stop00OutO00StMa00000001if(gd<=0)noexecute
Name2=Exp. Pedal A - Dn
Incoming2=MID1B007pp
Outgoing2=MID1B307pp
Options2=Actv01Stop01OutO00StMa00000001if(gd>=0)noexecute
Name3=Switch to Preset 04
Incoming3=MID190187F
Outgoing3=MID1901C7F
Options3=Actv01Stop00OutO00
Name4=Switch to Preset 04
Incoming4=MID1901800
Outgoing4=Pres020007track05
Options4=Actv01Stop01OutO00
Name5=Switch to Preset 02
Incoming5=MID1903C7F
Outgoing5=MID1901A7F
Options5=Actv01Stop00OutO00
Name6=Switch to Preset 02
Incoming6=MID1903C00
Outgoing6=Pres020007track03
Options6=Actv01Stop01OutO00
Name7=Toggle View (Tab)
Incoming7=MID190637F
Outgoing7=KAM10100KSQ10002009209
Options7=Actv01Stop01OutO00
Name8=Cursor Up
Incoming8=MID190627F
Outgoing8=KAM10100KSQ10002126326
Options8=Actv01Stop01OutO00
Name9=Cursor Down
Incoming9=MID190617F
Outgoing9=KAM10100KSQ10002128328
Options9=Actv01Stop01OutO00
Name10=Return Key
Incoming10=MID190607F
Outgoing10=KAM10100KSQ1000200D20D
Options10=Actv01Stop01OutO00
[Preset.4]
Name=track05
Active=0
Name0=Fader Position Trap
Incoming0=MID1B007pp
Outgoing0=None
Options0=Actv01Stop00OutO00StMa00000002gd=pp-gvgv=pp
Name1=Exp. Pedal A - Up
Incoming1=MID1B007pp
Outgoing1=MID1B407pp
Options1=Actv01Stop00OutO00StMa00000001if(gd<=0)noexecute
Name2=Exp. Pedal A - Dn
Incoming2=MID1B007pp
Outgoing2=MID1B407pp
Options2=Actv01Stop01OutO00StMa00000001if(gd>=0)noexecute
Name3=Switch to Preset Main
Incoming3=MID190187F
Outgoing3=MID190187F
Options3=Actv01Stop00OutO00
Name4=Switch to Preset Main
Incoming4=MID1901800
Outgoing4=Pres020007track01
Options4=Actv01Stop01OutO00
Name5=Switch to Preset 03
Incoming5=MID1903C7F
Outgoing5=MID1901B7F
Options5=Actv01Stop00OutO00
Name6=Switch to Preset 03
Incoming6=MID1903C00
Outgoing6=Pres020007track04
Options6=Actv01Stop01OutO00
Name7=Toggle View (Tab)
Incoming7=MID190637F
Outgoing7=KAM10100KSQ10002009209
Options7=Actv01Stop01OutO00
Name8=Cursor Up
Incoming8=MID190627F
Outgoing8=KAM10100KSQ10002126326
Options8=Actv01Stop01OutO00
Name9=Cursor Down
Incoming9=MID190617F
Outgoing9=KAM10100KSQ10002128328
Options9=Actv01Stop01OutO00
Name10=Return Key
Incoming10=MID190607F
Outgoing10=KAM10100KSQ1000200D20D
Options10=Actv01Stop01OutO00

fanboi

2009-01-15 22:53:11

florian wrote:.

Numerous variations of this can be thought of, e.g. you could use the flag as a number to be added to all faders. Then you could formulate Translator 3 as incoming trigger "B0 pp qq" and the rules would just add the flag to the controller number: "pp = pp + ga". Like this you'd have a universal way to use the note as a shift for all controllers at once.

Let us know how it works!
Florian
wow florian, you have no idea just exactly how useable this is for me right now. you just saved me a big big big load of headache :D