HISE Logo Forum
    • Categories
    • Register
    • Login

    Adventures in broadcaster: attachToComponentMouseEvents

    Scheduled Pinned Locked Moved General Questions
    23 Posts 4 Posters 909 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.
    • LindonL
      Lindon @Christoph Hart
      last edited by

      @Christoph-Hart said in Adventures in broadcaster: attachToComponentMouseEvents:

      @Lindon yeah that‘s precisely what attachToComplexData is for. I‘ll make a example soon.

      lovely...

      HISE Development for hire.
      www.channelrobot.com

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

        Alright here it is:

        const var FileLoadBroadcaster = Engine.createBroadcaster({
        	"id": "File Watcher",
        	"colour": -1,
        	"args": ["processorId", "fileIndex", "value"]
        });
        
        
        FileLoadBroadcaster.attachToComplexData("AudioFile.Content",   // event type
                                                "Audio Loop Player1",  // processor id
                                                0,                     // index of slot
                                                "Loop Player Source"); // metadata
        
        /** This function will return the text value for the property so we just need to do some
            prettifying here.
        */
        inline function getTextValue(indexInList, // the index of the component (here -1 because no array)
        							 processorId, // the arguments of the broadcaster
        							 fileIndex,   
        							 value)
        {
        	if(value.indexOf("{PROJECT_FOLDER}") != -1)
        	{
        		return value.replace("{PROJECT_FOLDER}", "");
        	}
        
        	if(value.length > 0)
        	{
        		local f = FileSystem.fromAbsolutePath(value);
        		return f.toString(1);
        	}
        	
        	return "Empty";
        };
        
        FileLoadBroadcaster.addComponentPropertyListener("Label1",            // target component (single or array)
        												 "text",              // target property
        												 "Update Text Label", // metadata
        												 getTextValue);       // conversion function
        

        (You obviously need a Label called Label1 and a Loop player called Audio Loop Player1 for it to work).

        I've also used the component property listener that automatically sets the properties of components. The advantage of this approach is that you can actually see what's going on in the broadcaster map.

        94326e77-8bf6-439a-8878-a1dcfbe4b1e5-image.png

        LindonL 1 Reply Last reply Reply Quote 4
        • LindonL
          Lindon @Christoph Hart
          last edited by Lindon

          @Christoph-Hart great - very interesting....thanks.

          HISE Development for hire.
          www.channelrobot.com

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

            @Christoph-Hart -- Okay this works fine , but I dont (yet) understand how I can have a "simple" function call on the drop...instead of using addComponentPropertyListener

            or how I extend this example to allow me to have Audio Loop Player 1, with its associated label1 and Audio Loop Player 2 with its associated label 2

            HISE Development for hire.
            www.channelrobot.com

            Christoph HartC NatanN 2 Replies Last reply Reply Quote 0
            • Christoph HartC
              Christoph Hart @Lindon
              last edited by

              how I extend this example to allow me to have Audio Loop Player 1, with its associated label1 and Audio Loop Player 2 with its associated label 2

              Pass in an array of loop players to the source and an array of component IDs as the target and then use indexInList to figure out which value to return.

              If you don't fancy the addComponentPropertyListener() method, you can just use the plain "old" addListener(object, metadata, function) call.

              1 Reply Last reply Reply Quote 0
              • NatanN
                Natan @Lindon
                last edited by

                @Lindon Mate, did you figure this out?
                Just tried the code by Christoph, and Cant understand how to add another set of Loop player here!

                @Lindon said in Adventures in broadcaster: attachToComponentMouseEvents:

                @Christoph-Hart -- Okay this works fine , but I dont (yet) understand how I can have a "simple" function call on the drop...instead of using addComponentPropertyListener

                or how I extend this example to allow me to have Audio Loop Player 1, with its associated label1 and Audio Loop Player 2 with its associated label 2

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

                  @Natan said in Adventures in broadcaster: attachToComponentMouseEvents:

                  @Lindon Mate, did you figure this out?
                  Just tried the code by Christoph, and Cant understand how to add another set of Loop player here!

                  @Lindon said in Adventures in broadcaster: attachToComponentMouseEvents:

                  @Christoph-Hart -- Okay this works fine , but I dont (yet) understand how I can have a "simple" function call on the drop...instead of using addComponentPropertyListener

                  or how I extend this example to allow me to have Audio Loop Player 1, with its associated label1 and Audio Loop Player 2 with its associated label 2

                  Im afraid I cant give you any clearer description of what to do than @Christoph-Hart's post above...

                  HISE Development for hire.
                  www.channelrobot.com

                  1 Reply Last reply Reply Quote 0
                  • NatanN
                    Natan
                    last edited by Natan

                    Hey folks, I'm trying to remove the .wav extension too, any help?

                    Below only removes the Project folder Path

                    if(value.indexOf("{PROJECT_FOLDER}") != -1)
                    	{
                    		return value.replace("{PROJECT_FOLDER}", "");
                    	}
                    

                    @d-healey @Christoph-Hart @ulrik

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

                      @Natan said in Adventures in broadcaster: attachToComponentMouseEvents:

                      if(value.indexOf("{PROJECT_FOLDER}") != -1)
                      {
                      return value.replace("{PROJECT_FOLDER}", "");
                      }

                      try:

                      if(value.indexOf("{PROJECT_FOLDER}") != -1)
                      	{
                      		return value.replace(".wav", "");
                      	}
                      

                      HISE Development for hire.
                      www.channelrobot.com

                      NatanN 1 Reply Last reply Reply Quote 0
                      • NatanN
                        Natan @Lindon
                        last edited by

                        @Lindon said in Adventures in broadcaster: attachToComponentMouseEvents:

                        if(value.indexOf("{PROJECT_FOLDER}") != -1)
                        {
                        return value.replace(".wav", "");
                        }

                        Hey Lindon, Thanks mate, This does the Job, But need to Remove the Project Path aswell

                        Also We need to Add a couple of Extension Like .Wav .Flac .Mp3 so the Label stand cleaner

                        Any Idea?

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

                          @Natan

                          reg tempValue;
                          if(value.indexOf("{PROJECT_FOLDER}") != -1)
                          	{
                          		tempValue =  value.replace(".wav", "");
                                         Console.print(tempValue);  //<-- now think what you might do to this?
                          	}
                          

                          Perhaps also read up about substring:

                          Link Preview Image
                          W3Schools.com

                          Well organized and easy to understand Web building tutorials with lots of examples of how to use HTML, CSS, JavaScript, SQL, Python, PHP, Bootstrap, Java, XML and more.

                          favicon

                          (www.w3schools.com)

                          HISE Development for hire.
                          www.channelrobot.com

                          NatanN 1 Reply Last reply Reply Quote 1
                          • NatanN
                            Natan @Lindon
                            last edited by Natan

                            @Lindon Thanks, man, Just need to Remove the {PROJECT_FOLDER} as well!

                            	if(value.indexOf("{PROJECT_FOLDER}") != -1) // This does not Work !!!
                            	{
                            		return value.replace("{PROJECT_FOLDER}", "");
                            	}
                            	
                            	
                            	reg tempValue;	
                            	
                            	if(value.indexOf("{PROJECT_FOLDER}") != -1)
                            		{
                            			tempValue =  value.replace(".wav", "");
                                        Console.print(tempValue);  //<-- now think what you might do to this?
                            	        return tempValue;
                            		}
                            
                            LindonL 1 Reply Last reply Reply Quote 0
                            • LindonL
                              Lindon @Natan
                              last edited by

                              @Natan said in Adventures in broadcaster: attachToComponentMouseEvents:

                              @Lindon Thanks, man, Just need to Remove the {PROJECT_FOLDER} as well!

                              	if(value.indexOf("{PROJECT_FOLDER}") != -1) // This does not Work !!!
                              	{
                              		return value.replace("{PROJECT_FOLDER}", "");
                              	}
                              	
                              	
                              	reg tempValue;	
                              	
                              	if(value.indexOf("{PROJECT_FOLDER}") != -1)
                              		{
                              			tempValue =  value.replace(".wav", "");
                                          Console.print(tempValue);  //<-- now think what you might do to this?
                              	        return tempValue;
                              		}
                              

                              nearly...

                              if(value.indexOf("{PROJECT_FOLDER}") != -1)
                              {
                                   tempValue =  value.replace(".wav", "");
                                   tempValue = tempValue.replace("{PROJECT_FOLDER}","");
                                   return tempValue;
                              }		
                              

                              There is a better way tho...go read up about substring

                              Link Preview Image
                              W3Schools.com

                              Well organized and easy to understand Web building tutorials with lots of examples of how to use HTML, CSS, JavaScript, SQL, Python, PHP, Bootstrap, Java, XML and more.

                              favicon

                              (www.w3schools.com)

                              HISE Development for hire.
                              www.channelrobot.com

                              NatanN 1 Reply Last reply Reply Quote 1
                              • NatanN
                                Natan @Lindon
                                last edited by

                                @Lindon said in Adventures in broadcaster: attachToComponentMouseEvents:

                                reg tempValue;

                                Brilliant, Thanks a Lot mate, You're the BEST <3
                                Cheers :folded_hands:

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

                                  @Natan read up about substring...

                                  HISE Development for hire.
                                  www.channelrobot.com

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

                                  19

                                  Online

                                  1.7k

                                  Users

                                  11.8k

                                  Topics

                                  102.5k

                                  Posts