Thursday, December 8, 2022

On Wavetables - Some Rambling Notes on Wavetable/Waveform Synths and VSTs

2048 samples @ 44.1 kHz = 4.64E-02 seconds = 21.53320313 Hz
If you do the maths 2048 samples per slot is close to the number of samples you have for a cycle at midi not f1@44.1Khz (or so). So you can sample a synth from f1 (+/- some cents) and voila you can use that sample as a slot for your wavetable. Wrong?

Serum uses up to 256, 2048 sample single cycle waves in a .wav file

Serum uses 32-bit floating-point wav, with 2048-length tables.

Serum FM Wavetable Studio http://glowshrimpsoftware.com/sfmwts.html

WaveEdit uses 16-bit fixed-point wav, with 64 x 256-length waveforms per bank. WaveEdit allows powerful creation and editing of wavetables for the E352 and E370 VCOs. Using standard WAV formats, the editor includes a full toolbox of shortcuts. An audio Preview is available to audition the waves before loading into the module. ROM A, ROM B, ROM C in the 'banks' directory.

https://synthtech.com/waveedit/

SynthMaster and SynthMaster One are already capable of loading any wavetable saved in Serum .wav format

Deluge supports Wavetables in WAV or AIFF files, with cycle sizes of at least 8 samples, and the cycle size must be a “power of two”, with 2048 being by far the most common. The number of cycles is only limited by the Deluge’s RAM. The files must be mono.

“for Serum”, and the Deluge can read these. Such files are in the WAV format, and include a tag named “clm” indicating that the file is a wavetable, and the cycle size.

Ableton User Wavetable format. Wavetable reads the first few seconds (up to 256 wavetables) from the file. It's downmixed to mono.
Wavetable ensures that there are at least 2 wavetables so that the position slider has something to cycle through. If the file was created using Serum, it's downsampled to 1024 samples per wavetable. This is because Serum use 2048 samples per wavetable.

Pigment Up to 256 positions exist in each wavetable. Each position holds a waveform containing 2048 samples. You can also load in a regular WAV file and Pigments will parse it into a wavetable for you. The first 2,048 samples will be placed in position 1, the second 2,048 samples will be placed in position 2, and so on, until the maximum of 256 positions has been filled. Only the first 524,288 samples will be used (256 x 2,048 = 524,288). If you load a file shorter than 524,288 samples, Pigments will only divide it into as many
positions as is necessary to “use up” those samples. For example, a file containing only 16,384 samples would be divided into eight positions (8 X 2,048 = 16,384).

The current 'frame-size' for Drambo's WaveTable oscillator is 2048 and WaveEdits frames are 256

modwave supports wavetables with up to 64 2048-sample-length. You can import tables in Serum and WaveEdit formats - just load them directly into the modwave Editor/Librarian. If there are more than 64 tables, the modwave will assume that it's a generated crossfade and drop some of the intermediate tables to create a 64-table version. The modwave native storage format is 32-bit floating-point, 2048-length.

“230 million wavetable variations out of the box”. In fact, if my math is correct, that’s one new wavetable variation per second, every day, for roughly 7.29 years. Just sayin’.

A wavetable in Surge XT consists of up to 512 single-cycle waveforms (frames), each of which can consist of up to 4096 samples. Using the Morph parameter it is possible to sweep across the waveforms in the wavetable.

Illustration 70: Wavetable

The individual waves are equidistant in the table. When the shape setting is between two individual waves, they will be mixed to ensure smooth travel. You can’t edit the wavetable contents directly within Surge XT, but it is possible to generate custom wavetables with external software.

Surge XT can also import wavetables containing a clm block to indicate loop size (as used by Serum), a cue block (as used by various products including Native Instruments) and a smpl block. Wavetable files without loop information are loaded as one-shots.

This effectively lets you import various wavetables from other products such as Serum. All those 3rd party wavetables that have been tested in Surge XT have been reported to work flawlessly. To import custom wavetables, use the wavetable selection bar at the bottom of the oscillator display. This is where you can also download additional wavetable content.  Alternatively, you can simply drag-and-drop any compatible wavetable file anywhere over the Surge interface to load it.

You can even create your own wavetables for Surge using wt-tool or WaveEdit.

The individual waves are equidistant in the table. When the shape setting is between two individual waves, they will be mixed to ensure smooth travel. You can’t edit the wavetable contents directly within Surge XT, but it is possible to generate custom wavetables with external software.

Surge XT can also import wavetables containing a clm block to indicate loop size (as used by Serum), a cue block (as used by various products including Native Instruments) and a smpl block. Wavetable files without loop information are loaded as one-shots.

This effectively lets you import various wavetables from other products such as Serum. All those 3rd party wavetables that have been tested in Surge XT have been reported to work flawlessly. To import custom wavetables, use the wavetable selection bar at the bottom of the oscillator display. This is where you can also download additional wavetable content.  Alternatively, you can simply drag-and-drop any compatible wavetable file anywhere over the Surge interface to load it.

You can even create your own wavetables for Surge using wt-tool or WaveEdit.
The original Adventure Kid waveforms are 600 samples.

Vital by Matt Tytel.
Vital has a detailed Wavetable editor which can import FLAC, WAV, and export to WAV and resample a preset to a wavetable !!!
Vital has a native Wavetable format which seems to be JSON with binary encoded data. The default/factory 2048 samples + 256 wavetables.

Vital Basic ($0) 75 presets +25 wavetables
Vital Plus ($25) 250 presets ​+ 70 wavetables
Vital Pro ($80) 400+ presets + 150 wavetables ​

Tutorials

Helm
Dual oscillators (12 different waveforms, Sin, Saw, Square, Ramp, Rev Ramp, Course Medium Fine Quantised Sine, Course Medium Fine Quantised Saw) with cross modulation and up to 15 unison oscillators each. Sub oscillator with shuffle waveshaping
32 voice polyphony

Synapse Audio Dune2/3 Wavetables can have a varying amount of waveforms stored in them, between 3 to 64 waveforms in Dune 2 and 1 and 256 waveforms in Dune 3. 

The 1010 Music Nanobox Fireball manual says the wavetables should consist of 512 waveforms, with length 2048 each. I checked the Factory wavetables and see they have a number of samples that is consistent with 508 waveforms, rather than 512 (or waveforms of length 2032, but visually it seems like it's the former). So I created some wavetables in this format (at 48kHz/24 bit, like the factory tables)

The Waldorf Quantum and Waldorf Iridium have quite liberal limitations. Current Quantum and Iridium firmware has a maximum of 2,000 waveforms per wavetable:

4096 sample period x 217 waveforms
2048 sample period x 430 waveforms
1024 sample period x 846 waveforms
512 sample period x 1,645 waveforms
256 sample period x 2,000 waveforms
128 sample period x 2,000 waveforms
64 sample period x 2,000 waveforms

Wavetables must come in a single channel WAV file with 64 waves next to each other, each with 128 (or 256) samples. The Waldorf Blofeld has 38 slots (from 80 to 118) for custom Wavetables, and each can have a 14 character ASCII name. A simple tool for transforming wavetables from a WAV file into Waldorf's Blofeld SysEx midi format on Github.  https://github.com/clrnd/wave2blofeld

Description of PPG Wave waveforms and wavetables. It’s available here. each waveform consists of 64 samples, and there are 256 waveforms total, we can determine that the waveform table is 16KiB long.

UVI Falcon
On Mac: ~/Documents/UVI/Falcon/User Data/Wavetable
On PC: Documents\UVI\Falcon\User Data\Wavetable
Slices will also be imported if slices are arranged one after the other within an audio file, and the number of samples per slice is specified at the end of the file name following an underscore (e.g. “MySweep_128.wav”).

Uh-e Zebra 2
You cannot import wavetables but you can design your own waveforms with up to 16 waveforms to morph through per OSC

Access Virus TI2 has 64 forms if you count the Sine and Tri waves) Classic Oscillator Spectral Waves,

Korg DW8000 Waveforms. 16 Waveforms


The Yamaha TX81Z has eight waveforms.  A few seem to be in the PreenFM2 (such as, of course, Wave 1)  But it's not entirely clear which ones are fully replicated in the PreenFM2 by default. It might be interesting to add waveforms from the TX81z and varying feedback levels for each waveform. This took a very long time to get right. Considering the TX waveforms are 4096 samples and the PFM2 has a max 1024 samples they aren't 1:1 but sound basically the same.
TX81Z Waveforms and Harmonics

The Roland JD-800 employs Linear Arithmetic synthesis (introduced and made famous by the Roland D-50), which combines sample playback with digital synthesis. The JD-800 has 108 built-in waveforms, which can be expanded via PCM cards. Roland JD-800 3 MB of PCM ROM with 108 waveforms + 1 MB expansion, 4 waveforms (tones) per patch
SL-JD80-01 Drums & Percussion STANDARD
SL-JD80-02 Drums & Percussion DANCE
SL-JD80-03 Rock Drums
SL-JD80-04 Strings Ensemble
SL-JD80-05 Brass Section
SL-JD80-06 Grand Piano
SL-JD80-07 Guitar Collection
SL-JD80-08 Accordion

AudioTerm Tutorial
"The wavetables generated by the KTERM wavetable generator can be used with the following
products (other products may also work):
Terratec Komplexer (direct *.WT format support)
ImageLine Harmor (import *.WT file as image to Harmor)
Vemberaudio Surge (direct *.WT format support)
VAZ Modular /2010 (direct format support)
Wusik Wusikstation (use loop position modulation on a KTERM wavetable)
Camel Audio Alchemy (import KTERM wavetable as *.WAV)
Native Instruments Reaktor (use loop position modulation on a KTERM wavetable)
Waldorf Blofeld (direct *.SYX format support)
Ensoniq Eps16+ (direct *.EFE format support)
Ensoniq ASR series (direct *.EFE format support)
PPG WaveGenerator (direct *.wts format support)
Synapse Audio Dune2 (direct *.WT format support)
Xfer Serum (direct format support)"
AudioTerm by Mathias Gurk
Post by HighLordFixer » Fri Jan 26, 2018 2:24 pm

Other Wavetable Synths
  • Hardware (Wavetables)
    • Hydrasynth
  • Hardware (Waveforms)
    • TX81Z
    • Access Virus TI wavetables ?
  • Software
    • Spectrasonic Omnisphere
    • U-he Zebra 2
    • Native Instruments MassiveX
    • Camel Audio Alchemy
    • Sonic Academy Node (wavetable maker) + ANA2 (3 OSC + Noise 6 voice)
    • Steinberg Wavelab
    • UVI Falcon3
Wavetable Datasources