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

Post Reply New Topic
RELATED
PRODUCTS
Bitwig Studio 5 Maschine

Post

Hello Jürgen,

First of all, thank you for your amazing work on DrivenByMoss. I'm a programmer myself diving into your code, and I really have to applaud how organized, structured and well-designed your framework is. Your YouTube tutorials are very good also.

I'm a newbie when it comes to Bitwig controller development though; I have a couple of questions I was hoping to ask you. It's basic stuff, I'm sure, but honestly Google doesn't help much and the official Bitwig API documentation could be a bit clearer when it comes to laying out foundations and core concepts. And since a lot of the functionality comes already encapsulated, abstracted or interfaced in your framework, I thought I would ask you.
  • Am I right to understand that the Bitwig API doesn't offer any functionality at all to access a simple collection of all tracks currently present in a project? From what I gather, the only way to do this is to initialize an arbitrarily huge track bank when the controller is starting up, and then iterate through it, ignoring "empty" tracks. Is this right? It seems like such a weird way to work. If so, is there an "easy" way to achieve this within your framework without messing with abstract model implementations and so on, to initialize such a trackbank and expose it?
  • A lot of the functionality in your framework depends directly on trackbank pages; however, the pages are "rigid", in the sense that the controller mappings scroll in full "steps" of 8 tracks, no matter what. This didn't fit the workflow I was hoping for, so I made a modification so that the Bank Select arrows in my APC40 MK2 can scroll the trackbank forwards or backwards one track at a time. This is working correctly, but I'm afraid it breaks a lot of other functionality (for example, the sequencer or drum sequencer don't ever know what track they're on, their pads are always off). Is such a modification viable? Meaning, will I necessarily, 100% break a lot of stuff by doing this, or did I just do something wrong?
  • Finally, since you probably know the Bitwig API inside out: do you happen to know of any way to access from the Bitwig API the latency information of an active device/instrument/VST plugin? I was hoping to implement functionality to instantly deactivate/reactivate every latency-causing plugin with a single button press, in order to jam around without latency and then reactivate everything after I'm done, but I don't see it anywhere on the API.
I really appreciate your work, and thanks in advance for your time addressing these questions. Have a nice day.

Post

Hey joepalos,
I also modified the APC40 mk2 script to scroll tracks by 1 instead of 8 and I think I didn't break anything by doing this, but I'm not sure.
You might want to try this implementation:
https://github.com/Nettsu/DrivenByGrass

Post

Netsu wrote: Mon Oct 28, 2019 1:00 pm Hey joepalos,
...
Hey Netsu, thanks for replying! Funny we should both run into the same "issue" that we want to modify. As it often happens with these things, I read your post right after I managed to modify it properly. Thanks a lot anyway.

In case this is useful to anyone in the future, what I did was override the methods scrollLeft()and scrollRight() of ModeCursorCommand in CursorCommand to implement my own behavior, like so:

Code: Select all

    /**
     * Scroll right.
     */
    @Override
    protected void scrollLeft ()
    {
        final ITrackBank trackBank = this.model.getCurrentTrackBank();
        if (this.surface.isShiftPressed())
        {
            super.scrollLeft();
        }
        else
        {
            trackBank.scrollBackwards();
        }
    }

    /**
     * Scroll left.
     */
    @Override
    protected void scrollRight ()
    {
        final ITrackBank trackBank = this.model.getCurrentTrackBank();
        if (this.surface.isShiftPressed())
        {
            super.scrollRight();
        }
        else
        {
            trackBank.scrollForwards();
        }
    }
As you can see, I chose to have the default behavior when SHIFT is pressed in the controller, and to go forwards or backwards one single step on a normal press.

Thanks again Netsu.

Post

Hey Jürgen,
maybe you have an idea how I could use your Maschine Mikro Mk3 extension with my Maschine Mk1. I adjusted the MIDI values so that it fits to Drivenbymoss and the pads, transport, modes... work perfectly! I love it to have direct access to all my 16 tracks. Just that the 8 knobs/buttons on top can't be used then. So I though I could write a small separate script or use flexi for these unused parts. But the Mikro script stops working the second I add the second controller. Is it really not possible to use the same device for two controller instances? Would have been such a handy controller for me...

Post

Hello !
May i suggest something for the scale page on the push ?
I would love to have the ability to change modes as we can change root notes . using the button instead of scrolling them one by one .
after the "B" button there is a button left with nothing.
Could it be possible to have there a button that let swap all the roots notes by modes ?
Then we will have the ability to change instantly the mode instead of root notes ?
Thanks for reading !

Post

joepalos wrote: Mon Oct 28, 2019 11:12 am I really appreciate your work, and thanks in advance for your time addressing these questions. Have a nice day.
Hi! I am glad to answer your questions but could you please post them in a new thread in this forum? Cheers!

Post

TVbene wrote: Mon Oct 28, 2019 5:06 pm Hey Jürgen,
maybe you have an idea how I could use your Maschine Mikro Mk3 extension with my Maschine Mk1. I adjusted the MIDI values so that it fits to Drivenbymoss and the pads, transport, modes... work perfectly! I love it to have direct access to all my 16 tracks. Just that the 8 knobs/buttons on top can't be used then. So I though I could write a small separate script or use flexi for these unused parts. But the Mikro script stops working the second I add the second controller. Is it really not possible to use the same device for two controller instances? Would have been such a handy controller for me...
You cannot use the same midi port for 2 extensions/scripts. I tried several times to get a "big" Maschine but no luck so far...

Post

zengel wrote: Mon Oct 28, 2019 10:37 pm Hello !
May i suggest something for the scale page on the push ?
I would love to have the ability to change modes as we can change root notes . using the button instead of scrolling them one by one .
after the "B" button there is a button left with nothing.
Could it be possible to have there a button that let swap all the roots notes by modes ?
Then we will have the ability to change instantly the mode instead of root notes ?
Thanks for reading !
Hi, I am sorry but I did not understand what you are asking. Could you please try to rephrase?

Post

moss wrote: Tue Oct 29, 2019 8:51 am Hi, I am sorry but I did not understand what you are asking. Could you please try to rephrase?
Yeah of course !
Push 2 Scales screen.jpg
Something like this ;)

That would be the better if you could choose your most used mode that stick on the bottom on the screen (here is major, minor etc) and you can change the upper modes with "next" "preview" functions.

Or even better, the ability to stick most used custom modes and roots as quick selections for the button on the bottom
like this
Push 2 Scales screen V2.jpg
yeah i stop here :)

Thanks for your great work and for reading ! Have a good day !
You do not have the required permissions to view the files attached to this post.
Last edited by zengel on Tue Oct 29, 2019 11:16 am, edited 4 times in total.

Post

Perhaps in user mode ?
:)

Post

zengel wrote: Tue Oct 29, 2019 11:07 am
moss wrote: Tue Oct 29, 2019 8:51 am Hi, I am sorry but I did not understand what you are asking. Could you please try to rephrase?
Yeah of course !
Ah, the gazillion meanings of "mode" :-)

Mhm, not sure about your request. It's very specific, will think about it.

Post

moss wrote: Tue Oct 29, 2019 11:17 am Ah, the gazillion meanings of "mode" :-)
hehe ! Like music, infinite ;)
Thanks again ;)

Post

moss wrote: Tue Oct 29, 2019 8:50 am You cannot use the same midi port for 2 extensions/scripts. I tried several times to get a "big" Maschine but no luck so far...
Thank you for your feedback! Well if someone's interested, my workaround is now functional after adding a MIDI merger/splitter (e.g. http://en.soundigy.com/midipatchbay.php) and split the Maschine in/out into two virtual loopback MIDI cables... So I just use the missing knobs and buttons via a separate script.
But we should really get you a big Maschine Mk3 somehow! The CC layout is nicely observable in the different templates in NI's Controller Editor though so you'd probably only need one for testing the script. And backwards compatibility could also be achieved by custom templates for Mk1 and Mk2.

Post

So I'll be getting back into the world of Push tomorrow, looking forward to playing with the Moss script for Bitwig. Used to have Push 1 but now after a few years, getting a Push 2.

So I was just looking at the documentation, specifically about the sequencer and had an idea that I would like to suggest:

Currently it says that the pad lights change depending on the length of the note. That's cool, but it gave me another idea. I was thinking that it would be cool not have to scroll up and down so much to see higher or lower octaves, so maybe lights could represent the octave up or down, but then how to show the longer notes? Well I think I have an idea. What if the lengths were shown across the pads over the length that the notes actually occupy, but in a slightly different color, like a lighter shade? This would visually show at a glance how long the notes are but also differentiate them from new notes on those pads. This would let you use completely different colors for octaves up and down. For example if the default octave was blue, up one octave could be green and then 2 up yellow, one down purple, two down red (As an example). Then the adjacent pads indicating the length would be lighter shades of those.

This way, you would only need two screens for the 12 notes of the chromatic scale. Or likely one screen for other scales.

I'm hugely looking forward to using Push as a melodic sequencer (old school hardware style) and I think this approach would be a lot of fun. Thanks for all your work. Great documentation by the way!

Post

Echoes in the Attic wrote: Fri Nov 01, 2019 11:53 pm So I'll be getting back into the world of Push tomorrow, looking forward to playing with the Moss script for Bitwig. Used to have Push 1 but now after a few years, getting a Push 2.

So I was just looking at the documentation, specifically about the sequencer and had an idea that I would like to suggest:

Currently it says that the pad lights change depending on the length of the note. That's cool, but it gave me another idea. I was thinking that it would be cool not have to scroll up and down so much to see higher or lower octaves, so maybe lights could represent the octave up or down, but then how to show the longer notes? Well I think I have an idea. What if the lengths were shown across the pads over the length that the notes actually occupy, but in a slightly different color, like a lighter shade? This would visually show at a glance how long the notes are but also differentiate them from new notes on those pads. This would let you use completely different colors for octaves up and down. For example if the default octave was blue, up one octave could be green and then 2 up yellow, one down purple, two down red (As an example). Then the adjacent pads indicating the length would be lighter shades of those.

This way, you would only need two screens for the 12 notes of the chromatic scale. Or likely one screen for other scales.

I'm hugely looking forward to using Push as a melodic sequencer (old school hardware style) and I think this approach would be a lot of fun. Thanks for all your work. Great documentation by the way!
After testing it seems like it does do darker shades on the pads to show the extended note lengths, so that's cool. Different colors to indicate octaves up or down would be really cool though. Then I'd usually use Chromatic mode over two screens.

A coupe things I've noticed so far that I'm curious about:
-I added a track at one point and the note mode and piano mode was all white. It didn't show the root note. Switching to another track did show the root notes on that one. When I closed and reopened bitwig and reconnected the push 2, I now saw colored root notes on the track that didn't show before. Is this a big or is there a reason this happens?

-Any way to make the sequencer mono? Ie. not allow multiple notes on the same division? Like it would allow a new note but would remove any other ones on that division, like how monophonic sequencers often work.

-The screen mode is cool that shows the notes of the sequencer, but it would be nice if there was some interactivity there, like it showed the selected note and maybe the knobs could do things specific to the note sequencer like change lengths and velocties etc.

-Is there a way that the note edit screen can follow notes that were just input in the sequencer? (velocity etc.). Currently it seems I need to input a note and then pres and hold it after that to be able to change velocity and duration.

-When I edit a note a selected note length it jumps up to a quarter note immediately. This can actually remove notes just after it. This doesn't seem right. Am I doing something wrong? It doesn't know what the note length is that it just put in?

-Is there a way to get sub quarter length divisions that are quantized to 16th lengths? The values available like 10, 20, 30 etc are off the 16th notes. So editing the length of a 16th note doesn't seem to want to get back to 16th, it's either shorter or longer.

-How do you select the 4th send for the mode to control one send for all tracks? It only seems to allow selecting 1-3 and then there is the button for 5-8. All 4 work in the mode where you control the full mixer for one track (even where the fourth one is labeled as "Up"), but can't select that fourth one to control all send 4's for all tracks, I guess because that's the Up button. So there's 1-3 and then 5-7 for the next page toggle.

-Any way to reset a parameter to default? I should be looking this one up in documentation, I'm sure there is.

Post Reply

Return to “Controller Scripting”