[FEATURE] Alternative oversampling algorithms (low latency vs. low alias)

Open
#10 14 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
35/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Stale
Tech stack
cpp

Research direction

Start by locating the current low-latency oversampling path and reproduce the issue with a 48 kHz input captured at 192 kHz. Compare its sine-sweep spectrogram with the Reaper reference shown in the issue. Done means providing a selectable alternative oversampling algorithm that reduces the folded-back aliasing while preserving the existing low-latency option.

Written by the indexing model from the issue text.

Description

enhancement

Problem
The plugin now oversamples if the input signal is e.g., 48kHz and the capture is e.g., 192kHz. I appreciate that the oversampling algorithm was chosen to be the one with lowest latency, but the problem is that the current low-latency oversampling creates quite a lot of aliasing when compared e.g., to effect instance oversampling in Reaper. There seems to be a lot of spectral components over the nyquist limit (e.g., in case of 48kHz signal, the oversampling algorithm should not produce components that are over 24 kHz). As shown in the attached spectrogram, those components get folded back (aliased) to the produced output.

Proposed solution
As an alternative (maybe user selectable), use an improved oversampling algorithm that does not produce higher frequency components that then get aliased back.

Additional context
Sine sweep spectrogram, on top using Reaper's per plugin oversampling, below using NeuralAmpModeler oversampling.

Screenshot 2024-01-26 at 9 02 33

nam_plugin_oversampling

Screenshot 2024-01-26 at 9 00 52

Dominant language
C++
Stars
71
Forks
32
Avg merge
3d 5h
Merged PRs (30d)
2

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from sdatkinson/AudioDSPTools

All issues in sdatkinson/AudioDSPTools

Similar issues

More C++ issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.