Forum
    • Categories
    • Register
    • Login

    How to show FFT Spectrum behind EQ curve like FabFilter Q3?

    Scheduled Pinned Locked Moved AI discussion
    8 Posts 3 Posters 100 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.
    • T
      the red_1
      last edited by

      Hi everyone,
      I'm building an EQ plugin in HISE 4.1.0 and I want to add a real-time FFT spectrum analyzer behind the EQ curve (like FabFilter Q3).
      My setup:

      EQ curve working perfectly with FilterDisplay FloatingTile
      Added a new FloatingTile with ContentType = AudioAnalyser
      Both FloatingTiles stacked on top of each other

      The problem:
      AudioAnalyser FloatingTile shows nothing — I tried different ProcessorId values (Script FX1, instrument name, empty) but nothing works.
      My questions:

      • list itemIs it possible to display FFT spectrum + EQ curve at the same time in the same area?
        Thank you!
        Capture d'écran 2026-04-03 233357.png Capture d'écran 2026-04-03 233420.png
        Enregistrement-de-l_écran-2026-04-03-233542_1.gif 796e14d6-3d6a-4018-8391-4e8c79fca231-image.png
      HISEnbergH David HealeyD 2 Replies Last reply Reply Quote 0
      • HISEnbergH
        HISEnberg @the red_1
        last edited by

        @the-red_1 You need to assign the floating tile to the module, via the ProcessorId. So ProcessorId should be filled with the name of your module. "Index" is for which buffer you want to display.

        Example:

        "ProcessorId": "Script FX1", // Name of your effect
        "Index" : 0, // To display the first FFT
        

        In either case, I think this example should help you somewhat:

        https://docs.hise.dev/tutorials/scriptnode/index.html#custom-draggable-eq

        Sonic Architect && Software Mercenary

        1 Reply Last reply Reply Quote 1
        • David HealeyD
          David Healey @the red_1
          last edited by David Healey

          @the-red_1

          Right click on the EQ and enable the spectrum analyser

          c8c952cf-cb54-4c35-bded-35645a54b70b-image.png

          You can set the properties for it in your script.

              const dsb = Synth.getDisplayBufferSource("parametricEq0");
          
          	inline function setEqProperties()
          	{
          		local props = {
          		  "BufferLength": 4096,
          		  "WindowType": "Blackman Harris",
          		  "DecibelRange": [-90.0, 18.0],
          		  "UsePeakDecay": false,
          		  "UseDecibelScale": true,
          		  "YGamma": 0.2,
          		  "Decay": 0.6,
          		  "UseLogarithmicFreqAxis": true
          		};
          		
          		local dp = dsb.getDisplayBuffer(0);
          		dp.setRingBufferProperties(props);
          	}
          
          
          

          Free HISE Bootcamp Full Course for beginners.
          YouTube Channel - Public HISE tutorials
          My Patreon - HISE tutorials

          T 1 Reply Last reply Reply Quote 2
          • T
            the red_1 @David Healey
            last edited by the red_1

            @David-Healey Thank you, I managed to get the AudioAnalyser working!
            I couldn't find "Enable Spectrum Analyser" from right-clicking the EQ (probably because I'm using SVF EQ nodes in scriptnode, not a built-in Parametric EQ). Instead I used this code:

            javascriptconst var dsb = Synth.getDisplayBufferSource("Script FX1");
            
            inline function setEqProperties()
            {
                local props = {
                    "BufferLength": 4096,
                    "WindowType": "Blackman Harris",
                    "DecibelRange": [-90.0, 18.0],
                    "UsePeakDecay": false,
                    "UseDecibelScale": true,
                    "YGamma": 0.2,
                    "Decay": 0.6,
                    "UseLogarithmicFreqAxis": true
                };
                
                local dp = dsb.getDisplayBuffer(1);
                dp.setRingBufferProperties(props);
            }
            
            setEqProperties();
            

            And FloatingTile JSON:

            json{
              "ProcessorId": "Script FX1",
              "Index": 1,
              "FollowWorkspace": false
            }
            

            But now I have a new problem:
            The AudioAnalyser background is stuck grey and I can't change it:

            Setting all colours to #00000000 in property editor → no effect
            Tried JSON properties (BGColour, LineColour) → no effect
            I want to make the background transparent so it overlays on top of my EQ curve display

            Is there any way to customize the AudioAnalyser colours / make it transparent? 🙏

            b4ef3835-bd8d-49ee-a185-aa8b9a226a02-image.png
            Enregistrement-de-l_écran-2026-04-04-025543.gif

            David HealeyD T 2 Replies Last reply Reply Quote 0
            • David HealeyD
              David Healey @the red_1
              last edited by

              @the-red_1 use look and feel

              Free HISE Bootcamp Full Course for beginners.
              YouTube Channel - Public HISE tutorials
              My Patreon - HISE tutorials

              1 Reply Last reply Reply Quote 1
              • T
                the red_1 @the red_1
                last edited by the red_1

                @the-red_1Thank you, I used AI to help me with the LookAndFeel code for AudioAnalyser and it worked great — transparent background and custom spectrum colour. But the white grid lines won't disappear no matter what I try.
                Do you know the correct LAF function name to hide or customize the grid lines in AudioAnalyser?
                And Thank you!

                Content.makeFrontInterface(918, 581);
                
                const var dsb = Synth.getDisplayBufferSource("Script FX1");
                Console.print("✅ DSB OK");
                
                inline function setEqProperties()
                {
                    local props = {
                        "BufferLength": 4096,
                        "WindowType": "Blackman Harris",
                        "DecibelRange": [-90.0, 18.0],
                        "UsePeakDecay": false,
                        "UseDecibelScale": true,
                        "YGamma": 0.2,
                        "Decay": 0.6,
                        "UseLogarithmicFreqAxis": true
                    };
                    
                    local dp = dsb.getDisplayBuffer(1);
                    dp.setRingBufferProperties(props);
                }
                
                setEqProperties();
                
                // ===== LOOK AND FEEL =====
                const var laf = Content.createLocalLookAndFeel();
                
                laf.registerFunction("drawAnalyserBackground", function(g, obj)
                {
                    g.fillAll(0x00000000);
                });
                
                laf.registerFunction("drawAnalyserPath", function(g, obj)
                {
                    g.setColour(0xFF798ca2);
                    g.drawPath(obj.path, obj.area, 1.0);
                });
                
                const var waves = Content.getComponent("waves");
                waves.setLocalLookAndFeel(laf);
                

                829898f2-7f06-4121-9230-f45de8ab40c0-image.png
                d0054490-e86d-4fe8-b517-12b280a7c41e-image.png

                David HealeyD 1 Reply Last reply Reply Quote 0
                • David HealeyD
                  David Healey @the red_1
                  last edited by David Healey

                  @the-red_1 drawAnalyserGrid Look and feel function.

                  Free HISE Bootcamp Full Course for beginners.
                  YouTube Channel - Public HISE tutorials
                  My Patreon - HISE tutorials

                  T 1 Reply Last reply Reply Quote 1
                  • T
                    the red_1 @David Healey
                    last edited by

                    @David-Healey Thank you so much! 🙏🏼🩸

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

                    17

                    Online

                    2.2k

                    Users

                    13.6k

                    Topics

                    118.0k

                    Posts