No internet connection
  1. Home
  2. How to

Maschine Studio Jog wheel

By Lucas Frisch @Lucas_Frisch
    2020-09-21 12:09:34.662Z

    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..

    Solved in post #7, click to view
    • 7 replies
    1. 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 :)

      1. In reply toLucas_Frisch:

        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).

        1. L
          In reply toLucas_Frisch:
          Lucas Frisch @Lucas_Frisch
            2020-09-27 17:32:19.068Z

            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 Wheel

            in 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 2

            and 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 1

            MCU 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 65

            I can log other mode if needed of course..

            1. 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:

              1. LLucas Frisch @Lucas_Frisch
                  2020-09-28 12:23:17.697Z2020-09-28 12:46:50.938Z

                  Hey Chris,

                  Thanks a lot ,
                  we got this working : left and right were in the wrong way but i did this

                  let [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....

                  1. 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

                    Reply1 LikeSolution
                    1. LLucas Frisch @Lucas_Frisch
                        2020-09-28 14:08:34.641Z

                        working like a charm!
                        Thanks a lot!!

                        got this too!
                        

                        congrats for SF , great great work and real time saver!!