HISE Logo Forum
    • Categories
    • Register
    • Login

    Storing data in widgets

    Scheduled Pinned Locked Moved General Questions
    26 Posts 3 Posters 1.8k 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.
    • toxonicT
      toxonic @Lindon
      last edited by toxonic

      @Lindon
      thank you for your efforts, but i'm afraid, i'm too much noob or simply too dumb to understand, what is going on there... but i don't really know where to begin. :-/ i thought, this might be not such a big task....

      So its the first few lines of a function defined for a panel(or set of panels) by using the OnMouseCallback

      so everywhere it says "this" it means the panel

      ok, at least i know now, what "this" means, but how did you define the function for the panel? and how can then "this" refer to that panel? maybe my second question would already be answerd by the answer to question 1.
      the this.getValue() and this.setValue() are clear so far, but how can i save values at a given index with this method?

      here you can see it just using a really simple single integer value but you can save any javascript variable in here I think - so you could save an array if you wished

      and that's, what i don't know how to do.

      this.data.someNameHere = someVarHere;

      so, i could also store arrays in this data member object? the same problem here - how to index that? this here....

      Content.makeFrontInterface(300, 100);
      const var Panel1 = Content.getComponent("Panel1");       //Panel to store Values in
      const var Value_1 = Content.getComponent("Value_1");      //Knob
      const var Preset = Content.getComponent("Preset");        //ComboBox
      
      //  i want the values from the slider to be stored in the panel
      inline function onValue_1Control(component, value)
      {
          var index = Preset.getValue() - 1;         //index from Preset ComboBox (zero-based)
      	Panel1.data.values[index] = value;     //doesn't work                       
      };                         
      Content.getComponent("Value_1").setControlCallback(onValue_1Control);
      

      ... won't work.
      sorry, as i already introduced - i guess, thats simply a huge lack of knowledge and experience, and if to much to explain to a newbie like me, maybe you could point me to a tutorial regarding this topic? i have read the forum thread https://forum.hise.audio/topic/52/variable-persistence but i have to confess, i don't understand just half of it! :-(

      toxonicT 1 Reply Last reply Reply Quote 0
      • toxonicT
        toxonic @toxonic
        last edited by

        @toxonic

        okay, after hours of ripping off my hair, i finally got it managed to get it working for 5 presets for a knob.
        but although i have set the Panel to saveInPreset, the values are not persistent after relaunching HISE. any ideas?
        here's a snippet:

        HiseSnippet 1062.3ocsV80aaaCDmJNrsVcdnEnO0GFD5SN.oAR9+ACE0MNICdYIwXtKn.AAFzxzwbQhzPhNyFE8w88ZeT166k8MX6HkjkriiSfABeR7t62oe2wi2wNABWZXnH.Yj+yyFSQFeGt6LtbTqQDFG09Pjwawckh.ZuNAzPprWaduNDN0qmsC5fYiIggzAHCib+jxdi7aizq+8iGP7HbWZpHD5BAyk9KLelLUZmlmv77NlLf9YleFqqzrsqf2R3Il.bKG1FMl3dC4Z5YDkYagQFO6nALfYckDIMDYr8AhAy5NR7G7H6ufEx56QUabPcAGEI9Xg2.EiURQsFw7FzIIGDh.uzIMijKJi7F7orAr4xSyLuRqvJEQ17gwVqidNYom8imdFYn21Qz603ttArwxTMJt8RbatjFLj.GAYoUjsnsNMGtk.rfK2ymbC83.XybDEqVwYWKmp024GKXVvDNHBkV2RBrZI76KNPL0w5CVIvulJAwiEbXSw2M2h2ovlh7Dtn+8iRqcID5pr6GRj5kv3Nh5dSORP.YF.LxDEtKHdSnEWNZRr6xqzJJXx3dLN0Z3DtqjI3VBtlXJBDH7J5l722EfCNbmBlesfoErTdaplpwQelep06sb.+mW+2tb5UfYZzJYwLLLwXsMJZ9MMiVaxRgJlYsHdd8gqGEWjv6DGVqJvlyz0Gb4Shr6jKuTakJ3TYu75+aZfL8gBhL0IqNPVlfJGlg+mIjzy4E2w7ql4M+lo0xpFNbk5hclGMXkpU8fBVGvh7I98oAI4nDCgKiKdaGe+21y1LxMJ2jwPAuMmIOeLkee8.PwITnaPtXVAeI08B993dAc8XCnAHFbk+4X8QCRS339q+0O7m+yGQKCtPRiD0QsF6KvQG6If+c7O287ytzdu516qV0aTsRoxkpu+tV16U1wVuJUtQEmFUanjUKRlSkx1UcbpTWaWCM1FUqsekFMpVVIqQsEs6JzcX2qhYWRcglfuDOuLYg.DVuoI52ZeHQRTcMiSYPZbLMPxTmPFGRuEFGE0CMO9PZ3MRwXcNMtHENTevr5zzenUyYoap0DkwO3GLAmwOeJieZ9klgjaos4QCeAVuUV+9rGYpI06+MMKKOooOAzgMvvFlj5Gpv4XVxrrYEypvz46LsAl4IFLwiHWbPnZ5erB39xBSbTSU3gL4rruN3IY53iktuF2gIcGsZ9t0J3KTB8Ty232ZT.ezvgTWYJY2Fe7Wd5eXA5WESjL90mRjALUIwYS76BO8xkBLgCknpdZPwmBpdusZuJyzkxGn27evJVoiZuQrRmDkHehafnmazEa0qYdgVBvIt9Qc4wmp1aM+tLFaumMxGdjUOWWUp38.2WMlRa.lxa.lJa.lpa.lZa.l5a.lFqEi58seZhT3GcMADz4HcOUCii3DnJSWQh9efqPiUr�
        
        1 Reply Last reply Reply Quote 0
        • toxonicT
          toxonic
          last edited by

          okay, slowly i'm getting into this thread:
          https://forum.hise.audio/topic/52/variable-persistence
          but somehow, i seem to miss something. i understand now, that i have to reacall the values, stored persistently inside a panel, within the onControl Callback. i tried to load the values into an array and print them out via console, but they are still the initial array values.

          function onControl(number, value)
          {
              if (number == Panel1)
              {
                  array = Panel1.getValue();     //assign values to array
                      Console.print("data loaded into array");
          
          // check loaded values -> BUT GET INITIAL VALUES OF ARRAY!? 
                       for (i=0;i<5;i++)
                      {
                          var printval = array[i];
                          Console.print("array index " + i + ": " + printval);
                      }
              }
          }
          

          another question: does it make a difference, if i use a panel, that i created with the interface designer and enabled it's property "saveInPreset" there, instead of creating it via script like this? and what do the both "0" define?

          var Panel = Content.addPanel("Panel", 0, 0); 
          Panel.set("saveInPreset", true);
          

          Here's a snippet, what i've got so far:

          HiseSnippet 1145.3ocsV80SajCD2a.2ir83Tqz8TexhmRD+QYoj1RygZJA3TNNfnK8PsBghL65.VrqcztNzDg3CRe69ncuduceCtar2cytIDBUQBiRH1y7yyuY73wSqPoKKJRFhrJ9og8XHqeD2dnPcUiqnbAp4dHqWgaqjgrNsBYQLUmlhNsnBlemJNncG1iFEw7PVVK7qZ8sJtHxL92OrK0mJbYYKgPmJ4tremGvUYq1p9gbe+CndrOwCxo8V0a5JEMj9x9.2V.WA0i5dM8R1wTsZEvHqmsuGGXVaEUwhPVKtqzaX6qjeUDq+o7H9E9L8DGTaXihW9.oumlw5UQMth660JMFDgfcoUVDYg3HxOiOh6wGsdVj4EFAjLD4iGVElE8bxSuJe+zyJG8VLlduD21Mj2SkIQysmiaJTrvtT3HHOsh0EU3KKhaHAMDpMBnWyNHDlLBQopa4rFwo5aKWaYa3XHRQtgFRZHCtPtqbfCYGRJ3KYJX4dRALozJizXkwQdnPdwCixHcBDlbrGFRrXCFs1zvP5PP4yprQ00l3y4fNw+wE9bAizsuvUwkBhTXrr1BgR+Rtoa+Z.C76yJur8sKaSfg1DCLbIw8zr4TsNkJSVm3.VnngBmM3bPMCZ8ZwrbinTkM5n47cFNMyngFUByZP88u.x9KMNgKOCGaDSmsyUL0yRXZlaclQKsyoieEM1MyQF7XNQtDgo6HSRP8Fli+GKUrSDkJaeqcQ66rISJpa2oJKYy7YgSUrtDS3r.VRzO3BVXZLJ87m2kjHgrSZrpbrnDMzizjv6EKqkoid.1JR5y1nWHWGp7nJJwWBU.8HvBx38YkIQQ5JCIk36ToF+WpViu5pkGW9sSndRZqwHf2.7JNCkeds6q4DTJ1S3BO1.xJjUIb3yJu27yz8qbsw1j6ri+F9OTXZ7Je3GtxW9BytwIR4TTJZJ3pS5wDOT8PTR1GTYbgjiP3WJScweJotXaetGKDwgxe+.1jGiLmtIu07We6a+yGPSBd4zhp5yRC1kvwmqofWG+asO4XSAGRxWuqhY33r8lU1dysGsd0yQ2y.uHw.o2CL1343QWKFiivXo5n+r4dPph9QfDuFhD8XgJtNHasG6F3003mDJh2iEcsR1yDVRtTBmKOZfYPlAI0GlM4M0Q41mm8nwnb6yGysO0+b8H5Mrlh3dI.VW.pHH+ZZcgH8l1vmC+hbhveHZJV8QCbY19uY48gCqGPAYXKLLgqXAQZbN1aZ+Z6srqBshbumVgG3kd88opwe0W2pSh.n5wXOupeBUDwUCy2JzSRq.euz8k3Vbk6USmuElBegDrmZ9lzX0x3861k4pxH6h3C97SeWTn+P1WwEWdDUEx0oDG2OnMzmoKCXh.Rf0EsrJnKuDOuhdtNxzlI7LS9OXjHzQO2JQnSpPT.0MT1wM9Zut0skLq.bRX5fsH9H8bxna5XbkMpfBfNJ635pCEqCbe5X1bNv754.yVyAlpyAl2LGXd6bf4cyDitY9O1WIChul.KzZeSEWKq8ETHKyjQh9eTQDSV.
          

          thanks in advance! :-)

          1 Reply Last reply Reply Quote 0
          • d.healeyD
            d.healey
            last edited by

            What's the end goal here? Are you trying to store the values of knobs in a panel?

            Libre Wave - Freedom respecting instruments and effects
            My Patreon - HISE tutorials
            YouTube Channel - Public HISE tutorials

            toxonicT 1 Reply Last reply Reply Quote 0
            • toxonicT
              toxonic @d.healey
              last edited by

              @d-healey
              Yes, thats it. I know, i could use the sliderpack too, but i'm interested in using panels as storage objects, mainly to learn more about storing data in widgets in general.

              1 Reply Last reply Reply Quote 0
              • d.healeyD
                d.healey
                last edited by

                My next question. Why do you want to store knob values in panels? They are stored in presets by default anyway.

                Libre Wave - Freedom respecting instruments and effects
                My Patreon - HISE tutorials
                YouTube Channel - Public HISE tutorials

                toxonicT 1 Reply Last reply Reply Quote 0
                • toxonicT
                  toxonic @d.healey
                  last edited by

                  @d-healey
                  Yeah, but as far as i know, only a single value. I want to store an array of different values and recall these values according to a "preset" called by a ComboBox.

                  d.healeyD 1 Reply Last reply Reply Quote 0
                  • d.healeyD
                    d.healey @toxonic
                    last edited by

                    @toxonic Each preset can have a different value, so if you want to store multiple values you just need to use multiple presets.

                    Libre Wave - Freedom respecting instruments and effects
                    My Patreon - HISE tutorials
                    YouTube Channel - Public HISE tutorials

                    toxonicT 1 Reply Last reply Reply Quote 0
                    • toxonicT
                      toxonic @d.healey
                      last edited by toxonic

                      @d-healey
                      You mean each HISE preset? to clearify: in the end, i want to store different sets of start and end points of a Sample Loop an recall these on demand, in order to get different ranges of the loop to rearrange it. Finally i'd like to export a plugin.

                      edit: regarding the fact, that HISE' native file format is called "preset", my choice of words might be a bit confusing. maybe i should call it "snapshots" or whatever.

                      1 Reply Last reply Reply Quote 0
                      • toxonicT
                        toxonic
                        last edited by

                        all right, i know now, what i've done wrong. in the custom onControl callback for the knob, i did overwrite the values in the panel with the initial values of the array. i made a workaround, using a "Snapshot" button to store all values in the panel.

                        HiseSnippet 1257.3ocsW0saaaCElJIbM1cdnEnWMrKH5U1.owRNw4GXDTu3jL30kDu4thBzEXvHQGSDIRCI5jXTzK2a1dA1ywtYuAaGRIYI6ZGGDfnfXYd9SeeGd3QG2IT5xhhjgHqBue7PFx5awcGKTCZMfxEn1Ggr9dbWkLj0qSHKho50VzqCUv76Y6fNb7PZTDyCYYs5Oos2pvZHy0+91Co9TgKKSDB8AI2k8K7.tJSZmlui66eB0i8ddPNq2tYaWonkzWNBv1pXazPp60zqXmQ0lsBFY8MG6wAj0UQUrHj0ZGJ8F2cf7VQr8efGwuzmoW3f5BAJV7IReOMh0RQsFv885jlChPPT5jkQVMNi7J7obO9D4YYlWXTPx7He9vZk6CdN4gm8CGdV4f2Zwv6k3ttg7gpLMZr8bbaghE1mBaA4gUrsnU9q0vsjfEB0lAzqYmDBKl3Q4Z0s2f3XaWoQohv1PjhbCMjzRFbo7P4cNjCHoNeESAhGJEvhxudhEudZOemPd4h8xncFOL0XK1kX0y3SWAcXz.oZgdkZfwOsGzvP5Xv7OYuY8Ml4+KZPpV0i0mNxWGd+QrnRE0+UsJwc.UbEKwciNBUQtheCSP3BO1cjRE4BetfQ5OR3p3RAQJL7TirPoeY2TXsQb.pTp3mKUj.WZfEGjCxR4Zl7AsckqPdCwAveAyS+SFKu.L0DEP9WZnA48lo2LRK0fiVTe+KgSVkmFdUZLgqfsjqAUDkLkpttxPOt3JsnbjddbdBAtedWHOoiIV7yB35EZxZ.mF2wIAioUVBayUMNeFOK3xyZcOOBXZxVO.NxPcQ27HYZc0R3HuOobLqN3.hSkjZ7LRY38xHUVM774zLXQGtbH8LohctnbkhetXgheoHYVU86OWcIAymENW05V24zTsZHyMWpqenLN2AlBIVZnZzvoPUZdSLJ3RVXZRSGtzCnIoprCAMzOHnG3zMYwKtIa92A3FmYyYnTzVvUmOjIVTqWTx1g9cDI3ELUYZA+cIsf65y8XgHNzo8YXSEKxPkjWqQ9y+4ueKZVmKk1+VSQiuqiioapy+A9m6d9YPOJ6csiups+d101pVsMH1atWrHGm8qYues80hpUW+4t6ru9ZOP5N0c1ZWilYr9BzWgmWjfmzCGFH8b7jyJSQI35UMQKJeb3HkRJLAnHNsvbV+gqeu8QTEU+5sjjLj3GxBUb8dp0Qraf4FheYWA7QrnqUxglcgjCEv2W59vcYOvcaNNaAQi9Iw4YKcKIWbVOeb9glQzaXsEwSIAndE3.f71zClQ5f1xmCeibtveL5lzJSqUmC.V5dPFLZ5lGFNMCnfNrEFVvUr.3AWAG2zwoX78ZI22J491I2qitk6oFjE4ecpbC9gr2lK8zHOtNqIO5TY.DHZ3Xc1A80Cx.iSI8F4SUSOikdvxDEP2hoFlQOvhHhqFmevymjAudnv8k3Nbk6f4i2UlCdgh9mZ7lLFaI7w86ybUYfcM7Ie7oelUzuIGofgENkpB45ZyyFEzElp2kAHQ.Gpz8sgBBsql01505LSWlvyr3+fqDkN50VIJcRUhBntgxdtw8gzCJutQBfIg42KT.epdMYR2KLFZmhBf42645pSEuAv978o1ivmsdD9r8ivm5OBe14Q3ytOBe16d8Q+Sm9wQJYP7wDPPmiMuEvx5XAEpxLUjn+GPaAUA5�
                        
                        1 Reply Last reply Reply Quote 0
                        • d.healeyD
                          d.healey
                          last edited by

                          Yes unfortunately the HISE project file (.hip) is also called a preset which is confusing. I'm referring to the user presets and the preset browser. This is where every widget, including panels, have their data stored. So if you are just wanting to store the values of knobs I'd use the preset system. Add a preset browser floating tile to your interface and you're pretty much done.

                          Libre Wave - Freedom respecting instruments and effects
                          My Patreon - HISE tutorials
                          YouTube Channel - Public HISE tutorials

                          toxonicT 1 Reply Last reply Reply Quote 0
                          • toxonicT
                            toxonic @d.healey
                            last edited by

                            @d-healey
                            ah, okay - i must confess, i didn't think about that possibility and i didn't deal with the preset browser yet.
                            could i assign single keys from the keyboard to single presets, so i could for example hit
                            C4 on my keybord to play range from sample 0-40000 of the loop,
                            C#4 on my keybord to play range from sample 50000-60000 of the loop and so on?
                            would the performance of loading the presets be good enough for realtime tasks like that?
                            thank you for your reply, this was helpful either way! :-)

                            d.healeyD 1 Reply Last reply Reply Quote 0
                            • d.healeyD
                              d.healey @toxonic
                              last edited by

                              @toxonic Preset just store and recall the values of widgets. For key switches you will need to script. If you want different key switches for different presets then you can use a combination of scripting and widgets.

                              Libre Wave - Freedom respecting instruments and effects
                              My Patreon - HISE tutorials
                              YouTube Channel - Public HISE tutorials

                              toxonicT 1 Reply Last reply Reply Quote 0
                              • toxonicT
                                toxonic @d.healey
                                last edited by

                                @d-healey said in Storing data in widgets:

                                If you want different key switches for different presets then you can use a combination of scripting and widgets.

                                does "preset" in this case mean: preset via the presetbrowser? so you can control the selection of presets via keystrokes, (...but i need to script that (which i didn't find a method for yet))?
                                or am i back to the idea of storing widget values in panels?

                                d.healeyD 1 Reply Last reply Reply Quote 0
                                • d.healeyD
                                  d.healey @toxonic
                                  last edited by

                                  @toxonic

                                  does "preset" in this case mean: preset via the presetbrowser?

                                  Yes, whenever I talk about presets this is what I mean, unless I specifically say otherwise. :)

                                  so you can control the selection of presets via keystrokes

                                  No. User selects the preset from the preset browser. Do you want different keyswitches for different presets?

                                  Libre Wave - Freedom respecting instruments and effects
                                  My Patreon - HISE tutorials
                                  YouTube Channel - Public HISE tutorials

                                  toxonicT 1 Reply Last reply Reply Quote 0
                                  • toxonicT
                                    toxonic @d.healey
                                    last edited by toxonic

                                    @d-healey

                                    Yes, whenever I talk about presets this is what I mean, unless I specifically say otherwise. 🙂

                                    okay, do not mind me, i wasn't sure! ;-) and if i'm honest, i don't really know what you mean with that sentence

                                    If you want different key switches for different presets then you can use a combination of scripting and widgets.

                                    since this somehow contradicts with

                                    No. User selects the preset from the preset browser.

                                    or did i misunderstand that?
                                    but yes, i want to different presets with different keyswitches on my midi keyboard. ;-)

                                    1 Reply Last reply Reply Quote 0
                                    • d.healeyD
                                      d.healey
                                      last edited by d.healey

                                      The user selects a preset from the preset browser with the mouse - not the keyboard.

                                      i want to different presets with different keyswitches on my midi keyboard

                                      I don't quite understand what you want. You said this previously:

                                      C4 on my keybord to play range from sample 0-40000 of the loop,
                                      C#4 on my keybord to play range from sample 50000-60000 of the loop and so on?

                                      Will those keyswitches, C4 and C#4, be used for all presets or do you need each preset to have totally different keyswitches?

                                      Libre Wave - Freedom respecting instruments and effects
                                      My Patreon - HISE tutorials
                                      YouTube Channel - Public HISE tutorials

                                      toxonicT 1 Reply Last reply Reply Quote 0
                                      • toxonicT
                                        toxonic @d.healey
                                        last edited by

                                        @d-healey
                                        uhh, i really seem to express myself very awkward, i'm sorry for that. :-/
                                        i want to store different loopranges (AudioWaveForm) to different presets. by pressing a key on my midi keyboard i want to select a specific preset and play the looprange saved within that preset.
                                        C4 -> looprange a (saved in preset 1)
                                        C#4 -> looprange b (saved in preset 2)
                                        D4 -> looprange c (saved in preset 3)
                                        ....and so on
                                        got me now? thanks for your patience with me, my english is quite poor and my HISE knowledge as well.... :-/

                                        1 Reply Last reply Reply Quote 0
                                        • d.healeyD
                                          d.healey
                                          last edited by d.healey

                                          What do you want the combobox to do?

                                          Will you need to change the loopranges from the interface?

                                          Libre Wave - Freedom respecting instruments and effects
                                          My Patreon - HISE tutorials
                                          YouTube Channel - Public HISE tutorials

                                          toxonicT 2 Replies Last reply Reply Quote 0
                                          • toxonicT
                                            toxonic @d.healey
                                            last edited by

                                            @d-healey
                                            okay, my first problem was storing data (start and endpoints and maybe other values) persistenly and recalling it. the combo box was just to select the.... how should i call it..... snapshots? it was only for experimenting purposes, it seemed quite handy to me for that task.

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

                                            43

                                            Online

                                            1.7k

                                            Users

                                            11.7k

                                            Topics

                                            101.8k

                                            Posts