HISE Logo Forum
    • Categories
    • Register
    • Login

    Parametric EQ callback when changing bands via GUI

    Scheduled Pinned Locked Moved General Questions
    13 Posts 8 Posters 499 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.
    • d.healeyD
      d.healey @oskarsh
      last edited by

      @oskarsh I believe you can do this with the broadcaster system.

      Libre Wave - Freedom respecting instruments and effects
      My Patreon - HISE tutorials
      YouTube Channel - Public HISE tutorials

      Christoph HartC 1 Reply Last reply Reply Quote 1
      • Christoph HartC
        Christoph Hart @d.healey
        last edited by

        // Create a broadcaster. If you intend to attach it to a component, it needs two parameters (conveniently named `component` and `event`)
        const var eqWatcher = Engine.createBroadcaster({"component": undefined, "event": undefined});
        
        // The EQ is named `FloatingTile1` obviously...
        eqWatcher.attachToComponentMouseEvents("FloatingTile1", "All Callbacks");
        
        eqWatcher.addListener("RefreshFunction", function(component, event)
        {
            if(event.drag || event.clicked)
            {
                Console.print("Update the knobs here");
            }
        });
        
        ulrikU ? 3 Replies Last reply Reply Quote 4
        • ulrikU
          ulrik @Christoph Hart
          last edited by

          @Christoph-Hart great implementation, the broadcaster system, now we all wait for the video David will make, explaining all goodies :)

          Hise Develop branch
          MacOs 15.3.1, Xcode 16.2
          http://musikboden.se

          1 Reply Last reply Reply Quote 0
          • ulrikU
            ulrik @Christoph Hart
            last edited by

            @Christoph-Hart I guess will work on midi overlays as well?

            Hise Develop branch
            MacOs 15.3.1, Xcode 16.2
            http://musikboden.se

            Christoph HartC 1 Reply Last reply Reply Quote 0
            • Christoph HartC
              Christoph Hart @ulrik
              last edited by

              @ulrik works on every component, but for MIDI players you might even attach it directly to changes of MIDI content.

              const var MIDIPlayer1 = Synth.getMidiPlayer("MIDI Player1");
              
              const var midiUpdater = Engine.createBroadcaster({"player": undefined});
              
              // The broadcaster checks if any of the parameter has changed 
              // and if it hasn't it will not fire the callbacks. In this case
              // we don't want that behaviour because the parameter is always
              // the same reference to the MIDI player so we need to set it to
              // "Queue" mode which ensures that every message is being sent out.
              midiUpdater.setEnableQueue(true);
              
              // We can use the broadcaster object instead of a function for
              // every API call that expects a callback.
              MIDIPlayer1.setSequenceCallback(midiUpdater);
              
              midiUpdater.addListener("Logger", function(player)
              {
              	var list = player.getEventList();
              
              	for(ev in list)
              		Console.print(ev.dump());
              });
              
              1 Reply Last reply Reply Quote 1
              • oskarshO
                oskarsh
                last edited by

                @d-healey @Christoph-Hart
                Thanks for the quick answer and snippet this worked out as expected and I was able to get each Band Parameter on drag. Is there an additionally event.onScroll event that I can listen to, so that I am also able to update the Q parameter when user is scrolling?

                breathing HISE

                Christoph HartC 1 Reply Last reply Reply Quote 0
                • Christoph HartC
                  Christoph Hart @oskarsh
                  last edited by

                  @oskarsh no but it's a good idea to add that at some point.

                  1 Reply Last reply Reply Quote 2
                  • ?
                    A Former User @Christoph Hart
                    last edited by A Former User

                    @Christoph-Hart said in Parametric EQ callback when changing bands via GUI:

                    // Create a broadcaster. If you intend to attach it to a component, it needs two parameters (conveniently named `component` and `event`)
                    const var eqWatcher = Engine.createBroadcaster({"component": undefined, "event": undefined});
                    
                    // The EQ is named `FloatingTile1` obviously...
                    eqWatcher.attachToComponentMouseEvents("FloatingTile1", "All Callbacks");
                    
                    eqWatcher.addListener("RefreshFunction", function(component, event)
                    {
                        if(event.drag || event.clicked)
                        {
                            Console.print("Update the knobs here");
                        }
                    });
                    

                    Great example, Thank you!

                    Can we use this to detect which filter node (index) is dragged? For example if 3th node is dragged or clicked.

                    orangeO 1 Reply Last reply Reply Quote 0
                    • orangeO
                      orange @A Former User
                      last edited by orange

                      @harris-rosendahl

                      I think you can get it with local LAF function of the Draggable Filter. In the drawFilterDragHandle function; obj.index value is the number of the selected node.

                      But if you try to show/ hide panels upon this, you'll probably need to disable adding new nodes or limit the node numbers. I don't know if it is possible.

                      laf.registerFunction("drawFilterDragHandle", function(g, obj)
                      {	
                      	// Defining the handle object with an ellipse
                      	g.setColour(0XFF7B8DFF);
                      	g.drawEllipse(obj.handle, 2);
                      
                      	// Getting the selected node number
                      	if(obj.index == 0) 
                      	{
                      
                      
                      	}
                      	
                      	else if(obj.index == 1) 
                      	{
                      
                      
                      	}	
                      });
                      

                      develop Branch / XCode 13.1
                      macOS Monterey / M1 Max

                      ? 1 Reply Last reply Reply Quote 0
                      • ?
                        A Former User @orange
                        last edited by A Former User

                        @orange I got it thank you! You are a great helper.

                        But if you try to show/ hide panels upon this, you'll probably need to disable adding new nodes or limit the node numbers. I don't know if it is possible.

                        • Can we limit the number of the nodes can be inserted in the draggable filter?

                        • Also can we lock the number of the nodes (no delete & no add) in the draggable filter?

                        Please help @Christoph-Hart

                        So we can make something similar to this functionality with Hise. When the node is clicked, the dedicated panel will be opened:

                        alt text

                        lalalandsynthL DanHD 2 Replies Last reply Reply Quote 1
                        • lalalandsynthL
                          lalalandsynth @A Former User
                          last edited by

                          @harris-rosendahl Yep limiting the nodes is something I am interested in as well.

                          https://lalalandaudio.com/

                          https://lalalandsynth.com/

                          https://www.facebook.com/lalalandsynth

                          https://www.facebook.com/lalalandsynth

                          1 Reply Last reply Reply Quote 0
                          • DanHD
                            DanH @A Former User
                            last edited by

                            @harris-rosendahl I did a bit of this in the source code. Removed menu items etc. I didn’t do limiting of nodes but I can point you to where I was editing when I’m back at my computer

                            DHPlugins / DC Breaks | Artist / Producer / DJ / Developer
                            https://dhplugins.com/ | https://dcbreaks.com/
                            London, UK

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

                            56

                            Online

                            1.7k

                            Users

                            11.7k

                            Topics

                            101.8k

                            Posts