ULTRA-CLEAN OSCILLATORS
-
Hello Friends,
For a while now, I've been scripting a wavetable synth with HISE. Although I've been struggling along for a crazy-long time with it, I'm now getting close to something resembling a complete pro soft synth, with just about all the features I set out to include in it.
One thing still doesn't feel right yet: the quality of the wavetable sound. I don't have an artifact problem, but at times the sound can feel a bit broken up and not as sharp as I was hoping it would be, especially with the filter peak cranked. To understand this issue a bit more, I went to the Xfer Records page to look at Serum's features. Right away, I was hit with "ULTRA-CLEAN OSCILLATORS," the heading in one of the paragraphs. (Copied Below)
They claim Serum features advanced math that makes things sound better than basically any other wavetable synth on the market. It made me wonder how much of it is already built into the HISE wavetable synth and how much needed to be programmed in. Also, how much is just a marketing plan with no real advantage on HISE's wavetable synth.
Since I'm not a math nor coding expert, I come to you cracks for guidance. Please read Serum's description of their OSCs. Let me know if HISE already delivers this level of performance and I just need to do better with my wavetables, or if there is anything I can do (coding) that would bring the quality and sharpness of the sound to the highest possible level.
Thank you.
ULTRA-CLEAN OSCILLATORS
Playback of wavetables requires digital resampling to play different frequencies. Without considerable care and a whole lot of number crunching, this process will create audible artifacts. Artifacts mean that you are (perhaps unknowingly) crowding your mix with unwanted tones / frequencies. Many popular wavetable synthesizers are astonishingly bad at suppressing artifacts - even on a high-quality setting some create artifacts as high as -36 dB to -60 dB (level difference between fundamental on artifacts) which is well audible, and furthermore often dampening the highest wanted audible frequencies in the process, to try and suppress this unwanted sound. In Serum, the native-mode (default) playback of oscillators operates with an ultra high-precision resampling, yielding an astonishingly inaudible signal-to-noise (for instance, -150 dB on a sawtooth played at 1 Khz at 44100)! This requires a lot of calculations, so Serum’s oscillator playback has been aggressively optimized using SSE2 instructions to allow for this high-quality playback without taxing your CPU any more than the typical (decent quality) soft synth already does. Load up Serum and we think you’ll be able to notice both what you hear (solid high frequencies, extending flat all the way up to the limits of hearing) as well as what you don’t hear (no unwanted mud or aliasing gibberish- just good, clean sound). -
I don't know for sure, but it sounds like they're talking about high quality resampling algorithms. Perhaps even oversampling, in order to reduce aliasing artifacts - their reference to unwanted tones and frequencies makes me think along those lines.
I imagine areas to look into would be:
- resampling interpolation techniques
- anti-aliasing filters
- oversampling the oscillators and correctly downsampling them
I'm not yet familiar enough with ScriptNode or SNEX to know how to investigate these areas unfortunately. But maybe that will give you some food for thought.
-
@CyberGen Steve duda paid a couple of thousand dollars for someone to do the maths for his oscillators. There’s a good interview video on YouTube somewhere where he explains this. It could have been the Cytomics creator - can’t remember off the top of my head.
-
@Orvillain Oversampling seems like a good thing to try. I believe that is what HQ button does. However, scriptnode does not yet have a wavetable node. So I fear customization of the wavetable module is not possible outside the available options....
:crossed_fingers_light_skin_tone: HISE 4.0:crossed_fingers_light_skin_tone:
I'll definitely try some custom filter options.
Thanks you.
-
@DanH Interesting. I'll look that up.
-
@CyberGen Yeah, I wouldn't hold my breath for this.
If Serum is advertising itself as an exceptionally well sounding wavetable synth that focussed their entire development on this subject, you cannot expect a generic open source module to compete with that kind of quality.
You get a industry-standard sound quality with the wavetable synthesizer using mip-maps to reduce aliasing (and oversampling will most likely not increase the sound quality because the wavetables are already band-limited at creation so there are no frequencies above nyquist that can alias), but if you're after the last few percentages of sound that you can then use for advertising your synth you'll have to go that last mile yourself and hire a coder to either modify the codebase or roll your own.
The Hi-Q button improves the sound when you're modulating fast between the tables alongside with a few other improvements (cubic interpolation vs. linear), but I found the changes to be rather cosmetic.
-
@Christoph-Hart I understand. I appreciate you shedding some light on this. It helps me to understand my options.
-
@Christoph-Hart Are you sure no frequencies are sneaking thru the band limiting? Is that a thing that can happen lol?
On a lot of my wavetables that don't alias anywhere else they consistently alias on A3, A#3, B3, then on C3 the nasty sound is gone. Any ideas?