I have been wanting to build a module, yet ended up not doing it because of my busyness of my former jobs and my “Master” degree, but since it is no longer the case, I am going to pay my “debt” to the community, trying to do the things I have mentioned yet not in the reality.
The original idea had rose in a casual discord chat where we were talking about wavetables, probably 3 or 4 years ago. I remembered I have mentioned that we could do wavetable with additive synthesis (you could easily search that comment since I misspelled additive as addictive), which works similarly to what most of the professional vst plugins like Serum and Vital; however, my busyness of my former job didn’t make this happen since there was some challenges to build the modules, lacking time on solving them:
The first problem is the complexity of a harmonic based wavetable that it requires precise tuning which each partial require an exact multiple of the fundamental frequency. In SunVox, most of the modules didn’t have the perfect octaves which playing them causes a slight drift creating a pulsing effect. Though, since the 2.0 update, there is a potential candidate for this task:
The FMX Module
This is the perfect module because it has high resolutions and real time control for phase and volume, and it has perfect tuning, along with 5 oscillators in the module which can be played individually without modulating to one another, meaning that if we stack multiple of FMXs with the correct frequency multiplication relative to the fundamental frequency, it is possible to construct any waveform if we have applied the correct volume and phase; nonetheless, this creates other problems:
1. How many partials are good enough and not CPU intensive?
2. How we change all the partials at once?
3. How can we even program the wavetable?
Clearly, it is a horrible idea to just tell others the concepts and questions and letting them to answers these questions and build the synth by hand since it is tedious to import all the settings for each partial to the synth, not to mention that we don’t even know what to do to decompose any given waveform as partials. Thus, we have to solve the problem above one by one.
The first question is harder than we thought since we don’t just need partials; we need a lot them. In the additive synth thread in KVR, if you have looked closely to the partial counts, seems like 512 is the standard for many additive synths. Clearly, we can’t just create 103 FMX and play them all at once because building synth module by module is less efficient than to build them on the code level, and it is impractical if we have a module using most of the CPU, and let your more complex projects horribly glitched out. Thus, the real question is, do we need this many partials to begin with?
Because of that question, I decided to do some experiments to see the optimal number of FMX to be used. Starting with observing the harmonics of a saw wave, higher the wave, higher the signal goes out of the audible range, so clearly, for specific use case, we could prune most of the partials since they wont be used unless playing the synth at the lowest range.
Because of that, I decided to split the wavetable into three (or possibly 4) tiers, for leads that usually plays in a higher pitch, only the first 40 or 80 partials are considered, while 120 (and possibly 240) partials for basses. Besides, these numbers will use all the oscillators from the FMX.
With the partial number determined, I need to find a way to hook up all the controls, but because each phase and and volume require its independent controls such that to properly change the waveform from frame to frame, we can’t use a single MultiCtl for all the controllers from the FMX, so for the tidiness of the project, a group of 10 controls are fit into a MetaModule as a Control interface. With the interface, we could control all the things within a single slider. Nevertheless, we still need to control multiple FMX, and a single MultiCtl is not enough since it can only support up to 16 controllers, but there is a workaround where putting the MultiCtl inside a MetaModule breaks this limitation. With all these solutions, we could build the complete architecture as shown:


The 40 partials Wavetable Synth, powered by 8 FMXes
Great, now we have the wavetable synth, and I decided to give it a name for this architecture – Haliaeetus, which is the scientific name for a group of Sea Eagles, including the well-known bald eagle, soaring along the sea of waves on the well-known genre of EDM Raves.
Except… there is no way to program the wavetable. It is true that the way is to apply FFT for the samples, plotting the curve of the magnitude and phase change of each partial with loading these curve into each of the MultiCtl module that controls the FMX modules, but clearly, this is a tedious process since I don’t think there is a person have the endurance and patience to import all 80 – 240 curves multiple times, not to mention that is error prone unless you are a computer. Thus, speaking of computers, let us give the task to them and make the wavetable editing more fun. Let me introduce:
The Haliaeetus Wavetable Editor!

This simple wavetable editor not only can draw and preview your waveform, but you can also import and .wav based wavetables created from other wavetables editors. With the set of waves, you could either save it back as a .wav for other vsts or most importantly, generate the Haliaeetus Wavetable synth within a few clicks! After you have generated the modules, because of the current limitation of the SunVox library, you need to open the .sunvox file as an module, but after all, you will able to play the wavetable out of the box!
It is currently available in Windows and Linux, have fun!
Thats absolutely insane ! Thanks for the hard work and the gift to the community ! Sunvox is so underrated…
Thank you! Hope you have fun and gotten inspired with the wavetables!