Solaris keyboard - specifications

Discuss John Bowen Synths - Solaris
John Bowen
Site Admin
Posts: 2013
Joined: Sat Apr 07, 2007 3:00 am
Contact:

Post by John Bowen »

HI,

I'll try to answer inside the quote:
CA3080 wrote:Hi John! The specifications published this far look extremely promising.
I'm thinking about whether Solaris can be expected to replace a number of my current synths. ....

Here are a few questions about Solaris:
  • 1. Does oscillator hard sync cause audible aliasing on Solaris?

    It better not! The sync function isn't there yet, so I can't tell you, but as I said....I certainly don't expect any.

    2. What about oscillator waveshape modulation? Does that cause audible aliasing?

    Do you mean Pulse Width Mod, as one example? No aliasing here...

    3. Does Solaris support different key-to-voice assignment modes? In "Oberheim-speak" the main modes are called Rotate and Reassign.

    I love the Rotate and Reassign modes from the old Oberheims. That's why I got Dave to put those in the Prophet 10 design early on. But as far as doing it with a digital voice structure, I really don't know what's involved (with the old analog hardware, you had discreet voice outputs that could be controlled in the fashion you mention). I just haven't had a chance to get my coding guys to answer this question.


    4. Does Solaris receive polyphonic aftertouch (PAT) messages via MIDI and respond appropriately?

    We discussed this while I was back there in October. They said we could - I'll just add PAT as another Source in the menus. (I'm told it can generate a lot of simultaneous midi data, though...)

    5. How can control signals (e.g. velocity, aftertouch etc.) be shaped in Solaris? Besides linear mapping of control source to destination it would be useful to have an exponential (e^x) and an "inverse" exponential (1-e^-x) mapping and also a few intermediate mappings.

    Yes, this kind of function has been on my mind for a while, even with the plugin (I have remapping for Velocity and the ModWheel for the Vibrato LFO in the plugin, but that affects it at the source, not the destination). Please list all of the control signals you would want to remap, and send the list to me.
cheers,
john b.
CA3080
Posts: 36
Joined: Sun Nov 25, 2007 11:06 am
Contact:

Post by CA3080 »

(John, I cleaned up the quotes a bit. Hope you don't mind.)
John Bowen wrote:
CA3080 wrote:
  • 2. What about oscillator waveshape modulation? Does that cause audible aliasing?
Do you mean Pulse Width Mod, as one example? No aliasing here...
Is PWM the only waveshape modulation available in Solaris? I was hoping for maybe sawtooth/triangle morphing as well.

Once again I'm referring to Oberheim Matrix-6, where saw/tri shape modulation can be used, for instance, to add animation to an otherwise static sound. Nord Modular G2's OscShpA and OscShpB modules offer a somewhat similar waveshape modulation possibility, but here aliasing is noticeable.
John Bowen wrote:
CA3080 wrote:
  • 3. Does Solaris support different key-to-voice assignment modes? In "Oberheim-speak" the main modes are called Rotate and Reassign.
I love the Rotate and Reassign modes from the old Oberheims. That's why I got Dave to put those in the Prophet 10 design early on. But as far as doing it with a digital voice structure, I really don't know what's involved (with the old analog hardware, you had discreet voice outputs that could be controlled in the fashion you mention). I just haven't had a chance to get my coding guys to answer this question.
You are their boss. Don't ask them. Tell them you want them to implement multiple key assignment modes. :D :D :D

John Bowen wrote:
CA3080 wrote:
  • 4. Does Solaris receive polyphonic aftertouch (PAT) messages via MIDI and respond appropriately?
We discussed this while I was back there in October. They said we could - I'll just add PAT as another Source in the menus. (I'm told it can generate a lot of simultaneous midi data, though...)
Great! :D

Is MIDI data really a problem for a modern CPU? Due to the low MIDI bit rate you automatically get limited data bandwidth. If a Solaris user chooses to clog the MIDI data stream with PAT messages it is his/her problem, not yours or Solaris's. What is the maximum real-world (as opposed to theoretical) MIDI message rate? 1000 messages/second? That is several orders of magnitude below what the audio DSPs are dealing with.
John Bowen wrote:
CA3080 wrote:
  • 5. How can control signals (e.g. velocity, aftertouch etc.) be shaped in Solaris? Besides linear mapping of control source to destination it would be useful to have an exponential (e^x) and an "inverse" exponential (1-e^-x) mapping and also a few intermediate mappings.
Yes, this kind of function has been on my mind for a while, even with the plugin (I have remapping for Velocity and the ModWheel for the Vibrato LFO in the plugin, but that affects it at the source, not the destination). Please list all of the control signals you would want to remap, and send the list to me.
I have used (or, depending on the synth, cursed the absence of) control signal shaping for enhancing the playability of synth patches. This mainly concerns velocity, aftertouch and possibly also MIDI key number. The point is to tailor the individual patch to a playing style without having to change the controller keyboard's velocity or aftertouch mapping curve. In one patch I might want amplitude to increase linearly with velocity, and the filter to open slightly with velocity 1-110 and then open a lot more in the velocity range 111-127 (fff). In another patch I want most of the amplitude response at low velocities 1-64 and then no further change at velocity 65-127, while the filter should open linearly with velocity.

For aftertouch I might want to bring in vibrato with aftertouch values 1-100 and no further increase above that, increase vibrato LFO frequency with aftertouch values 80-127, and linearly (OK, I know it is really exponentially, but that is beside the point) increase the filter frequency with aftertouch values 1-127. This can be done in Oberheim Matrix-6 using the available parameters including the Tracking Generator and the modulation matrix.

How can this be implemented in Solaris? A generic, simple and robust way of manipulating control signals is needed. How about a number of "Modulation Shapers" (maybe 4)? A Modulation Shaper takes a freely selectable modulation source (except itself) as input, maps the signal through a transfer function and makes its output available as a modulation source.

The transfer function can be defined by a number of points (2 fixed and maybe 4 variable). Each point specifies a value pair [input, output], where both input and output are parameters in the range 0-127, i.e. the standard MIDI control range. The points [0, 0] and [127, 127] are predefined and fixed. Two points cannot have the same input value. Otherwise all combinations of [input, output] values are valid. Optionally each point could have an associated smoothing function to select whether the transfer function around that point should be based on linear interpolation or some kind of smoothing function (cubic spline?). Using this point-based approach, exponential and inverse exponential transfer functions can be approximated, probably with sufficient accuracy.

Another approach to the transfer function is to have 5 predefined transfer curves ranging from exponential through linear to inverse exponential in combination with lower and upper input limits (if you want to map just part of the total input range of 0-127). Input values below the lower input limit map to output value 0, and values above the upper limit map to 127.
John Bowen
Site Admin
Posts: 2013
Joined: Sat Apr 07, 2007 3:00 am
Contact:

Post by John Bowen »

CA3080 wrote:Is PWM the only waveshape modulation available in Solaris? I was hoping for maybe sawtooth/triangle morphing as well.
No, PWM is not the only waveshape mod. There's a couple of 'morphing' oscs that go from sine to saw or sine to square, and of course any of the Wavetable shapes can be modulated. As for the saw to triangle, it wasn't in the original spec, but I believe Klaus told me he was going to add something like that. I don't have his final code set yet.
ca3080 wrote:...For aftertouch I might want to bring in vibrato with aftertouch values 1-100 and no further increase above that, increase vibrato LFO frequency with aftertouch values 80-127, and linearly (OK, I know it is really exponentially, but that is beside the point) increase the filter frequency with aftertouch values 1-127. This can be done in Oberheim Matrix-6 using the available parameters including the Tracking Generator and the modulation matrix.

How can this be implemented in Solaris? A generic, simple and robust way of manipulating control signals is needed. How about a number of "Modulation Shapers" (maybe 4)? A Modulation Shaper takes a freely selectable modulation source (except itself) as input, maps the signal through a transfer function and makes its output available as a modulation source.
Wow, weird! This is exactly what I'm planning to add to the plug-in version! How did you know? I use the plug-in version to check the viability and musicalness of ideas, as I can test and try things quickly. When thinking about this functional need some months a ago, I decided I would just add a section of 4 processors, which I indeed called 'Shapers' on the software panel!

Thanks for your in-depth description of how you use these - it helps me to make sure I've got all the needed parameters covered.

regards,
john b.
John Bowen
Site Admin
Posts: 2013
Joined: Sat Apr 07, 2007 3:00 am
Contact:

Post by John Bowen »

CA3080,

Ummm, I neglected to mention, the plug-in version already has a Shaper, which has 18 variable points (but they all share the same minimum and maximum values). The input is from audio as well as controllers, though the results from audio rate inputs is a little rough (the shaper is not running on the dsp, but the host).

This Shaper function was taken from my Waldorf Wave project (I made an 'emulation' of the Wave for Hans Zimmer a few years ago).

I'll look at what else we can do for the hardware version.

-john b.
John Bowen
Site Admin
Posts: 2013
Joined: Sat Apr 07, 2007 3:00 am
Contact:

Post by John Bowen »

Never having had an Oberheim Expander, I looked up what their Tracking Generator did, and see that the also Alesis Ion has something similar. As far as I can tell, my Shaper is the same thing, so I should change the name to match the 'industry standard' (I called it Control Shaper after the Wave, as I mentioned).
On the Solaris plug-in, you can have from 1 to 18 points. There's an input list that includes all of the standard modulation sources in Solaris (which is just about every audio and controller signal), and a switch to have the knobs switch from unipolar to bipolar output. Today I added a Lag control to smooth out the output signal. Audio sources work actually pretty well. What I can't do is adjust the 'curvature' of the slew from point to point...did the Oberheim Tracking Generator provide variable slope types?

-john b.
CA3080
Posts: 36
Joined: Sun Nov 25, 2007 11:06 am
Contact:

Post by CA3080 »

John Bowen wrote:Never having had an Oberheim Expander, I looked up what their Tracking Generator did, and see that the also Alesis Ion has something similar.
Oberheim Matrix-6 has a 5-point "Tracking Generator". Alesis Andromeda A6 also has a "Tracking Generator" with 2 to 16 freely adjustable points and a few preset transfer curves that can be applied. With Nord Modular G2 you have to make your own Control Shapers using such modules as SeqCtr (a 16-point transfer function with linear interpolation) or ShpStatic (an exponential / inverse exponential transfer function). My other synths lack control shaping functions. I don't know how the Tracking Generator is implemented in Oberheim Matrix-12 / Expander.

Take a look at the Andromeda manual page 179-181.
John Bowen wrote:As far as I can tell, my Shaper is the same thing, so I should change the name to match the 'industry standard' (I called it Control Shaper after the Wave, as I mentioned).
Actually, I like the term "Control Shaper" (hereafter called CS) better than "Tracking Generator". As a general principle, all terminology should be as self-explanatory as possible.
John Bowen wrote:On the Solaris plug-in, you can have from 1 to 18 points. There's an input list that includes all of the standard modulation sources in Solaris (which is just about every audio and controller signal), and a switch to have the knobs switch from unipolar to bipolar output.
I think this kind of CS is most useful for certain kinds of input sources, e.g. key number (=MIDI note #). This allows detailed shaping of, for instance, filter keyboard tracking in vocal patches where formant frequencies don't change linearly over the keyboard span.

For other control sources (e.g. velocity and aftertouch) a two-stage approach may be the best. First the input signal is linearly remapped using "windowed expansion":

If Input < LowerThreshold --> Output = 0
If Input > UpperThreshold --> Output = 1
Else Output = (Input - LowerThreshold) / (UpperThreshold - LowerThreshold)

where all parameters are in the range 0-1 and LowerThreshold < UpperThreshold.

The second stage is to remap the output of the first stage using an exponential or inverse exponential function. This remapping can probably be done with Solaris's existing CS. If you add a presetting capability to the CS, the user can easily select from a few curves including varying degrees of exponential and inverse exponential. Look at Andromeda A6 for suggestions on what preset curves to include.

If The LowerThreshold and UpperThreshold controls as well as a number of preset curves can be added to Solaris's existing CS, I think this is all that is needed. Of course, it would be very useful to have 4 instead of just one CS.
John Bowen wrote:Today I added a Lag control to smooth out the output signal. Audio sources work actually pretty well. What I can't do is adjust the 'curvature' of the slew from point to point...did the Oberheim Tracking Generator provide variable slope types?
You didn't mention this, but I presume you have linear interpolation between the points in the CS. For the CS usage we're discussing here, interpolation is needed. On the other hand, without interpolation (i.e. the CS output is "stepped") the CS can be used for sequencer-like applications. So it might be useful to have an interpolation on/off switch.

CS output temporal smoothing could be useful, but most important is input temporal smoothing of MIDI CCs and aftertouch, i.e. the low-resolution "continuous" control signals. However, not all CCs should be smoothed. Switch type CCs (e.g. #64 - Sustain) should not be smoothed. Can smoothing be selected separately for each CC used?

My previous suggestion to smooth the transfer curve was based on the assumption that just a few points would be used. If 16 or 18 points are used, I don't think smoothing or variable interpolation slopes are necessary.

IMO temporal smoothing is best provided using a separate modulation processor ("Lag processor"), where you can choose between linear or inverse exponential slope, thus emulating respectively an analog slew rate limiter and a simple RC network lowpass filter. A "Lag" control determines slew rate or time constant depending on the operational mode selected. Since rate and time are expressed in different units, it is probably more consistent from a UI perspective to control these using a single control labelled "Lag" using arbitrary units (or unitless). Does Solaris have such a Lag Processor?
Last edited by CA3080 on Sat Dec 01, 2007 2:41 pm, edited 1 time in total.
CA3080
Posts: 36
Joined: Sun Nov 25, 2007 11:06 am
Contact:

Post by CA3080 »

John,

One question and one UI suggestion about Solaris:

1. How is cabinet ventilation handled in Solaris? Is there a fan? if so, what is the fan noise level?

2. For performance situations it would be useful to have something like Nord Modular G2's Parameter Pages, where you can assign any of the patch parameters to a number of physical controls (knobs, buttons). From the pictures of Solaris it seems 20-30 knobs are available below the parameter displays. Maybe these knobs could be reassigned on a performance setup page. Does Solaris have different panel modes? An Edit Mode and a Performance Mode would serve different purposes and thus both be useful.
John Bowen
Site Admin
Posts: 2013
Joined: Sat Apr 07, 2007 3:00 am
Contact:

Post by John Bowen »

CA3080 wrote:You didn't mention this, but I presume you have linear interpolation between the points in the CS. For the CS usage we're discussing here, interpolation is needed. On the other hand, without interpolation (i.e. the CS output is "stepped") the CS can be used for sequencer-like applications. So it might be useful to have an interpolation on/off switch.
No, until now the CS was not interpolated, just stepped. That's why I added the slewing, but it's technically not a Lag Processor, just a variable rate to smooth out the CS output.
CS output temporal smoothing could be useful, but most important is input temporal smoothing of MIDI CCs and aftertouch, i.e. the low-resolution "continuous" control signals. However, not all CCs should be smoothed. Switch type CCs (e.g. #64 - Sustain) should not be smoothed. Can smoothing be selected separately for each CC used?
The plug-in only has smoothing on Pitch Bend, Mod Wheel, aftertouch, and the 4 CC Knobs on-board (which can be assigned any control number).
Does Solaris have such a Lag Processor?
Not yet!

john b.
John Bowen
Site Admin
Posts: 2013
Joined: Sat Apr 07, 2007 3:00 am
Contact:

Post by John Bowen »

CA3080 wrote:1. How is cabinet ventilation handled in Solaris? Is there a fan? if so, what is the fan noise level?
No fan. Not that much heat is generated, and there's plenty of air space inside. The proto doesn't have any ventilation, but we'll look into that for the final case design to see if it's needed.
2. For performance situations it would be useful to have something like Nord Modular G2's Parameter Pages, where you can assign any of the patch parameters to a number of physical controls (knobs, buttons). From the pictures of Solaris it seems 20-30 knobs are available below the parameter displays. Maybe these knobs could be reassigned on a performance setup page. Does Solaris have different panel modes? An Edit Mode and a Performance Mode would serve different purposes and thus both be useful.
No different panel modes. The only plan I had to do something like this was to use the 10 knobs below the graphic display to be assignable, when you select the Preset button. (I guess you could say the graphic display has panel modes, in this case.) The other 25 knobs are editing their respective sections, and I wouldn't change these, as that's the point of the UI.

john b.
CA3080
Posts: 36
Joined: Sun Nov 25, 2007 11:06 am
Contact:

Post by CA3080 »

John Bowen wrote:No, until now the CS was not interpolated, just stepped. That's why I added the slewing, but it's technically not a Lag Processor, just a variable rate to smooth out the CS output.
Temporal smoothing is useful mainly when dealing with constantly varying input signals. Velocity isn't such a signal. From your description it sounds as if velocity remapping using the Shaper will result in an 18-level quantization of the output signal.

Can linear interpolation between points be added?
John Bowen wrote:The plug-in only has smoothing on Pitch Bend, Mod Wheel, aftertouch, and the 4 CC Knobs on-board (which can be assigned any control number).
That should certainly be enough!
CA3080
Posts: 36
Joined: Sun Nov 25, 2007 11:06 am
Contact:

Post by CA3080 »

John Bowen wrote:The only plan I had to do something like this was to use the 10 knobs below the graphic display to be assignable, when you select the Preset button. (I guess you could say the graphic display has panel modes, in this case.)
10 assignable "performance" knobs is quite OK.

Thanks for your answers re: Solaris. I'm certainly considering preordering. :D
John Bowen
Site Admin
Posts: 2013
Joined: Sat Apr 07, 2007 3:00 am
Contact:

Post by John Bowen »

CA3080 wrote:
John Bowen wrote:No, until now the CS was not interpolated, just stepped. That's why I added the slewing, but it's technically not a Lag Processor, just a variable rate to smooth out the CS output.
Temporal smoothing is useful mainly when dealing with constantly varying input signals. Velocity isn't such a signal. From your description it sounds as if velocity remapping using the Shaper will result in an 18-level quantization of the output signal. Can linear interpolation between points be added?
Certainly. Keep in mind that for most of this conversation, I've been referencing the plug-in version with which I work in the Scope SDK environment (and somewhat limited module library). The hardware is hand-coded and not really related to the plug-in version modules, so we have much more flexibility regarding the specifications.

I also have some tables implemented for Mod Wheel, Velocity, and Aftertouch, which provide a number of response curves to the input data. There's some tracking functions I'm adding which should work as you described above.

Thanks for your input,
john b.
CA3080
Posts: 36
Joined: Sun Nov 25, 2007 11:06 am
Contact:

Post by CA3080 »

John,

Here are a few more questions about Solaris.

1. Does portamento/Glide affect the oscillators as well as the filters? Can filter portamento be switched on/off? Is the portamento "constant rate"?

2. Are envelope parameters "live"? (The envelopes on Creamware Minimax ASB seem to be precomputed at "note on", and are not adjustable after that. So in order to hear the effect of changing, for instance, the sustain level, you have to press the key once again. Not very tweaking-friendly!)
John Bowen
Site Admin
Posts: 2013
Joined: Sat Apr 07, 2007 3:00 am
Contact:

Post by John Bowen »

1) Portamento is normally offered on oscillators; sometimes it's difficult to apply it to sample-based objects, as their frequency control has to be a bit different. Filter portamento is typically 'contained' in the keytrack/note value sent to the filters, but this could be selectable, if really needed. The typical Creamware voice control provided constant rate glide for all voices globally, but I just implemented a simple glide per oscillator function in the plug-in, which is a logarithmic (constant time) glide. I'd like to have this in the hardware as well. As for globally, constant rate versus constant time, probably both will be offered.

2) Unlike the Creamware synths, the hardware Solaris has envelopes that update in real time.

cheers,
john b.
CA3080
Posts: 36
Joined: Sun Nov 25, 2007 11:06 am
Contact:

Post by CA3080 »

John Bowen wrote:Filter portamento is typically 'contained' in the keytrack/note value sent to the filters, but this could be selectable, if really needed.
Personally, I'd prefer portamento to be an all-or-nothing selection, i.e. portamento is either active on both oscillators and filters or fully disabled. A global switch would be OK. Anyway, IMO portamento is most suitable for monophonic patches, whereas polyphonic patches sound best without portamento (except for some effect type sounds).
John Bowen wrote:The typical Creamware voice control provided constant rate glide for all voices globally, but I just implemented a simple glide per oscillator function in the plug-in, which is a logarithmic (constant time) glide. I'd like to have this in the hardware as well. As for globally, constant rate versus constant time, probably both will be offered.
Sorry to say this, but I really dislike constant time portamento. (That's probably because my sonic ideal in monophonic sounds is heavily influenced by the Minimoog.) Please implement constant rate portamento as a global Solaris function. :)
Post Reply

Who is online

Users browsing this forum: No registered users and 0 guests