I'm hoping for a bit of guidance on rebuilding the 'wave table read' module into something a bit more powerful. A 'wave table array read' module. Obviously, this requires a bit of work.
I'd like to use the data the wavetable 'set' primitive generates with the 'wave array read' primitive module, as this would allow me to build up an array of arrays and do things like the sync oscs you might see on a waldorf synth, or the wavetrip oscs, or the 'carbon' osc on Massive from NI, ie things that you can't do by fading between two oscs.
I'm pursuing this method rather than say doing the same thing in float arrays as float arrays simply are not fast enough for this purpose. Believe me, I've tried. Scanning through the wavetable in real time, is vital for this method, and rebuilding the wavetable after every tweak in the middle of a sound simply is not a viable option. Nor is stacking 128 wavetable oscs.
Of course, this generates a problem, all the wave read stuff freely aliases when stuff is pitched up. Which is why I'm trying to use the wavetable primitive - as this generates bandlimited single cycle waveforms in a big array - which is perfect. If I feed it an array of 2048 it comes back with a big array of 2097152 samples - 1024 very nicely FIR'd single cycle 2048 waveforms, with the most filtered waveform starting at array and the least filtered cycle at array.
The issue comes with understanding the scaling of the array that is ouput from this wavetable primitive.
Now, these arrays are tricky to work with as I can't open them up exactly and have a look - that crashes SM, or maybe not, but I haven't got the patience to give it the time it would need to fill the text box on my rubbish old laptop.
But I'm struggling. If anything I'm worsening the aliasing. Some advice on how to work with this data would be appreciated. For example is it designed as 8 single wave cycles per midi note, or a new cycle every 1024th sub nyquist ... or ?
I could I suppose go into a wave editor, and do this work manual, with an FIR filter by hand, and put the output waveforms in an array I understand, but that would be time consuming to say the least - basically a (far) clearer explanation of the output of the wave table primitive would be much appreciated