HISE Logo Forum
    • Categories
    • Register
    • Login

    What is the syntax for using "i" in a loop when referring to a numbered component?

    Scheduled Pinned Locked Moved Scripting
    12 Posts 5 Posters 273 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 @VirtualVirgin
      last edited by

      @VirtualVirgin
      Make an array that contains all the buttons. Let's say you name the array "buttons".

      Then you can do this:

      for(b in buttons)
      b.setValue();
      
      VirtualVirginV 1 Reply Last reply Reply Quote 0
      • VirtualVirginV
        VirtualVirgin @Oli Ullmann
        last edited by

        @Oli-Ullmann
        Thanks :)
        Can I make an array that contains arrays?

        You can listen to my orchestral mockups here:
        https://www.virtualvirgin.net/

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

          @VirtualVirgin
          I think you can do that. Just try it! :-)
          I am not at my Computer so I can't test it.

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

            @VirtualVirgin said in What is the syntax for using "i" in a loop when referring to a numbered component?:

            For example-
            If I have 12 components defined as "Key0" - "Key11", and I want to use .setValue() on each

            How do I word the "i" in the loop so that I can use the function on all 12,
            so the result would be:

            Key0.setValue();
            Key1.setValue();
            Key2.setValue();
            etc...

            You need to put your components into an array. Then you can use i (it doesn't have to be called i, that's just convention) to access elements in the array.

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

            VirtualVirginV 1 Reply Last reply Reply Quote 0
            • VirtualVirginV
              VirtualVirgin @d.healey
              last edited by

              @d-healey said in What is the syntax for using "i" in a loop when referring to a numbered component?:

              You need to put your components into an array. Then you can use i (it doesn't have to be called i, that's just convention) to access elements in the array.

              So that works, but it still makes a big mess of code to do repetitive things:

              //Key components
              const var OneOctaveKeyboard0 = [Content.getComponent("Key0"),
              							 Content.getComponent("Key1"),
                                           Content.getComponent("Key2"),
                                           Content.getComponent("Key3"),
                                           Content.getComponent("Key4"),
                                           Content.getComponent("Key5"),
                                           Content.getComponent("Key6"),
                                           Content.getComponent("Key7"),
                                           Content.getComponent("Key8"),
                                           Content.getComponent("Key9"),
                                           Content.getComponent("Key10"),
                                           Content.getComponent("Key11")];
              fullKeyboard0.push(OneOctaveKeyboard0);                             
                                           
              const var OneOctaveKeyboard1 = [Content.getComponent("Key12"),
                                              Content.getComponent("Key13"),
                                              Content.getComponent("Key14"),
                                              Content.getComponent("Key15"),
                                              Content.getComponent("Key16"),
                                              Content.getComponent("Key17"),
                                              Content.getComponent("Key18"),
                                              Content.getComponent("Key19"),
                                              Content.getComponent("Key20"),
                                              Content.getComponent("Key21"),
                                              Content.getComponent("Key22"),
                                              Content.getComponent("Key23")];
              fullKeyboard0.push(OneOctaveKeyboard1);  
              
              const var OneOctaveKeyboard2 = [Content.getComponent("Key24"),
                                              Content.getComponent("Key25"),
                                              Content.getComponent("Key26"),
                                              Content.getComponent("Key27"),
                                              Content.getComponent("Key28"),
                                              Content.getComponent("Key29"),
                                              Content.getComponent("Key30"),
                                              Content.getComponent("Key31"),
                                              Content.getComponent("Key32"),
                                              Content.getComponent("Key33"),
                                              Content.getComponent("Key34"),
                                              Content.getComponent("Key35")];
              fullKeyboard0.push(OneOctaveKeyboard2); 
              
              const var OneOctaveKeyboard3 = [Content.getComponent("Key36"),
                                              Content.getComponent("Key37"),
                                              Content.getComponent("Key38"),
                                              Content.getComponent("Key39"),
                                              Content.getComponent("Key40"),
                                              Content.getComponent("Key41"),
                                              Content.getComponent("Key42"),
                                              Content.getComponent("Key43"),
                                              Content.getComponent("Key44"),
                                              Content.getComponent("Key45"),
                                              Content.getComponent("Key46"),
                                              Content.getComponent("Key47")];
              fullKeyboard0.push(OneOctaveKeyboard3); 
              
              const var OneOctaveKeyboard4 = [Content.getComponent("Key48"),
                                              Content.getComponent("Key49"),
                                              Content.getComponent("Key50"),
                                              Content.getComponent("Key51"),
                                              Content.getComponent("Key52"),
                                              Content.getComponent("Key53"),
                                              Content.getComponent("Key54"),
                                              Content.getComponent("Key55"),
                                              Content.getComponent("Key56"),
                                              Content.getComponent("Key57"),
                                              Content.getComponent("Key58"),
                                              Content.getComponent("Key59")];
              fullKeyboard0.push(OneOctaveKeyboard4);
              
              const var OneOctaveKeyboard5 = [Content.getComponent("Key60"),
                                              Content.getComponent("Key61"),
                                              Content.getComponent("Key62"),
                                              Content.getComponent("Key63"),
                                              Content.getComponent("Key64"),
                                              Content.getComponent("Key65"),
                                              Content.getComponent("Key66"),
                                              Content.getComponent("Key67"),
                                              Content.getComponent("Key68"),
                                              Content.getComponent("Key69"),
                                              Content.getComponent("Key70"),
                                              Content.getComponent("Key71")];
              fullKeyboard0.push(OneOctaveKeyboard5);
              
              const var OneOctaveKeyboard6 = [Content.getComponent("Key72"),
                                              Content.getComponent("Key73"),
                                              Content.getComponent("Key74"),
                                              Content.getComponent("Key75"),
                                              Content.getComponent("Key76"),
                                              Content.getComponent("Key77"),
                                              Content.getComponent("Key78"),
                                              Content.getComponent("Key79"),
                                              Content.getComponent("Key80"),
                                              Content.getComponent("Key81"),
                                              Content.getComponent("Key82"),
                                              Content.getComponent("Key83")];
              fullKeyboard0.push(OneOctaveKeyboard6);
              
              const var OneOctaveKeyboard7 = [Content.getComponent("Key84"),
                                              Content.getComponent("Key85"),
                                              Content.getComponent("Key86"),
                                              Content.getComponent("Key87"),
                                              Content.getComponent("Key88"),
                                              Content.getComponent("Key89"),
                                              Content.getComponent("Key90"),
                                              Content.getComponent("Key91"),
                                              Content.getComponent("Key92"),
                                              Content.getComponent("Key93"),
                                              Content.getComponent("Key94"),
                                              Content.getComponent("Key95")];
              fullKeyboard0.push(OneOctaveKeyboard7);
               
              const var OneOctaveKeyboard8 = [Content.getComponent("Key96"),
                                              Content.getComponent("Key97"),
                                              Content.getComponent("Key98"),
                                              Content.getComponent("Key99"),
                                              Content.getComponent("Key100"),
                                              Content.getComponent("Key101"),
                                              Content.getComponent("Key102"),
                                              Content.getComponent("Key103"),
                                              Content.getComponent("Key104"),
                                              Content.getComponent("Key105"),
                                              Content.getComponent("Key106"),
                                              Content.getComponent("Key107")];
              fullKeyboard0.push(OneOctaveKeyboard8);
              
              const var OneOctaveKeyboard9 = [Content.getComponent("Key108"),
                                              Content.getComponent("Key109"),
                                              Content.getComponent("Key110"),
                                              Content.getComponent("Key111"),
                                              Content.getComponent("Key112"),
                                              Content.getComponent("Key113"),
                                              Content.getComponent("Key114"),
                                              Content.getComponent("Key115"),
                                              Content.getComponent("Key116"),
                                              Content.getComponent("Key117"),
                                              Content.getComponent("Key118"),
                                              Content.getComponent("Key119")];
              fullKeyboard0.push(OneOctaveKeyboard9);
              
              const var OneOctaveKeyboard10 = [Content.getComponent("Key120"),
                                               Content.getComponent("Key121"),
                                               Content.getComponent("Key122"),
                                               Content.getComponent("Key123"),
                                               Content.getComponent("Key124"),
                                               Content.getComponent("Key125"),
                                               Content.getComponent("Key126"),
                                               Content.getComponent("Key127"),
                                               //Content.getComponent("Key128"),
                                               //Content.getComponent("Key129"),
                                               //Content.getComponent("Key130"),
                                               //Content.getComponent("Key131")];
              fullKeyboard0.push(OneOctaveKeyboard10);
              

              Isn't there some way to make that more compact?
              It seems odd to me that the index in a loop can't apply to a component name number, as it forces the manual steps to at least get anything into an array.

              You can listen to my orchestral mockups here:
              https://www.virtualvirgin.net/

              d.healeyD LindonL 2 Replies Last reply Reply Quote 0
              • VirtualVirginV
                VirtualVirgin @Oli Ullmann
                last edited by

                @Oli-Ullmann said in What is the syntax for using "i" in a loop when referring to a numbered component?:

                @VirtualVirgin
                I think you can do that. Just try it! :-)
                I am not at my Computer so I can't test it.

                Yes :) Making an array inside an array works.

                To reference it then I just put use the index for the next level to the right of the first index, so here I have a nested loop which goes through two levels of the arrays:

                //Loop for setting LAF
                for (j = 0; j < fullKeyboard0.length; j++)
                {
                	for (i = 0; i < 12; i++) 
                 		fullKeyboard0[j][i].setLocalLookAndFeel(keysLaf);		
                }	
                

                You can listen to my orchestral mockups here:
                https://www.virtualvirgin.net/

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

                  @VirtualVirgin said in What is the syntax for using "i" in a loop when referring to a numbered component?:

                  So that works, but it still makes a big mess of code to do repetitive things:

                  Yes, so don't do it that way :)

                  const myArray = Content.getAllComponents("Key\\d"); // The \\d is regex for any number

                  You could also use a loop, I've shown this in a few videos.

                  for (i = 0; i < numberOfButtons; i++)
                  {
                      myArray.push(Content.getComponent("Key" + i);
                  }
                  

                  If you're making a custom keyboard you would probably be better off either customising the stock keyboard or using a panel.

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

                  VirtualVirginV 1 Reply Last reply Reply Quote 1
                  • VirtualVirginV
                    VirtualVirgin @d.healey
                    last edited by VirtualVirgin

                    @d-healey said in What is the syntax for using "i" in a loop when referring to a numbered component?:

                    If you're making a custom keyboard you would probably be better off either customising the stock keyboard or using a panel.

                    I can't use the stock keyboard for multiple reasons and I tried making one from a panel like you have in one of the videos, but the math for the click/over areas gets more tricky when moving beyond the stripes. Overlapped buttons does the job easier.

                    The keyboard I am making here is not for displaying incoming MIDI, but for pitch class set and pitch set information (so scale filters and harmonizers etc.).

                    You can listen to my orchestral mockups here:
                    https://www.virtualvirgin.net/

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

                      @VirtualVirgin said in What is the syntax for using "i" in a loop when referring to a numbered component?:

                      @d-healey said in What is the syntax for using "i" in a loop when referring to a numbered component?:

                      You need to put your components into an array. Then you can use i (it doesn't have to be called i, that's just convention) to access elements in the array.

                      So that works, but it still makes a big mess of code to do repetitive things:

                      //Key components
                      const var OneOctaveKeyboard0 = [Content.getComponent("Key0"),
                      							 Content.getComponent("Key1"),
                                                   Content.getComponent("Key2"),
                                                   Content.getComponent("Key3"),
                                                   Content.getComponent("Key4"),
                                                   Content.getComponent("Key5"),
                                                   Content.getComponent("Key6"),
                                                   Content.getComponent("Key7"),
                                                   Content.getComponent("Key8"),
                                                   Content.getComponent("Key9"),
                                                   Content.getComponent("Key10"),
                                                   Content.getComponent("Key11")];
                      fullKeyboard0.push(OneOctaveKeyboard0);                             
                                                   
                      const var OneOctaveKeyboard1 = [Content.getComponent("Key12"),
                                                      Content.getComponent("Key13"),
                                                      Content.getComponent("Key14"),
                                                      Content.getComponent("Key15"),
                                                      Content.getComponent("Key16"),
                                                      Content.getComponent("Key17"),
                                                      Content.getComponent("Key18"),
                                                      Content.getComponent("Key19"),
                                                      Content.getComponent("Key20"),
                                                      Content.getComponent("Key21"),
                                                      Content.getComponent("Key22"),
                                                      Content.getComponent("Key23")];
                      fullKeyboard0.push(OneOctaveKeyboard1);  
                      
                      const var OneOctaveKeyboard2 = [Content.getComponent("Key24"),
                                                      Content.getComponent("Key25"),
                                                      Content.getComponent("Key26"),
                                                      Content.getComponent("Key27"),
                                                      Content.getComponent("Key28"),
                                                      Content.getComponent("Key29"),
                                                      Content.getComponent("Key30"),
                                                      Content.getComponent("Key31"),
                                                      Content.getComponent("Key32"),
                                                      Content.getComponent("Key33"),
                                                      Content.getComponent("Key34"),
                                                      Content.getComponent("Key35")];
                      fullKeyboard0.push(OneOctaveKeyboard2); 
                      
                      const var OneOctaveKeyboard3 = [Content.getComponent("Key36"),
                                                      Content.getComponent("Key37"),
                                                      Content.getComponent("Key38"),
                                                      Content.getComponent("Key39"),
                                                      Content.getComponent("Key40"),
                                                      Content.getComponent("Key41"),
                                                      Content.getComponent("Key42"),
                                                      Content.getComponent("Key43"),
                                                      Content.getComponent("Key44"),
                                                      Content.getComponent("Key45"),
                                                      Content.getComponent("Key46"),
                                                      Content.getComponent("Key47")];
                      fullKeyboard0.push(OneOctaveKeyboard3); 
                      
                      const var OneOctaveKeyboard4 = [Content.getComponent("Key48"),
                                                      Content.getComponent("Key49"),
                                                      Content.getComponent("Key50"),
                                                      Content.getComponent("Key51"),
                                                      Content.getComponent("Key52"),
                                                      Content.getComponent("Key53"),
                                                      Content.getComponent("Key54"),
                                                      Content.getComponent("Key55"),
                                                      Content.getComponent("Key56"),
                                                      Content.getComponent("Key57"),
                                                      Content.getComponent("Key58"),
                                                      Content.getComponent("Key59")];
                      fullKeyboard0.push(OneOctaveKeyboard4);
                      
                      const var OneOctaveKeyboard5 = [Content.getComponent("Key60"),
                                                      Content.getComponent("Key61"),
                                                      Content.getComponent("Key62"),
                                                      Content.getComponent("Key63"),
                                                      Content.getComponent("Key64"),
                                                      Content.getComponent("Key65"),
                                                      Content.getComponent("Key66"),
                                                      Content.getComponent("Key67"),
                                                      Content.getComponent("Key68"),
                                                      Content.getComponent("Key69"),
                                                      Content.getComponent("Key70"),
                                                      Content.getComponent("Key71")];
                      fullKeyboard0.push(OneOctaveKeyboard5);
                      
                      const var OneOctaveKeyboard6 = [Content.getComponent("Key72"),
                                                      Content.getComponent("Key73"),
                                                      Content.getComponent("Key74"),
                                                      Content.getComponent("Key75"),
                                                      Content.getComponent("Key76"),
                                                      Content.getComponent("Key77"),
                                                      Content.getComponent("Key78"),
                                                      Content.getComponent("Key79"),
                                                      Content.getComponent("Key80"),
                                                      Content.getComponent("Key81"),
                                                      Content.getComponent("Key82"),
                                                      Content.getComponent("Key83")];
                      fullKeyboard0.push(OneOctaveKeyboard6);
                      
                      const var OneOctaveKeyboard7 = [Content.getComponent("Key84"),
                                                      Content.getComponent("Key85"),
                                                      Content.getComponent("Key86"),
                                                      Content.getComponent("Key87"),
                                                      Content.getComponent("Key88"),
                                                      Content.getComponent("Key89"),
                                                      Content.getComponent("Key90"),
                                                      Content.getComponent("Key91"),
                                                      Content.getComponent("Key92"),
                                                      Content.getComponent("Key93"),
                                                      Content.getComponent("Key94"),
                                                      Content.getComponent("Key95")];
                      fullKeyboard0.push(OneOctaveKeyboard7);
                       
                      const var OneOctaveKeyboard8 = [Content.getComponent("Key96"),
                                                      Content.getComponent("Key97"),
                                                      Content.getComponent("Key98"),
                                                      Content.getComponent("Key99"),
                                                      Content.getComponent("Key100"),
                                                      Content.getComponent("Key101"),
                                                      Content.getComponent("Key102"),
                                                      Content.getComponent("Key103"),
                                                      Content.getComponent("Key104"),
                                                      Content.getComponent("Key105"),
                                                      Content.getComponent("Key106"),
                                                      Content.getComponent("Key107")];
                      fullKeyboard0.push(OneOctaveKeyboard8);
                      
                      const var OneOctaveKeyboard9 = [Content.getComponent("Key108"),
                                                      Content.getComponent("Key109"),
                                                      Content.getComponent("Key110"),
                                                      Content.getComponent("Key111"),
                                                      Content.getComponent("Key112"),
                                                      Content.getComponent("Key113"),
                                                      Content.getComponent("Key114"),
                                                      Content.getComponent("Key115"),
                                                      Content.getComponent("Key116"),
                                                      Content.getComponent("Key117"),
                                                      Content.getComponent("Key118"),
                                                      Content.getComponent("Key119")];
                      fullKeyboard0.push(OneOctaveKeyboard9);
                      
                      const var OneOctaveKeyboard10 = [Content.getComponent("Key120"),
                                                       Content.getComponent("Key121"),
                                                       Content.getComponent("Key122"),
                                                       Content.getComponent("Key123"),
                                                       Content.getComponent("Key124"),
                                                       Content.getComponent("Key125"),
                                                       Content.getComponent("Key126"),
                                                       Content.getComponent("Key127"),
                                                       //Content.getComponent("Key128"),
                                                       //Content.getComponent("Key129"),
                                                       //Content.getComponent("Key130"),
                                                       //Content.getComponent("Key131")];
                      fullKeyboard0.push(OneOctaveKeyboard10);
                      

                      Isn't there some way to make that more compact?
                      It seems odd to me that the index in a loop can't apply to a component name number, as it forces the manual steps to at least get anything into an array.

                      so this is pretty easy and std to do:

                      const OneOctaveKeyboard0;
                      const OneOctaveKeyboard1;
                      for(i=0;i<12;i++)
                      {
                            OneOctaveKeyboard0[i] = Content.getComponent("Key"+ i);
                            OneOctaveKeyboard1[i] = Content.getComponent("Key"+ (i+12));
                      };
                      
                      

                      HISE Development for hire.
                      www.channelrobot.com

                      VirtualVirginV 1 Reply Last reply Reply Quote 1
                      • VirtualVirginV
                        VirtualVirgin @Lindon
                        last edited by

                        @Lindon Thanks! I will use that to clean things up.

                        You can listen to my orchestral mockups here:
                        https://www.virtualvirgin.net/

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

                          @VirtualVirgin And to add up on friends examples, you can nest two arrays (aka 2D array) so everything lies in one unique keyboard array:

                          const var keyboards = [];
                          
                          for (oct=0; oct<11; oct++)
                          {
                          	keyboards[oct] =[]; /* add a nested octave array that will hold 12 keys */
                          	
                          	for(key=0; key<12; key++)
                          	{
                          		var keyNb = oct*12 + key;
                          		
                          		if (keyNb > 127)
                          			break; /* 128 is time to break the loop boy */
                          		
                          		keyboards[oct][key] = Content.getComponent("Key" + keyNb);
                          	}
                          };
                          

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

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

                          34

                          Online

                          1.8k

                          Users

                          12.0k

                          Topics

                          104.5k

                          Posts