Wow, great minds think alike after all! But I'd want it taken to the next level with each coordinate or 'cube' within the larger block having its own volume, pitch and pan as minimum.
Interestingly, static_cast points out the flaw in our logic.
static_cast wrote:Actually, the technique above is a 2d wavetable. You're driving around this 2d surface - that is, you can control your longitude and latitude - and the height of the land is the output.
Now it seems it’s been a struggle to implement this 2D wavetable, let alone a 3D ‘cubetable’ (also mentioned in your thread).
I've taken this quote from m3m on the Reaktor forum, because I think it sheds light on a hack method of achieving what you want.
m3m wrote:--- 3 standard wavetables - made from audio tables, probably; call them WTx, WTy,WTz; units in range 0 ... 1 across and down each wavetable (IE you can play the table by scanning across it with a Ramp oscillator whose amplitude is set to 1, and you can use a modulation source to crossfade through your waves by modulating in the range 0 ... 1); set interpolation ON for both axes of each wavetable (I haven't done this in my screenshots, sorry - it's so the audio quality's higher and you can crossfade between waves).
Basic A also touches on the hack solution.
Basic A wrote:Just use the 3 wavetables (in a synth like Atlantis/Massive/Albino), automate the mix amounts, route the three outputs to one output.
Same thing in essence, but [scanning the coordinates] won’t be all on one fader…
Static_cast explains both the problem and nods towards the solution pretty well…
static_cast wrote:
Actually, the technique above is a 2d wavetable. You're driving around this 2d surface - that is, you can control your longitude and latitude - and the height of the land is the output.
A standard wavetable is like a normal graph - you can control where you are on the x-axis, and the y-axis is the output.
A 3d wavetable would be more like... umm... a gas tank full of (stationary) smoke in a funny marbled pattern, where you move around the tank (you can control longitude, latitude and height) and the "result" is the opacity of the smoke at that point.
I'm not sure if a synth with a 3d wavetable exists. How feasible it is depends on how the wavetables morph into one another. If it's simply crossfading, then a 3d wavetable would not be complicated to implement at all and is basically tantamount to using a 3 oscillator synth and controlling the level of each. That wouldn't really be very exciting and you can rig up most synths with some kind of X-Y MIDI control to fade between oscillators. However, take the case of Massive. The wavetable position knob doesn't just crossfade between two wave shapes... in the more complex wavetables it's actually crossfading through many more (I think there are up to a hundred nodes or something like that, but I'd have to check). This is necessary in order to create interesting "morph" effects, otherwise it just sounds like, well, crossfading.
Now, if you have two axes instead of one, you could end up with that number, squared - so a hundred wavetables on one axis, a hundred on the other - that's 10,000 wavetables for one oscillator. Each of those being a few hundred samples, or more.
And even a "single" wavetable - no morphing - isn't as simple as it seems. Digital synth developers always need to avoid aliasing somehow, and with wavetable synths that often means using a different table (containing fewer or more harmonics) depending on which note on the keyboard is played. This means that even a single wavetable synth could actually be using several wavetables "under the hood".
To cut a long story short, to do it properly would take up rather a lot of memory and CPU. Of course, if you just want to fade between 3 wave shapes, you can just use a synth with 3 oscillators and adjust the level of each.
How do you make your 'cubetable' synth?
Start with one wavetable.
As static_casts has pointed out, with 1D wavetable synthesis we can choose which index position we want along the X axis and the Y axis is our output.
-----------------------------------------------------------------------
Make it 2D by adding more wave tables such that if we read only the first index position from each wavetable, we hear a new waveform as we move sequentially from one wavetable to the next. This gives us 3 axes already but would not yet be the ‘cubetable’ synthesis we’d like.
So far the controls would be as follows:
Our X axis control allows us to scan from index position to index position along an individual wavetable. This functions exactly as we know wavetable synthesis today. The Y axis control scans from wavetable to wavetable, always at the same index position on each wavetable (to keep things simple until we reach for the modulators!

). Our output is mapped along the Z axis as static_cast says above.
How do you swap from wave table to wavetable?
Surely as Basic A has pointed out, each additional wavetable could be routed into a mixer so we have control over the volume of each wavetable. Then when we want to swap between wavetables, as mentioned, we crossfade between them (or even automate a sequential muting system).
-----------------------------------------------------------------------
To get the ‘cubetable’ synthesis going, as static_cast points out, we’d need to layer a whole new set of wavetables on top of the first set and so on. This would mean having an ‘index slider’ control on the Z axis so we could crossfade from layer to layer.
I don’t know what axis (if any) the output would be on, because essentially we’re within the cube still (again like static_cast points out, within a ‘gas cloud’). Each X, Y & Z coordinate is a complete waveform that can be output. Maybe as we scan upwards and downwards between layers along the Z axis, the axes merely become swapped around so that the Z axis becomes the time domain while the X or Y axes become the phase domain?
Perhaps the easiest way to present such a synth would be to have a fully 3D GUI. The visualisation of such a cubespace would simply be a semitransparent block divided into segments. One would also have three slider controls determining the coordinates of the playback head, ie which blocks within the larger cube are 'read' for an audio output. The X, Y & Z controls would all need to be fully modulateable with envelopes of course so that we could have endlessly evolving sounds.
-----------------------------------------------------------------------
So the key is surely in handling the crossfading between the wavetables and different layer?
Your thoughts appreciated cuz I’m confused and beyond the limit of my certain knowledge lol
-----------------------------------------------------------------------
Here's a pic of how I've got things sussed in my mind...
Click to enlarge
