Storing Special Preferences
-
Hey Hise family.
I am sure it is very easy for most of you but I really need some help about object oriented programming.
I need a special preferences system that can store various property values as JSON objects like: disable tooltip, enable oversampling, .....etc.
I just need to store this values (to call on the init) like below and grab/modify them via scripting.
{ "Setting1": true, "Setting2": false, "Setting3": 2 }
I know I need Engine.dumpAsJSON and Engine.loadFromJSON but I can't figure out to process these data. Any help much appreciated!
HiseSnippet 1093.3ocsVs0aaaCElxNpXR6BZGJ1C6Ih7jaQlultNrggkZGmBu0DaTm0MrWJnkni4hDofDUVLBLv9Iu+AamitXImXGmZrJCKQdt9wCO7b3nPkCOJRERLrNed.mX7YlimK0y5MiIjjAGSL9Ry9Wq4gRl2XtVKjWDQ5NOfEEwcIFFUeMJmg0djjm+4m5x7XRGdAIB4cJgC+MBegtf5ni9Egm2ILW94B+RRe3QCbTxdJOULfoplMIALmKYWvOighUwjX7n9tBsJbrlo4QDi85pbmOdl5ujox+NQjXhGGmzhLFLTJ4STdtHhQpjdyDdtixW6QDvJiJhDUSiDO07TgqXI8hHxiSXPKznb7vnxpvq5JvqUY30rD7VCjLJAo8RgzSLG6DJBzEbP77olCjvNzTFD1KCkTYIU9JSydJPBottO6R9IgvjkZT6vlMOf19EMe1OXaaCw9HM8JVHMaytE8Go4JeAW2S4GnjvjZ6mKv9fh2Qs1aSs1qUsNaSsN6m.SagzSH4zowRGsPIoJYNbP0CUd0bx08.vAdw7mYeisUdl7q8TSJxmqudx+Vn.HWCb3BvmaKHTOBYj36dLOuIPVas6fpTvaKgb4HHulSWumAnZSgmauJueblnxM1Tapkkmxg4Q8Tv4K2iYZFDW6Ku.LVcjFjA3+yiGdVs8qWuwFhI+YDFpWioNOD.tKXPMNnVAiTww+hozxzQRvJB+Xs70hkix+2341VzL24lhYfP1yMECwmh.+2C3Hlev5Y299Y2AX2NkTg.vl8xwEixhdtw9AuJJI1gP7.5Vif2xVOuQw3jMrE11V3uG1d8a4PTE2qsv.BFuPcW.ur+PRY5Mi6b4P4af8nk4MYFXQ9fFMnXhLUOSDAmunQZVnNNHg2CvpPldhorKcF8LklOTVK4nHvkdaVSmtVdYGd7RV32kM1.I79TrlL1eBOrbg.TPnp5pkpM2bo5xcRbRqDTRPkbfTnGFvkap+BIq7AVVOCUfn5jh5ONqnNTVYhpq5Zh.pdaalmiRRPco9oGQ90A34pbaAlEbU.OTKvUgww7qf9soMLrLOlGcoVE.daYYKXkl54uHyyci0ZkbU+1hb8Re92rilWt0cD6J9.4nPNTyKu80GjwauQi+Gaw3O5gEy1f4gI9LfmoQUXFT1zGBXes4v.Lgokc521Ye6XCq06zBFZ9qbi8X5UuQ.dMnLFfpqzFFa0JiD54kulz+aWS3gBwmXNRnclsdLVYMXDRu9XfwrKW84l8mNk6nK.3dlm76ebtIE4spXLs3TlNTf69mE6OFteoCG7tTx8vy9FUvSooyahywHvXtzMYx+BOYLagyMxX1JmIwm4DpduS5Ya75aeRBE.SxjatZYdJNm1J+7roYy5MI9vMIeuiCt7+Fnvw50o8NnSmcPmC2AcdwNny2tC57xcPmu6d0AuD+qh0J+ziC.gQ8SpqZXzWxfLqjrPx+AeZxlp.
-
What you're doing here is not OOP, so don't worry about that.
Trace converts an object to a string, you don't want this. Just work with the object directly after it's been loaded.
-
@d-healey Ok thanks, now I understand that trace is not used in this case. Let's say the user changed Setting 1 to false;
- First I need to take the previously stored object - That's ok.
- Then modify the Setting1 to its latest value (false) - This is the dizzy part for me
- Then write it again - That's ok too.
When I use append, it inserts the property again. In above chain I really can't figure it out how to take the data without appending and only modifying the property.
Which documentation source do you suggest for me to learn these object data processing stuff for Hise?
-
@Fortune
https://www.w3schools.com/js/js_json_intro.asp
https://www.w3schools.com/js/js_json_syntax.asp
https://www.w3schools.com/js/js_json_objects.aspNot everything here will be exactly the same in HISE, but it's pretty close.
-
@d-healey Thank you for the recommendations, I will check them out.
By the way I've seen your "Scripting objects and curly braces" video, it is great.
Could I ask for a video request? It would be very helpful to learn processing the JSON data like my example above in one of your awesome tutorial videos.
-
@Fortune said in Storing Special Preferences:
It would be very helpful to learn processing the JSON data like my example above in one of your awesome tutorial videos.
Good idea, I'll add it to the list
-
Cool! By the way after hanging around a while, I succeeded to make it work, I am sharing it if someone can benefit from it. You can check the projects's AppData folder, it creates ExternalGlobalSettings.js file and checks on loading.
The only thing is lot's of same things in the code. If you guys show us a "less code way", it would be great.
HiseSnippet 1222.3oc0Xs0ahaDEdbHtZs6EksWjp5SV7DQJk.IYaq1zKrPHaocS.URY6aQC1CvzLdFK6wYCJJR8mR+ozeR8eP6Y7ErIXHTTSu3GfLmaymO23bROegMIHP3izLtXpGAo8N58mxkSZMAS4nNmfzde812HI9bLqOQJo7wAnlS8vAADGjlVoWpjSyXaTzyu+MMwLL2ljQBgFHn1jWQcoxLp8Z78TF6TrC4BpaNoOpQGaAukfIBALURuFxCaeEdL4brRrszQZuUaGpT32Whkj.j11MENS6OQ7Fdr7CnAzgLh5PcTevPwjOUvbTHVQE0ZBk4zK8cO.AVoWlmnTrm3C0Oi5PmQOyirSDCqLMx6Oz1Zd3UZN3UOO7pkCdE.IsbPZ6XH8T8919TOYFGEdda8NbHBMBCt87PIVVzVCLzaI.I3xpt3qHm5CGloQkipUaOqCdVscO1zzD78ARqqw9Vcul32G65wfH9kmPv1RJPw5qrRM0Xhrkv0SvgCUJWr3kAilYxKDBlj5sFVaAIm2PIIhGtT8SEnbzKEkCnhXMJjCFSvsD7hQqxV9BVE6TCsGbarPxtl2ZXZvD1XlES.orNmfkX3xayGCFtphF3Tc+t9cOuR4pU2Osf4kLwvrxlp+bfBOfonirpjYncMMt0v.HajQqpBgAIHLNlB2WDZ.KXjbwNgtduHH5ZyTcOqGFB2oPAgEPTWMXORgR+ZeJPtRjBFJDdG3M+qE9qFnDKxs1ByXCgZ4JOf6OJjUXTagrh+KEvR.2+ChUETbUbXZY96zHTAgnzBuUDY9mNvjqYw+hwjUDOxZVUbX3d9zkUerZLj42ch83lVvysQepdJuXCmxOeI+HfB+CTtxJ6tWlATYKWjV..5tP1SwpM6s+4yZqufffuyHUAyBBdNqUXyx7tBcbEqSqID6q5xeEjWT4QOqMMs0XIN7fTGxJ+EBkwMLVzuWj1y0tJVwYt+hjOk4tGGiz6L.OI3O2eeKUppkbBM.p+sBjXeYnm4Z3TONJ19.eXZlq6x4BIoKONb.Wt08YMZTg7RJbXo0A2isZ.T+UoXEdn6Phe9VXJAgoxleTO8kOpW9IQsi6BjSPAuCmJ65Q3Ka9TTRqC3u9wNp.hZ9vDZfbdDeIUAAsSHWCCaGOsng9IjfqjBOvpy52fzdhLh66kLKYyPoTvQTXjwOVu37OzMyFP+WFzXZ1gusgDZ6fz9n4TzJNqB8FpibxLg+sgMlPnimjaIfurQ.9ZRGdOeBjykNH75fzOPegz7kBxWm.xcR0Ysw2W+.3yHFe6jfOfyPQSwMQHzTOsjYY.6WwMbw.OcsRvInMsKD.+D8tdpru5lweePx2GZtgvcwkHf0WDNgLrb9cZTKxkv.tu4VjPsr.OfJmleQu+1VzYcg3S06Qk1SJFiaU.FgZjGCLlrd36p2dzHhsLCfaqe5O83rKH5GDgpboyvRepJk47P29vFx1D314bXRDUZzVp9DwmqoNq7.8IbmnC+A7jvrt5rVBy5oLQtXaewk1w87TKf9jHJ.l3Q6danel5rUcTTePPO8ZUqgbgcguz1V85+oPqqh04fMPmC2.cNZCz4YafNe1FnymuA57EqTG0+FhWDJEtwkC.gdsi9wAMs1bLjYEkEh9S.3e7RVA
-
Here you go. I also cleaned up some of your code, gave your controls consistent naming, and added some comments.
You should read this - https://docs.hise.audio/scripting/scripting-in-hise/hise-script-coding-standards.html
HiseSnippet 1218.3ocsW0sSibCE1CvzcmosqXq5dSuZDWEjngDfssB5OYIIrMsKjnFJsRUqV4LiCwEO1iF6vRDBo9nzGk9H02f1imYRFmvL.MpL2jXe9wemOe7wG2KV3SjRQLxx4zIQDj0GY2eBWMp4HLki5zBY8I1suRQh4XVehRQ4mKQGNIBKkj.jk0puVqmkyZnju+96NDyvbeR9THzYBpO4MzPpJe1dM9QJicDNfbJMzP68ZzwWvaJXhw.lV0tFJB6eA9bxIXsZqXir9f1ATkHtuBqHRj0ZGJBlzej387T8OiJoCXD8f5n9fiRm9HAKPiX8rnlinrfdSicIB7RublX0Tl3SsOlFPmMeNirdh.ubKL4CqUlGdqNG7paBuZFvq.HYY.o0Rgzys66GSiT4Rz34Cs6vgcngXf1MgRptnUN9I1MEfFbU0P7EjihgAyrnxd0psk2Nur1lG35t81dCT7tWRh6iCiXvlcKB1WQuDCQjKrwHUdWhiKQIRr223MckNmnZJBiDbXPkMJyfMfUsLYUkZWvUwBVSLiM.xCpH3kocll5nfxAIDugi4fHA26dMph+TjtEDdrwjMcu1w0QBAM40LwfYo9U1P6FYlaR45MlZyAt2LiBOUHXJZzrEZdtaQo2EssntYL1hSWJYsnh2GOUh9+GnnLOrH6333Lkf7CGLsVxtFLi4zkRIlJo4BywESBlZjG8dED9EnYQwcwgcNptUBwQYKg71b9zZqy4LYyQD+K5xei.GTIYAYBeLyK.qv.wzleN3ipLPJbVN7G528jJaTs51E6qp+tTySvlEcnWEprEYHXcPEsy1bSWmq0aLNN20ovyzgShAUuc9u12NkjQZX3bYEI1r3NmgxlhRybbtw8laydErObAYh4N0iIwAwf9++FrjuE7dxhdfFoNDljjq.H6ZWurOmhJgreoUT0Y+oDylaY3CMad5ryX6WTQkRrLOMc+4NvYn9LsuIMZbcxHtfwgQuRlPa53ZKu6k7tYt7eOXufIce.47G3Zbr7DghzkmdP.7n2hhFNrPYYmfYj3BEq66H9tLrBeb3.RrY1jVQ3x34ug2t7a3Ma.wOsblghBdGNU0MhvKqsDTVMP3e+bmV.kqaKHaNPuHRrhpgfUKxkPOVoMI3X2hHuPIh.uNqvIx5opDoOKqEhCGqTBNhBcJ7Y1kk8gtZVmY+wYMljO36anHWAN8E1l14klOhdOMPMZlx+0fFiHzyGYz82W2Phujzg2Kl.G7m1AzCAquvtfT8Rg4ujAy0syL4Aivu8dPnSJBWOCgfjAhCEWkfwmYadvpLv8m3FgXPls0pvHphDJ0aEcizYg0cS+cmre20cIg7s6gD5dUDLlo6nyrkVce7YBf0at9H08JxkT0Dy97+eqO2GJDetcOpxeTwXbkBvHbV4w.iYuN3isaObHwWkCv0rO5WebdJ.5mDi0ISGiUwTcJyIiC6COPxm.qNmC21nSiVQWuHcbM8XMCzmvCRF7OvWlv55wVYBqOUHJD6GKdmeZsO86OdZxL.l3IO8xw9X8Xu5nj5gfc10pVCEBOE5c995v+ygRXEayNKgM6tD1r2RXyKWBa9hkvlubIr4qtSazuB8UiUhvziCvD8ZmbIgkUaNFxrRxBQ+6L1B7U
-
@d-healey Thank you so much dude! I really appreciate that.