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.
    • LindonL
      Lindon @Oli Ullmann
      last edited by

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

      and

      String.replace(var substringToLookFor, var replacement)

      HISE Development for hire.
      www.channelrobot.com

      Oli UllmannO 2 Replies Last reply Reply Quote 0
      • 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

                                  18

                                  Online

                                  1.8k

                                  Users

                                  12.1k

                                  Topics

                                  105.5k

                                  Posts