HISE Logo Forum
    • Categories
    • Register
    • Login

    multi-column comboboxes -> HISE crashes constantly

    Scheduled Pinned Locked Moved General Questions
    16 Posts 3 Posters 343 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.
    • Oli UllmannO
      Oli Ullmann @Lindon
      last edited by

      @Lindon Yes, I have commented out the code and pressed “compile” several times. It no longer crashes. But the tip with the correct notation is good. I'll try it out right away and let you know if it has fixed the problem. Thanks to you. :-)

      d.healeyD LindonL 2 Replies Last reply Reply Quote 0
      • 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.

        Libre Wave - Freedom respecting instruments and effects
        My Patreon - HISE tutorials
        YouTube Channel - Public 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.

                          Libre Wave - Freedom respecting instruments and effects
                          My Patreon - HISE tutorials
                          YouTube Channel - Public 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

                                27

                                Online

                                1.8k

                                Users

                                12.1k

                                Topics

                                105.1k

                                Posts