Though Vital does not present its ability to do this natively to the user I think it’s really interesting. As has been noted before in other places, the 2048 sample-length of default wavetable formats corresponds to “F-1, detuned -22 cents”. This can be thought of, in Vital, as “the F above middle C, in an oscillator with -48 semitone detune and -22 detune”
What this means is that, at this frequency (F -1 detuned 22 cents) the wavetable in Vital is playing back the “natural sampled frequency” of its wavetable, at 44100 samples/second.
Now, Vital (as is the case with most wavetable synths) defaults to this “fidelity” because a 20Hz wave (the lower limit of human hearing) sampled at this frequency will be able to encode information up to 20kHz (the upper limit of human hearing, and basically the Nyquist frequency of normal 44.1kHz audio). So it’s a nice, “safe” wave size. And indeed, if you use Vital’s resynthesize preset to wavetable, it generates a note at this pitch (well, with the synth’s master voice detuned so that it’s this pitch) for 4 seconds (the duration required to cover exactly 256 “frames” at this sample rate).
So far, this is all public information. However, things get interesting when you drag a sample ONTO Vital and attempt to use it a wavetable. Specifically, if you import it “as a Wavetable” (rather than using Pitch Splice or Vocode, which involve resizing the FFT bins for pitch detection algorithm purposes).
If you do this, and you have the oscillator set to -48 semitones -22 cents and you play F above middle C, and you set LFO 1 to control wavetable position with a linear ramp, and you set LFO 1 to have a duration that matches the sample’s initial duration, and you set the blend mode to “file” or “time”, you will have created, in essence, a sampler.
What you’ve done is you’ve treated all of the non-harmonic content of the sample as though it were part of the harmonic partials of some much lower-pitched waveform (this works thanks to the magic of the Nyquist theorem) and divided it into small “grains”. Those grains have a duration of about 46 milliseconds. As you drag the wavetable position, you “slide” those grains around with crossfading.
You can adjust the size of these “grains” too, though doing so will involve some math. If you edit your wavetable, you can change the FFT “Window Size” to control the duration of each grain. You have to recalculate the “root pitch” if you do this, but using octaves it isn’t so bad (using 4096 as a window size, drop an octave. Using 1024 as a sample size, go up an octave. These each double and halve the duration of the grain, respectively)
You can also set Vital to “Vocode” spectral mode… in this mode, reducing the pitch of the oscillator will reduce the window size dynamically, but keep the sample playback rate the same (effectively extending/reducing the size of each grain). You can then use the spectral shift knob to “tune” the grains (Formant shift mode works similar, except it also reduces oscillator pitch, so you have to spin the Formant shift knob opposite your pitch motion to extend the grains). You can set a Macro up that adjusts the Formant and Oscillator pitch knobs in opposite directions and that Macro can manipulate “grain size” (the Formant Shift knob covers 2 octaves in each direction so you need to set your bipolar macro to connect to oscillator semitones bipolar in a 48 range, and to Spectral Morph Amount in bipolar with a -1 range)
Now, all that’s left is to use Unison mapped to the Wavetable position to create a “grain cloud”.
Tong Cloud.vital (440.8 KB)