Implementing oversampling in plug-ins.
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 10.4k
- Forks
- 1.3k
- Avg merge
- 2d 13h
- Merged PRs (30d)
- 7
Description
• Synthesizers:
When playing high notes on a synthesizer using a harmonically rich wave like a saw wave, there are probably some frequencies that will go above the nyquist frequency, so aliasing occurs.
Just play the note C8 on TripleOscillator using a saw wave to hear the aliasing noise.
My idea of the UI implementation is radio buttons in the plugin tab of each synthesizer offering oversampling factors in powers of 2.
• Effect plug-ins:
There are 2 types of plug-ins that would benefit from using oversampling (as far as I know).
(1) Waveshapers, distorters, overdrivers, bitcrushers and Lo-fi effects (or anything that generates a lot of overtones).
When using any of the effects above on a sound, extra overtones are being added to it, and if these overtones go above the nyquist frequency, aliasing occurs.
Spectrum of a heavily waveshaped sine wave.

Spectrum of the same sound but with 16x oversampling.

My idea of the UI implementation is a slider in each of these plug-ins mentioned earlier offering oversampling factors in powers of 2.
(2) Equalizers.
When a band (of any type) in the equalizer gets close to the nyquist frequency, its shape distorts.
A normal low-pass filter at 1000 Hz looks like this:

The same filter but at 16000 Hz looks like this:

Using oversampling will prevent this distortion and improve audio quality, particularly at high frequencies.
My idea of the UI implementation is an off/on "Oversampling" button on each equalizer plug-in effect that uses a specific oversampling factor that is just enough to prevent the distortion without introducing excess CPU load.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reproducing the reported aliasing with a saw wave on TripleOscillator at C8, then compare the synthesizer and effect cases described in the issue. The work is done when an agreed oversampling design covers the applicable synthesizers, waveshaping effects, and equalizers without introducing unnecessary CPU load, with the proposed controls and factors clearly defined.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- audio-video-rtc, performance
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100