New MIDI Remote - allow import of graphic for unsupported controllers

This is not as daft as it sounds.

As an example. I have a Korg nanoKontrol Studio which is not supported (only the nanoKontrol 1 & 2 are supported). I wont even mention the SSL UF8.

Cubase Pro 12 see’s the nanoKontrol Studio as a nanoKontrol 1 & 2 which are completely different controllers and it opens the nanoKontrol 1 & 2 interface making it impossible to use in MIDI Remote.

The nanoKontrol Studio has 8 faders, 8 rotary knobs, 32 channel buttons, 8 transport buttons and one scrub knob (move back and forth of the project),

Trying to replicate all of that using the MIDI Remote as it is results in a ugly mess that looks nothing like the nanoKontrol Studio.

If a user could import a grey scale graphic of the user interface and then drag the controls over to it (button, fader, knob) it would be a much more elegant solution.

The imported graphic could be set to a specific size and resolution set by Steinberg so that
the general look and theme of the MIDI Remote window is not compromised.

As it stands, I have two MIDI remotes (that Cubase does not see in the MIDI remote, nanoKontrol Studio and extremly shocking the SSL UF8, so for me it is a feature I can not use.
This is the type of image file I am suggesting…

Does the MIDI remote also not see the SSL UF8 when using the 360 software?

Was almost buying one yesterday :slight_smile:

No the MIDI Remote does not see the UF8.

You can use the UF8 with its default factory settings but I have found no way to use MIDI Remote to add custom settings.

I don’t think they’ll add graphics like that as it could slow the interface down having to scale an image and overlay the controls? Right now they use vector graphics so all elements are simply 4 co-ordinates of data (X,Y,Height,Width) which is much simple to render when scaling the ui.

I don’t think there’s any kind of layer control so that element A can sit above element B - for example, which is what a graphical background would need.

I have noticed that remotes created using the API can have additional display elements though, such as rectangles for where displays and mod/pitchbend strips are - i.e. non-assignable elements that exist for aesthetical reasons.

So, maybe in future they will extend these out to offer more options? Perhaps media or text items? Or even a .css like approach?

Must admit, I prefer the basic options right now, as it’s clean. But within the MIDI 2.0 specs there’s quite a bit of scope to send interface panels so it’s possible this will all tie in further down the road?

Well for me vector graphics is great as I am proficiant in Adobe Photoshop & Illustrator.

In the API you can see the methods that exist already:-


Using the MIDI Remote editor you get access to 3 elements (Knob, Fader and Buttons) - but you can see there’s more tucked away there behind the scenes. 12 Elements currently, but none of them are media or image based.

1 Like

Fader also allows for a horizontal, but the UI you can only make vertical.
Not sure what Control Layer Zone is, or Custom Value Variable, or Blind Pannel.

Also when you you can see the following


// create objects representing the hardware's MIDI ports
var midiInput = deviceDriver.mPorts.makeMidiInput()
var midiOutput = deviceDriver.mPorts.makeMidiOutput()

// define all possible namings the devices MIDI ports could have
// NOTE: Windows and MacOS handle port naming differently
deviceDriver.makeDetectionUnit().detectPortPair(midiInput, midiOutput)
    .expectInputNameEquals('SimpleDevice IN')
    .expectOutputNameEquals('SimpleDevice OUT')
    
deviceDriver.makeDetectionUnit().detectPortPair(midiInput, midiOutput)
    .expectInputNameEquals('SimpleDevice (MIDI IN)')
    .expectOutputNameEquals('SimpleDevice (MIDI OUT)')

There are a number of issues with this factory method.

  1. If you have more than one of the same device connected, you never know which one you are going to get, even if they have different IDs.
  2. You can not address multiple ports at the same time.
  3. There is no indication if it found the port that I can find.

Maybe I am doing something wrong as there isn’t as much documentation here as I would prefer. It is forthcoming though. But if it is anything like the docs already around for say VST3 or HALion, it’s going to be a lot of trial and error anyway.

This is very unfortunate because I want to be able to user one controller to set up 4 different ones to different modes/pages.

I guess they either didn’t think of this, or consider it an uncommon use case.

They’ve got to allow free choice within the MIDI Remote UI so users can pick which port is being used by whatever script. I can’t believe you can’t change the port currently, seems a really strange approach.

You can change the port, but you cant have 4 ports interacting with the same script.

Can you? In my MIDI Remote the port is fixed based on the initial setup. I’m talking about changing in the user facing interface, not the API script.

I don’t know, I didn’t try all the possibilities. I didn’t look to change it in the UI. I admit I am assuming that you can, just like if you use the UI to make the script. i.e. I meant in the UI.

However, even if you could, the script can not detect more than one of a device, it seems to always take the first one.

So if you do something like this

var deviceDriver = midiremote_api.makeDeviceDriver('ExampleCompany', 'RealWorldDevice', 'Steinberg Media Technologies GmbH')

var midiInput = deviceDriver.mPorts.makeMidiInput()
var midiOutput = deviceDriver.mPorts.makeMidiOutput()

var midiInput2 = deviceDriver.mPorts.makeMidiInput()
var midiOutput2 = deviceDriver.mPorts.makeMidiOutput()

var midiInput3 = deviceDriver.mPorts.makeMidiInput()
var midiOutput3 = deviceDriver.mPorts.makeMidiOutput()

deviceDriver.makeDetectionUnit().detectPortPair(midiInput, midiOutput)
    .expectInputNameEquals('MIDIIN (RealWorld)')
    .expectOutputNameEquals('MIDIOUT (RealWorld)')

deviceDriver.makeDetectionUnit().detectPortPair(midiInput2, midiOutput2)
    .expectInputNameEquals('MIDIIN (RealWorld) 2')
    .expectOutputNameEquals('MIDIOUT (RealWorld) 2')

deviceDriver.makeDetectionUnit().detectPortPair(midiInput3, midiOutput3)
    .expectInputNameEquals('MIDIIN (RealWorld) 3')
    .expectOutputNameEquals('MIDIOUT (RealWorld) 3')

It doesn’t work.

Maybe I am doing something wrong. Even if it did work, it would require finding out what the ID of the device is to know which one was which, and I haven’t figured that out yet either. The only ID I can get are all the same.

Looking at it again now I realize I haven’t tried making more than one driver.

I have the same device. Its very easy to create the remote midi controller in cubase tbough, yesterday i made one for my Elesias keyboard, tomorrow i will make one for the korg nanokontrol studio device.

You could duplicate the scripts, that way the multiple devices would show horizontally across the MIDI Remote interface too? They could be independently set to focus then also.

But that gets back to the inability for the user to be able to pick port per scripts - you’d have to adjust each script accordingly to use port x,y,z etc.

Please follow the steps provided by the manufacturer

Hi @KennyEastMids , could you please provide screenshots of your issue? Did I get you right, the nanoKONTROL Studio will be detected in a wrong way, as a nanoKONTROL1 & a nanoKONTROL2? :worried: