HISE Logo Forum
    • Categories
    • Register
    • Login

    Modulation does not work when processorID/parameterID is set dynamically.

    Scheduled Pinned Locked Moved General Questions
    11 Posts 2 Posters 86 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
      last edited by

      @Christoph-Hart
      Hey Christoph,

      As the headline says, modulation via matrixTargetId no longer works if the processorId/parameterId of a slider is changed dynamically after onInit.
      If you change the effect when modulation is set, even the entire slider stops working.

      Is this by design or is it a bug?

      Here is a snippet to demonstrate the behavior. Just change the effect and neither the modulation nor the slider itself will work.

      HiseSnippet 1996.3oc6Z8zaaajEmzxLNRsaay1TjE6hEfvXOnrapgnriSBJBLiksREpcrPj6eVDTjNlbn0TSNCK4vr1XQt2a87dauteJ1uBEneA5o83h9MX22LCE4PIYaUi3Xm.qCBZd+Yd+lYdy6OjpeByCmlxRLLar6QwXCy20ZvQT9vNCQDpQuMLL+CVogLd2CGDR7wI8QInHLGmrKNkar9QwnzTrugoYsGKTvr97FxO+xZqiBQTObIICiufQ7vaQhH7Rp8c+LRXXWjOdWRjlzq31yiQ6vBYY.3pY0xHF4c.Ze7SPBwlyx3SQoCML+yV2E2B6b2UCdvJdn12qcvxK6sb6Grpumev8Z4b+UWwK.ubf28MLu1l9DNKY.GwwoFlyuNy+nACY+Mpx.eAIkrWHVLvwX.XYE4trPewRTP0nyPRne+Q6ZoFFlKzubOrlZO7lVaS7IEzK2K+.IC6RMz2.MmqJ7pUAdN5vqkF7lBjL0fz7JHcCqAdIjXdIGAddGqdT3rL.AmS5PQIqwb+TMqNLPBJeoHzA3tIvfBMZtZqV2wF951eRiFvYUJ29EnD6Oix1y9g1izaeLuCKJlQgAMWTvzYwREDtVfvRWNgnCDtZeUyEEzGSLXV1icrSbgDBsJFrTpPHJOgE1AEFtG3A0DlvQryYUZGbP.1imBV4YK1YHKIKcw6XuX+gnTb2uZwutQCBMjPw1AYTONgQsmbxZ5MBT2A1NByv2tweuQcgTBvroz.MysyyjBX+w1NeMfg5gLOTXNF.HH0QrJyRRfoKWUgfMpSBZpz8gOz1YoV2tQcvH0E6tBqzbwHBEPdqkDmMUniNDn6LIchueHtOKkHVVRUu6XhDOxyomOvWgRA754271iK5nfDiI5i37DxdYbLnSKoRub7ES6icwz93VMsaAeN8UjypSQpyoE0K+jFZtHOgww6PaJcDZ7xF1iyJHXp7xcnBwISksHbYxIoXSZVzd3Dc2PgfPHgpwYrN93L5gA8T26zDjQ6QI7chwziK3nQ9kUHlzb4nBDkKiH8A4QjjWdVmcnAwWDPp39jgD1ZoObMFeJdu7oPkZRNAKXICwLlxe+O4Z7481.wQhni4fB.ZLNgSD6AlafeAjaREqrt0F3zC3rXIpyuMCYOlQbeXgYc+V2iJW.+UWBGGkJlAUrkF4AVL.+X3XvbNC4NVgAabpqxRS8yGnYpeL0sp6eIH9GtQHve8vcQIR2bvtVQLeCsKBBKJVMOeD7z77E0GzMA+cYXp2QNFQ5o7WwUtNz1xmLMDj.j4mEh3UyJJpcHmg.s5ohDoanvp3H8ZKdkkpbVg3Mr5S3dCmNFmaJXT3weNfw7BL9MVprAk.bdK3f5boZBcyeck4+8VONjsGJrbiBtQAHAqpp3Oly1tfucg.NmPMi+3rVyX7LWy33w5le1h0cJk7M+ktR9lU+3ObhilzWi21pTX5MTvzxZqt6juSA+pDXNmNvVmDyBQIB9EAkx4+Ou0+5+tlvCoWoCl6O39knWfCXIQ4A5Klosv6C1TmxtXHNLTWpmty3fHFiOjP2upe2Mc2hwh2jhfcAe8IQFAExuCEPTR9mWSLs6x1FkBwT6.U8cftM5sOkkfU0LnSuSVJmEMZAH6.Z.GGKSpY9LqUWYI3SveQ78C5.es7NuZF+qIPlyIe7O2L6kJ7DJNxE9DWByInPYgi2kTTdhYtp81clqmxx3vk0skU7.gZdRVz.H0fGFrNkhCSGU0U93Vhwx64Xpubv+C9jyzQL1LmoyHlFpIWqzRJ1SUx0BiWiEbFTfZAJ5Q8wGpHncNXYAsmY7nrCyYeMqOtfflPPuLfVu.JfUknpUkc62uxCy4wIrrX4l8MUDvojTbhsjtyqhmhyrmQVEkr61UBsgRRHP4kpEbgw+2EtySv4yojTFkIgxihXYTtNny4tAlmQq.8bFChSvnJApEne.FfpubJSqbks14QMDK7FaMDWfkqWo.h5iv3.RTbHdS3xPHzQWdTuMvAnrPdAUcPtM3CDOjQIURt+TLbSd+8wI5PepqGnkejdR6a59TbHFR0WR5O4tETtKJQcm+LsU37q9g7M0iqemkBt1hal1u41k0a24ppbbtfx9W2RjpArnvzumbfsBQmTL6hrYiW2oJy03gRWqnl1SJl24ua5MTquKF+yWGEJLi6CuqkJs03kSN2kiqnPEExjmWfv6VJ38NVhdgjkyHQ1GYMp2H6Gio3jI6g7b+oMriGGfvtIHZZLKE6T8tWDYWFEmVg5XZzdpZTgpx6vYRRUjRrUzE1Jzj65tiH1VmXeDsxjAiqLSaSNTu0UU4apRk1I0C1XD6yU54MKLE+kDe9PGcEKI2Vm7mhR7GuK6ymBtt1UEbcUl6KzSQ3pzk65utkEbktss7nz9h4r70Ql3WyY6yen4uur.mpOo77hdlomN9T5E+WVaZ4qTcyNY9JnYlwe530t5oieUf12HaQpVQKRx+wHRSeM4qsrpwOW5iYgQum3QugTUCZUdoo5nP6MlpNW9F91ccKn1V+0y1Ei82q7oK7MAA+m0pTC1EQyY+V0J8s3tytxFytMhPdIrm6o9yXHbittjBb9Qk+27passXrsyD+ENLhfn8O2yq5TMghsOqJt7YUwUNqJd2yphqdVU7dmUEu+oqnHY7ix3rH0cbn6u9apdAilEucSyZF+emApXt.
      

      All the best,
      Oli

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

        @Christoph-Hart
        I just noticed that this only seems to happen when the min/max/middlePosition values of the slider change. If these remain the same, everything works fine even when dynamically assigning the processorId/parameterId.

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

          @Oli-Ullmann yeah that looks sketchy. Modulated sliders are not supposed to be reassigned as there is too much edge case stuff involved into making this work.

          Can you redesign your project to avoid reassigning modulated sliders?

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

            @Christoph-Hart
            Hmm, my use case is as follows:

            My plug-in has 8 effect slots. The user can select any effect per slot.

            However, I don't want to create a separate slider for each parameter of each effect. That's why I change the processorId and parameterId of each slider appropriately when loading an effect. And I adjust the min/max/middlePosition values. Except for the modulation, this works perfectly!

            The only solution I can think of is the following:

            I always leave the min and max values of the sliders from 0 to 1 and control the effect parameters via the slider callback.

            Depending on which effect is selected, I multiply the current value of the slider by the maximum value of the effect. For a frequency, for example, sliderValue * 20000 (With Math.range(20, 20000)).

            This should work for unipolar parameters. With bipolar values, i.e., if the parameter ranges from -1 to +1, for example, it gets more complicated. But even that will definitely work with a little math. :-)

            However, that would mean a lot more code and is not as clean as the current solution, which makes extensive use of your API.

            Or do you have a better idea?

            PS. I use hardcoded effects and the effect slot from HISE.

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

              @Oli-Ullmann why are you using effect slots? just use hardcoded modules directly for your slot system, then the processor / parameters won't change at all, you just need to hide the ones that aren't used.

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

                @Christoph-Hart
                I have the same problems with HardcodedMasterFX. And I use SlotFx because I wanted to use the HISE internal delay for its tempo sync functionality.

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

                  @Oli-Ullmann said in Modulation does not work when processorID/parameterID is set dynamically.:

                  the HISE internal delay for its tempo sync functionality.

                  that shouldn't be the reason, you can replicate this easily with scriptnode.

                  I have the same problems with HardcodedMasterFX

                  What do you mean? If you're just reloading different networks into the same Hardcoded modules you can leave the processor / parameter attributes constant, no?

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

                    @Christoph-Hart said in Modulation does not work when processorID/parameterID is set dynamically.:

                    that shouldn't be the reason, you can replicate this easily with scriptnode.

                    Puh, unfortunately I'm not really familiar with Scriptnode yet. But I'll take a look at it! :-)

                    What do you mean? If you're just reloading different networks into the same Hardcoded modules you can leave the processor / parameter attributes constant, no?

                    I will test this thoroughly tomorrow and provide feedback here. It didn't work during a quick test, but I will create a new test project for this purpose.

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

                      Puh, unfortunately I'm not really familiar with Scriptnode yet.

                      Well, then stop what you're currently doing and start learning scriptnode, then you'll look back at the HISE delay module and laugh at it for being so bland.

                      Here's a simple delay. It uses the tempo_sync node for calculating the delay times and has a filter in the delay feedback path so it gets dampened over time. That's just one of the things that you can customize with scriptnode. You can go from there, add ping pong mode, distort the feedback path or whatever you want.

                      HiseSnippet 2582.3oc6a07aaibEmzxT9yM6toYQ5QUr8f2h.CKYGuwnGDi+PYMZrspkiSbu3NlbjEgI4vRRYKsEEM.sG1asG2bqmxwhEF8Ruki8vVf.j8Oft.8xdy6+.M8MbHEmQjRVRQ1wYW6.Dn4Myv48989bFxorKQC64QbkjmbmlNXI4oUpzz1u1J0PF1Rqupj7MT1.44icywHsbSGjmGVWRVNyCnDjmXTof+Nq3xHSjsFNljjztDCM7CMrL7ioVV8WYXZVBoi2wvhazKnttFwdEhIoNvOYTlSxAocD5P7lH5vFQQ5yPd0jj+EJGjGcv7UWBgxu3An6ketkVJe06d2Ocg6ocf1RZKpixizW3dUyKImcMcCehaEejO1SRdzkI5MqTibhMaA10vy3.SLsQdoJvJyHWhXpSEQJUoUpYXpWNBn7jjjUJGCaYXv1sT1vP2nE8X36CB5HW7L3AP4QDYuLBrW9NwdovRxbrznLV5CUpn4Z33G2CkelRYcaPaVEA5IdVgMVI4WnrBAFfs+rVnivkbgFslvLKN2b2IG7eexurZcaMeChcNh8lDe7V1y7IS96mbhI+CSlq8tpVM09nKiKwzD6lZ2TSC2tMwYrqac.18N4NFYVG2Zff3KhoY6MLUiI0bCjXutsg+VN3v1c2nPJD1fe8n0WE4inJkPZv3bvt9FT1QdU7wfKASEMgxpXui7INfSQB8GX4Pzqah7EMmnNcgc.3gfNjpnr8L7ax6T1G1Xy0UardkE+PkxF9Z0RmGGIEdDPpKBdLzy78TVqZUrleLCNpRomLntgy02tgSF5FBqIcwmNrYtROIepNfegRrwtiK1A4h2gT1D0bFOjkiIdafGuStCLIZGUw3ywI8PbXrvxzQLiVMjsM1zaPbjxNjBNIsMotug8gaf7cMZ.gO2rtUEHFuFdkPtCnIOB0Gh0dNZapcQErsdPiWC+E1YdZa4vNyG0Im62lX+SHtGEnNB+sj73TreLEcL.jR22zjbxJDKGiPCT.9CnUlX1zoFw1PiRhMhHl79Vj5vyOjSistWNRSDwzPRpcPFlTi8J08fvG5aYWAdNAYFkyrK10KXMGSYtYg+AF+aRzgtFqDRCf6lkQ90ndQzHRfIK1cVsVltQR.ugCK6XTOzmUTJTF+.hgEEYnIPopuxHWXFPHcZznQjyvEchY.SaAtmivLWW2aWZuZHSocoFHzIErJzgGw5zgNohtay8OA6CgJ6jj34XBUBjjK345Ix9rC+iulx4IkxIhVCAoB5UjexFyONTd3bP1jqC2b6NflXoCfh2OhM22xnA1Ub8+ff0Gb7lsQUnFH2TV91me5vCOeDkbJgBcj1TnuO06iC7C0oLqZo1FbVZ7cbzXFW4g.ngbAWuSnQ32A4dH1OXQ3IDl3yFGDmwSrYHNstdDFeHUAzhenzyFjhSbQ58mIEz57yjSvo15Qsfxh1vvNTLiSKsApQazNqXEerCyaOdbUNBeBSEyORl+J6ArCtg+NjfeC78w.DGrnJOxVGWE.UcfyNjUiak5G7.WRcmfFIXoUwUQ0M8SP+908IVPb5.iHoDdkAHhfU3TfUnKd1C6l8ePm8ks2H71dhnclti168hjnMfrhn8e6YO6eVLAZ+hC+pORkYtFnkujAaN4ZxdxJR8un1Sx0u8mr5qJxpYuhEg3WCxgNrDtETSW3VP8bjmggdZZkswdX+KIWCoAIAGuoqjPREZ.lAMoRq41mIUBV52SopQi7KtePoehq9s4Vc9AkjGDeHmGa7lTZfLGqOlhEnYL5Ljw5NspZX8zOLpTZf2XJLsReqzxn7v1BAt2SO80CWnZTNFcBEWrF13Xb6rpKqH5Yi5Nshih5SjgOcOTRFtKQpuDxKNoRILV+.DXCdoFsdDde4on9B6yJaNQEZPtw3dSh07yUDs+M6cZeg1iz2n8.j+XUJiFbZaCA39kGU84OpC4O1SUDt66jiR+U0jlRmUrqlRQmj3PxT5ocP1dppXl.hMdeGhYadp2DrLLo51Ya0eZoBZ0on0ye+z8NmfKztbLwMhNioRrUK9mzXNf.2HZqwqA6tWGJPKXBQaWVvDLa2MAWPMgV5KdkZO4vq9mr92glfkbw+t5vlfa1Q0T7H5E0D3EjpZBn2ylfpyO+qJ1lv8hu9q+3dS3j93u+kABWFke8vx16rhoa6cVwywUpPJ0kUPs+hJeYU+7.DUnGSvbgUxr5294+4zTMAzGRxS2hxEtS72UTMcSTlPYMazAl.udw6yvEuNqhG1VWLV8MZUUUPeIiSGNo9sdpTJ.j63JhXyVkqItaiNs0iwYkvN+fTC61sWC6oO6BrF1IijrBWWD6EcQrSGWHZgqqh85pX6ypXmpUgnEttL1qKi85xXutL1qKi8pbYriETQZgqP0wxUsWWJj87Jwcr3SWu+eYUsl00urpqeYU+H+kU0wcAM1EytfFWYU2lOF6KJRhaXo2d48s+UOH7F7idS5RIdUOs1HjO1xgruWSaMwnG2p0GbA2HRFFQ3AzC6FRrb13OHHtOKhTES9McIHh7avQJ0oJrYuNOWASfQ6+MBWnO27xXJ6PQtK5DgsuK3t66eVwjB1b8ofMsxFzW+nioArHWpkFO06HEszqmXwE1wCzRztAv5TWWr9vbWzcR9L5ztyZeinSyx0GvSCeAesFvhXiL49XagxgV0viojSQDCYEwf0bbfpU0pGod9n25Lprue1dJ7tP7UgfWso5jZG9FmdmDfdkF9gu5e.DZHBdcBqBhIRY71soxoNLAunfuIPMdNX3GMYH.bIV8KWqt3XgIfNtS1c3WzT+ibiwRt2I36IK8O9WO+K+uugvW5EqDeb7BXGG.I0gODyVaJriSjO+ME0UTdX4RWI.7Nap9y9J2Ze6M+th8F5wc9nsUsV7gDJ0ghDiOW1NO0jH3FFMthif+uuow287u7aJ1OejvAeT4BvPqccHsLgbjEJ368+M9l2baVmSo7Xzw3f6AWvWc+GEztJw0J2Cv1XW58cIeWtIburWuIbN87MgaKMefE1wEY64P7v4EzYXKic.yEOApsMiBoNiBhU53W2V7QyHILJJTTBfBtwMtZDwB7DKirEdXPagmD0VsUy+SQVz3JXPx02xSC.FTalgkqa5gergtes77SLlbAdxeFxUOH4G+EMJS2tOfc7NsHdmq3FeJWAnruEtbfCmKt0aw6VlvEmZhHdrhA8UDsFjzxDbiC3wapDFVIhpne3FDaRzE3IVquM1203vCwh6YHMA5999zTSsnbK0swlXjGmu4OWkcKHBNH6ACK5+6xYp5qepBicyQCdj6c26DXlePem.6cuOHd3Uas3sUf3xExEnJy81QWdYbUBuLVCKjlKY+vykj5zOd.EPtsC+LX1f1NWdoiauTNKHkw9ZZhOpDSrvfNw4GzItvfNw6NnSbwAche5fNw6c9SjlQO7rgn9FPYNkWi8MKHGseS5Kh4+qFm6nN
                      
                      Oli UllmannO 2 Replies Last reply Reply Quote 2
                      • Oli UllmannO
                        Oli Ullmann @Christoph Hart
                        last edited by

                        @Christoph-Hart
                        Hey Christoph,
                        Thanks a lot! I'll take a look at that! Thanks for your support! :-)

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

                          @Christoph-Hart
                          Ok, ScriptNode is really fantastic! When you integrate custom nodes such as precompiled RNBO effects, the possibilities are truly endless! Thank you so much for bringing this to my attention! :-)

                          One question I can't find the answer to:
                          How can I switch nodes on and off from the UI?

                          As far as I understand, I have to create a parameter with a range of 0-1, which I then connect to the node's power button. However, this doesn't work for me. Is there a trick to it? Simply connecting a cable between the parameter and the node's power button doesn't work.

                          Many thanks,
                          Oli

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

                          18

                          Online

                          2.0k

                          Users

                          12.7k

                          Topics

                          110.4k

                          Posts