DrivenByMoss: Bitwig extension for many hardware controllers (version 26.6.1)

Post Reply New Topic
RELATED
PRODUCTS
Bitwig Studio 6$399.00Buy Maschine

Post

moss wrote: Fri Sep 16, 2022 7:27 am
canister wrote: Thu Sep 15, 2022 9:41 pm i've been learning c++ to build an arduino controller with 8 encoders to use with the generic flexi.
been a bit of slog, not that easy for me to learn from scratch. anyways, i've got it to work fairly well, then thought i could use the push button encoders to send different cc's when pressed. going from 7 bit to 14 bit seemed like a good idea. unfortunately, i can't seem to get it to work. the info i've found online says to send 1 cc then another cc 32 higher for 14 bit (0/32). when i've programmed the arduino to do this, bitwig recognises this and changes the field to accept 14 bit. but i'd like to use relative knob positions like i've program for the 7 bit encoders to avoid parameter jumps (values below 63/65 for anti/clockwise). is this even possible, or can i only use absolute for 14 bit?
14 bit makes only sense for absolute faders / knobs (mostly for motorised faders). Relative knobs as the name implies only send an offset for which 7bit is fine (and also only if your knobs can sense speed otherwise it is only 1/-1).
hey, thank for your response. i've been coding random values trying to get it to work with relative knob mode in the arduino ide for hours. now i know it would work..haha!
oh, well. i can map a quantise modulator to the pitch or something.
your scripts for maschine and launchpads are really appreciated. thanks

Post

Hey! I would like to report What seems like a most definite Bug with DrivenByMoss for Bitwig.
A few details to inform:
  • 1) I re-installed the latest DrivenByMoss extension 17.6.0.
  • 2) I am using Bitwig 4.3.5
  • 3) My platform is Mac Mini M1 with latest update of Monterey.
The symptom is this: If I attempt to add another controller (I have been trying to add NDLR by Conductive Labs - I have tried both "controller" and "Flexi" .. but have NOT had success with either). I Lose ALL functionality from my Push2 controller. There does not appear to be any way to restore Push2 controller unless I completely exit Bitwig and start it up again. If I attempt to "disable" Push2 controlelr and then restore it again (in Bitwig settings).. All Lit buttons on the Push2 go completely dark. I can see track info in the Display window, but every other Push2 control is dark and no button (including pads) have any function. Powering Push2 off and then on makes no difference.

I can restore functionality by closing Bitwig and the starting it up again... but again, any attempt to add another controller results in complete loss of Push2. Is there a reason Push2 can only be the one exclusive Controller in Bitwig?

Post

melodyz wrote: Sat Sep 17, 2022 10:42 am feature request for akai fire. Since the pads have only 4 layerrs of velocity, I tend to not hit them hard enough to get the normal velocity I want every time. Could we add a velocity offset +1 -1 etc to the settings?
I think velocity is unusable on the Fire. Best option is to turn it off (Shift+Step). Then set your preferred velocity ("Fixed Accent Value" in the settings).

Post

DoubleStop wrote: Sun Sep 18, 2022 10:27 am Hey! I would like to report What seems like a most definite Bug with DrivenByMoss for Bitwig.
A few details to inform:
  • 1) I re-installed the latest DrivenByMoss extension 17.6.0.
  • 2) I am using Bitwig 4.3.5
  • 3) My platform is Mac Mini M1 with latest update of Monterey.
The symptom is this: If I attempt to add another controller (I have been trying to add NDLR by Conductive Labs - I have tried both "controller" and "Flexi" .. but have NOT had success with either). I Lose ALL functionality from my Push2 controller. There does not appear to be any way to restore Push2 controller unless I completely exit Bitwig and start it up again. If I attempt to "disable" Push2 controlelr and then restore it again (in Bitwig settings).. All Lit buttons on the Push2 go completely dark. I can see track info in the Display window, but every other Push2 control is dark and no button (including pads) have any function. Powering Push2 off and then on makes no difference.

I can restore functionality by closing Bitwig and the starting it up again... but again, any attempt to add another controller results in complete loss of Push2. Is there a reason Push2 can only be the one exclusive Controller in Bitwig?
This sounds like an USB issue or M1 incompatibility to me. Can see if I can reproduce it but I am sure this will be nothing I can fix on my side.

Post

melodyz wrote: Sat Sep 17, 2022 10:56 am I just realized if Bitwig adds custom user expressions to the piano roll expressions and modulator expressions, we could set up our own midi note modulators that could do whatever we want. How do we encourage Bitwig to add this feature? Then imagine using Moss scripts to assign that parameter in the sequencers?
As a follow up here for the akai fire. We could use pressure as the modulator. That works for me!!!!

Post

melodyz wrote: Sat Sep 17, 2022 10:45 am I have a question about the new drum sequencer mode on the akai fire, is it possible to edit a certain steps pitch in the drum machine?
Yes. Do the following:
1) Enable Note editing with ALT+STEP
2) Press the note to edit
3) Change the pitch with the SELECT knob

Important: If you use the Bitwig Sampler for the sound make sure that "keytrack" is enabled in the sampler. This is the little keyboard icon with the 2 arrows above the waveform display.

Post

Hi Jurgen, just downloaded your script for my Launchkey 49 Mk3, fantastic work, thankyou so much. However i cant get the device lock to work.
I'm in device mode and selected device lock and its lit up but does not pin the knobs to that device when i change to another device the knobs just change to control whichever other device/track i have selected. Its all setup correctly in settings as bitwig auto detected my launchkey and everything else is working like a charm. Any suggestions please..cheers man:)

Post

AKAI FIRE question:

It seems that there is no way to navigate through the devices in a chain with the AKAI Fire - like here in this Video for example for the Novation Remote SL MK2 at 8:43 min ()

- or do I miss something ?

cheerz
de Heavy

Post

feature request akai fire. Hi is it possible to set the levels of user 1 or 2 assigned controls in the step edit mode? so that each note has its own value? If not I can do in the automation lane

Post

Hi Jurgen
first of all thank you very much for the fantastic work you do with your tools, I'm using the bitwig integration with my NI Maschine Mikro mk3 since a while and I have always been very happy!
Anyway, now I've upgraded Bitwig to release 4.3.4 and installed your software version 17.6.0 and I have a problem: I don't see Maschine Mikro in the IN/OUT menus once I've added the device as a controller. Of course I carefully followed your instructions on the manual (controller editor template, bitwig extension...) but it doesn't work :(
Thanks for your help

Post

Hello Jurgen!

Is there a Wiki or Manual somewhere so that I can try to create a Driven by Moss for Bitwig "profile" for the M-Audio Code 49?
(There's no M-Audio controllers in Driven by Moss's List, even in the latest version for Bitwig 4.3 if I recall correctly).

The Code 49 is pretty standard, it has:
- 16 x Drumpads
- 8 x Sliders + 1 x Master Slider
- 9 x Select/Mute buttons below these sliders
- 8 x Knobs (Encoders)
- 1 x X/Y Touchpad
- Play/Stop/Record/Forward/Backward Buttons
- 1x Pitchwheel
- 1x Modwheel
- 1x Sustain
- 1x Footswitch

There used to be a Controller Script (in .JS) for this Code 49, but Bitwig doesn't support them anymore (Script content below).

Code: Select all

loadAPI(1);

host.defineController("M-Audio", "Code 49", "1.0", "d977f794-009f-41da-9c10-b3262bc9a712");
host.defineMidiPorts(1, 0);

var LOWEST_CC = 1;
var HIGHEST_CC = 119;

var DEVICE_START_CC = 20;
var DEVICE_END_CC = 27;

// all transport buttons available for m-audio code series
var TRANSPORT = {
    REW : 91,
    FF : 92,
    STOP : 93,
    PLAY : 94,
    RECORD : 95
};

var CHANNEL_BUTTON = {
    ARM0 : 0,
    SOLO0 : 8,
    MUTE0 : 16,
    SELECT0 : 24
};

var numSendPages = 5;

function init() {
    host.getMidiInPort(0).setMidiCallback(onMidi);
    host.getMidiInPort(0).setSysexCallback(onSysex);
    generic = host.getMidiInPort(0).createNoteInput("", "??????");
    generic.setShouldConsumeEvents(false);

    transport = host.createTransport();
    trackBank = host.createTrackBankSection(8, numSendPages, 99);

    // Map CC 20 - 27 to device parameters
    cursorDevice = host.createCursorDeviceSection(8);
    cursorTrack = host.createCursorTrackSection(3, 0);
    primaryInstrument = cursorTrack.getPrimaryInstrument();

    for (var i = 0; i < 8; i++) {
	var p = primaryInstrument.getMacro(i).getAmount();
	p.setIndication(true);
    }

    // Make the rest freely mappable
    userControls = host.createUserControlsSection(HIGHEST_CC - LOWEST_CC + 1 - 8);

    for (var i = LOWEST_CC; i < HIGHEST_CC; i++) {
	if (!isInDeviceParametersRange(i)) {
	    var index = userIndexFromCC(i);
	    userControls.getControl(index).setLabel("CC" + i);
	}
    }
}

function isInDeviceParametersRange(cc) {
    return cc >= DEVICE_START_CC && cc <= DEVICE_END_CC;
}

function userIndexFromCC(cc) {
    if (cc > DEVICE_END_CC) {
	return cc - LOWEST_CC - 8;
    }

    return cc - LOWEST_CC;
}

function onMidi(status, data1, data2) {
    if (isChannelController(status)) {
	if (isInDeviceParametersRange(data1)) {
	    var index = data1 - DEVICE_START_CC;
	    primaryInstrument.getMacro(index).getAmount().set(data2, 128);
	}
	else if (data1 >= LOWEST_CC && data1 <= HIGHEST_CC) {
	    var index = data1 - LOWEST_CC;
	    userControls.getControl(index).set(data2, 128);
	}
    }

    // m-audio code series uses mackie/hui for transport buttons
    if (isNoteOn(status)) {
	if (data2 > 0) { // on key press
	    // main transport
	    switch (data1) {
	    case TRANSPORT.PLAY:
		transport.play();
		break;
	    case TRANSPORT.STOP:
		transport.stop();
		break;
	    case TRANSPORT.RECORD:
		transport.record();
		break;
	    case TRANSPORT.REW:
                transport.rewind();
		break;
	    case TRANSPORT.FF:
                transport.fastForward();
		break;
            }

	    // track buttons
	    if (data1 >= 0 && data1 <= 7) { // is one of the arm buttons pressed
		var index = data1 - CHANNEL_BUTTON.ARM0; //which arm button is pressed
		trackBank.getTrack(index).getArm().toggle(); // tell the application to toggle the state of the corresponding arm button
	    }
	    else if (data1 >= 8 && data1 <= 15) { // is one of the solo buttons pressed
		var index = data1 - CHANNEL_BUTTON.SOLO0; //which solo button is pressed
		trackBank.getTrack(index).getSolo().toggle(); // tell the application to toggle the state of the corresponding solo button
	    }
	    else if (data1 >= 16 && data1 <= 23) { // is one of the mute buttons pressed{
		var index = data1 - CHANNEL_BUTTON.MUTE0; //which mute button is pressed
		trackBank.getTrack(index).getMute().toggle(); // tell the application to toggle the state of the corresponding mute button
	    }
	    else if (data1 >= 24 && data1 <= 31) { // is a select button pressed
		var index = data1 - CHANNEL_BUTTON.SELECT0; //which select button is pressed
		trackBank.getTrack(index).select(); // tell the application to toggle the state of the corresponding arm button
	    }
	}
    }
}

function onSysex(data) {
    // MMC Transport Controls:
    switch (data) {
    case "f07f7f0605f7":
        transport.rewind();
        break;
    case "f07f7f0604f7":
        transport.fastForward();
        break;
    case "f07f7f0601f7":
        transport.stop();
        break;
    case "f07f7f0602f7":
        transport.play();
        break;
    case "f07f7f0606f7":
        transport.record();
        break;
    }
}

function exit() {}

Post

walkerj wrote: Tue Sep 20, 2022 9:57 am Hi Jurgen, just downloaded your script for my Launchkey 49 Mk3, fantastic work, thankyou so much. However i cant get the device lock to work.
I'm in device mode and selected device lock and its lit up but does not pin the knobs to that device when i change to another device the knobs just change to control whichever other device/track i have selected. Its all setup correctly in settings as bitwig auto detected my launchkey and everything else is working like a charm. Any suggestions please..cheers man:)
The thing is that the cursor track needs to be pinned as well. But this cannot be controlled from the device, you need to enable it in the right side panel in Bitwig. One could argue that both should be toggled but I was undecided on that so far.

Post

masterheavy wrote: Wed Sep 21, 2022 8:55 am AKAI FIRE question:

It seems that there is no way to navigate through the devices in a chain with the AKAI Fire - like here in this Video for example for the Novation Remote SL MK2 at 8:43 min

- or do I miss something ?

cheerz
de Heavy
In the Device Mode (USER 1) use Alt+Select knob.

Post

melodyz wrote: Wed Sep 21, 2022 11:06 am feature request akai fire. Hi is it possible to set the levels of user 1 or 2 assigned controls in the step edit mode? so that each note has its own value? If not I can do in the automation lane
No, that is not possible with the Bitwig API. But you can do this with a workaround: assign pressure and/or timbre (Expression Modulator device in Bitwig) to 2 of the parameters you want control. Pressure and Timbre can then be set in the seuqencer note editing for each step.

Post

menelik wrote: Thu Sep 22, 2022 4:11 pm Hi Jurgen
first of all thank you very much for the fantastic work you do with your tools, I'm using the bitwig integration with my NI Maschine Mikro mk3 since a while and I have always been very happy!
Anyway, now I've upgraded Bitwig to release 4.3.4 and installed your software version 17.6.0 and I have a problem: I don't see Maschine Mikro in the IN/OUT menus once I've added the device as a controller. Of course I carefully followed your instructions on the manual (controller editor template, bitwig extension...) but it doesn't work :(
Thanks for your help
If the MIDI ports do not show up it means that Bitwig did not detect the device. Check with a standalone MIDI monitor or another DAW if it shows up and then check driver, USB connection, etc.

Post Reply

Return to “Controller Scripting”