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.
    • 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...

              Can't help pressing F5 in the forum...

              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!

                  Can't help pressing F5 in the forum...

                  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...

                    Can't help pressing F5 in the forum...

                    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

                          Can't help pressing F5 in the forum...

                          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

                            23

                            Online

                            1.7k

                            Users

                            11.8k

                            Topics

                            102.5k

                            Posts