HISE Logo Forum
    • Categories
    • Register
    • Login

    multi-column comboboxes -> HISE crashes constantly

    Scheduled Pinned Locked Moved General Questions
    16 Posts 3 Posters 402 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 @Oli Ullmann
      last edited by d.healey

      @Oli-Ullmann You can probably simplify this a lot with something like the following:

      const var sampleMaps = Sampler.getSampleMapList();
      
      const cmbSamples = Content.getAllComponents("cmbSamples");
      populateComboBoxes();
      
      inline function populateComboBoxes()
      {
      	for(c in cmbSamples)
      	{
      		c.set("items", "");
      		
      		for (s in sampleMaps)
      		{
      			local firstSegment = s.substring(0, s.indexOf("_") + 1);
      			c.addItem(firstSegment.replace("_", "::") + firstSegment);
      		}
      	}	
      }
      

      It's probably not this code that is causing your crash, but something else, possibly related to the combo box. Try to recreate the issue in an isolated project.

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

      Oli UllmannO 1 Reply Last reply Reply Quote 1
      • Oli UllmannO
        Oli Ullmann @Lindon
        last edited by

        @Lindon said in multi-column comboboxes -> HISE crashes constantly:

        @Oli-Ullmann how do you know this is whats crashing HISE?

        and

        String.replace(var substringToLookFor, var replacement)

        Unfortunately, it still crashes.

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

          @Oli-Ullmann

          and why not do the replace once(on the sampleMapList) and then update all 4 with "items"

          const var sampleMaps = Sampler.getSampleMapList();
          
          for (map in sampleMaps)
          {
                                 if(map.contains("Bass_"))
          			    map.replace("Bass_", "Bass::");
          			
          			if(map.contains("Bell_"))
          			   map.replace("Bell_","Bell::");
          			
          			if(map.contains("Brass_"))
          			   map.replace("Brass_","Brass::");
          			
          			if(map.contains("Drum_"))
          			   map.replace("Drum_","Drum::" );
          			
          			if(map.contains("FX_"))
          			   map.replace("FX_","FX::");
          			
          			if(map.contains("Git_"))
          			   map.replace("Git_","Git::");
          			
          			if(map.contains("Keys_"))
          			   map.replace("Keys_","Keys::");
          			
          			if(map.contains("Lead_"))
          			   map.replace("Lead_","Lead::");
          			
          			if(map.contains("Pad_"))
          			   map.replace("Pad_","Pad::");
          			
          			if(map.contains("Plug_"))
          			    map.replace("Plug_","Plug::" );
          			
          			if(map.contains("Seq_"))
          			   map..replace("Seq_","Seq::");
          			
          			if(map.contains("String_"))
          			    map.replace("String_","String::" );
          			
          			if(map.contains("Voice_"))
          			     map.replace("Voice_","Voice::");
          		}
          }
          Console.print(trace(sampleMaps));
          
          
          const var sampleCombos = [Content.getComponent("cmbSamples1"),
                                    Content.getComponent("cmbSamples2"),
                                    Content.getComponent("cmbSamples3"),
                                    Content.getComponent("cmbSamples4")];
          
          for(c in sampleCombos)
          {
          		c.set("items", sampleMaps);
          }
          

          HISE Development for hire.
          www.channelrobot.com

          1 Reply Last reply Reply Quote 1
          • Oli UllmannO
            Oli Ullmann @d.healey
            last edited by

            @d-healey
            @Lindon

            Thank you both very much! :-)
            I will try out both suggestions.

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

              @Oli-Ullmann look at what you are getting back in the array sampleMaps after you've done the substitution, you are actually probably better off doing

              if(map.indexOf("Bass_") == 0)

              rather than

              if(map.contains("Bass_"))

              to make sure you are replacing one only occurrence

              Dave's approach is even better...

              HISE Development for hire.
              www.channelrobot.com

              Oli UllmannO 1 Reply Last reply Reply Quote 1
              • Oli UllmannO
                Oli Ullmann @Lindon
                last edited by

                @Lindon Thank you!

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

                  @Oli-Ullmann this is interesting:

                  const var sampleMaps = ["Bass_ONE","Bass_Two","Bass_three"];
                  
                  const cmbSamples = Content.getAllComponents("ComboBox");
                  
                  for (map in sampleMaps)
                  {
                  	reg firstSegment = map.substring(0, map.indexOf("_") + 1);
                  	reg secondSegment = map.substring(map.indexOf("_") + 1, map.length);
                  	Console.print(firstSegment.indexOf("_"));
                  	firstSegment.replace("_", "::");
                  	Console.print(firstSegment);
                  	Console.print(secondSegment);
                  }
                  

                  replace isnt working....for me at least..

                  HISE Development for hire.
                  www.channelrobot.com

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

                    @Lindon Ok here you go.. the best of Dave and me ...

                    
                    const var sampleMaps = ["Bass_ONE","Bass_Two","Bass_three","Gtr_One"];
                    
                    const cmbSamples = Content.getAllComponents("ComboBox");
                    
                    for (map in sampleMaps)
                    {
                    	reg firstSegment = map.substring(0, map.indexOf("_") + 1);
                    	reg secondSegment = map.substring(map.indexOf("_") + 1, map.length);
                    	firstSegment = firstSegment.replace("_", "::");
                    	map = firstSegment + secondSegment;
                    }
                    
                    Console.print(trace(sampleMaps));
                    
                    populateComboBoxes();
                    
                    inline function populateComboBoxes()
                    {
                    	for(c in cmbSamples)
                    	{
                    		c.set("items", sampleMaps.join("\n"));
                    	}	
                    }
                    

                    HISE Development for hire.
                    www.channelrobot.com

                    Oli UllmannO d.healeyD 2 Replies Last reply Reply Quote 1
                    • Oli UllmannO
                      Oli Ullmann @Lindon
                      last edited by

                      @Lindon Thank you very much! I'll try that out right away! :-)

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

                        @Lindon Wrap it in a function to avoid wasting reg variables.

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

                        LindonL 1 Reply Last reply Reply Quote 1
                        • LindonL
                          Lindon @d.healey
                          last edited by

                          @d-healey yes yes ....I know...Im lazy.

                          HISE Development for hire.
                          www.channelrobot.com

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

                            @Lindon so here is it all wrapped in one function call

                            
                            
                            const var sampleMaps = ["Bass_ONE","Bass_Two","Bass_three","Gtr_One"];
                            
                            const cmbSamples = Content.getAllComponents("ComboBox");
                            
                            populateComboBoxes();
                            
                            inline function populateComboBoxes()
                            {
                            	
                            	for (map in sampleMaps)
                            	{
                            		local firstSegment = map.substring(0, map.indexOf("_") + 1);
                            		local secondSegment = map.substring(map.indexOf("_") + 1, map.length);
                            		firstSegment = firstSegment.replace("_", "::");
                            		map = firstSegment + secondSegment;
                            	}
                            	
                            
                            	for(c in cmbSamples)
                            	{
                            		c.set("items", sampleMaps.join("\n"));
                            	}	
                            }
                            
                            

                            HISE Development for hire.
                            www.channelrobot.com

                            Oli UllmannO 1 Reply Last reply Reply Quote 2
                            • Oli UllmannO
                              Oli Ullmann @Lindon
                              last edited by

                              @Lindon
                              @d-healey
                              Guys, it looks like it's working now. You are brilliant! :-) The solution was apparently to replace the text already in the sampleMap array.

                              Thanks a lot! If you're ever in Germany, I'll buy you a beer! :-D

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

                              32

                              Online

                              2.0k

                              Users

                              12.7k

                              Topics

                              109.9k

                              Posts