I would like to control my Keyswitches with the keyboard. The problem is that many keyswitches are placed outside the range of the keyboard (starting at C-2). I don’t want to use the octave+ - keys to get to that range, instead I would like to use an spare 25-keys keyboard and map it to start at C-2. I was able to do this in Windows time ago with an external program, but not in Mac.
What I would like to do is to configure it inside Cubase, if possible, in order to make it platform-agnostic. Or at least being able to configure it in my mac. The spare keyboard is a KORG microKey which has a program to map things but for some reason, it doesn’t allow to map its lower C to C-2…
Is there any practical solution to this problem?
Programming my spare 25 keys keyboard to start in C-2 to control KS and let the other keyboard as it is.
I want to use the spare keyboard just to trigger the Keyswitches. The switches start at C-2, but in order to get to this register, I need to push the octave - button, which I don’t want to.
So there is nothing to do with transposing, it is more use the spare keyboard as a console to trigger the KS, while my main keyboard continue as it is. I was able to do this in Windows with a program years ago, but in Mac I havent found an alternative and the Korg application to modify the microKEY doesn’t allow to do what I desire (because of arbitrary limitations, actually, and I tried to reach them as well).
You could just create a separate MIDI track with the “spare keyboard” as the input and your instrument track as the output and yes, transpose the midi on that MIDI track. The MIDI keyboard assigned to the instrument track would play normally, and the “spare” keyboard would have a “Transform” MIDI Insert that transforms the MIDI pitch down whatever you need it to be so that the default C is sent as C-2 without having to use the octave button. There’s even presets for “Transpose MIDI” in the editor.
I was thinking about the MIDI transformer, too, but am wondering whether it would be possible to do on the same track…
Say you set the input to “all MIDI inputs”, but configure the two keyboards to send on different channels. MIDI transformer has a filter for the channel, so if you add that as an extra condition to the pitch transform rule?
Hmmm. Same track. I just did something similar to this (though in Live) where I was using dummy clips to send Keyboard Maestro triggers via the same “key switch” notes on channel 16 which then forced new scripts in my G-Force Visualizer to parse in real-time set to the Live track. Basically, to sync custom visualization scripts to my timeline for live-launched visualizations. I purposefully chose channel 16 AND IAC driver just to make sure there was no propensity for mis-fires of notes. You send a C-1 to a bass track and you’ll know it
I’ll have to think about single-track solutions (and yes, it could work if you also transform the source channel to the same target channel as the sampler) but my brain actually prefers the separation. Hmmm.
To the best of my memory, some hardware controller keyboards allow the making of templates with non-default settings stored. And setting one of those templates as the default template to be used when powering up the keyboard. Not sure, if Korg keyboards can do this.
Plan B:
It’s arguably a bit goofy, but it can be done with the help of a virtual MIDI cable / MIDI loopback (using the terms interchangeably - but they mean the same thing). If I recall correctly, on MacOS MIDI loopback is a standard feature. On Windows 11 it’s currently being rolled out as a standard feature as well - but that’s another rabbit hole.
Here’s the idea:
Exclude the hardware keyboard from All MIDI Inputs
Have a dedicated MIDI track that listens only to the hardware MIDI keyboard (add that to the desired templates, so it shows up in new projects).
Caution: If you leave this MIDI track listening to All MIDI Inputs, you’ll rather likely end up with a MIDI feedback storm after the steps further down. And that typically freezes or crashes Cubase (at least in my experience).
Use the MIDI Transformer to transpose the incoming MIDI notes on that dedicated MIDI track to the desired range.
Make a MIDI loopback device (virtual MIDI cable) to always use for this purpose. Give it a name that’s obvious to you whenever you see it.
Send the output of that dedicated MIDI track to this MIDI loopback device / virtual cable,
Add this MIDI loopback device / virtual cable to All MIDI Inputs.
Hopefully I didn’t forget any steps in the above description, but I’ve tested this idea in the past and it seemed to work ok.
Finally I used an unsigned program called MidiPipe, which creates a pipe that receives the MicroKey signal and transposes it -48 to the MidiPipe Output. So I exclude, as you said, the MicroKey from the All Midi Inputs and I include the MidiPipe instead.
I have also written to KORG support, because they have and application that allows to do something similar, but it is somewhat capped and don’t allow the -48 transport needed.
The problem with this approach is that I have to launch Midi Pipe before Cubase and it is also an unsigned application. I hope KORG listen to me and allow me to do the transport via KORG KONTROL EDITOR, which would have been the best solution.
Thank you for your answers, they helped me to figure out how to do so.
Exactly, which is why the suggestion was (and still is) to just transform in the DAW. I use MIDIFire on macOS which IS signed, and it can do the same thing. But now you have to have another application dependency on something that can more easily be done with an additional track, and without having to sacrifice system-wide MIDI devices to do so. I’m glad you have a solution, but going through all of this at the cost of a device while adding dependencies on 3rd party software all to avoid hitting an “octave” button seems unwieldy and rather complex. Also, since this is the Cubase forum, I think it would make more sense to mark @Nico5’s post as “solution” even if you didn’t choose to use it. 3rd party solutions were always there. Just my opinion, of course.
I agree.
In fact I would suggest a slightly different approach. IF we can set the channel of the keyboard manually, and we’re not in need of many channels in our setup, we can set the channel of the keyboard to say 16, and then use the project input transformer to handle just the notes coming from this channel:
Indeed. You continue to go above and beyond when you help people here. Not only do you go out of your way to help, you’re quite thorough in providing full examples! Just a thanks for the contribution you make here!
It would be perfect if instead of looking for channel 16, you could look for the instrument itself. Or if you could set up this in the entry of the instrument you have in the Cubase Studio section, where the MIDI devices are. I can use the KORG KONTROL app to change the channel to 16:
How do you summon the project input transformer? I knew the Transformer in the MIDI tracks (and having to use one transformer for each track will be worse than using an external tool for sure). I’ll try your solution when I arrive home, thanks.
@Thor.HOG the solution @Nico5 proposed uses an external option as well, and the loopback in mac does not work as expected. I tried that before. However, it remind me how to do the other solution.
In any case I’m marking @m.c reply as solution in order to escape from the fury of @Thor.HOG (and also-mainly- because it appears to be a very good solution)
There is a catch with this solution. If you use the Project Input Transformer, you have to allow its use track by track. This is done in here:
In that P, you can choose Project (what I’ve chosen), Track or None. It doesn’t remove the transformer you have in MIDI Inserts, which is fine (I have a CC1 copied into CC11 in each track).
It is a solution, but it requires a setup. So at the end of the day, it is not 100% better than the Midi Pipe. Maybe with the Logical Editor you can make a macro that sets the input transformer in every track to PROJECT. To sum up:
With the Midi Pipe you need:
Create a pipe that transforms the notes in the keyboard to -48 via MIDIPipe
Have the program running with the preset before using it. The app is unsigned and you can download it from here: MidiPipe
Allow in cubase the Pipe as midi input, but not the microkey in Studio (just the first time)
PROS: Easier to set up, more transparent to the editor and you don’t need to modify the keyboard
CONS: You need an unsigned app and you have to run it each session (may this be solved?).
Now, if we’re to use virtual loopback ports, we can even use the midi remote, again from inside Cubase, and make it possible. I haven’t suggested this but it’s totally doable. What we can do is set a MIDI Remote to receive the notes just from the MIDI Port we want, and then set it to translate the notes to minus 48 (just an example) and finally send the new notes to a loopback port which should be in our All MIDI Inputs setup.
The MIDI Remote installation file: Test_Alter Notes.midiremote (1.2 KB)
The source code of this idea:
var midiremote_api = require('midiremote_api_v1')
var deviceDriver = midiremote_api.makeDeviceDriver("Test","Alter Notes","m.c")
var midiInput = deviceDriver.mPorts.makeMidiInput("anInput")
var midiOutput = deviceDriver.mPorts.makeMidiOutput("anOutput")
var detectionUnit=deviceDriver.makeDetectionUnit()
detectionUnit.detectPortPair(midiInput, midiOutput)
.expectInputNameEquals("Bome MIDI Translator 1")
.expectOutputNameEquals("loopMIDI Port")
var surface=deviceDriver.mSurface
var mapping=deviceDriver.mMapping
var subtract=48
var channel=0
for(var i=subtract;i<127;i++){
var key=surface.makeCustomValueVariable("key"+i)
key.mMidiBinding
.setInputPort(midiInput)
.bindToNote(channel,i)
key.mOnProcessValueChange=function(activeDevice,velocity,diff){
var velocity127=Math.round(127*velocity)
var newNote=this.i-subtract
midiOutput.sendMidi(activeDevice,[0x90+channel,newNote,velocity127])
}.bind({i})
}
var page=mapping.makePage("Default")
When we install it we can set the input port of the script to the one we need to apply the translation.
I find this approach more complicated than the project input transformer, since it relies on just another port, still it doesn’t rely on external utilities. Generally most of us use external utilities, I use a custom one I’ve made plus Bome MIDI Translator Pro, you may want to use MidiPipe, @Thor.HOG something else, the list is really big. So it’s just a matter of taste and whether it gets the job done
… and if it stays at that channel after rebooting the keyboard – since OP seemed to have an aversion to have to push any buttons on the keyboard :-). Or in other words, pushing buttons to change the MIDI channel after every reboot wouldn’t seem much easier than pushing buttons to change octaves.
And I imagine, they also keep their octave settings when configured and templates saved?
p.s. Using a dedicated MIDI channel rather than octaves, potentially also needs a little extra care when using multi-channel plugins like HALion Kontakt, Omnisphere, Hyperion, Unify etc.