HISE Logo Forum
    • Categories
    • Register
    • Login

    Reg - how many?!

    Scheduled Pinned Locked Moved General Questions
    19 Posts 6 Posters 515 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.
    • Matt_SFM
      Matt_SF @DanH
      last edited by

      @DanH 32 + 32 / namespace IIRC

      Develop branch
      Win10 & VS17 / Ventura & Xcode 14. 3

      DanHD 2 Replies Last reply Reply Quote 1
      • DanHD
        DanH @Matt_SF
        last edited by

        @Matt_SF thanks!

        DHPlugins / DC Breaks | Artist / Producer / DJ / Developer
        https://dhplugins.com/ | https://dcbreaks.com/
        London, UK

        1 Reply Last reply Reply Quote 0
        • DanHD
          DanH @Matt_SF
          last edited by

          @Matt_SF ok gonna run out 😆

          What should I use as an alternative? const?

          DHPlugins / DC Breaks | Artist / Producer / DJ / Developer
          https://dhplugins.com/ | https://dcbreaks.com/
          London, UK

          ustkU d.healeyD 2 Replies Last reply Reply Quote 0
          • ustkU
            ustk @DanH
            last edited by ustk

            @DanH Nope, you need need var instead since a constant can't be modified later. Unless you have some reg that are meant to be constants which would be a bad implementation.
            If you run out of reg in different namespaces, it's probably that your design isn't optimised. So the solution would be to either better optimise your code to use reg only when it is strictly necessary, or divide your namespaces in smaller ones, or both...

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

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

              @DanH said in Reg - how many?!:

              What should I use as an alternative? const?

              Restructure your code. Break it up into smaller manageable pieces with their own namespaces.

              Edit: Just realised I had the same answer as Greg :)

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

              DanHD 1 Reply Last reply Reply Quote 0
              • DanHD
                DanH @d.healey
                last edited by

                @d-healey @ustk they're all in one timer callback so unlikely I want to separate them out, var might work though, forgot about that one for some reason!

                thanks guys :)

                DHPlugins / DC Breaks | Artist / Producer / DJ / Developer
                https://dhplugins.com/ | https://dcbreaks.com/
                London, UK

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

                  @DanH Sounds like you're doing something crazy. You should probably be declaring vars in a callback rather than reg I'm not sure reg offers any advantage there (perhaps scope). But 32 in one timer definitely sounds like you could do some optimisation.

                  And no reason you can't break the contents of a timer up into multiple namespaces.

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

                  DanHD 1 Reply Last reply Reply Quote 0
                  • DanHD
                    DanH @d.healey
                    last edited by

                    @d-healey I'm not declaring the regs in a callback, but I am using them in the timer callback... vars might well work actually. What's the advantage of reg over var?

                    The reason for the amount is grabbing values from global cables out of scriptnode, no way around it as far as I can tell.

                    DHPlugins / DC Breaks | Artist / Producer / DJ / Developer
                    https://dhplugins.com/ | https://dcbreaks.com/
                    London, UK

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

                      @DanH Vars should always be a last resort.

                      Read this - https://forum.hise.audio/topic/79/scripting-best-practices
                      And this - https://docs.hise.audio/scripting/scripting-in-hise/hise-script-coding-standards.html#variables (scroll down to the "Types" section).

                      Why don't you use a single array to store your global cable values? Is this something you could use a broadcaster for instead of a timer?

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

                      DanHD 1 Reply Last reply Reply Quote 0
                      • DanHD
                        DanH @d.healey
                        last edited by

                        @d-healey haven't used broadcasters before, could be a possibility I guess, I've been following @Christoph-Hart 's guide on how to use global cables thus far.

                        https://docs.hise.audio/scripting/scripting-api/globalroutingmanager/index.html
                        https://docs.hise.audio/scripting/scripting-api/globalcable/index.html

                        DHPlugins / DC Breaks | Artist / Producer / DJ / Developer
                        https://dhplugins.com/ | https://dcbreaks.com/
                        London, UK

                        Christoph HartC 1 Reply Last reply Reply Quote 0
                        • Christoph HartC
                          Christoph Hart @DanH
                          last edited by

                          @DanH yeah store them in an array.

                          DanHD 1 Reply Last reply Reply Quote 0
                          • DanHD
                            DanH @Christoph Hart
                            last edited by

                            @d-healey @Christoph-Hart Argh arrays! 😆

                            I might make a small snippet if you fancy helping me out!

                            DHPlugins / DC Breaks | Artist / Producer / DJ / Developer
                            https://dhplugins.com/ | https://dcbreaks.com/
                            London, UK

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

                              @DanH

                              An array is just like lots of normal variables living in one house. So you only need to go to one address and ask for the person you want, instead of going to multiple addresses :p.

                              I hope that analogy works...

                              Let's imagine you are using reg variables like this

                              reg myGlobalCableData0;
                              reg myGlobalCableData1;
                              reg myGlobalCableData2;
                              reg myGlobalCableData3;
                              reg myGlobalCableData4;
                              
                              function myTimerCallback()
                              {
                                  myGlobalCableData0 = someValue;
                                  myGlobalCableData1 = someValue;
                                  myGlobalCableData2 = someValue;
                                  myGlobalCableData3 = someValue;
                                  myGlobalCableData4 = someValue;
                              }
                              

                              You can do it with an array like this

                              const myGlobalCableData = []; // Arrays should pretty much always be const
                              
                              function myTimerCallback() 
                              {
                                  myGlobalCableData[0] = someValue;
                                  myGlobalCableData[1] = someValue;
                                  myGlobalCableData[2] = someValue;
                                  myGlobalCableData[3] = someValue;
                                  myGlobalCableData[4] = someValue;
                              }
                              

                              You might find this useful too:
                              https://youtu.be/Y8sraa5ig-M

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

                              ? 1 Reply Last reply Reply Quote 2
                              • ?
                                A Former User @d.healey
                                last edited by

                                @d-healey said in Reg - how many?!:

                                // Arrays should pretty much always be const
                                

                                Why is this again?

                                d.healeyD 1 Reply Last reply Reply Quote 0
                                • d.healeyD
                                  d.healey @A Former User
                                  last edited by d.healey

                                  @iamlamprey I don't think there is any benefit to them being var or reg.

                                  So unless they're in an inline function, in which case they should be local like everything else, const seems to be the best option, unless you can think of a reason I've missed?

                                  Oh and of course inside a regular function they should be var because that's all we have there.

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

                                  ? 1 Reply Last reply Reply Quote 0
                                  • ?
                                    A Former User @d.healey
                                    last edited by

                                    @d-healey If there's no performance overhead then I guess it's just good coding practice to make them const since the actual array isn't changing, just what's in it

                                    I guess var / reg would only be used if you're pointing it to another array or something :man_shrugging:

                                    Christoph HartC 1 Reply Last reply Reply Quote 0
                                    • Christoph HartC
                                      Christoph Hart @A Former User
                                      last edited by

                                      @iamlamprey The engine can resolve a dot operator for a const object at compile time, so it improves the performance of function calls.

                                      var slow = [1, 2, 3, 4, 5];
                                      
                                      slow.indexOf(2); // this requires two table lookups to get the function to call
                                      
                                      const var fast = [1, 2, 3, 4, 5];
                                      
                                      fast.indexOf(2); // this function call can be resolved at compile time.
                                      
                                      1 Reply Last reply Reply Quote 2
                                      • Matt_SFM
                                        Matt_SF
                                        last edited by Matt_SF

                                        @DanH
                                        A const array will always be an array whereas a reg could be something else later :

                                        reg myArray = [] ;
                                        reg myArray = 42;
                                        // this will work. 
                                        
                                        const myArray = [] ;
                                        const myArray = 42;
                                        // this won't
                                        

                                        If I'm not mistaken, it has something to do with memory allocation. That's why it's always a good practice to reserve the arrays's slots number if you know it.

                                        const myArray = [] ;
                                        myArray.reserve(4);
                                        // push 4 variables into the array later
                                        

                                        Edit : ah, didn't see @Christoph-Hart 's answer

                                        Develop branch
                                        Win10 & VS17 / Ventura & Xcode 14. 3

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

                                        18

                                        Online

                                        1.7k

                                        Users

                                        11.8k

                                        Topics

                                        102.4k

                                        Posts