asked Jun 08 at 01:28 by Keating (11)

Hello,

Absolutely love the Maschine Jam integration. Is there a way to alter the behavior of the clip launcher on the Jam? For a current playing slot, if a user presses the same slot on the controller, the slot stops playing. On other controllers, this typically will relaunch the clip from the beginning again. Is there any way to change this?

If not, how can I get access to the default script library so that I may customize my Maschine Jam's script?

Thank you! Brad

I had the same desire, and after some code editing, I've got it figured.

FIRST STEP IS TO BACK UP ANY FILE YOU'RE GOING TO CHANGE. There, I warned you. :P

Not sure where you'll find the file on a PC or Linux, but on MAC, it's located inside the Bitwig application. The path is: /Applications/Bitwig Studio.app/Contents/Resources/ControlSurfaceScripts/nativeinstruments/Maschine JAM and the file you want is ClipLaunchView.js

You can edit that script with any text editor, but if you have a web IDE, use it for sanity's sake. Do a search for 'stop' and you'll find the code that specifies when to stop a clip. The first result for me was inside this snippet:

if (state.hascontent) {
            if (state.playing || state.isQueued()) {
                slots.stop();
            } else {
                slots.launch(rowt);
                if (selectAndLaunch) {
                    slots.select(rowt);
                }
            }
        } else {
            if (trackStates[colt].armed) {
                if (trackStates[colt].type === TrackTypes.Instrument) {
                    slots.createEmptyClip(rowt, 4.0);
                    slots.launch(rowt);
                    if (selectAndLaunch) {
                        slots.select(rowt);
                    }
                    showInEditor(slots, rowt);
                } else {
                    slots.record(rowt);
                    slots.launch(rowt);
                }
            } else {
                slots.createEmptyClip(rowt, 4.0);
                if (selectAndLaunch) {
                    slots.select(rowt);
                }
                showInEditor(slots, rowt);
            }
        }

The first IF statement is saying 'If the clip is already playing, stop it.

So you just need to change the one line:

slots.stop();

To:

slots.launch(rowt);

(rowt) is the variable that corresponds to the index number of the currently pressed clip.

To go further, if you want... Most other controllers I've used allow you to stop the clips in a track by pressing an empty clip slot on that track. This control script instead creats an empty clip there. Since we've just removed the stop feature, I added it back by changing the following code:

            } else {
                slots.createEmptyClip(rowt, 4.0);
                if (selectAndLaunch) {
                    slots.select(rowt);
                }
                showInEditor(slots, rowt);
                }

To:

            } else {
                slots.stop();
            }

By removing the 'if (select and launch)' and the 'showInEditor', we are just telling it that we don't need bitwig to change our viewer to show the clip, as we aren't creating one anymore. And just to be clear, we are not changing the very similar block of code that appears higher up in the function that starts with 'if (trackstates[colt].armed)' as we really do want a clip created if we have the track armed for recording.

Cheers,

link

answered Sep 22 at 02:48 by etherealflare (21)

edited Sep 22 at 03:13

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

Markdown Basics

  • *italic* or __italic__
  • **bold** or __bold__
  • link:[text](http://url.com/ "title")
  • image?![alt text](/path/img.jpg "title")
  • numbered list: 1. Foo 2. Bar
  • to add a line break simply add two spaces to where you would like the new line to be.
  • basic HTML tags are also supported

Tags:

×12
×8
×4
×1

Asked: Jun 08 at 01:28

Seen: 233 times

Last updated: Sep 22 at 03:13