Can Vital export a Wavetable that Serum can import?

Can Vital export wavetables that Serum can import?

Or also, I have VPS Avenger. I think Avenger can import Serum wavetables too.

Yes, you can export a wav file which you can import into Serum, Avenger, Dune3 etc…

You can do it from the wavetable editor in Vital, in the options, there is the “Export to .wav file” (It took me a while to find it since I was only looking in the wavetable options from the main voice tab view)

1 Like

Do you know the best way to export a WAV from the DAW to import into Vital?
I.e. what length of WAV file is appropriate to import into Vital for it to work best in the Wavetable section?

I think it doesn’t matter much, Vital can detect the frequency of the wavetable you want to use, when importing the sample file drop it with the “Pitch Splice” option (when you drag a WAV file into the oscillator section 3 options will appear).
That way Vital will automatically detect the base frequency of your sample and splice it that way.

From my experience, having the base frequency around 100hz is good, that’s about G2 (if you import a much higher note, it can take interpret multiple cycles as a single one).

1 Like

I thought the norm was Middle C (C2), but I can try G2 and import with Pitch Splice :+1:

I don’t know if it’s the norm, I just said that as my experience it worked well with G2 :grin:.

As I said, it doesn’t matter much as Vital will detect the frequency of the imported wavetable.
But it’s better to have a low frequency, so C2 should work too.

Don’t mix things up: A sample is conceptually different to a wavetable.

A wavetable consists of a number of single cycle wave forms (aka wavetable slots)
Icarus 2, Rapid, Avenger and that like afaik go by 2048 samples per single cycle.
A single cycle is the basis to feed the audio buffer of the synth. So you can have a sine represented in 2048 samples or a saw and blend between them. Different pitches are derived by playing it faster or slower. The single cycle of 2048 samples is exactly used each sample when you play a low f#.
One way to represent such a wavetable is to put slot after slot giving you a wavefile of n * 2048 samples.

A sample is a linear recording of something, i.e. not a collection of single cycles. A sample could change pitch. Single Cycles of a wavetable should actually not …

Anyways if Vital adheres to the quasi standard of exporting a wavetable with the 2048 sample per slot definition then all the other WT Synths can load that.


Whats the best workflow of getting a wavetable from Avenger or Serum into Vital, and then back out again?

Take the example of Avenger. I am rendering out a C2 note .wav file with these settings:
Then importing it into Vital - I am finding the Pitch Splice works better than “Wavetable” import. The latter produces a bit of distortion or fuzz in the sound.
Then I export it from Vital to .wav file format, then I re-import it back into Avenger:

You can see (below) it does take 2048 format (which is the same format Serum takes).
I am getting pretty close to the original wavetable I export in Avenger to get it close-sounding, but not exactly.
I am pretty satisfied with the sound but would like to be more exact if possible.
Do you have any tips on getting it nearer to the original as possible?

As a summary, here’s what I am doing:

  1. playing a preset in Avenger which has been created using a wavetable (taking the fx and vibrato off it so its a pure sound). At C2 pitch, about 1 bar in length.
  2. Rendering that out as a .wav file (with the above render settings)
  3. Importing this into Vital via the Pitch Splice method
  4. Exporting this as a .wav from the wavetable window
  5. Re-importing this . wav wavetable into Avenger at the 2048 setting.
    I’m doing this just as an exercise to see if I can get it as close as possible to the original Avenger wavetable. (Avenger can import wavetables but not export them.)

Is volume important - does it have to be normalized at 0db?

Avenger import settings:

That is easy to explain. Because you start with a “pitched sample” not with a “wavetable with single cycle slots”.

What? Huh?
Why does importing a arbitrary sample as wavetable still work?
Because you still can scan though the sample - meaning hop from slot to slot (slot aka frame) - in a linear fashion, giving you the impression you play back the sample, for instance with a ramp up LFO.

But this is not a wavetable by the definition of 2048 samples per slot/frame.
To give you an intuition of what this slot/frame thing means, here’s a picture of a Icarus 2 Wavetable with 32 slots (not all shwon in the picture), which I have created “Region markers” with the help of Wavozaur Editor. You can see - Each 2048 sample slot/frame contains a single waveform, that can pe played back. It starts with a saw, then sqaures with different pulse widths and so on… That is the “concept” of Wavetable at it’s core…

Then let’s look what the Splice Algorithm does. It sets the Windows Size (i.e. the Frame/Slot Size in samples) of your sample, and this is a function of sampling frequency and pitch of the sample … look into my post here: Tipp: WT Editor: Audio File Source and "Window Size" parameter - What does it actually mean
And for an sample pitched to A2 the slot size is different than the 2048 samples per slot/frame.
So the “Splice” Algorithm does detect the correct slot/frame size for your sample to be interpreted as a “wavetable”.
As you see in my linked post - For A2 the correct size would be around 400 samples. Let’s again do the maths …
If we have 44100 Hz/second sampling frequncy and divide that by 400 we get approximately 110! That is I can fill the audio buffer of the synths 110 times with 400 samples and will get back my pitch of A2 …

Then when I export my Mellotron Choir Patch as sample, I don’t get back the original sample. Now it is set ot 88200 Khz and is 256 * 2048 samples long.
That means Vital has resynthisized it to become a wavetable wav.
And as far as I see it - Vital creates zero crossings at the frame/slot boundaries in the export, i.e. making each frame/slot a perfect single cycle.

Summary: You start with an arbitray sample which has ONE pitch.
1.) Import it into Vital with “Splice”. Optionaly check the framesize and do the maths to be sure Vital did a good job
2.) Export it from the Vital WT Editor als “Wavefile”. The resulting sample should have a lenght of n * 2048
3.) Go to any other WT synth and import the Wav file you got in step 2 with the “Import Wavetable” option.

When I take a perfect (zero-crossing) single-cycle from an audio sample and load it into one of Vital’s OSCs with pitch-to-splice mode, it should work right=

I tried it but noticed that the cycle wouldn’t begin where I thought it would (at the first zero crossing). It still worked and I was able to “nudge” the position to the start position I expected.

What is the best practice when importing single-cycles I took from a sample? I noticed the talk about sample lengths (eg 1024, 2048) and realized that my single-cycle had a different sample length. Does Vital automatically stretch or adapt any the single-cycle to it’s standard?