HISE Logo Forum
    • Categories
    • Register
    • Login

    2 Linked Knobs with 1 Shared Function without doubling the codes

    Scheduled Pinned Locked Moved General Questions
    7 Posts 3 Posters 352 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.
    • ?
      A Former User
      last edited by A Former User

      Left and Right knobs are linked with a button. These 2 knobs have the same shared function, indexes and equations. Only difference is "Left" and "Right". How can we write a shared function without doubling the codes for Left and Right individually?

      
      inline function sharedFunction()
      {
          
          
          local Node_BoosterValue_Left = 2.288*(Knob_Left.getValue()); 
          
          local Node_BoosterValue_Right = 2.288*(Knob_Right.getValue()); 
          
          
      
          local index_EQ_Gain_Left = EQ_Left.Gain + 0 * EQ_Left.BandOffset;
          
          local index_EQ_Gain_Right = EQ_Right.Gain + 0 * EQ_Right.BandOffset;
          
          
          EQ_Left.setAttribute(index_EQ_Gain_Left, Node_BoosterValue_Left);
          EQ_Right.setAttribute(index_EQ_Gain_Right, Node_BoosterValue_Right);
          
      }
      
      

      I am asking this because I have lot's of equations and controls. Doubling them will be a huge mess. Below is the simple snippet. Any help will be appreciated!

      Note: I know it is about the arrays but I just can't figured it out. :)

      HiseSnippet 1500.3oc4X8taaaCDmJNpq1sYncHCneTHnevoKKv1oqs.AC00N1EAM+wKNKc6CCoLRzwDQlzShJqAEEXO.6gXOA6YXOB6QXO.6C8MX6nnjEkqjqpaSwVW9fQ3w6N969wi7NpddbahuO2CYT9vKFSPFW2r+ELwv1CwTFZ6sPFKatyA8Gh8HNVcCX1BJm4iZcwXruOwAYXT5wRMMJuHJ7uW8vVXWLyljHBgNhSsI6PGQEIR607ITW2tXGxgzQZZe2laayYs4t7..UkLqgFisOCeJYOrTsELQFWoiCUv85KvBhOxXwVbmK5Oj+SLk9GQ8om3RjCpi5CNRItK20QhXoTT6gTWmdwQuOBYX1KgKJo3hkM2k5PmHOgStQ3DVIVnyGFKLK3UWGd0JN7Lzf2hJ3cSy91dzwhjYjX6ZlayDDuAXXKPGVJcQK7WWwrMGzfIVeD9LRWOXvDKptwF0VypQiZqt4RUVpBrQ3KrNG6Y04aNdGx.g0WaEldr9oDQmACH1hpqDM0JRSRYvAzSGlmEgyshZURuR6PYmcbq.gfy.aigJXca9nwbFLn5JZ5D4CJykxHVChxPs3LMcjNwi6V0N1CqAqja.Y0kp7hkpXA+QGXUMVTYofmv3mn.459DwQxopFJSFpRznDspb0CMvO7HR7IjpJT8xveKPLHWjHT1F65dBjwWMqPHgvzorI.KWBahF4RWSz3MSV5+JINMXpyLyfIUNbyxJ+jG+MK1SKfxl6lNdlAyEmmNiUROcMGtKTkKExKLkaZt6cf1hBlYva5whNwkU3OMBxLRc41XWq83Njiaw49vsMgASbRai0a7fGbmbNfUHGEuGp6IURWttRFLItjxbHO+X3lIY4rXbEc015RYVegUMq6LQTKLyY+AC.NbyWGeocVL1hu1aJ2ojki+T+FunvrORH7nmDHHUecDuVNL7paNwMSNHlmeBUXs7X3Um.tWpmSncVXOtfrOjFT4EUJW4kUrldpACxbtnjMWhWlSKaQvaVFVkEL5DhW7wsXEgZkoKFalewX8dErUmdzTjy1lQE6OlvxqDMJ5HGTrtTDpf+SDVp9SiJU22k5P7PTGYc5Io6nPPq2vDp.N35lIY4uEdPcWSnGVxT61mocwqdH5a2dKr.Ka9HJzfvcLwSPkLowVjygt5TshT1bKh+YB93vXO55FjwmTnn+4IK58adQxfVMGo2Y4s+8QXMUuMLqiiKoG2mJyElJ3K.FRQfId9mIu+AwhEbOPy0+fFJ90m0D858+AcgxcBbwhzslJOFGMgDQ58.J6yiAH8B8s4Kk9UKJbuoYOpvdX13cgLvKjMdYi2nt+WxT0uZBXWzr62Mus5m8KQpkUq9KngkJwmuZG3cNoyOFhixlQEDRAl8BF0k5B2WKulyvPl6B0TpoScRA0iD7re6W99lRAMR+3MlyFSK3tIBtQytcOrCCCQkhAJklAJULFHiMfC3ABJ6zcwPcI3XfIDN8gm.ZS.9mwHtgQ0BxiUpw0jikPpOILJMM9a3unIqGOVN4jAn2DwVwLtD46ByZcuacz+iY1kUL60LeJ9bR3a+B41OOb7.t2HqGSXDO48.0mwGR3OJ5GRXbg+PB6aK.HbnGl4Ol6Spq64olqg9baQDArzpqDkRKY30EBOM8tZyXgMzE1CyR4LXbJOsKUqNve9PURQeBDMN66aCAqj6zSk5E35SdJ0QLrttgIhanKd5Lq25as9O32O4CW4yRECtugOwS4XL1mNZrKoC6bhKz6UHF+LnYqA3.WQrzzGi1ky3iGxYTa8bpCHvo+SOkjJuIy.BdY.7TvDIK27.hKA6Sza6AZZgf8.dhLmbQ8hyEyZ+5VlJ3ZIO6a8wQaOk9HpsmKiSnv0i+KXm98eUUinISpp9gXMFgs83Gaqdsn7n2UCk.wMK7CtW1bW4Xq5wOPzzr150Pv6dnGaaKyN9Rfex1lFygMaLG1b24vluZNr4dygM2eNr4AyzFYsyGEH3iT4+ffdcBentggV+in+AfHDlu3
      
      1 Reply Last reply Reply Quote 1
      • d.healeyD
        d.healey
        last edited by

        You need to plan it from the start. First your EQs should be named something like eq0 and eq1 so that they are loop/array friendly. You should do the same with your controls too, no left/right, always 0/1. Start there and see how you get on, come back when you're stuck again :)

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

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

          @d-healey I understand. I did the renaming. Since the scenario is different than I think, for making the situation more realistic, I added high knobs and added a "shared high function" too. But I am stucked more now :)

          HiseSnippet 1662.3oc4Y0raaaDDlzxrMRttIovEHmJHL5A4TWCQYGGWXTDEKKkZD+ihkqS6Ik0jqr1ZpcUIW5Dif.jK8RQeP5odou.4QnOBEnm5s7FzNK+QboLojrhcPSpLff2Ymc1u4al8mYUCGlI10k4nnl+fy5gUT+HslmQ4cp1AQnJasoh5bZaueyNHGrkdcOpImvntJabVOjqK1RQUM2CDZpleZE+Ou9dafrQTSbrHEkCYDS71jtDdrzFUdHw1tNxBe.oqj1qTYKSFsJyl4AnJmVIkdHySPGi2EITaJME0OnlEgybZxQbrqh5zavrNqYG1SoA5eHwkbjMVzvPoIXn.w0Y1VBDKjpTsCw1pQj26pnnp0HlKxEvEyosCwhzWdLmbC+NziGgLenN0vfmgL7JM9vSUBdSG.uap0zzgziG2i.aynsEkicZifPfLrBzUYpedFspLPCJeotnSv0cfF8GQwkWtzh5kKWZg0msvrEf.gKW+TjidsGUR+q08SMV5XLuV61XSdw4AwyKTUVQizUzX9.alztaSnmzZCONmQggEALXfUYc6wnPihyKoSnMHTaBEq2NLeTmQkzQXDGlcQyHKrHLS1d3ElsvymsfN7gzVuXjn7BAayd5CoriLVxEyOTzQwPIkDPIPxBho1W6ugbbmATORTp565u5oEXxVQqfJF3Guv+6wvqEyTneUEYaeDrhnXZNcLEmfjCclrY3PExldCUXzbq72BdVBixbSlDef4VOefUFJ+MT1quGkA0kzgFJuYLJdyXT7lwUDuU5b71aNkYLBJyHEJ67TW+EDYxc80HSxquFW1rWJKfyNsSn73ShRdU5r3fNU5Yd8Q3HoOiQReFWUz2nx9lLlyXTL2vR.S6uAYlTWajJUXyLQ156xrvs1fwbgyH881Vaiayg.S4kJu1Z2N8iJFK6rO3Qm2PFYaHg6DaPB0B+rV0dTKwMvh.Ebh7Rh15egdI8a62bCD0Zu1sARc8yipjFIBQvw0IshQVVI3awz.8beN2gbjGGW77XawLHxEVOxDFCyD9HawrHwE5ioWLlg+ARNmj3+x.6Xrzp241Yb7+EJG37F6RKOv3RIOv3c17.o8D2kww6Ag6BOuP9Bunf9fc0tcp8EtiiM1I0tEEv3LrAVj508HrSz9tQJB2jOYoBZYWpfbkLlAafJoHitEkv2qGllUADJg65JpzIDUfpb+BI93vBIZZSrvNJDndgBZQaqo3iY4p4TtHi2XxF+LZ8WS8lZfKBBBNyy2.ypIcJ3fl302S4a2ZSDGIpLKjYA1tG1gSDAR0MwmBk7FTmVdsMwtmvY87o9vC7TT+vwg7eFLF0qCy3YwS9iqzUth6O+UcQOSpIzqkkMtAykHxBGvuuHSugRrceR6JwP3kGdECA4vuLEnoNG7Ousl6L8ekUtT7+oGyjOeF3GhXfe0+0SN2qAbCscXVd1HdxGpProYXGBjH+h.hp9o.BOSNu9J40KFW3dSsFDtYmzw6TofWX42UMdCeKnY0BdJiXvNsV8uaRe3mzeWpRo8vOSIgkqGsgRUOmSw09QebnoAm5l.H650sNwFNYTbjh5Tf+HNztjLsIDXDJ3I+1u78UDBJm7Y7nVKOnfUhEbC+gbmXAWyWvpgBdYGqe2WvcCE7pO6m9Kear1fF8qjsQ85GTih.ZJfRykjRyMdTZJQz8YdbB83cPv0JDqm.NpIyywDCATJEa2mpBaWRzV.olXepSS8efOgcZD0VzY+FJiSjx3MIRou5sN7RORU4g+8+miTyEDolQ6wnSw9uaoer5S8a2l4zU+AXJ1QrQkwPd26+Xbe26di86dumIGfvANHpaOlK1P1xCzWY491Dy8nIUOPTBsDtWcv8LjioQBKKKrAhlvXP6DVZGhzYe+48BRJZhAuwZOWSvYEbmbpTCOaW7iIV7NFxCLVbYYwClYcg2V8cvm6+s2464FO3NheQh7QXrIoaOabM5oXa31v9X7Sfq+1F4YyijlbYzNLJqWGFkXJmSsOFV8e7w3D4Mo5PPghHyShkLWk8w1XjKV99XvsovHGfmvSHWXL9bwvhW2RK.t5h095ueburbuGcurqhUnv1i+GHRe4eppZXmwmp91XN5hLcXsLCpeWrz6Z9R.+l5+6CmWaGQa89U8qoUZoRPIiVjVllhriuD3mzGS4IXLKOAiYkIXL2YBFypSvXt6DLl0F5XDmcdeONqaP9OHnQM+mNQUU59iJ+aPYYqd
          
          1 Reply Last reply Reply Quote 0
          • d.healeyD
            d.healey
            last edited by d.healey

            I don't think this does what you think it does

                if (Link_Button.getValue())
            	    LowKnob1.setValue(value);	    
            	    shared_Low_Function();
            

            If statements should be followed by curly braces and the stuff you want to happen inside the statement goes in those curly braces. Like this:

                if (Link_Button.getValue())
                {
            	    LowKnob1.setValue(value);	    
            	    shared_Low_Function();
                }
            

            If you only have one statement within your if statement you can forgo the curly braces, but if you're unsure then use the braces.

            Some comments in your script would be useful.

            You have a crazy amount of empty lines in your script that make it hard to read.

            You should read this.

            Anyway this is how I'd approach it (you can probably reduce some of the repeated code even more, but it's a good start):

            HiseSnippet 1711.3oc4YE0aSbDD9t3b.wPnPUPkmPai3ASAB9bBPpRqvjDaHhDhINMzVTDr4t0wqx4cM2sNPJJR7Rk5C8mRUeo+An+C5OAj5S8s9Onc18ty2dlKAGSBsk5G.1YmYtuY9latYWp4ycHAAbeCyQVcm1DCySYUeGln4bMwTlwByaXNl0hqTuI1m3hp1g4HnbVfwr6zFGDPbMLMycGolliLrg52edqYwdXlCIQjgwZbpCYQZKpHQZsx2i54UE6RVk1RS6oJufCmMG2i2APUNqhFswNag2jberTsgrLLOVEWpf6WWfEj.Cygmk6tS8l7mwB0eMZ.cCOhbgsQcvQghqx8bkHVJ0XtlTO2ZwQefggoUsjbQtvbwXVKQcockmjSNiZCThE54Cyg1O3YqCuh8O7L0f2vgv6rV0c7osEI6Hw1IsVfIH9Mv.EnCqPcMF5WOt0bbPClXhV3sHU8gEcsnvjSV7JnRkJdoYFM+n4u10PUZzf3HBFMOPJABD4oAnuD8n0Ua2f6iJPg0EmAQQeApD7WW9xWZz7H3Gn4Ds6DzrfpdZhMIhPWUX7JOXbzkQzK08YrgfsHksU7yHZI32XfBFOGuUaNCVTX7n8GWZez+dh.oFLgO2aNrm2FPESANKZynMBebTlGkQPMhJkQ8pUAm3GzUPai85Pfv4EgQDsApPrH45Hwxeaw1nxSWj+rGUbcITVSpUgtBsWWFAgBUQcJytKcyluocJo6ogApWHieerP7V6NZ9ciSpwO83rZ759f9hBrXKBowr4hXcRXzToC55YyLwJzkZxua1jSOJtOriG2A6gnLWxygPpK1UBVtQhgwXLgSiqgzR0cI3QREN1WU4NMtJDDyDo3dQKx+HLBiIFI8lhYjBNfTizj2J2HUJCxQUdsuriTi9idzz7fwOp.HSB5fRNgusbXvNc+FWVAbud.AFbG51DjnIMHQMLZCh.5nhXvmr5MAD8T6kg6Vv5QXaJZp2IUqOC77pSDnJO.71yBRjG5aU3BtrzDkldZzmk50vj72L8ZVLm.crkZJ+dNTvTDbPjjYwL2kaz.RqZ1FsGH71BgOciNBRAkmhYdMcyJ.ZBTlVDjI1iqRyD7YCa62YXGVTjeWsx76yEjkA9N+KxOR9cyi5cqFMxbunWJ7H9YtsbtG+8yvBrNs1f3GirXEgA.ROgg0dOgg9.PNgcIzTjyVfQEK2lv1q4NLhZsHGPJBUfpB07GmNZ9i5dTWhuA0UN7QbMWQCEnilq6IMZbgxFGHGXOXN3TVcqbRCgW+cic5CpGrO.dX1NBAmo7vHVQcsRYtZ3XiuZg4wBrbftnLKjsaS7ETIQZNOYaXR4vw6FwZdRvVBdaUpOp4ng4w6qj+ySdnSTdmjEOrbK8o0u3qZg0T8hvtttdjZ7.prTTeFdiCHFr0vvSZnggWt1QLFRUBrWIhod+Ah8LSbHAhg6iBwD29xuUGAjxFu4AKfi2vc63gEoOyirCazFRzne3B4AHX.J2QuV+H4fP8KbOqUMpvoY13cnLvK7J4QMdiNV4nVgmDJArCaU8qGzyPl8QbKl0YHGRCKeTbSl453uMoxSU3vxpxCJlBH2uSqpTOXVF4mYLGBhG4WUKF2U9GbrKKEXGK3m+wuQInT5aDf4NYuBlJQvYTlb8HAu5ml5SUBtQjfW1z8WTBtYrFW36+ckOltWm94IBNQ4pUWsBCCoovTZtzozb8WJMCFcEdGAks4RXX9A38JKHGUm2w2g.DJiQ75lphVWTtVBo5DUpyx7ufeQaZGuVtY2EF8CSY+tvTnab90NzYpx26O9+LSctPl5jVODuMQcsGJt5bp0v.+sP2gvH9xFU16yUn8a86Un0tuuBskcD.DV0GyBZyCH15dtm8Jou27DQGVZ0CEkRKY3UEBOacNMVXIcg0vrTNCVmxSKQ0992quUXQQcBDMtKG3.AqL2oWJUqiW.4gTWQSacCSDWRW7cw9t.u3jpqet2wVsYdccG6e02l36uu4mq+f6a4BOGIFi0osZ6Qpv1l3ASMqv3GCiI2.2wSDKM8qVKwY71M4LZJReEBzQXyMIopkxLffSIhc1JQxXkWg3QvAD84zfQrHXeHOQFvbgc+mK1O957VgvEI6Gf9vXVsbe.Mq1QwanPKy+6vzehEzFuDRQ2n+446C+4CLi1LY9f2GOiVXGe9icBuYBYCiSnj.wMS8eZ1HVKIWi5deFVVEmnnAb7R5icbj0zWExOYaSoAvlIG.alZ.r45CfM2X.r4lCfMSuu1H+h+s6H3sBq+AA0pntXHSSsIgM9a.GXqzIB
            

            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 A Former User

              @d-healey Great example and explanation thank you so so so much!

              Just one thing; Knobs are not working when the button is unlinked also.

              ulrikU 1 Reply Last reply Reply Quote 0
              • ulrikU
                ulrik @A Former User
                last edited by

                @Steve-Mohican if "sharedFunction" is not active you'll need an "else" statement in your knob CB's

                HiseSnippet 1752.3oc4YEzaSbDEd23rsXCoEPfJmPihnRlBD75DfTkhvjDaHhDhINMzVTDrY2wwix5YL6NafHTj3Ru0+E8duzK8H+D5MtVodp25sdoRsuY1c8NqyFiigj1R8EXdy68lu226My9lI08X1Xeelmld9U2oCVS+DFM1gxaMWKKBUag40zOiwhqznkkG1AUKfZyILpu1r6zwx2G6noqm6NBM0yOpl72ueqYsbsn13DQZZqwH13EIsI7Do0qbOhqaMKG7pj1JZOUkErYz4Xtr..U4LJo0wxdKqMw22Rn1HFZ5ePUGBm40faww9Z5iNKyYmFsXOiFp+ZDexFtXw.SsFfiBEWi45HPrPp1bsHtN0iideMMci5IbQtPt3LFKQbHckmvImTNAJwBU9Pej9AOSU3UZvgmtB7FMDdmxngsGoCOYFA1NtwBTN1qoEjBTgUntZi75iYLGCzfxmns0V3ZdvftVTbxIKcYT4xkt3LiUXrBW8pnpMahs49iU.RJ9bD9o9nahdz5xoax7PEIv3RyfHnu.UF9mKcoKNVAD7CzbhNA9sJJqmlXSLOzUEGu5CFGcID4hcWiM3zEIzshWingfeiAJX7br1cXTXPwwilebg8Q++I7EZP4dL24rbc2.pXJxnQSFMQ3xQntDJF0LpTF0qVEsiWnKi11xM.CgyKBiHRSTwXQhwQhE+1htQ0mtH6YOpz5BnrlPqhcEZttHBBEJi5TlcWxls1qcRo6qg9xMjw6GKFO0tiUX2XRMd0iY03wCP5KJvhsHLMlctHVmjLZJ5frd1YlXE5lZJra1ImdTrOYGWlskKhPcvOGBotXWJX4lIFFiwjbZbMjBU2MAmOU3XdEo6TxUgfXlHE2+zhbGgqOdOUNQv1Q.ZXKyihV.wgp.kVB8YpRm0h5rbylvpqTKnLOLws4bOxFAbbQvmQjD3jxSTd5oAZVBmPxNtFQTokpHQH3.VkHL4MVlHTJi5DYkdeKTDZLXUJJZdvJUjAPl0JGz5jvMtG0EJlGtEJc+xeVbeuACBL3NjswHdKhehZVnMvb36LHJ7g7dyEQvr2hstaicwzM4sT+9hB0.qWCLGU8Af2dleuTVXjcyvHChP0CmRRkyrGlNp7PxZ6cCY+33d4WgmhKBUzMq.nET8nDAYh83MLYB9rgs4aMriKHT1wceFGuLjuK7hB4KraATuS0rYlyEs+zE6k4zhtA85mgEoAs2.6EirXEg1hR22kw922kZag1gGXonHit.kvWtCltecioEcJmnswHTApxkck8QQck0vk3f8zHNhVxhq4JoIAcb2tu96OcEsCjCLGNGbBitUNogvS9oyexCpGLO.dX1.NmQkdHuQzAnoCAwUFz9xEl2haIZyMhYA1tC1iSDIR84waC2eHro27Fyi82hy5Ho9nyo0z+vAh7edxhNQkcRF7vJsUuCyEdUaKEUu.LqiiKtNymHJEUuYi1ADClJX3IMUvvKW6PFCoJA1OhXpiNPruLw6HPL5.THl31W9MpH.WQauW2BtzGyIv0hm9lfhSXilPfF0qbItVEEP4Np05GJWObPg6oLpS31sxFuijAdgsjG13M5x1iYDd+vDvNpQsuZXuYc1W7uTV2rdDEr7wwGxLWf213pOUhCCipOnTJfb+f10HtPuLhOynOBDOhupVJh1P+4JeZEg.y3iH+gu6qkBJm9cRnNS1qfoRDbRoIWKRvq9iNiKEb8HAurkyOJEbiXMN+29qReLcuN8ySDbrJ0psZUpEPSgTZtzTZtAiRyHitBKfSnatjEz+.rux.3nFr.OaLjPoTnk1XpJZbIwXAjZfkTmg9eA+hlzLdrXxtCzFjLk4aSlBc8ys167LUk68a+eNSc1vL0wMdn01X4iAIyUmUNFZ3uM5NXJ1SbPkYedXwedPeXwNC7CKtrMGfvpdVT+NLeropm6YtxpyMOlGPSqdnnTZIBuZP3YplSiEVVUXcKZJmAiS4okHJe+6WtUXQQCLDMNK6aCAqf6TKkpG.2f7gDGdKSUCSDWVU7cs7bf7hcpS8y8VdTalOh4G7u52X8n6a94FL39FdF37wXrAocGWbU51XWnqYIFOMzlbSq.WdrzzasVhQYcZwnjTI8UvvIBatINUsTlADbKQK6sRjblJqfcwV9X09zfVrvVd.OgGRtvbv4h9kuNmQHbQhyCPuezqVt2i5U6vXGJbj4+cxzehAbLdYjLci9mOe+tu+.8nIS5O3nXMZaY6wdrc3KSHNv3XRIPbSk+oDyarjXLp66YXXTZhRZv0KIO11VTSeEfex1lxCgMSND1L0PXy0FBat9PXyMFBaltu1H9h+sC3r1g0+ff5UkOLjttRmvZ+s0EShF
                

                Hise Develop branch
                MacOs 15.3.1, Xcode 16.2
                http://musikboden.se

                ? 1 Reply Last reply Reply Quote 1
                • ?
                  A Former User @ulrik
                  last edited by A Former User

                  @ulrik Thanks, I haven't recognized that.

                  @d-healey Thank you so much again!!

                  👋

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

                  48

                  Online

                  1.7k

                  Users

                  11.7k

                  Topics

                  101.9k

                  Posts