Forum
    • Categories
    • Register
    • Login

    Modulation is deleted when loading a DAW project!

    Scheduled Pinned Locked Moved Solved Bug Reports
    5 Posts 1 Posters 138 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 Oli Ullmann

      If you add modulation to a slider in the DAW, it will be deleted when you reload the DAW project. This happens even if you create a preset in the plug-in and then reload the DAW project. The modulation is deleted every time you reload the DAW project.

      Here is a snippet that contains a slider/parameter with MatrixModulator and a slider that is modulated directly via the matrixTargetId.

      The problem occurs with both variants!

      I tested it in Cubase and Logic (MAC). Maybe you can test it in other DAWs? Just compile the project and then load it into the DAW. Establish the modulation connection (via right-click), save the DAW project, and reload it. After that, the modulation always disappeared for me.

      @Christoph-Hart do you have any ideas for a workaround until it is fixed in the HISE source code? Currently, it is virtually impossible to use HISE's great new modulation options in a commercial plug-in because presets are not loaded correctly after reopening a DAW project.

      Or am I making a mistake here?

      All the best,
      Oli

      Snippet:

      HiseSnippet 2270.3oc6Z0saaibElz1LIVNMYS2rc21qHL5EYW3MPjRxxtEEQ1RVNBMNVwxwoaWTrcL4HIhPNC6vg9mtXAJ5U8An21mklGgBr.858QnWz6aOCGJwgRz1JdiS7Fr5BaLmy7y2b9+LRcYTGbTDkooWZ+SCwZ521n2oD9vlCQdDsNszz+.i.parOh6QI6ii3ZadZHJJB6poqO+1hYou3BZIe9OOZSjOh3fyHooc.0yA+Du.OdF0tM9sd99sQt388BTlc0FcbnjlTeZLfn4MJqEhbdIZ.9oHwzlyP6wnngZ5elQ4pNn0r6WqRk0WudM2CwN8svGV2AUtFpeMDPsJpZMqpZ52XKWONk0ii33HM8E1j5dZugziIxC3.uHuC8whAVZ8fSVRtM02UbEET0ZNzy2s6HQUjFrocyDbyKEb22XGOWuwzUEfBFlYqPU.pOWd3MeN3YoBuxJvq.Hoq.oEjP5dF8bXdg7LNB7rjQGBGy5i.8jJTjyUS++ZzjBSfveX.5k31LXv3E7fUKWdES3Oe5utTIPUEwMCBL+MlaQF3QvOzgggqwNisW1AwYdm7fk2dmlKKVQ+XhiftIk7TJGuK4AeZoutzhk9lRlSxpe+B4IfFi56iYExVXNwNuE9.RbvgX1JlGg7iwimHHxxqGLNa8fpYhiTRoLQJoCwiuaHlbVFOZohWPmMWJpfoxSzX2IUi0y2yEyz7.EysLZFyo86qkf3w9J+susg1Ls5VXdLAOwp09hFZOuSKDGIrbRAD.xPLi6It+5svGA9sR6nEgMI5kbZHHlZRCBoDA70uMO0vWdps8ofRmLXeOPNIN66ZnRxR6D0i+T0AG64xGlQ3zFCwdCFpDvvqQJFk.5CfcFexFOtUu81lgBGpc3fQAMtsgU0xqau1pVUqp4wwAiXrjQ0Z1quV00pXoP2VrBaqUqZuZ40VshFGeBWM9ShHR+ua70kLMWdrVri6x+JykEXvLADf8+QXeP5Ys7JhI1g3hOAlxmakLDBl3SO9ET1Kif3YXfQejeDNgWyX1Q3tTO3pQAqZQzSfuc4DlOOB7Qvs.iZRDXF2hgF.L4rXbouQXGMVUrzEa9bVR+pMBTigCCQmnZkElco0z+PCoKsYpONkYAgnYPzYH.gXB2z3fDCsfjosOhM.yEzWJEFv5xoU.0Uc65quV85V1Zt39nXe9AEXnOS2zTS8L3axl7l555CR6HOQTgLNe2ixIC9hWoJC.wUNYvGY7BzQ39TVf41XBnxlVJrXJTrJPNH4TnbnV8ZqaWwtHM6L5jYqplAGowC9iQS3j8p+5jNYfvJmS1cM5xvQX9lL5wQfLV0GqpU0JqW2tRM6ItEUsWq9pqaW2dBmrw9Ry8umS5LIhY1CDjaFy4TRpY8Ji3r0IgnDa9nMhfMINfjyqQLkjTzrhWtHERzT6IDgWN8brxHCIcf6Kvyp73EsgqawGwdXBnvKlWKrOXJTLudXDyY3lHlJi1ninLPfIJ+YLJx.gJ6bKK12uKhObD+nbBoz6ZGPN5h2jx.oUN9OMNPJZEKSFoRN9EBKk8DYvAFeIP2zr7CqLwmUdMoCj+CImwS7h3a.EJL9dldBqTz+FuJIx1idbWjqKXsOqqar3dSZLwUbS+RIicnrTMzjbxrJmjyH47TbEgimt9KnxuQgIUKGTTzbVMR4pASTnEnt3mpVT8arZDmUHdOitdbmgEiw4J.ihRYtBvXZk0+Dis52G6vy.3BFs+cWMkQqd72Rd7+Bis8oGh7yDTPTR.IXY4zFFP0smSSQ+qYsonvYtonIKVcgYqX0KnmlEt10SyrZu9goZnrpRhdK5UoOmBLumDlKkUfZBB+YFEUrXNPtCkPCGRIdNpFJ6gg5GFL.r0T6x1Kj5iXm4UaCNGZaNkxe4U+CViGCpd0ssE1AkqB7dwQ7blse2i1CRhghxLDeEqAHewSePOAC2moImTYq5FlbnSQM8Xlh9qg9w500ktjwAfFvQH1DZmOZ7P05ZuPKHE0.Tn99nDzjIi6.pYFGOob26Pred43qUzSqq9H7y+9cD98nwhxkkMx.wugxf5AgVcvvoSHXeQ2+5yI5SWNtrXrPBzCSbSF7+fOoLsDi0SYZMholbyU5ulfcjsbbyrdAtiwd3HJQjaPzNfznPBeAbRZhTd4TTHFFVOrr1Fwmjx9FFe9XBJSpLPKy.LQRnH1uat25aaFMNLQpeeIAbjGTvuYBcq2Du22rmZaKhvMp8Np6XSDi4AMVIuviO7+4X65o37bhGHXoIPYi.nLMtJnS4l1snxAkxnWHTcpq5JDnuGFfpaxVFkKOx7WEIiu4OXSF+Nr91buA5hivXOufPe7njtog+ZIepgwTujYhu3zuvm62XxToZ+xFOAJfDwlLg5arDAE8bvEpt9DCIbMEdll+vssj2uSZUjk8O0nK0+TogZaOedZ+HKZHGbdAt0zZyv+oXLw4T02Y6YoCZTox29n7lleRimEi7mP5lV.z2WI+EXIuvLZd.0XO5RYdsI7y8Revzw3M8qfI60PUas96ajmlPU7zfIeu0odO0dATJeXxSFplMtSiIykc4qCM4L2CQFfElBcHgwb4Hciy+4lyJZQe9HNNrm2eNWN58Sdfd4jRdU+LKYsci4m04nok6IcExuy+bfJ5grpidp3Mh98XFUL2YOXkvk65c.0etQpGroPHd8Fq2w3YWuA3sSeYeyIcput.OYYsuCg2GO5sQDe+IIMZj18cQeeJuUePscc3.D1mgHQgzHrk5N2CG3sOkfixQchUXW3Jry25u7aDR4QWjjxMKgnnMHJTl2sZLhnsJwtHRNDAiysS63k6qBR1XkrIlcib.ASR1HEcd2X+HbxS+ao9NLYjsUI+XDyEzg4RTc0zJzM9wVg9wZpempE2I6K795oV7iM.WZayDUo46Fc4aiWU68kyH.4vneki7WuiHD2sRn.xVRxuysEglFfwlVS9q1AphEBu8UNN42poVn8kcgUtrKr5kcg0trKb0K6BqeYW3ZW7BEYe1.Z7JP5+AYg6tk7mPjtLAbhqn1+GDqJ+GG
      
      1 Reply Last reply Reply Quote 0
      • Oli UllmannO
        Oli Ullmann
        last edited by

        @Christoph-Hart
        I tried it out a little today, and it's not that the modulation is deleted when a DAW project is loaded, but rather that the modulation is reset to the state with which the plug-in was exported.

        So:
        If the plug-in was compiled with modulation of a parameter, it will also be loaded with modulation when the DAW project is reloaded. It doesn't matter if the actual user preset was saved without modulation. And vice versa.

        My ideas for a workaround:

        1. I create a panel in whose value I store the modulation matrix data (ScriptModulationMatrix.toBase64()). The panel is saveInPreset.

        2. Saving takes place in ScriptModulationMatrix.setConnectionCallback.

        3. I create a load callback (ScriptPanel.setLoadingCallback) for the panel. When loading is complete, I load the data stored in the panel's value into the modulation matrix (ScriptModulationMatrix.fromBase64(String b64)). I hope this does not create an infinite loop. I could also try UserPresetHandler.setPostCallback, but I don't know if this will also be executed when the plug-in is loaded with the DAW project without a user preset being loaded.

        I'll let you know if the workaround works.

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

          @Christoph-Hart
          Okay, this variant works at least with the test project. However, I had to use a timer instead of the panel loading callback.

          Please note: You must set the default values using ScriptModulationMatrix.setMatrixModulationProperties(var newProperties), otherwise the modulation will be loaded as undefined for the mode if no user preset is loaded. I did that in the snippet as well.

          Here is the snippet for anyone who wants to use the new modulation system in their plug-in:

          HiseSnippet 2921.3oc6Zz0baabDTRHwT1wwtIoIsOggSefNQgCAHonTxzX9knLiEknDosiblNom.NRhHf6X..kkRFOSl9T+AzW6uj9P8OgNSlIOmeB8eP6d2ABbfjxlVwenjI3Aad6d6c6t2t29woNdTSruO0SI0p8NaDVI00T6dFIXX8gHahRqFJotgpK0ZrCJvlR5g8CTpc1HjuO1RIUpk2lMqToWQg+8eucMjChXhiAonbepsIdGaW6fXncpbWaGmlHKbOaWoYWrRKSJoN0gNF3nkUyqLBYdLZ.dWDaZKopbGj+PkTenZ9hlnML5WpPgM2rbIqivl80wGU1DkuDpeID.sHpXI8hJodisrrCndcCPAXekTqTiZcV2gzGQDav8s8sOxAyFnqzE1YA3lTGKlHxfpTensiUmIpJeEXQ6Dq3VVn3dW011V1QvkUfLDZwTHq.SsTR1a4DrmtL6kWh8lCKkRhkVQvR2Tsqom8nfXLL94ppsHAXu9H3bRlUDyUYoeTUsNElAIHmK5XbSOXPDEYWOe90zf+4Ve5pqBmU9AZttZ+YssHCrI3bldXPNZGYvzFE3YeZ1La2tdFfBW2b93.X0IXSF55HGmifS3rfI1rPi2BKbezXGlbLB6EXi8gc76VMcltXGfDDnf5BVLfLl4SzB7FiWCv0PPSKhcv8QNiY3VMMPT5L0GGP62GXxLeBab5LvOw.kYpYOh5f7xrFGJSlI91AmAnzykODn+tTOWji82hsB2L.9iYHgcLXLAOm0sqIxAeAV0U4KblCPjA3XYGlvzhg.PKxnwA7IGBIcFWaB7ai7S1HWzo7wvWzdSNAVW991G43iEP8Cvi5BrC.ElYjHt23fo1ivsHb4B2fPAatq84sztgJqld3uYLlXdFWgk4d9Xv8oCETYfoQU+Gh8nSVtPczpOFLTDlVB6sX6uXsV1YrghMuFQb.RZfBPfc0Da+ALCU2QTBLHal3ojQxxmZsCEYwtCyaZe.Nv8N5qA6yrLKeooxXT9OjM+ivJY86gGLYOvVvFje50I.4IVork3NjqZSb.VPq+XB2SRat9UY84NKqoAjCR4ZZOB4W0B1hasJbh5PAqUMWthLTk7crCGtrCmOY.sc5Xz4bizbvQP.sFxGudQlHmNVmwjXtSX1XBgY734ywynJxxYL69YiTF2R3JGLz1GzBzQBk.aSS6AdgdjOkYWjlSjsObU.rGVYkXnASXnaMQ.tErloAQnuG0MTHd5y+SYqu7wiNShhDDJYWZ.dOhf4ALZSipe+4hiY.5QcbXBzbPGJpmOgYIicOB6sl1ILFNZhPTgjgZTO+PMxQBME9CRSjRXWpt2HL47hOpD5DAgkVNjqfeEvCJc8vfRccrsvdJ1PrmqnJtKSgywQoC72+gJJKD0hKdmhZkP1Pl52ZR.QDA6vI9ZpwGxSVf+k5m2cucSXzqanmiza86tQ8ZGu0t4xM7nBa8vbGNpUmN1ec+AaWs3GswNMOpQuG9vFCys2Ya2Uu2v6rQc8lkKTtDZ8cN09vb09h8o8a2nSmxGYe7weM9L68u+le9dOHeuusgd+sc+nC12hR9lS6Mp01U+bfNO792kdmSJ16vuozgiZFb1t9z520S2oS0d4fupzcyYTtemiMqcX610yk4wJJ2qEWTf.5gmAwW3AvZfOAxFSjcPZPu4eL37.lBQ2zAZjfvzYDpplNT3lTxfd1foASi81pxfzUNMVieXkyjG7Haqfgw.NqxPr8fgRoAZWIjGELzMfUFeZ06zn6Aa6gFMT4nASRE7Zp5EyuowFqqWrnhc.1cBhqpVrjwlaTbiB5RvMXTXnudQi0yuw5ETBvmFHmUIWEk5en9cqpokIxvskEO9CvCZbl.tP+DrCn8zgPQvDaQrvrnaerNeHjhnC8QOf5crOjkJNNFGfq9XuSvcn1fnQAGYVNw73tbjPHs8H3FfeLjH.kzvCMXRP+GyrYiNJt5y1i47z9Eq3JmYNLDcpri0nXgVI06nJhapEF3j5oCId6A4bCY8wlvapxu7SQb6cOdXCF7qpFkDRhSE33prQ4M2nbYcCkv.u2eN91KjjF5cGy9ZdSKoVVN3IoHDi4mtcBcvgOQVG.pqD5f2S8AnSv8gzvz1FSfirY0BoCYE84nGhx8aV8Poxk1znfw7NYWPmLC4iYvQJZve0eJmrm72l1ICTVIbxda0NdXHbbMO5i7AcrrOVQ8hE1rrQgRFSIEEM1n75aZT1XJmrHeok9wkDNSrvDcAEYswAATRT53gX15zQHtMueUeXQF6RR30vlBuvKu4SNKpo+LqIDTSL8DnhACwYA4kkUZ9Hhfzcl+Vb.l.G3yGWCnZifyAWWLxybXMn3AIDMQmP8.EFqn1HtHlIjQmfrwNNcPACmf2OgRJTVaA5QKbMpGnsRfe2wtBUKiLwMUhwOfYob.KsX.wWBv0f7uKL02ZOmvAv+E9drisePUHy2H4LbGVad+WDUBN6.5i5frr.q8EktH0cM5XhESR+RAh1TuvSnowDaUNMlI54YvN00wu4BkDw43pBeSEO7ylId3mUwGXxVDgGZXxUyVV+MTitmVtKCrdwDW4ShR6iJ5TtWMuvZ8vhxh2Tsicf4v4yiKMGdDxh4kAOF1vl2Rcq98gJihYvUTa9Eub5Ni71eEw1+GU21gdDxIVQAWSCbBVzkFU0saW+ozqs+yh1qsQKbu1lt.gUVrBDdFsJakKcsJaQsWemvSn3zh7eE5UkZII17lB17pwYHy4veu57xVMAS1lRniFRI1lxFJGfgDXFL.r0jadqn8WmqnUMH.JFODx2+j+oWk6.G8xKaCrIJQI.cG6Gjvr8mt8APTTn753TV7pv5S1razNXPdlELO0Z4Ejuoy.MbalA9yw4i9yqK8pp2GNALYpM1oy6EMTNw5moEjzw.ToPODmah0wS5o1T5c6ivNI0iOW2dp+x+F9k+08M7GPGyxWWTIEb+MjGlnozvtSfLEXcbI0RrlRHFmmMloA5hIV7A+O3KDoNabpPj5SPpzNp6YgE3G1YOH2j3hQtt5AXeJgEafUOhvnPv9L1gWEqP3jNPTU0ykWo53SCQ+FpebD.oIkGfEa.x0DRp82NwSHssGc7HtV+cE.v91PEGZb35uHdFoEOz1VDlaTy1xqXcjmmMTYmPfi17+cjc8LXtGwFTrTNqT0ExSLPloCwFVtpzFEhn6HH8XKYJXbeWLvpV7kzOQbjkeYDL9M+Eav3Wi42l3o0ROgG6Z6NxAOIna30egO5TDzKXj3mc3W36cqLcnTk+TkcfDHQdSGP8EVff48Jiy835CTErqFyyT6Wtkk7q6fVyyx92o1g5blvPsosSPX8HoUECdZWbqnD83cxM5a+vAUJT3GtcRSyOnx9iQNIztee0vDf94p4eFVxqrflGPN1SDJsKMW+bS0DuzYzK6G2NV4Rq+4dyScHKdp6zM7clF510kRCFx6Yobz3VUlNV1EOOT9dxe9YloP7CdC4l7z62cbRKoVdxCPKqL5weg.wj3OqPrkrhzidO89nnjnmxL82Seel2yYyl6heYEyk6x8Ep+A0POXMlR7xMudc08ubyfWK7oEzl1o9xB6IRq80H689S5MB6Ab3EZDV887dPmWoMTaOy.fE54gH9in9Xc4UtK10tGkf8S.cJJLlKEFIK8W7jTy.JwrXphlfpPZdWoxDfFx.6fHIVLXbhUpschFbKJrRTDyd9lfhgGMR5LuyXGeL+sGzk6CSLXCYv2A4YAmgIBT8xoTn232JE52xo905oX63Wb+x4o36qBtzFZ7iRsWOmkuJ5p1uV1CWjoG8qLE+MOwth6JbHftkv+ymNMTz.LVSe1+Robgq29JSyjK0LDZbQIrvEkvhWTBKcQIb8KJgkunDtwylPVzmpPgWtB+OHJbmsD+MLkRD.l6Jp7+Ioeo2O
          
          1 Reply Last reply Reply Quote 2
          • Oli UllmannO
            Oli Ullmann
            last edited by

            Okay, it's not perfect yet! It works when a user preset is loaded. If you only edit parameters in the plug-in without saving/loading a user preset, the DAW project will be loaded with the modulation set the next time you open it, but the default values set with ScriptModulationMatrix.setMatrixModulationProperties will be used.

            The actual modulation information, such as mode and intensity, is stored in the user preset (why can't you get it with ScriptModulationMatrix.toBase64()?). And if no preset is loaded, the default values are used.

            I think the solution is to store this data in a panel or something similar.
            I'll take a closer look at the problem in the next few days.

            1 Reply Last reply Reply Quote 0
            • Oli UllmannO Oli Ullmann marked this topic as a question
            • Oli UllmannO
              Oli Ullmann
              last edited by

              Okay, this is not a bug, and the solution is super simple! @Christoph-Hart has done all the hard work for us! :-) You just need to add the GlobalModulatorContainer to the preset system!

              Engine.addModuleStateToUserPreset("GlobalModulatorContainer");
              
              1 Reply Last reply Reply Quote 2
              • Oli UllmannO Oli Ullmann has marked this topic as solved
              • First post
                Last post

              17

              Online

              2.1k

              Users

              13.2k

              Topics

              114.2k

              Posts