Resonance Suppression
-
Is it possible to make a Resonance Suppressor with scriptnode in Hise? Has anyone tried it before? Any ideas?
-
@orange Is it more than a dynamic eq?
-
@ustk Spectral dynamic EQ I think
-
@ustk For a classic dynamic EQ, tons of compressors will be needed.
I think this requires spectral processing like what @DanH said. So it detects the resonance peak frequencies automatically and reduces the dedicated frequency zones dynamically.
We don’t have spectral processing option in scripnode yet, right?
-
@orange We do -> SNEX
Jokes apart, the algorithm of getting spectral detection isn't trivial. I think it basically it consists in analysing the frequency bins to detect which one is higher, but I'd imagine it's a bit more than just doing this.
-
@ustk Hise already has a spectral analyzer, right?
-
@orange There's an FFT API but I am not sure it can be used in SNEX as it lies in the script api, or maybe in a ScriptFX processBlock, this has to be experimented.
Another way could be reading the FFT node buffer and analyse it, but as far as I know this process as to be made in script which is too slow for real time processing. Maybe there's a way to get this in SNEX, but I don't know what would be the (a) right approach
I reckon a buffer can be passed as external data to SNEX, so this might bea n option worth exploring
-
@ustk Definitely worth for exploring. Spectral processing is one of the current cutting edge tech for audio processing
-
@orange it's been on my HISE wishlist for a while now too, but @ustk is right it's not trivial. You need to perform fft , filter , then ifft which is a lot complex math to get it running efficiently and sound good. Perhaps someone could make an external for this. I've tried RNBO in the past with poor results.
-
@HISEnberg I think Max / Msp does spectral processing options too. I should read the manual
-
@orange it does it has an ~fft ~ifft that works quite well, and there's also gizmo~ for pitch shifting but nothing exportable to Hise
-
You're probably looking at spectral band analysis in FAUST followed by compression of each band (if you need attack and release).
I'm just thinking out loud, I haven't actually done something like this, but FAUST is super fast and I think it has the tools needed for this already available to you.
-
@aaronventure Faust constantly surprises me
Here is a spectral denoiser article: https://inria.hal.science/hal-04507625/document
I haven’t tested the sound tho.
-
@orange Found these slides online too, thanks for the suggestion @aaronventure . I am going to look into this some more.
-
https://faustlibraries.grame.fr/libs/analyzers/#spectrum-analyzers
this seems to b pretty much it. Even the code is there. Split into number of bands and it outputs it as individual outputs, do the processing with par and simply plug the compressor in there.
Dont forget to wrap the whole thing into par if you need stereo output.
For the compressor, pick whichever you like but probably the simplest one.
-
@aaronventure I think the problem there is:
"A Spectrum-Analyzer is defined here as any band-split whose bands span the relevant spectrum, but whose band-signals do not necessarily sum to the original signal, either exactly or to within an allpass filtering. "
but yes on the same page this might be a starting point:
https://faustlibraries.grame.fr/libs/analyzers/#fast-fourier-transform-fft-and-its-inverse-ifft
-
@Lindon true. It's worth testing and hearing the results. Maybe the differences are acceptable. You are, after all, gonna be doing some serious processing (Soothe ain't no joke).
If it sounds super bad, it's likely time for a custom solution. Keep in mind that the whole library is open source and and you can actually dive in and see how specific modules were made, recreate them and make modifications.
https://github.com/grame-cncm/faustlibraries
But some of the stuff that I toyed with was pretty good. The pitch tracker is super accurate and super fast, even for very low pitches.
-
@aaronventure said in Resonance Suppression:
But some of the stuff that I toyed with was pretty good. The pitch tracker is super accurate and super fast, even for very low notes.
Can this be a guitar tuner?
-
@orange And a very good one, yeah.
import("stdfaust.lib"); timing = 0.005; process = _, _ :> an.pitchTracker(1, timing) : si.smoo<: _, _ ;
Probably better to not actually be processing it, but to output it with the pin using
vbargaph
. -
@aaronventure What does it need to automate to display the note value?