HISE Logo Forum
    • Categories
    • Register
    • Login

    Resonance Suppression

    Scheduled Pinned Locked Moved General Questions
    26 Posts 9 Posters 1.0k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • orangeO
      orange @ustk
      last edited by orange

      @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?

      develop Branch / XCode 13.1
      macOS Monterey / M1 Max

      ustkU 1 Reply Last reply Reply Quote 0
      • ustkU
        ustk @orange
        last edited by

        @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.

        Can't help pressing F5 in the forum...

        orangeO 1 Reply Last reply Reply Quote 0
        • orangeO
          orange @ustk
          last edited by orange

          @ustk Hise already has a spectral analyzer, right?

          develop Branch / XCode 13.1
          macOS Monterey / M1 Max

          ustkU 1 Reply Last reply Reply Quote 0
          • ustkU
            ustk @orange
            last edited by ustk

            @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 :man_shrugging:

            I reckon a buffer can be passed as external data to SNEX, so this might bea n option worth exploring

            Can't help pressing F5 in the forum...

            orangeO 1 Reply Last reply Reply Quote 0
            • orangeO
              orange @ustk
              last edited by

              @ustk Definitely worth for exploring. Spectral processing is one of the current cutting edge tech for audio processing

              develop Branch / XCode 13.1
              macOS Monterey / M1 Max

              HISEnbergH 1 Reply Last reply Reply Quote -1
              • HISEnbergH
                HISEnberg @orange
                last edited by HISEnberg

                @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.

                orangeO 1 Reply Last reply Reply Quote 1
                • orangeO
                  orange @HISEnberg
                  last edited by

                  @HISEnberg I think Max / Msp does spectral processing options too. I should read the manual

                  develop Branch / XCode 13.1
                  macOS Monterey / M1 Max

                  HISEnbergH 1 Reply Last reply Reply Quote 0
                  • HISEnbergH
                    HISEnberg @orange
                    last edited by

                    @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 🙃

                    1 Reply Last reply Reply Quote 0
                    • A
                      aaronventure
                      last edited by

                      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.

                      orangeO 1 Reply Last reply Reply Quote 1
                      • orangeO
                        orange @aaronventure
                        last edited by

                        @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.

                        develop Branch / XCode 13.1
                        macOS Monterey / M1 Max

                        HISEnbergH JulesVJ 2 Replies Last reply Reply Quote 0
                        • HISEnbergH
                          HISEnberg @orange
                          last edited by

                          @orange Found these slides online too, thanks for the suggestion @aaronventure . I am going to look into this some more.

                          Link Preview Image
                          WAC2024 Spectral Processing

                          Design and Run Real-time Spectral Processing on the Web with Faust Shihong Ren, Stéphane Letz, Yann Orlarey, Michel Buffa, Laurent Pottier, Yang Yu Shanghai Conservatory of Music, SKLMA, China Université Jean Monnet, ECLLA Lab, France Université de Lyon, France GRAME-CNCM Lyon, France INRIA, INSA...

                          favicon

                          Google Docs (docs.google.com)

                          1 Reply Last reply Reply Quote 0
                          • A
                            aaronventure
                            last edited by

                            Link Preview Image
                            analyzers - Faust Libraries

                            favicon

                            (faustlibraries.grame.fr)

                            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.

                            LindonL 1 Reply Last reply Reply Quote 0
                            • LindonL
                              Lindon @aaronventure
                              last edited by Lindon

                              @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:

                              Link Preview Image
                              analyzers - Faust Libraries

                              favicon

                              (faustlibraries.grame.fr)

                              HISE Development for hire.
                              www.channelrobot.com

                              A 1 Reply Last reply Reply Quote 0
                              • A
                                aaronventure @Lindon
                                last edited by aaronventure

                                @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.

                                Link Preview Image
                                GitHub - grame-cncm/faustlibraries: The Faust libraries

                                The Faust libraries. Contribute to grame-cncm/faustlibraries development by creating an account on GitHub.

                                favicon

                                GitHub (github.com)

                                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.

                                orangeO 1 Reply Last reply Reply Quote 0
                                • orangeO
                                  orange @aaronventure
                                  last edited by

                                  @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?

                                  develop Branch / XCode 13.1
                                  macOS Monterey / M1 Max

                                  A 1 Reply Last reply Reply Quote 0
                                  • A
                                    aaronventure @orange
                                    last edited by aaronventure

                                    @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.

                                    orangeO 1 Reply Last reply Reply Quote 0
                                    • orangeO
                                      orange @aaronventure
                                      last edited by

                                      @aaronventure What does it need to automate to display the note value?

                                      develop Branch / XCode 13.1
                                      macOS Monterey / M1 Max

                                      A 1 Reply Last reply Reply Quote 0
                                      • A
                                        aaronventure @orange
                                        last edited by aaronventure

                                        @orange You make a node in scriptnode, feed it with the audio and this thing spits out the detected frequency. It goes a bit off on lower notes but it seems to have an error curve so do a bit of Excel and figure it out, then apply the correction.

                                        You probably want to wrap it into a modchain node so that it doesn't actually affect the audio. You can then just cable this back to your interface using global cables and do the math to convert the frequency to semitones+cents.

                                        O 1 Reply Last reply Reply Quote 1
                                        • O
                                          Orvillain @aaronventure
                                          last edited by

                                          @aaronventure Is there a good beginner tutorial on how to use Faust within HISE?

                                          A 1 Reply Last reply Reply Quote 0
                                          • A
                                            aaronventure @Orvillain
                                            last edited by

                                            @Orvillain No idea. It's similar to the playground, and HISE will yell at you whenever you mess up.

                                            I suggest reading this thread https://forum.hise.audio/topic/6505/faust-is-here/64 and as many threads as you can in the Faust subforum while giving whatever you want to do a try.

                                            Read the syntax docs and the library docs in their entirety:

                                            https://faustdoc.grame.fr/manual/syntax/#faust-syntax
                                            https://faustlibraries.grame.fr/

                                            The core idea of Faust seems to be to not only provide a very fast and efficient language for realtime DSP but also to provide a huge library of building blocks so you can build stuff very fast. It's therefore paramount that you read the entire library so you can be aware of all the options available to you. You won't remember it all, but when you encounter a problem you might have a vague recollection of reading something and it'll prompt you to go look through the library. Eventually you'll learn it well, just like the HISE API.

                                            It's a big toybox, so get playin'. And whenever you're ready to go dive in deep and do stuff from the ground up, it's there for you.

                                            The only thing that I haven't figured out so far is whether it's possible to store data between blocks (like variables).

                                            O 1 Reply Last reply Reply Quote 1
                                            • First post
                                              Last post

                                            23

                                            Online

                                            1.7k

                                            Users

                                            11.8k

                                            Topics

                                            102.6k

                                            Posts