SliderPack for variables storage: strange behaviour
-
@d-healey do you mean a simplified version of my script?
-
@Giuseppe Not really, I mean a snippet that contains only the necessary components/script to demonstrate the problem.
-
@d-healey hopefully this one is a bit clearer:
HiseSnippet 5744.3oc6c01caajcFz1LYEadwIM6oae4C33ydRkVqXwKA3awI6RIJIatQuUQYs1MmrLPjiDQCH.W.PYoj3sd6o+I525G2Ot8ef+IjeB8mP9GzNC.H4.QRQRMyfPMsL4HS.Lycdl68NOyfKuCvAtNMQddNtJoxbzkcQJodmz0uz1uc01Fl1J01TI06ktqQKuFcLsM6XXorwkcM77PsTRk5tOgTlTKcOkfO+3uYCCKC6lngmRQ4XGylncL6X5O7rGT4KLsr11nE5HyNTkVuRslN1Ucrb5gwycSmUoqQyuw3LzdFjhcmzJO0vqsRpeU5b4NsYorYKookOqggVKCCc.oUFcZgSalOa4rsNIeV7+UPI0asUKSeG259F9HOkT2aCmVWVusyKsCafiM8LOwBQN.Tpia4vSusiUKRWjbVkpsMsZcPeEkmBVJGLTsc2P01GkdWyVlCN+P028Ctf5vZPq.Scm3v6twfGPCurTvaLPJEEjtWHj9fz0a5Z10e3UH34uJcMaej6oFX6DMTBKqxc92amtpCtD19Opiw2f11EevfZrLjMa1UU0KlckGm4bCWUyGmAax77UIG3g6InF3uYZfAsm5mq1WRmg7q5zoqiM9fkevUJ2Cvx5Jm5QdHb4NOr2+fUAbIHeVasMbcdomo8Ypazy2G2vYx3hNSE6f1vr0EON7HOKG+nCi9r1ZGr9dasSc0OQcWyKPtqpRT6pGf8qU+X0setJtyiPDoMryDTiFAEehcDpx7fHHhaqcq87sND+uGhcdUqirPM8GB2gMvgqW8Kpiqtgqqwk3l3KGea3hkRCOjUitvCVY0LpS9yzpeNFquFi0Wmw5mmw5Wfw5Wjw5Whw5Wlw5CYYU.r5ABr5BBr5CBr5DBr5EBX2vuJfqvz1xzFodZO6l9lN1pN1CJEQHtNVK2ruDVESYX0CsRluKyRled1GmYoWhmB.sr4mEiF4QVH6y7auRlkvkaoXW5KM+JBq5wDwrLg9dokLe3Cw+yqxrzflYXIHTtKEwqhImh2Jl1sPWr+oCgGovigButkYKj6534OvkeY7DGQBLn3QrzXge0ZdV+ZF.k08WN2CopXlkNZqmeTip8bcwsbi5Fc5ZgBmvvGcg+CVU8AXhc0G7vkipzCgUH0itV0wMNcUdP.WMAR35sqge6G45zyt0x8A4mT3WEWXXCjmCtY65ZhMu8KF4JN1+yHWmFFVVMHlykoPti8Sw8Jxz6M194MphMwVdwpa8msQ3TJD0MtH08wyIek4BCLcAliFqGXWiZfu5KGErws3qs1enGBqqUa4btqgoZGjOdZcKGUSa0d1p3YlvSJhcDMr9T0fRZDdtuEeNDw+Coh6yNpdHUxeIJq81eO0yMQ3K2BcJdAh9lmiWpFd.fpqIpSW7RaVU047ywJjfZYf+qEJTd1XO9ttNdny5gGCXZ6nhUYFjugdzU8wGnWpWaumryV80LgJf397WaQiFCbUs4fABuBOtLnku9AWeWlwNzJZPaUb+3DhkezwyjFKnsdEd4Aq2pk5oWndRzJCFtvfgdAjpiMkYgItBjwTVxJQtNgkaNDVtoILs4PXZSSX5ygvzmlvxOGBK+zDVg4PXEllvJNGBq3zDVo4PXkllvJOGBq7TDFjc1EFYkIWuvliQ.vzFA.ywH.XZi.f4XD.LsQ.vbLB.l1H.XNFA.SaD.LGi.ffQ.TRa8cBmQq9juKmwxiMw0YMGzWLKCMNHCcNHi7bPFE3fLJxAYThCxnL6x3Zugn4fsgYYvA+TfC9o.G7SAN3m1+VjF8FjF+RqG8lhFv3DewgCN8nKDbvs574plwWSH4V0hG0lAqIaBjYAKDOnLMpMk6VbxZEZgvIovGwbLOjBeDRs.+jwXbxMCFmb7v3jiKFmb7w3jiKFmbM3iPlnwQaFLNZ7v3nwEiiFeLNZbw3n0fOBYhFG8Yv3nyCiiNWLN57w3nyEiidC9HjIZbxOCFm77v3jmKFm77w3jmKFm7M3iPlnwovLXbJvCiSAtXbJvGiSAtXbJzfOBYhFmhyfwoHOLNE4hwoHeLNE4hwoXC9HjIZbJMCFmR7v3ThKFmR7w3ThKFmRM3iPlnwo7LXbJyCiSYtXbJyGiSYtXbJ2fOBYRFmfXrNEiCjkCFGhP3jT3iXNlGRgOBYhFmYHBA.OhP.vkHD.7IBA.WhP.viHD.WSDBfYHBA.OhP.vkHD.7IBA.WhP.viHD.WSDBfYHBA.OhP.vkHD.7IBA.WhP.viHD.WSDBfYHBA.OhP.vkHD.7IBA.WhP.viHD.WSDBfYHBA.OhP.vkHD.7IBA.WhP.viHD.WSDBfYHBA.OhP.vkHD.7IBA.WhP.viHD.ChPvUSC2vzChXdF966r5veMggeUa3W0G907C+Zgges3vuVZ3WKu5vUuO7qCaMXXqACaMXXqACaMnvW8X0e59LEqwX986pY6E9q7QR.uojkiToWHwdFlFaqP9A5fneNuveyuq6G8KnXW2O6WX9eE8i8QRExYJG7fv7P7ULjEiTUbbIy2XRwxGNHs9v9uD86TSmvImjhSMWMGf0UUoqGWygRR51MR11EN16poZW3YmXd1MV2JbSPzRCGEyV00Xq55rU87rU8BrU8hrU8RrU8xLUcHKaUmMuNfMuNfMuNfMuNfMuNX9855mcrjsQy1OWspgO5LGWSjGlcESCqtbWCaj0JiMS0nnqmgbUipzOHZuLEH6miq63mB3LBU2EwJ7Kt9BeYrB+6t9B+RyV9siUgmd8UnMx7r19jZf0UOaupGUa+89T0pVlXVXmd9dX5bU+1Hx1aJT446n1zxwCoZ5mIC0VWhXh10omGZfAp+L1KiNmLyClENX9X0kCOwit3yhzUe+2qFclec3YdXTWcvEt7yhzTCOSXQeQXQe5Jqn9webjbaR.OpU3b7pQyxeMIT+rmv7xeFyuz1OmjP5g8vo0wFcwSyXJ1GtfpaTR1SuHqf++Uj0Pk4UwyUTpdwjuaosed00Opw1lVXqg20daAWW827RaiNlMYP.lj0QQb.XPFHKiKuw09P73F2St4s9Al9MauqSqnsjznKXOrX2jEp+4eNb0sjwTGj9SpO40K.xlN0Bc5ECFKc0aG3Ubd0wzMHdj.03hwu8qtxh8op8JjYTisPaZgQsRaZFjIMycLGhUd7RiLkc3U7Tq26j.B9OEOcy+nWvLQFtHC0W1F4NbhIbu2ibdL+XS7j8sTuRZiO3FalgTGePYiROPhvgYHnAp2.4lSPxUSPxUWPxMufjaAtK2bBxeHmf7GxIH+gbBxeHmf7GxIH+AMA4OnIH+AMA4OnIH+AMA4OnIH+AcA4OnKH+AcA4OnKH+AcA4OnKH+g7BxeHuf7GxKH+g7BxeHuf7GxKH+gBBxenff7GJHH+gBBxenff7GJHH+ghBxennf7GJJH+ghBxennf7GJJH+gRBxenjf7GJIH+gRBxenjf7GJIH+gxBxenrf7GJKH+gxBxenrf7GJKF+AHqX7GhjaNAIWMAIWcAI27BRt72ePPwmDDT7IAAEeRPPwmDDT7IAAEeRPPwmDDT7IAAEeRPPwmDDT7IAAEeRPPwmDDT7IAAEeRPPwmDDT7IAAEeRPPwmDDT7IAAEeRPPwmDDT7IAAEeRPPwmDDT7IAAEeRPPwmDDT7IAAEeRPPwmDDT7IAAEeRPPwmDDT7IgAwmb7OwqttT7d7O2qFTvQe1WM3RilOLCyG8w7.vZs0HvH3AkdPlD9x1Ha0fDZYbY7gpomZTl7kIdq1uQ9pYIkCizjSHC1++hoin5+e9HJjb+hNUDWas.27HWYO0tHW0lgog7kpKeZXJGtpZKWyyQ3+IJEBUQ9MWIy3RK4wgnYKWl1t1NGs0g06mixSm1YtXf17E6IJIWq9QhRzasy5uPPx9vsNdqC2PPB+fZGU8o6t+l8EeP1Vhc0hRVP0vGh4pjTET0Cy1q9Ip6XbBxh1kZLO0ymXdtSW1HgG7LYcs05exvWNEDFf9M03aofhLKMCofQuDLVasZ6U6nZquSs5ao9rZpU2e2C1eus16n5AWiPxXXYhoSF8s4QlgOx4m59ohLL9lt+qVasw9FGAyAZzyJjWZvyDxUh1lRC3l13v8+cjw0M13YGcz96UebO68GeYtlGB+wahs1r1QGr9liUzwu1zD47Qn9cYtQjoCxAzLwevnOJYOIWYmwme+TYIarTikmoY6jmMeZ6ttYct9.iPlqrPlo4p1Gi4VIbDE0BB2ywGsu8xAlJrJW8pW5zSG60hVklExcrWl7hXx85p3x185bB4MmyvD+dzwPicH5rTN5glu5wYTURcu3uXjRO4WLRzu2lZFRSQUPxdMxze+tH6I81bRIhai7RTJpyhad+fWgReXzqPoPzd.1CQwrE4MqzU5QJAZELLSQdOV0xv2PI0+UZHWoGE+i193+b9iVG+2s1D+mWb.430wGe9SvGe5Yji+saPtdMxweC43SHGu4ukTdGxwcHGaSN9f+.43SeHQzkq1W92niwxWQ4Y01j.8HEAVmf0S3E.4aRLAo1DctYST36VpkRuIx6a7c5h0pClPPI0OKTs8dQpsPZ8.U1amN30hjxECdce80WT4xAG75uqhmw4nZ1G3hvigBslg6voguev90UB1jTCNw+Y6JjQ8ABmrQlHlxAP4sCgx61+kfEY4bAH4cSSs2mlDdT9kWosdy+Vkq.mJeaELsgyK6eKLXUz6mdcKKUpS7ePAnkhqaBcoBPz6j9bGKxMC1HKPAHLFFBn2bbktFDFOJIFum34eIY.QlzGSrXMMrTh2CTzuZOP4EiQoqLuPNGEje8StU.YMZs7ytU.YcJHW42eq.x4of7aZdq.xEn4CZeq.xEo8k6bq.xknf7Oz8VAjKSAYUuEWH+tTSkjkByc6c6.yzy+8lWd6.yzS.d+u81AlomA7q+9aGXldJv+xe71AlomC70u91AlomD7O+m9oFySbc7+7zi4kFD8jgeDMzslFziCzudjk6+5mUI0aMS2py6kl90kAMh9weykzuajGAQiuKcEU3winBOdJpvIC02OFTowZkWTYACq2ONVoAqpYkEZE6wzK3wcQCqw7Wog58ubgVsdLsKvA+q+jh0YidJmPomNueLwRc24moJG6LU4RHKeNNvTkKgXpxwClpDTwxLSUtDhoJG6LUImZkclpbILSk1hKSkF6LUZIjkWiCLUZIDSkFOXpRPEKyLUZIDSkF6LUImZkclJsDloRewkoRmclJ8DxxqyAlJ8DhoRmGLUInhkYlJ8DhoRmclpjSsxNSkdByTkewkoJO6LU4SHKedNvTkOgXpxyClpDTwxLSU9DhoJO6LUImZkclp7ILSUgEWlpBryTUHgr7E3.SUgDhop.OXpRPEKyLUERHlpBryTkbpU1YpJjvLUEWbYpJxNSUwDxxWjCLUESHlph7foJAUrLyTULgXpJxNSUxoVYmopXByTUZwkopD6LUkRHKeINvTUJgXpJwClpDTwxLSUoDhopD6LUImZkclpRILSU4EWlpxryTUNgr7k4.SU4DhopLOXpRPEKyLUkSHlpxryTkbpU1YpJmrLUwxv8EKlJx6ndFYpv8tDwxSfJqLUhEq2ONVYkoJIUrrxTIVrFyekUlpDTsxLSEGw5rwTAKtLUrmi5PBkyu.GxQcHgxQcfG4ndRpXYloJgxQcf8bTOAUqryTkv4nNr3li5.64nNjP47KvgbTGRnbTG3QNpmjJVlYpRnbTGXOG0SP0J6LUIbNpCKt4nNvdNpCITN+BbHG0gDJG0Adji5IohkYlpDJG0A1yQ8DTsxNSUBmi5vhaNpCrmi5PBkyu.GxQcHgxQcfG4ndRpXYloJgxQcf8bTOAUqryTkv4nNr3li5.64nNjP47KvgbTGRnbTG3QNpmjJVlYpRnbTGXOG0SP0J6LUIbNpCKt4nNvdNpCITN+BbHG0gDJG0Adji5IohkYlpDJG0A1yQ8DTsxNSEGv5RShoRM8DdsRF859ilW3WPg8eviURKkWL0GGsTjZyDs6T5L49IsyvCyg1hn43l1YzkoNSdYpyTPN5L4VbovtoclbxTmQSl5L5xTmIuL0YjD1LMYhMSSlXyzjI1LMYhMSSlXyzjI1LcYhMSWlXyzkI1LcYhMSWlXyzkI1r7xDaVdYhMKuLwlkWlXyxKSrY4kI1rBxDaVAYhMqfLwlUPlXyJHSrYEjI1rhxDaVQYhMqnLwlUTlXyJJSrYEkI1rRxDaVIYhMqjLwlURlXyJISrYkjI1rxxDaVYYhMqrLwlUVlXyJKSrYkkH1LHqDwlE0YxIScFMYpynKScl7xTmQRXy.YhMCjI1LYZu..xzdA.jo8B.HS6E.Pl1K.fLsW..YZu..xzdA.jo8B.HS6E.Pl1K.fLsW..YZu..xzdA.jo8B.HS6E.Pl1K.fLsW..YZu..xzdA.jo8B.HS6E.Pl1K.fLsW..YZu..xzdA.jo8B.HS6E.Pl1K.fLsW..YZu..xzdA.jo8B.b6Yu.riwIQclOL8Qa87iZTsmKAY0w3eRv++lc3muhO5hfpQdfsoRzVp4TPsL8MBv7r+Xi6cS6Rdju4grZzMFi6ujBwpsmODqnOBh+na7C1NZDRSi95mrHhvXbiOaQDgzDdU98KhHjlE6MMWDQHM0zW2dQDgEo8C6rHhP5202+P2EQDR+N9U0aQAguGMiM8K2yt8VHgH8rJu4kKjPjdZk6+sKjPjddku96WHgH8DK+k+3BIDomY40udgDhzSs7m+SIKDe+Is31edrE2pV2nSW7xLmv5aU9WFogyVYjkzdpis+dFcvM2OK8gNm336nPNUc+KIKf8sRugiUKkvU491oOvnkJnLktuoOpSUGKmdt31Ic4xEJCkxoX4z7aPsH8UP4jy5e82IsdthkfxYyVJaX6Z9sng38QUl7Zom3sy72P8XTd8peA9VZp6iKgPeDrOy2EyRuU+G+yy3ip82O81Ou55G0XaSKejq2DeVs+wUF4AE8HcqIoYtpax+DCOAzCQ6lWZazwro2DebsuX.2+59v0zy2w02zw1ahOy1WLP761GwHKiKm3yr8ECr1208Pz4H2S7l3is8EKW2CL8a1dWmVS7I2dRB2IRx82GKlMaWami15v5SknaZzTy.S2T3JGCQ27RZi6Oa9h8tE2W9Ew6K0pezs3Nyea7NyV6r9KtE2a96h0aNbqi25vMtE2c9Gh0cNn1QUe5t6u4heGJhE9Ci5P0sLagbO.21A8pOHMY1XTiyMbMIq8K1hdTTnVJ9Kqzw3B5nI64i5FeIj+3uwKP5q2womMEyakJsPmZzyx+XCqdHZ4qbfqSSjmmCd8o26n.fd+z3ID5YYfgU01Fl1J01jbxmf+ZzEvKcPYiK6Z34QVjap6Vy1GY6Y5eIMRRcmsvKm0wstugOtWk5ta3z5x5scdoc35hOtuViLMPc7Rj6OgPaSqVCPk2rCwOHc+YyFCFuyXvHdYoh.i28nHG3sN8TTS+g.7d3Icio23WyenSOeS6y10.OX.6ijdudcpiumilHbqaiG.gEd5T2g3WFdbVxwDMPcjcqfC9evehtHPNNUzEg9WToiQSWmFMw22hqCVfXG6fyfwjcvsTsT5cIGiumoyupWVGyVlMZ1LtnFoh4toUT6lVQ8aZEyeSqXgaZEKdSqXooWwcwGudOemNgCaTT18fs1zv2.6itkMgTJvaU4+EH6pAKG
Basically, pad_idx counts the 16 small buttons under the sliders, whereas slot_idx counts the latest clicked slot (square button) in each pad selection.
pad_idx and slot_idx are both stored in the SliderPack, but when Hise is launched the getSliderValueAt() is ineffective. Just compile it and it reads the values from the SliderPack, so pad_idx and slot_idx are correctly assigned .
Sorry if it sounds confused, I'm trying my best to make it clear :) -
@Giuseppe A minimal snippet would probably just contain 1 button and the sliderpack. The process of making a minimal snippet might also help you solve the issue. It's the first thing I do when I have a weird issue in a complicated project, I break out the issue into a separate standalone snippet.
But I think the problem here is the program flow. The
on init
callback runs before the values are restored from the preset. So when you try to get the value inon init
it won't be the value you expect. Try assigning a control callback to the sliderpack and get the value in there instead of inon init
.I also notice some other things in your code. You're using while loops when
for
orfor in
loops would be more appropriate - are you coming from KSP?I also see a lot of unnecessary repetition that is bloating your code. For example you can replace lines 341 to 436 with one line:
const ALL_FX_Cntrls = Content.getAllComponents("SUBPANEL_FX_Cntrls_pad");
-
@d-healey said in SliderPack for variables storage: strange behaviour:
Try assigning a control callback to the sliderpack and get the value in there instead of in on init.
Thanks a lot David. I thought about the SliderPack custom callback, but I should have specified that the only reason the SliderPack is there is because to store data (in the real script it will be invisible). Should I create the callback regardless of the user interaction?
PS: yes, I'm coming from there! :)
-
@Giuseppe said in SliderPack for variables storage: strange behaviour:
Should I create the callback regardless of the user interaction?
Yes
@Giuseppe said in SliderPack for variables storage: strange behaviour:
PS: yes, I'm coming from there! :)
Your code now makes sense :) I was there too when I first started.
-
@d-healey thanks again, will give it a try tomorrow!
-
@d-healey said in SliderPack for variables storage: strange behaviour:
Yes
Update: I just stored the variables in two separate Sliders instead of SliderPacks and it works. It's the SliderPack having this init behaviour for some reasons.
Will try to store the values into a numeric array because having a bunch of knobs just for variable persistence sounds a bit tedious. -
@Giuseppe New update: no matter what widget I use and/or control callback assigned to it, Hise just won't recall the saved value when launched, A new compile or an interaction with the UI is required to restore those values I need to be persistent.
I'm obviously doing something wrong, but honestly what's the best way to store a value that needs to be recalled at launch? Is using widgets a good solution or is there something that simply makes a variable persistent? -
@Giuseppe said in SliderPack for variables storage: strange behaviour:
Is using widgets a good solution
It's pretty much the only solution
-
@d-healey ok, but given that Hise can't read the numeric value of a given widget until an UI event happens or a new compile is launched, how does one solve the issue?
Say I want to print the value of a given widget at launch, where should I put the Console.print() line?
What I'm trying to understand is how Hise handles the variables storage. -
@Giuseppe said in SliderPack for variables storage: strange behaviour:
where should I put the Console.print() line?
In the component's control callback - the component must have saveInPreset enabled.
What I'm trying to understand is how Hise handles the variables storage.
Only component values are saved/restored, not variables.
-
@Giuseppe Thanks David. It's starting to make sense :)
-
@Giuseppe Also:
ScriptSliderPack.getDataAsBuffer()
.