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.
    • VirtualVirginV
      VirtualVirgin
      last edited by

      How do I use "i" to reference a numbered component in a loop?

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

      I know the first part is:

      for (i = 0; i < 12; i++)

      but how do how place the "i" in context of the component name?

      I've tried things like

      Key + i.setValue();

      But that doesn't work.

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

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

                            21

                            Online

                            1.8k

                            Users

                            12.0k

                            Topics

                            104.6k

                            Posts