Wavetable waveform view
-
@DanH just define the min-max values for each 'velocity' layer, define the LoKey/HiKey numbers, and run the wavetable converter.
@ustk the main advatage of using wavetables is that the transitions between the different waves are interpolated, hence modulating the position will be smoothed.
With a sampler you have 2 options if you want to do the same. Let say you want to go from sine to square :
Either you layer your samples like on the picture above, but when modulating the position, you'll get abrupt changes between sine-tri-saw-square (but maybe that's what you want / you don't care).
Or you can layer your samples so each one 'crosses' the previous and the next but this is like dry/wetting a signal, there's no "morphing" between the waveforms.
Try for yourself ! I personally like wavetable synths :) .
Christoph put an example project in his repo. -
@Matt_SF right, how many velocity layers do I want?
-
@DanH that's up to you . It depends on your project and what you want to achieve...
For an oscillator which goes simply from sine to saw, then 2 waves should be enough but for complex wavetables you should use as many samples as needed.
Your samples are the 'key-frames' you want to go through. HISE converter then creates the middle frames. -
@Matt_SF Thanks, you can do a smooth interpolation from sampler group XFade too, hence my question
-
@ustk You can use up to 128 different wavetables for each note. If you're doing this with a sampler the voice count will rise up ridiculously.
-
@Christoph-Hart Ok I see. In my case I need only 4 waveforms, monophonic, so I don't think it is as bad.
-
@Christoph-Hart Oh, and I forgot to mention the user should be able to select whatever wave he needs between this group of 4 dynamically from a browser and even create his own shapes. So I think I better have to stick with a sampler...
-
@ustk said in Wavetable waveform view:
@Matt_SF Thanks, you can do a smooth interpolation from sampler group XFade too, hence my question
oh ok, I'm aware of groupXFading but I never tried it. Guess I'm up for some A/B testing this evening :)
-
@ustk Yeah in this case the sampler is better. Are you creating the samplemap dynamically whenever the user swaps one of the four samples?
-
@Christoph-Hart I haven't worked on it for a while but I reckon I create a sample map with all samples stacked and ready on note 0 (that is forbidden to play), and when selecting 4 samples among the stack, I just move them across the playing range and assign their group
The fact is that the stack is fixed. So I might find a way to load external samples instead and save the sample map so it can be recalled
-
@ustk said in Wavetable waveform view:
@Matt_SF Thanks, you can do a smooth interpolation from sampler group XFade too, hence my question
So I did a quick test and group XFading sounds good. It's still crossfading but the results sound really close with both techniques (with simple waveforms obviously).
Of course for what you want to do, group XFading is the answer.I'll try in my actual project to see which is better.
However, I'm working with single-cycle waveforms and when I put them in the sampler, it makes HISE crash on the first note I play...
I don't know if you're experiencing the same behaviour...@Christoph-Hart should I create a new thread about it ? This is what I got during debug :
JUCE Assertion failure in samplebuffer.cpp:341 ... JUCE Assertion failure in streamingsamplervoice.cpp:222
-
Does the wavetable synth stream from disk or is it all loaded into memory?
-
-
In my experience, waveforms with loops of shorter than about 600 samples are likely to crash HISE, even when loaded into memory. But with waveforms that short, a wavetable synthesizer is the tool to go for, rather than a sampler. Seems to handle it easier.