Hi , there i m trying to use my machine Studio Jog Wheel as a shuttle controler in pro tools. The wheel can be set as mcu Wheel in the native instrument controller editor
Do i need to gr trhu the Hui SF emulation ?
i dont know how to code Java, but with some guidance i could maybe go trough someting like controllermate to transform midi if needed..
Kind of lost here i confess..
- Christian Scheuer @chrscheuer2020-09-25 20:33:05.471Z
Hi Lucas,
I think this is possible, however it may be complicated enough that I should provide a template for it if you're not comfortable with Javascript.
Do you have a way to monitor the MIDI that's coming from your Jog Wheel? This would help us help you make this work :)
- In reply toLucas_Frisch⬆:Chris Shaw @Chris_Shaw2020-09-25 21:26:30.956Z
I would also recommend migrating away from ControllerMate to SF as soon as possible. It is no longer supported and I think won't work with Catalina onward. I've been able to migrate almost everything I used ControllerMate for to SF with the exception of some MIDI commands (I haven't had the time to do so yet).
- LIn reply toLucas_Frisch⬆:Lucas Frisch @Lucas_Frisch
Hi Christian ,
Thanks a lot for your help..
So i found an app called midi Monitor that does exacty that.. pretty neat..
So the wheel can be set in variuos mode on the maschine controler editor:Note(relative)
Control Change
poly pressure
Channel Pressure
Programme Change
Song poistion
MCU Wheelin song position we have this going right :
19:21:37.753 From Maschine Studio Virtual Input Song Position Pointer 122 1
19:21:37.817 From Maschine Studio Virtual Input Song Position Pointer 123 1
19:21:37.870 From Maschine Studio Virtual Input Song Position Pointer 124 1
19:21:37.955 From Maschine Studio Virtual Input Song Position Pointer 125 1
19:21:38.041 From Maschine Studio Virtual Input Song Position Pointer 126 1
19:21:38.137 From Maschine Studio Virtual Input Song Position Pointer 127 1
19:21:38.233 From Maschine Studio Virtual Input Song Position Pointer 0 2
19:21:38.307 From Maschine Studio Virtual Input Song Position Pointer 1 2and this going left.
19:28:17.468 From Maschine Studio Virtual Input Song Position Pointer 4 2
19:28:17.713 From Maschine Studio Virtual Input Song Position Pointer 3 2
19:28:17.873 From Maschine Studio Virtual Input Song Position Pointer 2 2
19:28:17.969 From Maschine Studio Virtual Input Song Position Pointer 1 2
19:28:18.033 From Maschine Studio Virtual Input Song Position Pointer 0 2
19:28:18.290 From Maschine Studio Virtual Input Song Position Pointer 127 1
19:28:18.642 From Maschine Studio Virtual Input Song Position Pointer 126 1
19:28:18.706 From Maschine Studio Virtual Input Song Position Pointer 125 1MCU wheel mode ;
going right:19:29:03.543 From Maschine Studio Virtual Input Control 1 Controller 60 1
19:29:03.692 From Maschine Studio Virtual Input Control 1 Controller 60 1
19:29:03.980 From Maschine Studio Virtual Input Control 1 Controller 60 1
19:29:04.129 From Maschine Studio Virtual Input Control 1 Controller 60 1
19:29:04.225 From Maschine Studio Virtual Input Control 1 Controller 60 1
going left:
19:29:24.548 From Maschine Studio Virtual Input Control 1 Controller 60 65
19:29:24.601 From Maschine Studio Virtual Input Control 1 Controller 60 65
19:29:24.879 From Maschine Studio Virtual Input Control 1 Controller 60 65
19:29:25.028 From Maschine Studio Virtual Input Control 1 Controller 60 65
19:29:25.081 From Maschine Studio Virtual Input Control 1 Controller 60 65
19:29:25.220 From Maschine Studio Virtual Input Control 1 Controller 60 65I can log other mode if needed of course..
Christian Scheuer @chrscheuer2020-09-28 10:43:28.397Z
Great work!
Okay, so I'd choose the MCU Wheel mode.
Then, the next step is to make sure SoundFlow understands this properly.The following script should say "Right" when you move it right (clockwise), and "Left" when you move it left (counter-clockwise).
let [m0, m1, m2] = event.trigger.midiBytes; if (m0 === 0xB0 && m1 === 60) { if (m2 > 64) { log('Right'); } else if (m2 < 64) { log('Left'); } }
You'd need to add a MIDI Trigger and choose the proper device.
Since I'm doing the filtering in the script, you should be able to just have All Channels and All Events selected, like here:
- LLucas Frisch @Lucas_Frisch
Hey Chris,
Thanks a lot ,
we got this working : left and right were in the wrong way but i did thislet [m0, m1, m2] = event.trigger.midiBytes; if (m0 === 0xB0 && m1 === 60) { if (m2 < 64) { log('Right'); } else if (m2 > 64) { log('Left'); }
and everything fine! And i just did my first java editing!! yay!!
How do i make code in grey background in the forum? sorry tried all bracket i found....
Christian Scheuer @chrscheuer2020-09-28 12:49:32.646Z
Great!
How do i make code in grey background in the forum? sorry tried all bracket i found....
Put a line containing just three back ticks
```
on a line before and after your code :)Alright, then the following may work:
let [m0, m1, m2] = event.trigger.midiBytes; if (m0 === 0xB0 && m1 === 60) { if (m2 < 64) { if (globalState.forwarding) { clearTimeout(globalState.forwarding); } else { sf.midi.huiSend({ midiBytes: [ 0xb0, 0x0f, 0x0e, 0xb0, 0x2f, 0x42, ] }); } globalState.forwarding = setTimeout(() => { sf.midi.huiSend({ midiBytes: [ 0xb0, 0x0f, 0x0e, 0xb0, 0x2f, 0x02 ] }); globalState.forwarding = null; }, 50); } else if (m2 > 64) { if (globalState.forwarding) { clearTimeout(globalState.forwarding); } else { sf.midi.huiSend({ midiBytes: [ 0xb0, 0x0f, 0x0e, 0xb0, 0x2f, 0x41, ] }); } globalState.forwarding = setTimeout(() => { sf.midi.huiSend({ midiBytes: [ 0xb0, 0x0f, 0x0e, 0xb0, 0x2f, 0x01 ] }); globalState.forwarding = null; }, 50); } }
Note, you'll need to set up SoundFlow as a HUI peripheral first.
To do that, follow the instructions here:
https://soundflow.org/commands/pro-tools/automation-modes/proTools-automation-modes-latchAll- LLucas Frisch @Lucas_Frisch
working like a charm!
Thanks a lot!!got this too!
congrats for SF , great great work and real time saver!!