THERE IT IS: the ultimate custom module for cubase users (at least for me)

Alright. Now i have setting everything up with node and the custom module.

With the script widget i can read out the Track names from cubase but i can not read out stuff from the custom modul.

Can someone please help me with this? Thx a lot for the help

Hi Sylvain,

very nice work with the MatrixButtons.

Can you please help me where my problem is?

I have set up your project with your custom modul. I have installed the node modules xml2js and glob in my custom modul folder and set the right path for glob and the Expression Map

I get the the first text_1 from Cubase with little glitches but ok.
Text_2 makes nothing (recieved from xml)
And no Buttons on the grid.. I have the one expression map in cubase loaded.

Can you please help me were my mistake is?
Thank you very much


As for the text-2 widget, how did you name your expression maps ?
For me, using this : AmpleSound - ASBU - Bass Upright.expressionmap shows ASBU in text_2.


I'm really sorry Barry, but right now i'm "out from o-s-c"... i've spent too much time on it (actually... months... learning everything from 0...)... Custom module is a huge piece i do not master, and to help you with what i know, i would have to dig again into it... but now, i... just can't... I just need to turn off my pc, and have a big big break...

I'll be back for sure, and will be pleased to help you... as soon as possible...

In the meanwhile, have fun exploring this amazing piece of software ! (and don't forget to go for a walk...)

1 Like

Hi @Sylvain

Hope you the best and yes we can be overhelmed by tech if we don't care of ourselves. So yes don't forget to have a walk or whatever else to take a break. La paresse a ses vertus !

LOL thank you for your advices!

Unfortunately, I find it impossible to "insert" a expression map to a note remotely, I've already succeed in readinng expression maps from cubase. But there is just no way to do "insert" the expression map. The only thing I can do is to simply switch between articulations(won't write down the fixed expression map value, just a simple switch), which I already can do with my midi keyboard.

If you're recording, you can definitely record and write the expression map to the recorded notes, but I acutally prefer writing with mouse for orchestra instead of recording. So I actually wanted to do this: select the note, press a button from OSC, the expression map state of that note automatically change from "none" to "Legato" and I mean the real "written down" version(so there would be text no the note) instead of just changing the articulations from slot 1 to slot 2. Turns out it's impossible for cubase to do this..... There is just no function for that yet.....

Not sure Sylvain was joking.

I will certainly have a walk outside more often! :face_holding_back_tears:
Thank you for your concern!

Hi Sub3OneDay,

Can you post your solution for this problem, i just have the same problem.

Thx a lot :slight_smile:

Hi Sylvain,

thank you i have worked it out :slight_smile:

Do you have a solution how you get the right color into the matrix articulations?

Thank you very much

Cheers Stephan

Hi there,

Have a look here - I think this is it:

Bug squashing

Nice ok i will give it a try. but how can I display the track name?
I have done it until now via receive /EDIT , text_1. But with that fuction i think its different.

Thx and cheers

Create a text widget and put an OSC listener in the text field. Then send the track name variable to it from the custom module.

1 Like

hi Sub3OneDay,

i have put the OSC Listener in a text widget and the reciever in your fuction but it didnt work, also put the reciever in the oscInFilter but also didnt work. i have put my last try in the code.
Can you help me were i must put the reciever?

module.exports = {


        var { address, args, host, port } = data

//                                     MCU test area here                                                            //

        if (host === 'midi' && port === 'MCU_To_OSC' && address === '/sysex') {


            //Check incoming sysex data and use if it contains the lcd text
            if (args[0].value.includes("f0 00 00 66 14 12")) { // sysex header for mackie lcd text
                let sysExVal = args[0].value

                //Use the function getTrackName to do all the cool stuff to get the fullTrackName
                let fullTrackName = getTrackName(sysExVal) 


                //Strip out the trackMapTag from the full name
                //limitatation - track tag has to be in the last 6 characters of the name
                //To avoid complications also strip off the square brackets
                trackMapTag = (fullTrackName.substring(fullTrackName.length - 6));
                trackMapTag = trackMapTag.replace('#', '')

                if (fullTrackName) {

                receive('/EDIT', 'text_1', {value: fullTrackName})}



Would be amazing if you made a tutorial about this on youtube


I'm trying to use the code posted by Sylvain to get the track names from Logic using Mackie control protocol.
I've managed to get the full track name from logic on the virtual MCU lcd.
Problem is getting it correctly...

With cubase, the track name always start at the same position on the LCD and the actual code to get the track name is simple :

// update text widget
set("lcd_MODIFIED", locals.text.slice(72,101).join(""))}

With logic, MCU LCD look like this :
Track 1 "yourtrackname" channel strip
Track 258 "yourtrackname1234567890123" channel strip
Track 12 "yourtracknameotherlenght" channel strip

My first issue is with the starting slice :
after Track 9, the track name will be sliced at the wrong place as it will start one step further, more issues after the Track 99...

what code should I use to remove " at the beginning of the track name string and to also remove Space" while keeping the start if the string doesn't begin with " or Space" ?

Second issue is at the end of the track name, depending on its length, "channel strip" will be more or less closer.

Any idea of script slicing everything from the last " at the end of the track name will also be greatly appreciated.

I'm sorry, I'm not the best coder :wink:

I've managed to get the full length Logic track names from touch OSC in OpenStageControl (and it is really easier), but I'd rather use the MCU way as it is directly implemented in Logic and it should be a cleaner solution than using bridge and touch OSC as a Logic controller and as a relay to OpenStageControl on the top

Thanks for your help !

EDIT : I've duplicated this post on a new dedicated Logic topic :