SL Mixface controller script, where to start?

Post Reply New Topic
RELATED
PRODUCTS

Post

(Edit from the future) (Now back to the past)


Hi, I hope this post makes sense.

The SL Mixface is a pretty neat controller that has one problem: Bitwig not supported. While I don't think I have the skills to start a controller script from scratch, I was wondering if there is an open source script for a similar controller that I can use as basis, to start somewhere and see how far I get.

This controller has:

8 knobs
9 faders
8 buttons
transport buttons
2 buttons to access a second bank of knobs, faders and buttons

There are a few more buttons, a big knob with click, and a display, but all this would go to a second phase if a first phase is ever completed.

The controller has a "controller mode", which already can be used to control devices on Bitwig. I got the 8 knobs recognized using the generic "Keyboard + 8 knobs" controller in Bitwig and mapping the knobs in the Mixface to cc20-27. This is how far I got.

There is a DAW mode that doesn't work on Bitwig at all. For what is worth, the DAWs currently supported are listed in this page.
Last edited by icaria36 on Sun Apr 04, 2021 9:02 pm, edited 2 times in total.

Post

Moss HUI or MCU script should do as its has modes for both... Or do your own assignments with Moss' Flexi script...
http://www.mossgrabers.de/Software/Bitwig/Bitwig.html

Post

Thank you. I'll try MCU first. I found this:
Just got it today. I'm using Bitwig which is not an officially supported DAW so taking it into use isn't super straightforward, which I was prepared for when buying. Setting Mixface to Ableton Live mode and adding it as a MCU device in Bitwig made the transport & track controls Just Work, which is nice. Taking full use of the controller will require writing a custom script, which isn't a big deal fortunately.

Post

A few days later...

Moss' MCU support + Mixface DAW mode for Ableton gets you pretty much there. There are only three buttons unused ("markers", I would not use them anyway). The rest, all works as intended.

This could have pacified my interest, since this is good enough to use this DAW mode and move on. Except... that those three unused buttons bother me, and I see possibilities for tighter integration. So I got more excited instead.

I tried Flexi but I don't see how I can define the modes for Solo, Mute, Record and Select that interact with the track buttons. This is when I started watching the Bitwig Controller API tutorial. I ended part VI (banks) and I'm stuck with some problems. Here is the code:

https://github.com/quimgil/SLMix-Bitwig

(I will add proper attribution to Moss; so far the code is not usable. I'm not a programmer!)

Play Stop Record

The controller has play and stop in the same button. I'm using continuePlayback to avoid restarting the position every time. I'm thinking of implementing a double click to restart the position.

The record button lights up the record button in Bitwig but it doesn't record anything. If I press rec and play, that doesn't work either. I wonder if the play/stop single button has something to do with this.

Is there a stop/play single button controller script that I could look at?

Faders

The tracks' knobs and buttons work, but not the faders. I have looked at everything I could think of, I don't know why it's failing. In MCU they work. printMidi shows the MIDI values alright, from 0 to 127.

Maybe related? Flexi identifies the faders' signal as "Pitchbend", not CC.

Mode buttons

Mixface has mode buttons for Solo, Mute, Rec and Select. One of these options is always selected, and this changes the functions of the button for each track. I cannot get any MIDI data out of this buttons, and I wonder whether I will be able to use them at all. In MCU mode they work without a problem, which is probably due to the "Ableton" mode in the controller?

The buttons are functional, they light up when pressed and they change some behavior. printMidi shows that these buttons affect the "data1" value of the tracks. The "Rec" button leaves the 8 tracks values 0-7, the "Solo" button changes the value to 8-15, for "Mute" is 16-23 and for "Select" is 24-31. As I write this I realize that there is a logical way to just use this behavior and program the functionality accordingly. I wonder if there is another controller out there behaving similarly (with a script that I can "find inspiration" from). :)

Post

Just had a quick look at your code. In your MIDI handler you need to check for the type of MIDI message (CC, Note, Pitchbend, Aftertouch, Poly aftertouch, ...) not only block notes. Furthermore, you need to test for the MIDI channel. Especially, MCU uses the same commands on different MIDI channels for the tracks.
I guess it would be helpful if you read the MIDI sepcificiation as well.

Post

Thank you for the pointers! After some more reading and learning... I'm still quite stuck. This is the first time I try to get into this API, and on top of that the information and examples out there about pitch bend and multiple MIDI channels are more difficult to find.

Now I am using ifPitchBend for the faders:

Code: Select all

    if (isPitchBend(status))
    {
        switch (data1)
        {
            case SLMIX_FADER_1:
                this.trackbank.getItemAt (0).volume ().set (data2, 128);
                return true;
        (...)
I have seen in the Bitwig resources that there is a function pitchBendValue, but I'm not sure I need it here. And about the channels, I still don't know what to do.

What puzzles me is that, in the meantime, printMidi shows correct information, in theory ready to be used:

Code: Select all

MIDI: 224, 13, 13 [e0 0d 0d ]
Midi command not processed: 224 : 13 : 13
MIDI: 224, 11, 11 [e0 0b 0b ]
Midi command not processed: 224 : 11 : 11
MIDI: 224, 10, 10 [e0 0a 0a ]
Midi command not processed: 224 : 10 : 10
MIDI: 224, 9, 9 [e0 09 09 ]
Midi command not processed: 224 : 9 : 9
MIDI: 224, 8, 8 [e0 08 08 ]
Midi command not processed: 224 : 8 : 8
MIDI: 224, 7, 7 [e0 07 07 ]
Midi command not processed: 224 : 7 : 7
MIDI: 224, 6, 6 [e0 06 06 ]
Midi command not processed: 224 : 6 : 6
MIDI: 224, 5, 5 [e0 05 05 ]
Midi command not processed: 224 : 5 : 5
MIDI: 224, 3, 3 [e0 03 03 ]
Midi command not processed: 224 : 3 : 3
MIDI: 224, 0, 0 [e0 00 00 ]
Midi command not processed: 224 : 0 : 0
Maybe I should learn to connect the faders first, and only then try to implement the tracks and then the banks.

Post

Doh, I just found this: https://github.com/bitwig/bitwig-extens ... tudiologic

However, after cloning the bitwig-extensions repository, importing it into Eclipse and producing a bwextension file using its pom.xml... I still cannot see the Studiologic controller in Bitwig. Is this how it is supposed to work with this bitwig-extensions repo?

Post

I have built a bwextension file based on the two SLMixface files in the bitwig-extensions repository and... IT WORKS! And pretty well. The only thing that users need to do is to set the SLMixface's DAW mode as "Reason".

I willplay a bit more with the controller using this script and I will post a summary of the findings in the Bitwig forum. If anyone is interesteded, I will publish the forked repo with the bwextension file and proper license and attributon (all this code is Bitwig's work).

Post

(OMG it even comes with a simulated GUI!)

Post

Bitwig support in the SL Mixface controller has a DAW mode and a device mode. The loop button is used to switch between these modes.

The transport buttons (REW, FWD, Play/Stop, and REC) and the master volume work equally in both modes as you would expect. You can use the big knob to move through tracks. You can play and pause by pressing the big knob.

In DAW mode, the eight first tracks are assigned to the eight knobs, faders and buttons respectively. The Select button is active by default, and you can use it to select a specific track. You can press the Rec, Mute or Solo buttons instead, and use the button of each track to arm, mute, solo the selected track. If you have more than eight tracks, you can use the bank right/left buttons to navigate through all the tracks.

In device mode, the knobs are assigned to the remote controls, and you can use the bank left/right buttons to navigate between remote control pages. Any customization you have done to the remote pages will just work.

The DAW|CTRL button works as expected. However, as far as I can see there is no reason to use the CTRL mode (Mixface' s official device mode) unless you have a studiologic keyboard that you want to control, or you miss the colorful lights (the buttons have only white light in DAW mode).

The three markers buttons are not assigned to any function. Any suggestions about how could they be used? Maybe use the marker left/right buttons to navigate between scenes, and the marker button to record or play the specific scene where the cursor is in?

Something that I am missing is a quick double push of the Play button (and the big knob) to make a full stop and bring the transport to the start of the track (the current behavior only supports pause as far as I can see).

All in all this is pretty complete and well integrate. One can only wonder why this code is sitting there as a public secret for so long. I guess the piece that is missing is the "Bitwig" option in the SL Mixface firmware. In the meantime, the "Reason" option just works.

PS: if anyone is interested in the .bwextension file, I am happy to publish it together with the forked repository used to build it.

Post


Post

Thanks!

Post

Hello - just found this, fantastic, SL mix face working well here, thank you.

Post

I've been using my mixface with great success in Logic but have recently been using Bitwig and just can't get the thing to work. I have DAW control but I mainly use the MF for midi cc control and that's where I'm struggling. Has anyone got the faders to transmit midi cc in the Multiport section? Thanks in advance.

Post Reply

Return to “Controller Scripting”