HISE Logo Forum
    • Categories
    • Register
    • Login

    Populate samplemaps based on folder choice(almost working)

    Scheduled Pinned Locked Moved Scripting
    25 Posts 5 Posters 1.3k 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.
    • ustkU
      ustk @ten7kur
      last edited by

      This post is deleted!
      1 Reply Last reply Reply Quote 0
      • ten7kurT
        ten7kur
        last edited by

        So how come the SamplemapList viewport is not populating on Category viewport selection?
        Only populates on INIT.

        Im doing this in onCATControl

        if(items[value] == "A"){	    
        	    SamplemapList.set("items", "");
                SMLdir_select = "Folder1/Sub-folderA";
        	    SamplemapList.set("items", formattedSamplemaps.join("\n"));
        
        ustkU 1 Reply Last reply Reply Quote 0
        • ustkU
          ustk @ten7kur
          last edited by

          @ten7kur Have a look at the watchtable, the samplemaps names and start/end are looking weird...

          ten7kurT 1 Reply Last reply Reply Quote 0
          • ten7kurT
            ten7kur @ustk
            last edited by

            @ustk said in Populate samplemaps based on folder choice(almost working):

            @ten7kur Have a look at the watchtable, the samplemaps names and start/end are looking weird...

            Yea oops messed up along the way somewhere.
            This works, but still only populates on INIT.

            Im trying to send the SMLdir_select from onCATControl back through the script to show the new formatedSamplemaps.

            global SamplemapList = Content.getComponent("SamplemapList");
            
            const var Sampler = Synth.getSampler("Sampler");
            const var sampleMapList = Sampler.getSampleMapList();
            
            global SMLdir_select = "Folder1/Sub-folderA";;
            global formattedSamplemaps = [];
            
            global SMLdir_start = sampleMapList.indexOf(SMLdir_select + "/0");
            global SMLdir_end = sampleMapList.indexOf(SMLdir_select + "/zzz");
            
            
                for (i = SMLdir_start+1; i < SMLdir_end; i++){
                var newName = sampleMapList[i];
                newName = newName.substring(10, 100);
                formattedSamplemaps.push(newName);
            }
            SamplemapList.set("items", formattedSamplemaps.join("\n"));
            

            Would this solely have to be inside the onCATControl?


            I did this before. It works half way. It populates Samplemaplist based on CAT Item selected but its not clearing the SamplemapList viewport. So everytime i select a CAT Item it just adds and adds to the SampemapList.

            inline function onCATControl(component, value)
            {
                var items = component.get("items").split("\n");
            	
            	if(items[value] == "A"){
            	    SMLdir_select = "Folder1/Sub-folderA";
            	    
            	    global SMLdir_start = sampleMapList.indexOf(SMLdir_select + "/0");
                        global SMLdir_end = sampleMapList.indexOf(SMLdir_select + "/zzz");
            
                
                for (i = SMLdir_start+1; i < SMLdir_end; i++){
                global newName = sampleMapList[i];
                newName = newName.substring(10, 100);
                formattedSamplemaps.push(newName);
            }
                }
                else
                if(items[value] == "B"){
            	    SMLdir_select = "Folder1/Sub-folderB";
            	    
            	    global SMLdir_start = sampleMapList.indexOf(SMLdir_select + "/0");
                        global SMLdir_end = sampleMapList.indexOf(SMLdir_select + "/zzz");
            
                
                for (i = SMLdir_start+1; i < SMLdir_end; i++){
                global newName = sampleMapList[i];
                newName = newName.substring(10, 100);
                formattedSamplemaps.push(newName);
            }
                }
                //else
                        
            	//SamplemapList.set("items", "");	    
            	SamplemapList.set("items", formattedSamplemaps.join("\n"));
                  
            };
            Content.getComponent("CAT").setControlCallback(onCATControl);
            
            
            
            1 Reply Last reply Reply Quote 0
            • ten7kurT
              ten7kur
              last edited by

              bump.
              Anyone?

              At least the simplest of question;
              Why wont a viewport clear its items with:

              Viewport.set("items", "");
              

              ??
              Thanks

              d.healeyD C 2 Replies Last reply Reply Quote 0
              • d.healeyD
                d.healey @ten7kur
                last edited by

                @ten7kur said in Populate samplemaps based on folder choice(almost working):

                bump.
                Anyone?

                At least the simplest of question;
                Why wont a viewport clear its items with:

                Viewport.set("items", "");
                

                ??
                Thanks

                I think it's a bug. i just did a simple test and you're right, it doesn't work.

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

                ustkU ten7kurT 2 Replies Last reply Reply Quote 0
                • C
                  coreyu21 @ten7kur
                  last edited by

                  @ten7kur possibly try to insert viewport.changed somewhere in the code to tell the component to initiate the callback and update item list. I believe I had the viewport updating not to long ago, just not in an if statement. Might not work, just trying to help🙂

                  1 Reply Last reply Reply Quote 0
                  • ustkU
                    ustk @d.healey
                    last edited by

                    @d-healey Apparently, you need to have at least something as a workaround,
                    like Viewport.set("items", "-"); or Viewport.set("items", "Select a category");

                    I think .isNotEmpty() is the cause:

                    void ScriptingApi::Content::ScriptedViewport::setScriptObjectPropertyWithChangeMessage(const Identifier &id, var newValue, NotificationType notifyEditor /* = sendNotification */)
                    {
                    	if (id == getIdFor(Items))
                    	{
                    		jassert(isCorrectlyInitialised(Items));
                    
                    		if (newValue.toString().isNotEmpty())
                    		{
                    			currentItems = StringArray::fromLines(newValue.toString());
                    		}
                    	}
                    
                    	ScriptComponent::setScriptObjectPropertyWithChangeMessage(id, newValue, notifyEditor);
                    }
                    

                    I'll try to remove it...

                    1 Reply Last reply Reply Quote 0
                    • ten7kurT
                      ten7kur @d.healey
                      last edited by

                      @coreyu21 said in Populate samplemaps based on folder choice(almost working):

                      possibly try to insert viewport.changed somewhere in the code to tell the component to initiate the callback and update item list

                      Tried it but no luck..
                      I looked in the API, found "changed()" but it seems like it exists for all components Besides the Viewport..

                      @ustk said in Populate samplemaps based on folder choice(almost working):

                      I'll try to remove it...

                      🙏 🙏

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

                        It works by commenting out the .isNotEmpty() condition
                        @d-healey I'll make a pull request to your fork in a moment if you want this fix of course...
                        The fact is that I don't know if it can involve a wrong behavior somewhere else in Hise, so, be warned if you use it!

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

                          @d-healey What branch should I use in your fork? The develop seems more recent than the scriptnode one...

                          d.healeyD 1 Reply Last reply Reply Quote 0
                          • d.healeyD
                            d.healey @ustk
                            last edited by

                            @ustk yeah the develop one

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

                            1 Reply Last reply Reply Quote 1
                            • ten7kurT
                              ten7kur
                              last edited by ten7kur

                              ☺
                              @ustk You're a beast! for goin nitty gritty!
                              Wish i could be more code efficient!..not yet!

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

                                @ten7kur It's pushed on Dave's repo, you can compile it and test ;)
                                https://github.com/davidhealey/HISE/tree/develop

                                ten7kurT 1 Reply Last reply Reply Quote 1
                                • ten7kurT
                                  ten7kur @ustk
                                  last edited by

                                  @ustk said in Populate samplemaps based on folder choice(almost working):

                                  @ten7kur It's pushed on Dave's repo, you can compile it and test ;)
                                  https://github.com/davidhealey/HISE/tree/develop

                                  Awesome stuff! Just compiled and tested it!
                                  Thanks so much for taking your time to fix this!!👑

                                  Hopefully now i can finish my script

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

                                  17

                                  Online

                                  1.7k

                                  Users

                                  11.8k

                                  Topics

                                  102.5k

                                  Posts