Restoring properties with DAW session
-
Actually I gave in to your constant nagging (JK, I needed it myself now too) so you can use
UserPresetHandler.isInternalPresetLoad()
which should returntrue
when the DAW restores a preset (and only for the duration of the pre / post load callbacks). -
@Christoph-Hart Excellent!
-
@Christoph-Hart Finally got around to testing this.
It works in Reaper on Windows, but not on Linux. Haven't tested on MacOS, Any ideas?
This is my test snippet:
HiseSnippet 1163.3ocsV8taaaCDmxIbq1sacEn66Z4SN.YA1NoIscnHN1wdynIoFQooCnXnfQh1lHRjBjTI0sHCEC8AauJ6IX6MX6nnrkbhSWlwp9fMt++6Nd7N1WJ7oJkPhbJe73XJx4dXuwb8n1iHLNp2dHmGhYbMUxIg8kTEUeLUoQsFGSTJZ.xwYoeznoS4kQoe+0NsHgDtOMmEBchf4S2mEwz4b6274rvvtj.5wrnBZuYyd9BdaQnHAP0R3ZnXh+YjgzCIF0JgQNeQm.lVH8zDMUgbVtkHXr2HwEbq9mvTrSCoFh5HOvQV1cEgAFDa3hZOhEFzeR1qPfW5mWKVxVKdH9.V.aJ+7Zx2jJvM2hh0CmRyBuklAd0KBuZEf2bfjSAHsrERO.64KYw5bIF7bWbOyYz.BT1KBEqtnReaIbaAnAWudD4LZWIPL0hpaUq1ZtvOq9CUp.kdk1MIdj6yb6vGx3z08kTHQdohJsM.+DgGDRkUyU+bhz84bwo0AilDmgTcaQTrfCDUWIU5JFKjzgtmATmPBSn.MDp0AmBttMIL7T3nt5fDtulI3UiSi2dDMY0JuuRYW1.2pemw.lp2L8j6KHAUWcUPkxS8MfkznZPRJCCfub0BgTnz2TL6xBo29XZiiZRblBAa.m3ZWA+Pgl9Bd0TOW4xJtWUzfAyUlolJEgoE84H1b+Q9oLrJOI5TpbM3fxfpIJBMUy1ohu4N0hWj7sGwETTv6wY5WDS42z0KTVegoqNCUfp5zd5uNqm1KjEPkHFz59k3zZJJEvYyF9vyp7m6fdYOS+vD2.dDhRLUpYlDvYO54vjF6Ukx38npyzhXXnwzVQHI+WC5amNL52CaNNexzu1Toowdr2MAQM+i28wcPE78c0YyMr9tanfnY7gGCcSoQ393hrJFI3abQhKXA5Q4332ZNhxFNJe74GNuYV9aS16iscksjhKfapnSGNYB58vaVeyMdx1M13QMPLMMpffFOd6sdRisaTuffF1C4zpboOVB+9JttqXNq8HmSakn0B9JO0UKSnqMQRm2FS3JnkSsqBbRRjQiAjPUtJoCeky2bSqu5Z9D5LspOinb1vkEHeAY0qM0ncCBleHNhxgsGyW1dzPp9Fj0kbtPB0FyJohxxPVOHqCnsDRH2lIkOLIxVHLfeiTVV5WYNWOBZADffWC7ccqs9FW4as+i7A1+RZL1moz6BiqmVaxhvZy6uoVYQ1QhK5SBBfdyaqcdThzeTKhrkHgGXxzWaEbfPlUOupj7dnqJYRk9ZRqbI7VgqsGD1.KBRBI5YWKadKRl.ncblcglo2vwkdbw2p7+1t5aKDe.tOS6OZ9XrzbvHLo6yAFydgyWg6LX.0WmCvkwc+4OOOmAcjHwL56.hVxfIeX3RhGLvwmBQmyoglMPNkL6Jrz0LzlJfGkGjR72vWlv5FZmLg0mHDEQ7kh23a2vXdC0cR4.Xhm97wx3CLztSWsfw0VuFJBdN2a78Mo+2CquluMMV.a1XArYyEvlGs.1r0BXy1KfMO9SZi4kz6lnEQ1qC.i9cRW933zgSfNqztPz+.CS.lG
-
@d-healey no idea and precisely the reason why I didn't want to implement this in the first place :)
-
@Christoph-Hart :D I think I'll stick with the previous hack then
-
Turns out the hack doesn't work properly, but I found a solution to the problem I was having with
isInternalPresetLoad
.Here is the working version:
HiseSnippet 1183.3ocsVslaabCDlqr21JkzlFfb.15eDHC3XnGN1Isnvx5UpPrcDrbbKPPQ.8tTRDdWxEjbsiRfKJJxAoGk96dKxMn2f1gK2WxVN0UnY+gD37MO93vgyvgBtKQJ4BjU4imERPV20dzLlZZmoXJCMnKx5A1TlhHXX+gBhjnNlHUn1yBwRIwCYYsxyzZZUdUT72esaarOl4RxEgPmvotj8oATUtzgsdN02uO1ibLMnf1a0ZfKm0g6yi.VshcMTH18L7DxgXsZkrQVeVOOphKFovJhDYsZat2rQS4WvL5eBURO0mnWTGMBbjQbetumlwZonNSo9dCS28RD3kg44hUL4hGXe.0ilIOOm70w.N4VTLeXUZd5sxbzqdQ5Uq.8V.krJPoUMT591ibEzPUNhlO2wdf9LZLFR6EohQWToGUxtCGzfo1L.eFou.VjYQ0sqUaCG3m0+tJUDjINmw3mdB1Oh.qgiBoxIJbpy26ziMgxHa5JHvF6kRhvTP7CXlmOQTc8L0OGKbdN3j5fQowcBQ0gGDxYvhpqEitl1Bv0aBNAbUGru+ovQc0wQLWEkypFF6+tXEd8JuqRYG5Xmpei1.pbvb0j6ywdUWecPkxYjGhcbTzQNVflfWVLjbo5lhYepO4VESmG9PGprKYLjY7plEbCWLwWlF+bzXhjFRGN6Pth7BV03HV4xJNWEZ73EhoysBtebxeAv56UhOlgUYQAmRDa.GXZVkpHTrMeEr8MWAW7Blq4ntfhb1.FU8hPB6lt1gRpOzU6IrBTUEWq+UI05i7odDAhBkzetcbNEES3jdF+9y9vetK5kCz0IotA7HDkPhPQ0a.qtjygNPlqPks6Rjmo3gPyjrRRXS9uFz2j0j5O7aMKui0uzRpHginuMkQs9vae+tnB99Npj9IFe22miUT1jigpr3HbO6hhJFI3aVwEWP8TSy4wu0ZJgNYZda0e87VI6eyl8d1lp01B9EvMVzoSR6rdW6spuUymtSilOtAhpHAE.Z7jc19oM1oQ8B.MLGxwY4Ruuj86p33rl9rdD9bR6HkhyV6acThHxFoH8dSHlIgRN4dRvIQAZMFi8k4pD2TVrXy0k9xq4Snxzn9bP4hgKKv9EvpWKyn877VbHNhvfoJKFqKwmntAr93y4BH2nGUUDKgYCfcsGoMW.6s41xGFEXRDZx2LVjY8OpOWOBJA3.vq.4NN01r4U913+nbP7OGGi8oR0dPa6rbSRD1XQ+kYkgYGwuXH1yCpMus1MhfEtSaiEs4QLO8N8UFfC3hj74UQxqgtJRZl9ZnUtDdCw0lOBSl4dQ9X07iq0uQIA.JGmaFotqNbbolU7ML+uMC+1Rw6aOjpbmtXNVZAbD5z8ofiIu74Ks6MdLwUkSvUs6+SeZdlC5Hdjt02AXkfBc9rgKIifFNtDH5LFwWOAxpjdVgYcM8ZcFXDg4Eu3uguDv550VIf0SAQAXWA+0tlIL52V8EwR.NwheVYY6CzqcxFsXaWayZn.3Ydu10Uu8eDL9Zw1zXIro4RXyVKgMOdIrY6kvlcVBadxG0F8Kr2KRwCLWG.AC6EO7wxpGCCUVwUgn+AHQeh7A
-
I still seem to be having issues with this. Am I going about this the wrong way?
const uph = Engine.createUserPresetHandler(); const var Knob1 = Content.getComponent("Knob1"); reg knobValue; uph.setPreCallback(function(presetData) { if (!uph.isInternalPresetLoad()) knobValue = Knob1.getValue(); }); uph.setPostCallback(function(presetFile) { if (!uph.isInternalPresetLoad()) Knob1.setValue(knobValue); });
-
@d-healey Have you check that the functions for presetData and presetFile are doing their thing first?
I just looked at my project. I moved the function outside of the Pre/Post callback
userPresetHandler.setPostCallback(function() { setMetaData(); }); inline function setMetaData() { //do stuff here }
I wonder if I hit the same issue in the past?
-
@Dan-Korneff The functions are being triggered correctly. Inline functions are inlined when the code is compiled anyway so I don't see that making a difference here.
-
@d-healey said in Restoring properties with DAW session:
Inline functions are inlined
Haha, I tricked you with my deceiving naming! Inline functions are not inlined, they just use a better localized scope that doesn't allocate, but it's a function call never the less.
-
@Christoph-Hart I've been living a lie!
But why my code no work?
-
This post is deleted! -
Ahaaaaa it's one of those problems where you don't change anything and magically it starts working!!! -
Mystery solved. I had a default preset set in project preferences. This completely breaks the save in DAW behaviour. Removing the default preset solves the issue.
It would be nice to have both though. On first load we get the default preset, then after that it reverts to the regular behaviour.
-