Dynamic Oversampling up to 128x or more
-
@Christoph-Hart I can't see the options for higher than 16x oversampling rate. When the parameter range is increased, the node doesn't seem to work more than 16x. Can you add more rates please (yes the ram can blow up for some DSP codes but it will be fine for some cheap DSP codes) which is also requested in this topic?
One more thing about the latency. While the oversampling rate changes, will the delay compensation adjusted dynamically?
-
@harris-rosendahl There‘s not delay compensation going on, you need to do this manually.
You can enable 32x oversampling by changing the source code but that‘s the highest that the JUCE oversampler can do.
-
You can enable 32x oversampling by changing the source code but that‘s the highest that the JUCE oversampler can do.
Thank you for the info. Can you add 32x rate too please? It would be good at least we have 32x without being have to change the source code.
-
@harris-rosendahl I just took a look and the JUCE oversampler actually only supports 16x:
The exponent need to be smaller than 5, so 2^4=16x is all you can get here.
-
Hi guys, interesting subject. OS for higher than 16x can really be interesting for heavy saturation processors, i'm guessing 32 and 64x would completely remove any aliasing there is even in heavy situations.
Is there a way to overcome this Juce limitation?
-
@fastermaster 64x oversampling? I'm trying hard to hear a difference between 2x and 4x from what I saw in videos on that subject. Can it really be worth to force a processor to run a audio thread on 64*44100(or more) samples? Unfortunately I can't test this myself with my old machine but I highly doubt there's a good reason for oversample with such a high rate. No offense, just being curious…
-
@Frankbeat @fastermaster In fact one of the most important things in oversampling is the quality of the stop band filter.
a 16x OS with a good rejection has nothing to be ashamed of when compared to a 64x with a lesser rejection quality.
Unfortunately, the Juce filter doesn't appear to be that good, so I can understand the limitation to 16x might be problematic in some situations (though I haven't checked against another one) -
@ustk there are multiple filter options available in the JUCE sampler and I just picked one without giving it too much thought, so if you find parameters that sound better I'm happy to add those as options.
-
thanks guys, I'm working on a distortion emulation, so avoiding aliasing is a must, I want to offer the option of 4x 8x and 16x. I'll just need to figure what's the best filter to use in this case.
Did someone experimented with the filters? The reaper And aliasing seem to be quite good, I wonder what they're using.
-
I've been playing around with the filterHalfBandFIREquiripple in my hise projects and its really nice. You have to compensate for a but more latency compared to the current oversampling filter but this one is linear phase.
-
@pluginboi That is good to know
My knowledge of the topic stops there. But from what I know about filters, linear phase isn't better than conventional filters, they are just different tools. Since they cause pre-ringing as a result of phase compensation, they are generally bad on fast transient material because of the smoothing they create.I think having a filter selector in the oversample node would be great for selecting the one that better suits the needs.
-
@ustk said in Dynamic Oversampling up to 128x or more:
I think having a filter selector in the oversample node would be great for selecting the one that better suits the needs.
@Christoph-Hart Do you think adding a selectable oversampling type could be implemented? I'm getting a lot of requests for this and figured I'd hit you before I attempt to hack something together.
-
@orange How is oversampling useful in ScriptNode if other parts of your plugin do not?
-
@clevername27 said in Dynamic Oversampling up to 128x or more:
@orange How is oversampling useful in ScriptNode if other parts of your plugin do not?
removes aliasing and some intermodulations...
-
@Dan-Korneff if you want I have a source code tweak I can send you for a linear phase oversample mode in script node. I just don't have it built to be switchable between linear and minimum
-
Is there a use case for making this dynamically switchable? Otherwise I could make it a preprocessor that you can set in your extra definitions.
-
@Christoph-Hart For general applications, users are looking for linear phase filters, and for transient material, minimum phase is desirable. Having it be selectable would be super awesome if you're able.
-
@clevername27 If you use saturation or distortion (in some cases for the convolution too) in the plugin, you have to do oversampling in these parts, otherwise there will be Aliasing.
Apart from this, if there is no saturation or harmonic distortion in the other modules you use, you do not have to oversample; in fact, you should not do it so that you can ensure optimum CPU usage.
-
@orange Thanks - makes sense.
-
@Christoph-Hart Just a friendly little bump to see if this is on your radar.