Automating the Solaris using cubase?

Moderator: Solaris Moderators

John Bowen
Site Admin
Posts: 1722
Joined: Sat Apr 07, 2007 3:00 am

Re: Automating the Solaris using cubase?

Post by John Bowen » Fri Jul 05, 2013 6:28 pm

Yes, I've heard from others that Cubase can be tricky...thanks so much for posting!

Zahush76
Posts: 108
Joined: Tue Aug 07, 2012 12:33 am

Re: Automating the Solaris using cubase?

Post by Zahush76 » Fri Jul 05, 2013 7:19 pm

John Bowen wrote:Yes, as I mentioned, each parameter has to be identified before the value is sent. If you didn't see a CC99 or CC98, then no parameter was being defined, and therefore, the incoming data is affecting the most recent parameter. There's actually 4 entries we seem to be needing: the parameter identifier (CC99 & 98), and the value (CC6 & 38).
But i see CC98 & 99 being identified. The question is what do u do from here? Right now, it doesn't matter if i record automatiom and move one encoder - or 5 encoders while recording. The outcome is always the same. Cubase recognizes: CC6, CC38, CC98, CC99.
If i understood correct, CC98 &99 are also general numbers, and somehow represent the flow of NRPN going thru them. But obviously there's a missing link between two CC's (98 & 99) - and your 0 - 2045 NRPN list on the user guide (pages 61 - 64).
How can two CC's represent thousand of NRPN options?

John Bowen
Site Admin
Posts: 1722
Joined: Sat Apr 07, 2007 3:00 am

Re: Automating the Solaris using cubase?

Post by John Bowen » Fri Jul 05, 2013 7:28 pm

You have to put the CC99 first then follow it with the NRPN each time you want to send a controlling value.

Zahush76
Posts: 108
Joined: Tue Aug 07, 2012 12:33 am

Re: Automating the Solaris using cubase?

Post by Zahush76 » Fri Jul 05, 2013 7:30 pm

John Bowen wrote:You have to put the CC99 first then follow it with the NRPN each time you want to send a controlling value.
That's the part i don't understand. What does it mean to "follow it with the NRPN..."? Where do i "punch in" the NRPN number, specifically for the parameter i want to automate?

inaheartbeat
Posts: 34
Joined: Sat May 19, 2012 12:39 pm

Re: Automating the Solaris using cubase?

Post by inaheartbeat » Sat Jul 06, 2013 10:13 am

There is nothing complicated about NRPN's. They are really just a hack put together to allow a controller number beyond 127 and data values with ranges greater than 0-127. Since midi only supports 7 bit controller and data values in the messages the hack is to use two back to back messages for most significant byte (MSB) of the controller and least significant byte (LSB) of the controller. Controller number 99 (decimal) is reserved to specify the MSB of the NRPN and controller number 98 (decimal) is used to specify the LSB of the NRPN. Note that controllers really only have 7 bit ranges so that is why the range of controller values available is 14 bits (0-16k) rather than the full 16 bits (0-64k) that would be in 2 bytes.

Along with the NRPN number you need to specify the data along with it. Just as with controller numbers there are two messages reserved for the LSB and MSB of the data to be associated with the NRPN number that was sent. Midi CC 6 is reserved for the high order byte (MSB) of the data and Midi CC 38 is reserved for the lower order byte (LSB). Again, as with the NRPN number these are really just 7 bits each giving a range of 14 bits for the data value (0-16k).

Now that we have that defined, let's use a real world example with the Solaris since this is the whole point of the exercise after all. Let's say we wanted to set the filter 1 cutoff value at 28%. We look in the table of Solaris NRPNs and we see that filter 1 cutoff is listed as Fil1Tune0 and has the decimal NRPN value of 593. Since 593 exceeds the limit of the LSB of the NRPN we know that the MSB must be non-zero. To calculate it we take the decimal value of the NRPN modulo 128 to get the MSB of the NRPN in decimal. Basically, this just means tell me how many times 128 goes into 593 leaving a remainder less than 128. Thus, we get an MSB of 4 since 4*128 would be 512 and 5*128 would be 640 which is too much. To get the LSB of the NRPN we just subtract 512 from 593 and this gives us 81 decimal. So now we know that the NRPN definition message would be CC 99 with a value of 4 and CC 98 with a value of 81.

To calculate the data we observe that the range of the NRPN data values is 16,384 and we want to have 28% of that. So we multiply 16384*0.28 to get about 4588 when we round off. Now we want to encode that data value in the data portion of the NRPN. We use the same technique as for the NRPN value. We take 4588 modulo 128 to get 35. This is the MSB of the data. The remainder is the LSB. This is 108. So Midi CC 6 takes the value of 35 decimal and Midi CC 38 takes the decimal value 108.

The string of 4 midi messages sent out to set the Filter 1 cutoff value to 28% then becomes:

CC 99 value 4
CC 98 value 81
CC 6 value 35
CC 38 value 108

Note that the midi channel is part of the CC midi message so NRPNs are associated with explicit midi channels unlike sysex messages.

I hope this has been helpful. Thankfully, as I posted previously, all of this is really simple in Sonar and I am sorry that Cubase does not have any obvious way to do this. FYI, you should be thankful that John's team is using NRPNs for parameters because the limit of 7 bits for data would cause some horrendous stepping issues for things like filter cutoff, envelope stage times, LFO frequencies, and on and on.

John Bowen
Site Admin
Posts: 1722
Joined: Sat Apr 07, 2007 3:00 am

Re: Automating the Solaris using cubase?

Post by John Bowen » Sat Jul 06, 2013 11:35 am

Thank you for really making a clear explanation!!
It seems I could help things by publishing a list of all the NRPN numbers in hex, or a chart giving MSB/LSB for each so people won't have to do the math. It's just...there are a lot of parameters!

Zahush76
Posts: 108
Joined: Tue Aug 07, 2012 12:33 am

Re: Automating the Solaris using cubase?

Post by Zahush76 » Sat Jul 06, 2013 11:45 am

Hi!
First of all - a big thanks for taking the time to explain the proccess in depth, though there are some things i still don't fully understand.
As a side note, as easy as it might seem - i'm still a bit shocked that what one must do in order to work with NRPN's is sit back, relax, and take out his calculator...
Anyway, there are several things i didn't understand. In your example, i understood how you got to these values:
CC 99 value 4
CC 98 value 81
CC 6 value 35

But i didn't understand how you calculated CC 38 = 108. (musicians, huh?)

Anyway, if i understand correctly - you use CC98 & CC99 to define to which NRPN you're addressing, and CC6 & CC38 to control that parameter's value changes.
But, these are 4 differnt CC's. First of all, there's the issue of how i don't have a clue how to set these up in cubase, or where could i assign these numbers to these CC's.
Second of all, at the end - an automation track can be just one track, no?
When i think about automation, the most basic example would be something like this:

Image

In this example you can see an audio track, and below it an automation track which automates volume changes. Could have been panning, cutoff, or lfo rate for that matter. But my point is that after all these calculations - you need to draw your automation in one place. Not four places.
And, apparently, CC99 isn't it - since it handles the NRPN address. So anyway, how do you automate one parameter with 4 CC's? Do they just represent a starting point? What do you do after you assigned these values to these 4 CC's?

Now, in your example you explained how you set CC6, 38, 98 & 99 to control cutoff. What happens if you want to automate more than one parameter simultaniously. Like, in this example (again with an audio track - and below it there are 4 differnt automations for that track. volume, two send levels and an insert - but it would look exactly the same if these were assigned for cutoff, osc pitch etc):

Image

If CC6, CC38, CC98 & CC99 are "taken" for automating cutoff - what do you do when you wish to add a new automation for a different parameter on the Solaris?


Btw, after fiddling a bit with the Solaris and Cubase - i have somehow again reached a situation where Solaris can't control other synths including itself. "LocalOff" is on, SendArp is off. On cubase "midi thru active" is enabled. Channel number matches. Record enable is pressed. Yet something odd is happening. When i press the Solaris keys, i have meter indication on the transport - but not on the midi track itself.
When i playback the midi track with some midi data on it (which i've recorded before this happened), than Solaris responds accordingly, i.e. receives midi propperly.
If i set LocalOff to "off" than i can play it as a normal synth - but still doesn't seem to send midi (or at least, the transport indicates it does - but the midi track doesn't indicate).
Back to square one...

inaheartbeat
Posts: 34
Joined: Sat May 19, 2012 12:39 pm

Re: Automating the Solaris using cubase?

Post by inaheartbeat » Sat Jul 06, 2013 12:03 pm

John Bowen wrote:Thank you for really making a clear explanation!!
It seems I could help things by publishing a list of all the NRPN numbers in hex, or a chart giving MSB/LSB for each so people won't have to do the math. It's just...there are a lot of parameters!
No I really don't think you need to do anything. The fault is not in your documentation. The NRPN values are already there. The problem is that Cubase is sort of useless in handling them. As I said in an earlier post, Sonar has explicit NRPN handling so there is no math to calculate at all. I can automate as many NRPNs as I want at a time because unlike Cubase, Sonar does not have to see it as an automation of the 4 separate CC messages that define an NRPN. I created the example above by hand but I didn't have to do anything like that using Sonar. I just told it the filter cutoff NRPN value in decimal and the midi channel and it created an automation lane for it and it worked fine. All of 60 seconds as I said for both that and filter 1 resonance values.

To Zahush76, I am sorry you are shocked at NRPN complexity but be shocked at Cubase not at John.

Zahush76
Posts: 108
Joined: Tue Aug 07, 2012 12:33 am

Re: Automating the Solaris using cubase?

Post by Zahush76 » Sat Jul 06, 2013 12:11 pm

Now i'm triple shocked :shock:

So, basically what i should ask myself now is would i change my DAW (after learning it for quite some time) if i want to automate Solaris?

Zahush76
Posts: 108
Joined: Tue Aug 07, 2012 12:33 am

Re: Automating the Solaris using cubase?

Post by Zahush76 » Sat Jul 06, 2013 1:03 pm

Ok. I've just read this discussion:
http://www.cubase.net/phpbb2/viewtopic. ... sc&start=0

If i understand corretly, they say there's a known bug in Cubase when recieving NRPN, but not when sending NRPN (and that discussion was about an older version of Cubase). Anyway, they suggest some kind of workaround which i don't understand (involving XML files etc).
The interesting part is when one mentiones using the BCR2000 controller for using NRPN's with cubase. Could this be a solution for sending NRPN thru cubase to Solaris? Or is he only talking about a solution for cubase to receive NRPN?

inaheartbeat
Posts: 34
Joined: Sat May 19, 2012 12:39 pm

Re: Automating the Solaris using cubase?

Post by inaheartbeat » Sat Jul 06, 2013 2:32 pm

Zahush76 wrote:Now i'm triple shocked :shock:

So, basically what i should ask myself now is would i change my DAW (after learning it for quite some time) if i want to automate Solaris?
This is not a Solaris issue. ANY synth that uses NRPN's would have issues with Cubase. There are a LOT of synths that use them because it is the only practical way to get an extended range for parameter definition and data values. You definitely cannot compare the GRP A4 midi implementation to Solaris. I have a GRP A4 and honestly the midi implementation is skeletal at best. Automating filter cutoffs using just a CC value alone just doesn't sound right because the cutoff range is huge and has to be divided among 127 values. You can definitely hear the stepping of the controller.

A very simple alternate solution if you want to use Cubase is to use the user definable external CC values and automate them in Cubase. Then have them as modulation sources for your Solaris. To avoid zippering put them through a lag processor if necessary. Problem solved.

Zahush76
Posts: 108
Joined: Tue Aug 07, 2012 12:33 am

Re: Automating the Solaris using cubase?

Post by Zahush76 » Sat Jul 06, 2013 8:18 pm

inaheartbeat wrote:
Zahush76 wrote:Now i'm triple shocked :shock:

So, basically what i should ask myself now is would i change my DAW (after learning it for quite some time) if i want to automate Solaris?
This is not a Solaris issue. ANY synth that uses NRPN's would have issues with Cubase.
That's why i wrote - in the quote above - that i'm asking myself if i should change my DAW. I wrote "if i want to automate Solaris" because currentlly it is the only synth i got that uses NRPN's. All the rest of the synths on my desk are much simpler in this regard.
Btw, another hypothetical way to allow this in cubase is if there was something for Solaris - similar to the Virus TI's Total Integration solution. Some kind of template that works as a vst within your DAW, and corresponds to all the Solaris' parameters.
I don't know - but perhaps John can take something like the Solaris plugin as a basis for such a template.

And there's the question of using a controller such as the BCR2000 to bypass this in cubase. What do you think of this solution? Can it work as a "bridge"?

Zahush76
Posts: 108
Joined: Tue Aug 07, 2012 12:33 am

Re: Automating the Solaris using cubase?

Post by Zahush76 » Sun Jul 07, 2013 6:54 am

Could this work?
http://ctrlr.org/

It appears as if this could allow me to design a template for controlling the Solaris, and it can appear as a VST within cubase (or any other DAW for that matter).
I'll dig in a bit deeper before i start - just to make sure this could indeed do the trick. If it can - then this could be the "Total Integration" of Solaris, although 2045 parameters seems a lot of work. Maybe i'll start and others will join?

Neil
Posts: 49
Joined: Wed Dec 14, 2011 7:23 am
Location: Germany

Re: Automating the Solaris using cubase?

Post by Neil » Mon Jul 08, 2013 8:40 am

Personally I am deeply suspicious that the problem for us Cubase users is caused by an NRPN midi feedback loop.
Cubase will filter Sysex, notes etc but not NRPN. So when Solaris has RX disabled we can record NRPN to Cubase, Then disable Tx & enable Rx and is works - but why Filt1 tune works always and Filt1 Res causes feedback I don't understand...
Can Sonar filter NRPN thru?

PS Zahush - we are battling the same problem - I read your posts on other forums and also the frustrating replies you received from people who don't grasp completely the problem! (Take consolation - they're just jealous 'cos we have Solaris).

But the fact is that something that should be super simple is infuriatingly complicated....sigh.

John Bowen
Site Admin
Posts: 1722
Joined: Sat Apr 07, 2007 3:00 am

Re: Automating the Solaris using cubase?

Post by John Bowen » Mon Jul 08, 2013 9:24 am

Neil, can't you convince Steinberg to work on this?

Post Reply