HISE Logo Forum
    • Categories
    • Register
    • Login

    LFO Shape Designer

    Scheduled Pinned Locked Moved General Questions
    28 Posts 2 Posters 1.4k 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.
    • DanHD
      DanH @d.healey
      last edited by

      @d-healey but I HATE arrays! 😆

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

        @DanH You need to embrace them.

        And array is just like have multiple variables but with less code.

        So you could use lots of variables like this

        const myVar0 = 10;
        const myVar1 = 20;
        const myVar2 = 30;
        const myVar3 = 40;
        
        Console.print(myVar3); // 40
        

        or you can use a single array

        const myArr = [10, 20, 30, 40];
        
        Console.print(myArr[3]); // 40
        

        They are not much different, but arrays are much more useful for doing batch jobs because you can loop over them.

        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 you forget that I inspired you to make the make the arrays video a few years ago 😆

          I've come a long way since then :) Not far enough however...

          I've just seen there's an api for it perhaps:

          Screenshot 2024-05-29 at 11.21.02.png

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

            @DanH said in LFO Shape Designer:

            I've just seen there's an api for it perhaps:

            Looks like it will save you from a loop, Looks like it will save you from a loop, Looks like it will save you from a loop, Looks like it will save you from a loop

            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 perhaps, if it worked!

              tableShape1.setTablePointsFromArray([0, 0.5, 0.30, [0]], [0.5, 0.75, 0.5, [1]], [1, 0.9, 0.9, [2]]);
              

              Screenshot 2024-05-29 at 11.48.26.png

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

                @DanH Looks like it's only for Tables, not ScriptTables

                8f96ded2-a453-4782-9ffb-946d3a655b3b-image.png

                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 ok so my script is:

                  const var Table1 = Content.getComponent("Table1");
                  const var LFO1 = Synth.getModulator("LFO1");
                  const var tableShape1 = Synth.getTableProcessor("LFO1");
                  const var makeShape = Content.getComponent("makeShape");
                  
                  inline function onmakeShapeControl(component, value)
                  {
                  
                          tableShape1.reset(0);
                          tableShape1.setTablePointsFromArray([0, 0.5, 0.30], [0.5, 0.75, 0.5], [1, 0.9, 0.9]);
                  
                  };
                  
                  Content.getComponent("makeShape").setControlCallback(onmakeShapeControl);
                  

                  The other API's (add/setTablePoint) work fine here....

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

                    @DanH TableProcessor != Table

                    Try this

                    60e5d10a-8d73-4d5b-8603-2ccec6ebc752-image.png

                    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 ah, yes got it working, thanks :) Ok so this array needs to dynamically load points into the table..

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

                        @DanH Each time you update your array you call that function to update the table

                        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 can the array have a dynamic number of variables?

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

                            @DanH An array is a variable. You can dynamically change the values within it. Check out the API

                            58987627-5459-4816-8029-a2e20dfa858c-image.png

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

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

                              @d-healey so push and remove might help here I guess....

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

                                @d-healey or concat 😆

                                Making some (slow) progress... please let me know any pointers if you have any... :folded_hands:

                                HiseSnippet 1391.3oc2X8tZabDDeOYeoQJMgFZ9PoPgC+IEhQH4XmXSojyVVJHpjknxMotlPX8oUVa7c6d8tU1UMDHuA8UqOB4QnuAsyr2oSqhkkUEIgPOLKd14O6uY1YmYr6DI8XwwxHhU9CGExHVeoc2QB0fpCnbAow9Dq6Z2swA0bd9tOqlyg6tWyZj8FERiiY8HVVq7TTLq7qRze+8S1i5SEdrIaQHOSx8XM4Ab0jc639ibe+5zdrC4AFRuoaCOonpzWNDfzJ1kIgTuynmxNfhhkylXciZ83JYTWEUwhIVqtmr2ntCjWHRj+Y7X9I9LjnBoKXnjsqK86gHF2kTc.2uWmwtdLgXY2YRfXkj.w8raw6wy1eR.4qzLblngY7vJ2zvakofWES3U1.dy.RVFPZ0DHAWEdQ7P0DNHdtkcCghE0mBgcSnjHKI2FqZWUBRHTkBnmwpGADYZT7QkKutCrb+uu.D4iUNmSibNjBXrhyO3LVwSYppxfPo.HJtVB60lRkl0aiJnSdPwaI6MzmBQhhqgrlVXEZftCngrozQa2Lm6ZTT+qf1FakYihn6XnFWvU6FEQGAxe7wfCWtzF3xCK+h0cNtbosPhGqW2JYmDBsP67hWXBAA6BCSUphVvs0FH0Zajn6VIJCaUISjMPaUn.W3yELm9CEdJtT3HE3Mi1IvHdjzun23v85vo5Ojc+ButPg7Nv26GCJEwhYphnG6j9cIQhGGbkbgJFRABz9Pwr.Cn8a.CL666Lvs18QKkBwpTe+SfWmEuL5QrLGe7.1EyyMym2W5Q8wHsVbLRigs74GuSI35vipl.+0ytVfiNed3mqNJMCdWU3Y74sXQGvst1.zDWGroQr4.oh0VTT69EdSAm2mU+9yjWps7YQyjMVbMZdJVTLL3DVjYvGEDp3LcYL6qtLlYUVuj.jgfRQC3NpcHSbU0dIoQUrjWJpfiWoK3c6zBd5KGBGJqcS6jhODMfMayzipnDKl8i2nj96OZNp4lb+i7ks+U+ipuCRu8HXYTafa+cPY1hej+QUP5RO.W1tJrbNR24AI5OleeM81cA0eUaB4marOdboPFPO3QgrHEGCVV6yNGZ4kTyNu89r3yTxPv+yRZHVew05f+9Dm6H2QYDusu6E7dpAYa7tP2AL9oClzc08UtgiCvM.SdCarPJFne+i+NoG+dCUJoPe92xNKW0.Bu80FPfvcYBDjXevlLZj.a2viaIC.iSi.IsxESOm0PzQ+pCYuXm9crMeobU.vUtL.3x8SgN4i6RY1dGmoIkA7XYpdpXeSQLWMxblmOX87WTHdW6Nbk2fYiwby.iPh5GCLlNozssq0uOySMAfqZW+W93LVj4weyji+asepu7Dp+j.E7jDPBKY7nuKksSFemLApLmYY+qEcV1vEdVVqUl2rqUVxYWW8ytYWWz73u9RWMweBesM0D12MAl1XoRM1RKZdsvYOdnzmFg7qGw9sgLgmA+28DLunwjzJ2+z84Pgo9xnfz9CoR9MtMYmBg.SaeHCJYBSG6YlB1MPJUC3hSmNa6dtMkxvZ5xh8LMRmAzXb9AcYPCy.l8PYKZL7GBTEl25LSlMNUHiXIyjXte0gwJYvXG3SU21tJVntcq0w1OZyRZ935Nn9Or8GF5+KUHqL+7pbKb5Ojh4jkUguB9LrYSBJyxs+LEkysk3J++tk3OIGpf5AsnpHNLwj8ACC5B8b7XvoKDLeb9cqb3y2D5xHstF.SzSS7OvWJyJHsUJyJiY9I4LBndQxW5k72.fOjtodGvuE5+6O4sagzNyX3+.nq1K87l1TWRwMVVEe3xp3lKqhasrJ9nkUwGurJt80qHNzwtCgVGIOMIjVcpkTQ2JqiELg9+BXlzwJK
                                
                                1 Reply Last reply Reply Quote 0
                                • DanHD
                                  DanH @DanH
                                  last edited by

                                  This post is deleted!
                                  1 Reply Last reply Reply Quote 0
                                  • DanHD
                                    DanH @DanH
                                    last edited by DanH

                                    @d-healey ok so I have figured out some of the permutations of drawing tables with the array and joining two or more arrays.

                                    HiseSnippet 1413.3oc2X0sZibCEViSlzX2cKMz8hRgBCAJ3PCFam+ZYorNwwYwz3DScZ1BgvVkYjiEYFoYmQNolxB6aP6iUuoPeD5iPeCZORy3Yz3X630rY2PmKLQ572m9zQ5bTZGvsIgg7.jQ9SF3SPFOxry.lnW8dXJC0bejwJlcZdTCqWr6oMrNY28NrAZuA93vPhCxvXgmKUyH+hH02+7r8vtXlMIcJD5TN0lbH0iJRmscsum55d.1gbB0SS6Mq0zlypyc48AHsfYYjO19J7kjivR0xYhLVpgCUvC5HvBRHxXw83NC5zieCKR+SogzKbIxAUPc.GEM8AbWGIhkyhp2i55zd3RODgLLamRDKDQDOwrE0glLeJg7oJAVoVnyGF4xBuEx.uJ5vqrF7FCjLzfzhQPB1JrCn9hTIR77wlMYBRPWLP65PIRWTt+bIy5bPClnjG9JxAAvfDKJtY4xqasc4xq8zB.yGJrtFGXcBFvXEquyZngWRD04d9bFLn3pQhWMiIGdvwRCTIOR0awc56hAln3pRQYUVHcPmdXeRFaT9MYwcGFp9SvZsoR7QQ4xQyrt.R1MH.O.z+ryfEb4Rpe1p74qacVE3OUiN+b8XwH2nbqlgkpTcq0spDarzV4Tam5unoTJkY7VIgXFiW03.NhokKswNi37M1Y6Q0HchyKTfxboLhU29LaAkyr3LIaH2XC3tEsGtqtNfA29j0J7qExmuPdK3aTxtT.IjHJBTqU72szHb3lHmxDgPplmZ0TLYC.L90vVy3yqjZs5ZRmDCu5XW2KfK.JlAzx81aupBUvX5qKWtM1MgnkTLrCjO+vIJAaF1XQJZWO6lxZOUwM4mLwLFYShRF54oxHQKpIwIYVxSgUpNGrxaAsLxvpefnopSklpNCIOXlS060DnOTTiZkM8rHs0tjhz3li3BxwrhJBnvqKXMpntcGqrXm4RBFqXYc+foYXQVeuKHA5zuTQnXX1JrlStBqdC.1QrilhbVSFUbrOgMo1BPwTprZbLpfvKT0hebbsX0NChBUbW1LptHRAX8NfbvBLx3qLqtYoreWeL7S2uVaLB8iM2WpdbHgnCHxmDHnxEqw9jqgtohZGHu49jvqDbefDR1wQFezcBveQGbCzGbC0QzCbmwuafP8HzK6Iji9CPj+PhoI3pkLk0lkDzng8ShC6d8EBNSE2kLkmGzi590Ri5atpFgIwkrqpCI3.lr4EZXKtG3Wb.noQtP70jlr1pSIRwyVfW1LJ2dRgtF+dKzOxL8X0jB+OGdeuxmXneyqlmPe6NRgdgG1mmdCxxWEDK.NSmoqTYmmrPpXf9qFdm007rBwULaSE18FOFyMFLBmGuOvX7aMdrYitcI1hT.tn4A+z8yCKzC+xQg+KLetK+BraJQA27.HgD8.iuLVrUhbqDEpLkWC9Wy5qA8m4WCZrvzd8Wk470eK9f60eyZd7mcqslv2im1x7F0UhfoorxfBaw0HtS3rG0m6hCjxOHf7p9Dlsl7+9Yx7hlooU09sZu.tXpKOvKtLXrledsCIWBTftuOg.WVBuuzVOEriGmK5QYWlMa6I0Njy8antVzQ2Is6gCks4ntFTyMfaOg2BGBOktNzX3U5BadIiGPhZcRe958CEbugKfYsofNBhupq.iyL2Voej7usN7yFG+tY7ayMbUlddQtYN8ERQrRxJjYwO.KVDgxjbyGnnbpkzV3+2kz9AdeAbdtEVDPgNdLOpuWGnlgMAhNiQbkOSvHm73Wz3xxwpyvDliZv+BewBqHGaDKrxPguWhgG1Nf+R6nmZHOHsrZFXcyT++Oya1RN1ZLuwvCpJ8Ra6rt5VFVcdMbi40vMmWC2ZdMb640vclWC+l61PYSC61Gt5O5nIB0pcinazMRp3.cX+efrRnYF
                                    

                                    I'm now wondering how to make the x/y/curve values inside the array to be dynamic. So if I do, for example:

                                    reg x1 = 0.255;
                                    const var newShapeArray2 = [[x1, 0, 0.5], [0.375, 1, 0.5], [0.376, 0, 0.5], [0.376, 0, 0.5]]
                                    
                                    inline function onshape2Control(component, value)
                                    {
                                    
                                    		local newShape = [];
                                    		x1 = 0.355;
                                    		newShape.concat(flatArray, newShapeArray2);
                                    		
                                    		tableShape1table.reset();
                                    		tableShape1table.setTablePointsFromArray(newShape);
                                    };
                                    
                                    Content.getComponent("shape2").setControlCallback(onshape2Control);
                                    

                                    ... the array doesn't update the value of x1 - because the value is set on oninit. So can you update / refresh the array before calling it? Or maybe I need to clear it then push it?

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

                                      @DanH said in LFO Shape Designer:

                                      So can you update / refresh the array before calling it?

                                      It's just like any other variable, you can change the value whenever you like

                                      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 Ok well in this case I can't figure out a neat way to do it... Any ideas?

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

                                          @DanH

                                          Before you concat the array, assign your new x value.

                                          Something like

                                          
                                          local newShape = [];
                                          x1 = 0.355;
                                          newShapeArray2[0][0] = x1;
                                          newShape.concat(flatArray, newShapeArray2);
                                          

                                          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 said in LFO Shape Designer:

                                            newShapeArray2[0][0] = x1;

                                            what does this line do? Why the [0][0]?

                                            d.healeyD 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            30

                                            Online

                                            1.7k

                                            Users

                                            11.8k

                                            Topics

                                            103.0k

                                            Posts