HISE Logo Forum
    • Categories
    • Register
    • Login

    [Free dsp] C++ FFT

    Scheduled Pinned Locked Moved C++ Development
    28 Posts 6 Posters 1.1k 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.
    • griffinboyG
      griffinboy @ustk
      last edited by griffinboy

      @ustk

      I'm looking into implementing prism, which would be much more powerful for signal analysis. Looking at the data, this would be much more powerful than Loris (which uses kaiser window fft and the reassignment method).

      Link Preview Image
      Control group news: Prism

      This Control Group news article is a spotlight on work from the Advanced Instrumentation Research Group on prism, an Ultra-Precise FFT calculation.

      favicon

      (eng.ox.ac.uk)

      For audio effects, if you want to preserve the signal, the constant Q method seems ideal:

      Link Preview Image
      Constant-Q transform - Wikipedia

      favicon

      (en.wikipedia.org)

      I'll likely have a shot at this too at somepoint.

      1 Reply Last reply Reply Quote 0
      • DabDabD
        DabDab @griffinboy
        last edited by

        @griffinboy Awesome. your 2nd Tutorial Video.
        giphy.gif

        Bollywood Music Producer and Trance Producer.

        griffinboyG 1 Reply Last reply Reply Quote 2
        • griffinboyG
          griffinboy @DabDab
          last edited by

          @DabDab

          hahaha.
          Not quite as riveting as you would've hoped.

          I have scripted the next few videos though, I simply need to sit down and record and they'll be out. I've taken way too long on these

          DabDabD 1 Reply Last reply Reply Quote 1
          • DabDabD
            DabDab @griffinboy
            last edited by

            @griffinboy I am always very excited for your videos. I know FAUST and RNBO (may be a little bit in respect of other HISE mates) but core C++ with HISE always pushes me from my DSP comfort zone and Lethargy.

            Bollywood Music Producer and Trance Producer.

            1 Reply Last reply Reply Quote 0
            • clevername27C
              clevername27 @griffinboy
              last edited by

              @griffinboy Excellent, and good thought on multi-resolution!

              RX does multi-resolution offline, but SpectraLayers does it in real-time.

              Refinement is another strategy, though you'll encounter regions of (quantum) uncertainty. The data isn't directly applicable, but can be extrapolated from. It can also provide additional information to the user in terms of visual feedback. Refinement is likewise offline in RX, but real-time in SL.

              bd42e554-047d-4ceb-8a83-c3ed87402e94-Screenshot 2025-02-07 at 2.16.29 pm.png


              23570d59-0d78-424c-b9a6-6611ba47cb31-Screenshot 2025-02-07 at 2.16.38 pm.png


              a4eb58d2-616f-47b6-a575-8a6e2556529b-Screenshot 2025-02-07 at 2.16.51 pm.png

              griffinboyG 2 Replies Last reply Reply Quote 1
              • griffinboyG
                griffinboy @clevername27
                last edited by

                @clevername27

                Ah I forgot that we had an fft expert here!
                I may need to talk to you for advice. This little tangent has led me deep into FFT algorithms and I've discovered some really cool but complex modern research on the matter.

                DabDabD 1 Reply Last reply Reply Quote 0
                • griffinboyG
                  griffinboy @clevername27
                  last edited by griffinboy

                  @clevername27

                  Something I'm thinking of is combining Prism, with reassignment method.
                  Using reassignment to increase accuracy in the time domain as a post process.

                  Have you looked at this, it's ridiculous:

                  Link Preview Image
                  Control group news: Prism

                  This Control Group news article is a spotlight on work from the Advanced Instrumentation Research Group on prism, an Ultra-Precise FFT calculation.

                  favicon

                  (eng.ox.ac.uk)

                  I think they've patented it now, but I do have an old matlab project from two years ago where they created an early unoptimized version.

                  This wouldn't be for real time, but would surely be an amazing for frequency accuracy.

                  Overkill maybe? And way beyond my ability, but pretty interesting. Most resynthesis misses a ton of partials due to the fft method used to analyse the signal. But they always claim that these frequencies aren't important to perception. So maybe I'd be wasting a ton of effort xD
                  Stuff like Loris already sounds good perceptually. And perhaps insane resolution isn't a good thing: how are you going to group and track all those partials?

                  I should probably give in and just use Loris... But for some reason I love going through the pain of doing dsp from scratch.

                  1 Reply Last reply Reply Quote 0
                  • DabDabD
                    DabDab @griffinboy
                    last edited by

                    @griffinboy said in [Free dsp] C++ FFT:

                    Ah I forgot that we had an fft expert here!

                    @clevername27 Any getting started FFT video like your above image?
                    Every day I open up computer and think today I will learn new things. Will watch more videos on HISE. But sadly we have very few Video authors.

                    Bollywood Music Producer and Trance Producer.

                    griffinboyG clevername27C 3 Replies Last reply Reply Quote 0
                    • griffinboyG
                      griffinboy @DabDab
                      last edited by

                      @DabDab

                      Most dsp is shared via papers.

                      clevername27C 2 Replies Last reply Reply Quote 1
                      • clevername27C
                        clevername27 @griffinboy
                        last edited by

                        This post is deleted!
                        1 Reply Last reply Reply Quote 0
                        • clevername27C
                          clevername27 @DabDab
                          last edited by clevername27

                          @DabDab @griffinboy I appreciate the questions. To my knowledge, SpectraLayers is only software that does real-time FFTs like this, based mostly on brilliant work by creator Robin Lobel. The good news is if you want to simply do a 3D waterfall FFT (or Wavelet) display, the internet (including YouTube) is overflowing with how-tos, tutorials and walktlhoughts. Everything you need is readily available in HISEscript, and I can imagine it being more 100 lines of code at the most (50 if you're @Christoph-Hart).

                          I will divulge one secret from my own research: Remember that when drawing FFT or Wavelet-derived visualisations, few users (if any) know precisely what the graph should look like. In other words, you can lie to them. It's faster. "But what about processing that data?" Same answer. The user rarely knows precisely what it should sound like. (That being said, everything Robin is doing in SL is exactly correct.)

                          One other: Run your FFTs on the graphics card.

                          1 Reply Last reply Reply Quote 0
                          • clevername27C
                            clevername27 @griffinboy
                            last edited by

                            @griffinboy said in [Free dsp] C++ FFT:

                            Most dsp is shared via papers.

                            This.

                            1 Reply Last reply Reply Quote 0
                            • clevername27C
                              clevername27 @griffinboy
                              last edited by

                              This post is deleted!
                              1 Reply Last reply Reply Quote 0
                              • clevername27C
                                clevername27 @mmprod
                                last edited by

                                @mmprod said in [Free dsp] C++ FFT:

                                What C++ libraries do you recommend?

                                If you're not doing on the graphics card, the best base-level algorithm (for my money) is FFTW.

                                Remember that at their heart, FFTs are very, very simple.

                                1 Reply Last reply Reply Quote 2
                                • clevername27C
                                  clevername27 @DabDab
                                  last edited by clevername27

                                  @DabDab

                                  @clevername27 Any getting started FFT video like your above image?
                                  Every day I open up computer and think today I will learn new things. Will watch more videos on HISE. But sadly we have very few Video authors.

                                  I think there's some words missing here — can you please re-state?

                                  I will continue to drop videos (especially since I asked for the forum to be upgraded so I could). My videos me sharing all the code from my plugin, in bite-sized chunks. (You can thank @d-healey for inspiring me to do this.)

                                  For instructional videos, @d-healey is the GOAT, and I would humbly suggest (if you haven't already) subbing to his Patreon (as I did when I started).


                                  Regarding FFTs, I realise they may seem like a specific area of writing plugins, but FFTs (specifically DFTs) could be described as the foundation for all plugins (depending on your metrics).

                                  mmprodM 1 Reply Last reply Reply Quote 1
                                  • mmprodM
                                    mmprod @clevername27
                                    last edited by

                                    @clevername27 @DabDab a “getting started” video on fft c++ could be very helpful for beginners who have never done this sort of implementation (like me). And often the content in videos is less dense than what you find in papers/easier to understand.

                                    There are plenty of videos on fft theory already but for me it would be extremely helpful to have some sort of walkthrough on how to use a specific fft library(such as fftw), how to code a simple example algorithm, and perhaps how to import to scriptnode.

                                    For God so loved the world that he gave his one and only Son, that whoever believes in him shall not perish but have eternal life.
                                    John 3:16

                                    clevername27C 1 Reply Last reply Reply Quote 2
                                    • clevername27C
                                      clevername27 @mmprod
                                      last edited by

                                      @mmprod Got ya. Hopefully, once I've got our new album out the door, I can return to this and do something like that for you guys.

                                      mmprodM 1 Reply Last reply Reply Quote 0
                                      • mmprodM
                                        mmprod @clevername27
                                        last edited by

                                        @clevername27 that would be amazing- thanks so much!

                                        New album coming out??

                                        For God so loved the world that he gave his one and only Son, that whoever believes in him shall not perish but have eternal life.
                                        John 3:16

                                        clevername27C 1 Reply Last reply Reply Quote 0
                                        • clevername27C
                                          clevername27 @mmprod
                                          last edited by

                                          @mmprod Yep! We haven't announced it yet, so…well, if you know who I am, you probably know who it is. HISE will be on it! 👻

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

                                          56

                                          Online

                                          1.7k

                                          Users

                                          11.7k

                                          Topics

                                          102.3k

                                          Posts