Hello, I have a SL73 mk2 keyboard, I would like to create a hack to remap the knob A which send CC7 on chan1 value 0-12a7 to sending relative CC value to cubase. In cubase the knob need to be set to Relative Twos Complement in order to do what I want.
The issue is when reaching 127, I can still physically move the knob and it keeps sending 127 and same thing when it reach 0. Is there a crazy workaround I can do ?
My second question is can I remap in the same way the main encoder of my keyboard, which only send CC100 on chan1 but when the keyboard reach program100, It doesn’t send anything (I assume the answer for this is no)
Translator 0.0 handles the conversion by comparing the last known absolute value of your encoder (in global variable “ga”) to the new value and will send either 127 for left movement)or 1 for right movement. When it reaches each end it continues to send 1 for right movement or 127 for left movement.
Translator 0.1 does the same but if the values are equal, it sends nothing. I used CC8 in this example. I use the global variable gc for the last known value.
In addition, I added translator 0.2 which simply toggles the value of global variable “gb”. If translator sees this value of other than 0, then it allows your to recenter your fader without sending anything. I use note 8 to toggle the value of gb.
Hello, I tried to refine your translator to make it work, I arrived at this (yours was working only when my knob sent 60 to 65 approx)
// qq = incoming absolute value
// ta = last absolute value
rr=qq-ta
// ignore no movement
if rr==0 then exit rules, skip Outgoing Action
// keep direction only
if rr>0 then rr=1
if rr<0 then rr=-1
// invert if needed
rr=rr*-1
// rate limit: one step per message
ts=64+rr
ta=qq
Log ‘dir=%rr% out=%ts%’
I replaced all “g” in the global variables by “t”
So I could make it work but my only issue is that the values in cubase moves from minimum to maximum ultra fast when moving the knob + they seems to be moving by burst instead of linearly but that’s hard to say since it’s so fast
the knob in cubase is set to Relative Two Complement because I want the knob to move the pre-gain filter volume knob from whatever position it is
This is what my midi monitor register being sent to cubase (this log is only clockwise movement)
Please open the log window within Bome MIDI Translator Pro and check the boxes, Incoming, Outgoing, MIDI IN and MIDI out and move your CC1 knob right and then left. Then paste the results in a posting so I can take a look.
1: MIDI INPUT “SL CTRL” now successfully opened.
2: MIDI IN [SL CTRL]: B0 07 65
3: IN 0.0 Control Change on ch. 1 with CC#:7 (0x07) and any value set “qq” to value=101
4: 0.0:21 dir=-1 out=63
5: MIDI OUT [Bome MIDI Translator 1 Virtual Out]: B0 07 3F
6: OUT 0.0 Control Change on ch. 1 with CC#:7 (0x07) and value:ts=63
7: MIDI IN [SL CTRL]: B0 07 65
8: IN 0.0 Control Change on ch. 1 with CC#:7 (0x07) and any value set “qq” to value=101
9: MIDI IN [SL CTRL]: B0 07 66
10: IN 0.0 Control Change on ch. 1 with CC#:7 (0x07) and any value set “qq” to value=102
11: 0.0:21 dir=-1 out=63
12: MIDI OUT [Bome MIDI Translator 1 Virtual Out]: B0 07 3F
13: OUT 0.0 Control Change on ch. 1 with CC#:7 (0x07) and value:ts=63
14: MIDI IN [SL CTRL]: B0 07 66
15: IN 0.0 Control Change on ch. 1 with CC#:7 (0x07) and any value set “qq” to value=102
16: MIDI IN [SL CTRL]: B0 07 67
17: IN 0.0 Control Change on ch. 1 with CC#:7 (0x07) and any value set “qq” to value=103
18: 0.0:21 dir=-1 out=63
19: MIDI OUT [Bome MIDI Translator 1 Virtual Out]: B0 07 3F
20: OUT 0.0 Control Change on ch. 1 with CC#:7 (0x07) and value:ts=63
21: MIDI IN [SL CTRL]: B0 07 67
22: IN 0.0 Control Change on ch. 1 with CC#:7 (0x07) and any value set “qq” to value=103
23: MIDI IN [SL CTRL]: B0 07 68
24: IN 0.0 Control Change on ch. 1 with CC#:7 (0x07) and any value set “qq” to value=104
25: 0.0:21 dir=-1 out=63
26: MIDI OUT [Bome MIDI Translator 1 Virtual Out]: B0 07 3F
27: OUT 0.0 Control Change on ch. 1 with CC#:7 (0x07) and value:ts=63
28: MIDI IN [SL CTRL]: B0 07 68
29: IN 0.0 Control Change on ch. 1 with CC#:7 (0x07) and any value set “qq” to value=104
30: MIDI IN [SL CTRL]: B0 07 69
31: IN 0.0 Control Change on ch. 1 with CC#:7 (0x07) and any value set “qq” to value=105
32: 0.0:21 dir=-1 out=63
33: MIDI OUT [Bome MIDI Translator 1 Virtual Out]: B0 07 3F
34: OUT 0.0 Control Change on ch. 1 with CC#:7 (0x07) and value:ts=63
35: MIDI IN [SL CTRL]: B0 07 69
36: IN 0.0 Control Change on ch. 1 with CC#:7 (0x07) and any value set “qq” to value=105
37: MIDI IN [SL CTRL]: B0 07 6A
38: IN 0.0 Control Change on ch. 1 with CC#:7 (0x07) and any value set “qq” to value=106
39: 0.0:21 dir=-1 out=63
40: MIDI OUT [Bome MIDI Translator 1 Virtual Out]: B0 07 3F
41: OUT 0.0 Control Change on ch. 1 with CC#:7 (0x07) and value:ts=63
42: MIDI IN [SL CTRL]: B0 07 6A
43: IN 0.0 Control Change on ch. 1 with CC#:7 (0x07) and any value set “qq” to value=106
44: MIDI IN [SL CTRL]: B0 07 69
45: IN 0.0 Control Change on ch. 1 with CC#:7 (0x07) and any value set “qq” to value=105
46: 0.0:21 dir=1 out=65
47: MIDI OUT [Bome MIDI Translator 1 Virtual Out]: B0 07 41
48: OUT 0.0 Control Change on ch. 1 with CC#:7 (0x07) and value:ts=65
49: MIDI IN [SL CTRL]: B0 07 69
50: IN 0.0 Control Change on ch. 1 with CC#:7 (0x07) and any value set “qq” to value=105
51: MIDI IN [SL CTRL]: B0 07 68
52: IN 0.0 Control Change on ch. 1 with CC#:7 (0x07) and any value set “qq” to value=104
53: 0.0:21 dir=1 out=65
54: MIDI OUT [Bome MIDI Translator 1 Virtual Out]: B0 07 41
55: OUT 0.0 Control Change on ch. 1 with CC#:7 (0x07) and value:ts=65
56: MIDI IN [SL CTRL]: B0 07 68
57: IN 0.0 Control Change on ch. 1 with CC#:7 (0x07) and any value set “qq” to value=104
58: MIDI IN [SL CTRL]: B0 07 67
59: IN 0.0 Control Change on ch. 1 with CC#:7 (0x07) and any value set “qq” to value=103
60: 0.0:21 dir=1 out=65
61: MIDI OUT [Bome MIDI Translator 1 Virtual Out]: B0 07 41
62: OUT 0.0 Control Change on ch. 1 with CC#:7 (0x07) and value:ts=65
63: MIDI IN [SL CTRL]: B0 07 67
64: IN 0.0 Control Change on ch. 1 with CC#:7 (0x07) and any value set “qq” to value=103
65: MIDI IN [SL CTRL]: B0 07 66
66: IN 0.0 Control Change on ch. 1 with CC#:7 (0x07) and any value set “qq” to value=102
67: 0.0:21 dir=1 out=65
68: MIDI OUT [Bome MIDI Translator 1 Virtual Out]: B0 07 41
69: OUT 0.0 Control Change on ch. 1 with CC#:7 (0x07) and value:ts=65
70: MIDI IN [SL CTRL]: B0 07 66
71: IN 0.0 Control Change on ch. 1 with CC#:7 (0x07) and any value set “qq” to value=102
72: MIDI IN [SL CTRL]: B0 07 65
73: IN 0.0 Control Change on ch. 1 with CC#:7 (0x07) and any value set “qq” to value=101
74: 0.0:21 dir=1 out=65
75: MIDI OUT [Bome MIDI Translator 1 Virtual Out]: B0 07 41
76: OUT 0.0 Control Change on ch. 1 with CC#:7 (0x07) and value:ts=65
77: MIDI IN [SL CTRL]: B0 07 65
78: IN 0.0 Control Change on ch. 1 with CC#:7 (0x07) and any value set “qq” to value=101
79: MIDI IN [SL CTRL]: B0 07 64
80: IN 0.0 Control Change on ch. 1 with CC#:7 (0x07) and any value set “qq” to value=100
81: 0.0:21 dir=1 out=65
82: MIDI OUT [Bome MIDI Translator 1 Virtual Out]: B0 07 41
83: OUT 0.0 Control Change on ch. 1 with CC#:7 (0x07) and value:ts=65
84: MIDI IN [SL CTRL]: B0 07 64
85: IN 0.0 Control Change on ch. 1 with CC#:7 (0x07) and any value set “qq” to value=100
this is the current translator 1
this is the current translator 1
// qq = incoming absolute value
// ta = last absolute value
rr=qq-ta
// ignore no movement
if rr==0 then exit rules, skip Outgoing Action
// keep direction only
if rr>0 then rr=1
if rr<0 then rr=-1
I have tested the tutorial project from the video you linked, in fact it works way better, but when my hardware knob reaches the minimum or the maximum, it keeps sending 0 or 127, and this is where the translator break. Since it’s not a fader but a knob, I cannot use the “center” feature, because I’d need to be turning the knob for 10 seconds before it goes back to the middle
1: MIDI IN [SL CTRL]: B0 07 00
2: IN 0.1 Control Change on ch. 1 with CC#:7 (0x07) and any value set “pp” to value=0
3: OUT 0.1 Timer qq times ‘Fader 1’: 0 ms (initial delay: 0 ms)
4: MIDI IN [SL CTRL]: B0 07 00
5: IN 0.1 Control Change on ch. 1 with CC#:7 (0x07) and any value set “pp” to value=0
6: OUT 0.1 Timer qq times ‘Fader 1’: 0 ms (initial delay: 0 ms)
7: MIDI IN [SL CTRL]: B0 07 00
8: IN 0.1 Control Change on ch. 1 with CC#:7 (0x07) and any value set “pp” to value=0
9: OUT 0.1 Timer qq times ‘Fader 1’: 0 ms (initial delay: 0 ms)
10: MIDI IN [SL CTRL]: B0 07 00
11: IN 0.1 Control Change on ch. 1 with CC#:7 (0x07) and any value set “pp” to value=0
12: OUT 0.1 Timer qq times ‘Fader 1’: 0 ms (initial delay: 0 ms)
13: MIDI IN [SL CTRL]: B0 07 00
14: IN 0.1 Control Change on ch. 1 with CC#:7 (0x07) and any value set “pp” to value=0
15: OUT 0.1 Timer qq times ‘Fader 1’: 0 ms (initial delay: 0 ms)
16: MIDI IN [SL CTRL]: B0 07 00
17: IN 0.1 Control Change on ch. 1 with CC#:7 (0x07) and any value set “pp” to value=0
18: OUT 0.1 Timer qq times ‘Fader 1’: 0 ms (initial delay: 0 ms)
19: MIDI IN [SL CTRL]: B0 07 00
20: IN 0.1 Control Change on ch. 1 with CC#:7 (0x07) and any value set “pp” to value=0
21: OUT 0.1 Timer qq times ‘Fader 1’: 0 ms (initial delay: 0 ms)
22: MIDI IN [SL CTRL]: B0 07 00
23: IN 0.1 Control Change on ch. 1 with CC#:7 (0x07) and any value set “pp” to value=0
24: OUT 0.1 Timer qq times ‘Fader 1’: 0 ms (initial delay: 0 ms)
Translator 1: Input movement
incoming CC7, stored as pp
rules :
// Disable output so you can center encoder
if gb==1 then exit rules, skip Outgoing Action
// Determine Count
qq=pp-ga
// Down
if qq<0 then gc=127
// Up
if qq>0 then gc=1
// Fix counter to positive
if qq<0 then qq=qq*-1
outgoing : timer 1
—
Translator 2 : Output
Incoming : Timer Fader 1
rules :
// Edge mode: do NOT move virtual position
if gd==1 then exit rules, execute Outgoing Action
// Normal mode
if gc==127 then ga=ga-1
if gc==1 then ga=ga+1
If it works for you, then that is OK. I cannot really comment because the initial solution I gave should have worked if you described what you wanted correctly. You never posted the log as I suggested (only the end points).
I don’t think there is a need for a timer here although maybe I used one in the tutorial I pointed you to.
Steve Caldwell
Bome Customer Care
Also available for paid consulting services: bome@sniz.biz