"Smoothing" for WT scanning
Moderator: Solaris Moderators

 Posts: 5
 Joined: Mon Jun 04, 2018 7:25 am
"Smoothing" for WT scanning
I understand that the aliasing during wavetable scanning inherent in the original PPG and Microwave synthesizers due to lack of processing power in those synths was intentionally built into the Solaris. This is a great feature, but there are times when instead I'd like the scanning to be seamless rather than "stepping" through a wavetable. Would this possible with a software update?

 Posts: 66
 Joined: Sun Apr 10, 2011 3:16 am
 Location: France
Re: "Smoothing" for WT scanning
Aggreed.
FYI in PPG Wave 2.X, all wavetables exist in both stepped and smooth versions...
FYI in PPG Wave 2.X, all wavetables exist in both stepped and smooth versions...

 Posts: 5
 Joined: Mon Jun 04, 2018 7:25 am
Re: "Smoothing" for WT scanning
Yes I also have the PPG Wave software, and I love having both options.
Re: "Smoothing" for WT scanning
This! Exactly what I needed recently. I assumed it will behave like this by default, but then discovered stepping and had to abandon my idea.
Re: "Smoothing" for WT scanning
Hi Everyone,
I need some input from potential beneficiaries.
I did some calculations and I think that scanning of wavetables is fascinating and very wide area of sound design. For example: I propose to add more functions modes for scanning. Not only discrete, but more than one continuous (morphing) methods.
1) Linear interpolation.
Everyone knows them  they are like mixing two waves, so it can be done either mathematically, with formula WT1 * x + WT2 * (1  x) or with mixer switching sources.
2) Cubic interpolation with simplest smoothing.
I was thinking, that linear interpolation has some rapid changes in between "stops", when modulation goes thru set wave. So I tried to interpolate with cubic function, assuming that at set values, where two interpolating curves join, the joins should be smooth. Therefor: not only values but also their derivatives should be event at set points. There is more than one choice for derivative. One is the most intuitive, and most efficient in terms of processor power. I kept even angle between linear interpolations. So at point i, the angle for joining two curves is same as angle for joining i1 and i+1. This will be better explained in attached document.
Equations look like a lot of calculations, but those are simple equation in form y=A*x^3+B*x^2+C*x+D, and for scanning between two waves in table there is only need to hold only set of four constants and calculate value by solving this cubic equation. Worst moment is at set values, when  if modulation is expected, either by mod wheel, envelope or LFO (or totally worst case scenario  by oscillator)  there is need to hold those constants for two curves.
What are disadvantages? When value at given wavetable time changes rapidly between consecutive waves, there is possibility of overshot, leading to some mild overdrive (most extreme case, that I found, is overshot of 12,5% of amplitude). This is either blessing or curse. I like driving signal paths so this might give interesting results still keeping changes in "smooth" territory.
3) If computational power allows, we can put more conditions on derivative. Simplest condition is that line at point i, represented by equation y=ax(i)+b, cannot have "overdriving" values at point i1 and i+1. We can also use some normalisation or trigonometric functions (arctan?), but I will not venture there if Hrast rejects second option, making any more processing demanding options even less possible.
Please, look at attached documents for visual explanation.
This was calculated, using simple 4x4 matrix, I checked and equations look correct. They work in Excel.
I need some input from potential beneficiaries.
I did some calculations and I think that scanning of wavetables is fascinating and very wide area of sound design. For example: I propose to add more functions modes for scanning. Not only discrete, but more than one continuous (morphing) methods.
1) Linear interpolation.
Everyone knows them  they are like mixing two waves, so it can be done either mathematically, with formula WT1 * x + WT2 * (1  x) or with mixer switching sources.
2) Cubic interpolation with simplest smoothing.
I was thinking, that linear interpolation has some rapid changes in between "stops", when modulation goes thru set wave. So I tried to interpolate with cubic function, assuming that at set values, where two interpolating curves join, the joins should be smooth. Therefor: not only values but also their derivatives should be event at set points. There is more than one choice for derivative. One is the most intuitive, and most efficient in terms of processor power. I kept even angle between linear interpolations. So at point i, the angle for joining two curves is same as angle for joining i1 and i+1. This will be better explained in attached document.
Equations look like a lot of calculations, but those are simple equation in form y=A*x^3+B*x^2+C*x+D, and for scanning between two waves in table there is only need to hold only set of four constants and calculate value by solving this cubic equation. Worst moment is at set values, when  if modulation is expected, either by mod wheel, envelope or LFO (or totally worst case scenario  by oscillator)  there is need to hold those constants for two curves.
What are disadvantages? When value at given wavetable time changes rapidly between consecutive waves, there is possibility of overshot, leading to some mild overdrive (most extreme case, that I found, is overshot of 12,5% of amplitude). This is either blessing or curse. I like driving signal paths so this might give interesting results still keeping changes in "smooth" territory.
3) If computational power allows, we can put more conditions on derivative. Simplest condition is that line at point i, represented by equation y=ax(i)+b, cannot have "overdriving" values at point i1 and i+1. We can also use some normalisation or trigonometric functions (arctan?), but I will not venture there if Hrast rejects second option, making any more processing demanding options even less possible.
Please, look at attached documents for visual explanation.
This was calculated, using simple 4x4 matrix, I checked and equations look correct. They work in Excel.

 Site Admin
 Posts: 1847
 Joined: Sat Apr 07, 2007 3:00 am
Re: "Smoothing" for WT scanning
Normanion,
Thanks for your postings, however there’s not enough computational power in our current board to provide these kinds of interpolation schemes.
As Hrast explained to me, there simply isn't enough power on a single DSP for all this. Wavetable oscillators are the most complex Solaris oscillators anyway, and having two sets of them simply isn't possible.
What IS possible, however, is to implement zero crossings when switching between waveshapes. This will help in eliminating some of the artifacts.
Thanks for your postings, however there’s not enough computational power in our current board to provide these kinds of interpolation schemes.
As Hrast explained to me, there simply isn't enough power on a single DSP for all this. Wavetable oscillators are the most complex Solaris oscillators anyway, and having two sets of them simply isn't possible.
What IS possible, however, is to implement zero crossings when switching between waveshapes. This will help in eliminating some of the artifacts.
Re: "Smoothing" for WT scanning
Thank You, John, for taking time to evaluate this idea and answer.
I haven't met any problems with switching waves mid cycle so I don't need zero crossing switching, but maybe others comment on this problem. As for me, I like artefacts in various forms, unless they sound like something's broken.
Different approach: how about adding new mod destination to Rotors? I am thinking about "Fader". At certain values  0, 42, 82, 127  there would be sound from respective sources. Between those values sound would be mixed, according to XFade setting. This way we could use WT oscillators with envelopes or LFOs like smooth WT scanning, but not increasing DSP power demand (or at least not much). As a bonus we could use different waves from different wavetables. Sacrificing "only" one oscillator for each wave and using maximum four waves. This would probably require option to unbind Rotors from internal driving oscillator, controlled by Coarse and Fine parameters and let to steer with "Fader", envelope or LFO (or  that would be interesting!  by remaining oscillator).
I haven't met any problems with switching waves mid cycle so I don't need zero crossing switching, but maybe others comment on this problem. As for me, I like artefacts in various forms, unless they sound like something's broken.
Different approach: how about adding new mod destination to Rotors? I am thinking about "Fader". At certain values  0, 42, 82, 127  there would be sound from respective sources. Between those values sound would be mixed, according to XFade setting. This way we could use WT oscillators with envelopes or LFOs like smooth WT scanning, but not increasing DSP power demand (or at least not much). As a bonus we could use different waves from different wavetables. Sacrificing "only" one oscillator for each wave and using maximum four waves. This would probably require option to unbind Rotors from internal driving oscillator, controlled by Coarse and Fine parameters and let to steer with "Fader", envelope or LFO (or  that would be interesting!  by remaining oscillator).

 Site Admin
 Posts: 1847
 Joined: Sat Apr 07, 2007 3:00 am
Re: "Smoothing" for WT scanning
Why not just use one of the VS Mixers? They allow for modulation of 4 inputs from the joystick, envelopes, LFOs, etc.normanion wrote: ↑Sun May 12, 2019 9:28 amThank You, John, for taking time to evaluate this idea and answer.
Different approach: how about adding new mod destination to Rotors? I am thinking about "Fader". At certain values  0, 42, 82, 127  there would be sound from respective sources. Between those values sound would be mixed, according to XFade setting. This way we could use WT oscillators with envelopes or LFOs like smooth WT scanning, but not increasing DSP power demand (or at least not much). As a bonus we could use different waves from different wavetables. Sacrificing "only" one oscillator for each wave and using maximum four waves. This would probably require option to unbind Rotors from internal driving oscillator, controlled by Coarse and Fine parameters and let to steer with "Fader", envelope or LFO (or  that would be interesting!  by remaining oscillator).
Re: "Smoothing" for WT scanning
Holy Cow! This is, how I fall into pit of own habits. I totally forgot about this options and arrogantly assumed I know this synth well. Right, so this one is out of table. Need to think about other sequencer proposition, if I have missed something.
Thank you, John!
Thank you, John!