HISE Logo Forum
    • Categories
    • Register
    • Login

    Saving Panel data in presets

    Scheduled Pinned Locked Moved General Questions
    16 Posts 2 Posters 819 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.
    • d.healeyD
      d.healey @Lindon
      last edited by

      @Lindon Don't use the data.state, store it in the panel's value instead and use that in your mouse callback. Or in the panel's control callback you could set the data.state value from the saved value.

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

      LindonL 1 Reply Last reply Reply Quote 0
      • LindonL
        Lindon @d.healey
        last edited by

        @d-healey wha?

        heres what I'm doing in the mouse callback:

         if (event.clicked)
            {
                this.data.state = 1 - this.data.state;
                //Console.print("current state:" + this.data.state);
        
                this.data.target.setBypassed(1 - this.data.state);
            };
            if (event.doubleClick)
            {        
                 //set the panel up properly..
                 VelocityPanel.set("x", editPanelXPositions[this.data.panelX]);
                 VelocityPanel.set("y", this.data.panelY);
                 VelocityDepth.setValue(this.data.target.getIntensity());
                 
                 VelocityTitle.set("text", this.data.targetName + " Velocity - Voice " + this.data.targetVoice);
                 //Console.print("VelocityModulatorVoice" + (currentSelectingVoice+1));
                 VelocityTable.set("processorId",this.data.targetName + "VelocityModulator" + this.data.targetVoice);
                 targetModulator = this.data.target;
                 FloatingPanelCloses();
                 VelocityPanel.showControl(true);      
            }; 
        
            if (this.data.state)
            {
                this.set("textColour", SELECT_ON_COLOUR);
            }else{
                this.set("textColour", SELECT_OFF_COLOUR);
            };
        
        

        As you can see there are several data elements in the panel e.g.:

        this.data.state - is the on/off state of this (sorta) button
        this.data.target - actually the synth component (modulator) we are trying to control

        So what are you saying I should do?

        HISE Development for hire.
        www.channelrobot.com

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

          Save your data object into the panel's value and restore it at on init inside the panel's control callback.

          inline function onPanelControl(component, value)
          {
              local data = value.data;
              component.data.state = data.state;
              component.data.target = data.target;
          }
          

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

          LindonL 1 Reply Last reply Reply Quote 0
          • LindonL
            Lindon @d.healey
            last edited by

            @d-healey thanks, but Im probably being really dumb but theres(at least) two things i dont get:

            1. How do I populate this value.data?

            Right now I'm doing this:

                VolumeVelocitySelectors[idx].data.targetName = "Volume";
                VolumeVelocitySelectors[idx].data.targetVoice = (idx + 1);
                VolumeVelocitySelectors[idx].data.panelX = idx;
                VolumeVelocitySelectors[idx].data.panelY = 64;
                VolumeVelocitySelectors[idx].data.target =  Synth.getModulator("VolumeVelocityModulator" + (idx + 1));
            

            Theres a bunch of these so - the array of these panels

            are you then saying I simply add the line :

            VolumeVelocitySelectors[idx].value = VolumeVelocitySelectors[idx].data;

            ?

            1. How does this:
            inline function onPanelControl(component, value)
            {
                local data = value.data;
                component.data.state = data.state;
                component.data.target = data.target;
            }
            

            repaint my panel?
            Im guessing it doesnt, so I'd need a seperate paint routine?

            HISE Development for hire.
            www.channelrobot.com

            LindonL 1 Reply Last reply Reply Quote 0
            • LindonL
              Lindon @Lindon
              last edited by

              nope I cant get this worked out in my head;

              heres a snippet:

              HiseSnippet 1214.3ocsVstaaaCElJIZK1KFcEXO.B4WJEttRt45BFlqchKBVShWcVw.1kBFIZahHQZPQEWihfUrmj8y8XrGo8FrcNh1VxNWPgAh.Lf44B4G+NjeG1QICXIIREwpzEiGxHVaX2crPOn0.JWPN4HzPGpfEoYI5DRywCoIIrPhk0puFivpzZjru+86aRinh.VtIB4cRd.6M7XtN2ZmF+.OJpMMjcAOtPza23j.onkLRlBnYUaOxPZvUz9rynXXqXSr9hiC4ZopqlBngXsVSY33tCjiDl3eGOgeYDCG3S5BSjwbaYTHhXzJo0.dTXmo65DBLKcx4fUMbv2XeJOjOydNW70YNbxynHeXsxCAO+hvy6yGdVEf2ZF38T6tAJ9PctGDaek8IBMS0iBkfhvxDKYk+XU6VRHBgtVL8JVaELXVFt654U0YGOusNrR4JkgBQh14ZpxIq1667cNSysOS2RFOTJfAtaZbuoIqdoh.MWJbhG2hFE0DJetrqg31pR4OVorC7w6YrTKHhGbEKbKiYvaI8.dRsPplVKAIPXI8cdtyBVObZfACnh9rPWbkwY3lJkuAwPATLDpZ5SGmAQ29Ewfi6BSaNLbl70uVBtQwCitdenM744YXmrUiEkvdfn87veEvVo90BUzQukEnc+EupdU8A9dOueqZcLHH.CQhSyoxzDFxeWh7WNUZ33735fau2JS0bAys3d0DXkxu3YUJyEQfamYbhTXl.rZpjQtASKkUgpcTJyvRk.2IxHVsgJNVk4BnNvbDRULMxI..jCBtrxdoHIXvA4RnjkMIYD6j89rEX9R6bUzax.7Ce.yPvYfdF2rvlAQyydQgs5YRM6bg6Vk+X4Rkuoryht506N8MY5hXp6zMpZodnDcEowWxTSYzoABWemWev990GJJeEX3kBAJEmH35yGxD2mpAYBYB+6mN4HfqQgjI1f3FxTZNBAqiXWCJzFYkR1GwRtRKGBhsyp.DquTm4sxTQGjxIbPZYcSiAexGlIh+oW2Xbth9gMFwC0ClYnwu1X.i2ePdyf+oaCnXJGMsjlfqSKTZHw4bQz3LTOCIqOORdC8xYHI6+EQBzNo.Rp2XHUAyQwIaJ5W.i+3hXD1SLntQmIcSJLKanmzvv.o1QRJber+EbHXDYOwtno4.35E.3m98Enp+9OuELF0XRAzTsdhcGECtTzTIGkvTjK6Os04F1a6uq2daevN6tOgqYwEbTe+818f56U2ufi5FOG.I366uCI67h0eYmousIdtqK8ZVyTsVJ17aczpTV0Ytx5dotGm3srjaYEuEXR319ZSuVp.ngOEXNmmkhnMMNKmWBZFPeyrSm1uRwoQvyJtUaRnYsLLMhpmuCN9rkINfqsy0pDaGJR35wEeVyiRa8OW39T6Nbcvf6FuqbG3Etn+Xi2IORph8w85A8yxA6Z1s+4G+WDQL875eJUq3v8Ia3nQW3Xb.CPh.tRiRqVqfhflwd3XjY5xDgYC9O3ahSebr0Dm9ScRhoAJ46CLB53yvVOyBfIQ1qQKYeJN1wmjIxC4Y6UyiDCuN78AAHU7b.62cN0Whbd4Rjy1KQN6rD4r6RjydKQN6+f4fOL+UoZYr4ZBXnywFkLqiEn3c1IRx+WqSEZF
              

              this behaves correctly right up until I recall a preset - and it does nothing...

              HISE Development for hire.
              www.channelrobot.com

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

                You're almost there, but you need your panel's saveInPreset to = true and you need to use the panel's control callback (in addition to the mouse callback) because it is called on init after a preset loads.

                Peek 2019-11-05 14-22.gif

                This is a rather clunky example that I'm sure can be improved but it shows the principle

                HiseSnippet 1300.3ocsWstSabDEdVfsE6FqzT0Gfs7qkHhytNbIoHTcvfinM.twTTk5kngcGaOh0yXM6rPrhPJpOIs+qOF8QpuAsmyNduXykFYUVIDLmKy7c9Nm4LG5njAr3XohXU4jwiXDqGX2crPOn0.JWPNXOTPGpfEoYw5XxtiGQiiYgDKqEeEZgUkkHoe+82rKMhJBXEhHjSk7.1q4C45BocZ9c7nn1zP1I7gkrd8lGDHEsjQxD.MKZ6QFQCNm1mcDEMaAah0mreHWKUc0T.MDqk1UFNt6.4kBi8mxi4mEwvE9jtvFYD2VFEhHFkRZMfGE1IKpiIvtzofCVzvAeo8g7Pdt7Bt3ySU3T3QY9vZg6Bd9kgm2GO7rJAukLv6Q1cCT7Q5BMH19L6CDZlpGERAkgkwVxB+wR1sjfEBc8gzyYsUvhbOb2zyaMmM77Vc6ZUqUERDwZmKnJmzbuuyNNY91moaIGNRJfEtqXTuhwqdIh.MWJbFNtEMJZWH84xt.ra0ZUeespNvGumQR8fHdv4rvUMhAsUveqGviqGR0z5wHIBGquySlU51kMNloOkFkvbyMZ0ozGLfJ5yBcQonvqpU8JDqkP6HH6pObbZn31uLVcbm4nKfqyju9HBLEstduqM744YXwzSiEEytCq87veJgsJ8qGpnW9FVf18m7VyaMeHurk2urVCzHv.CgiaygxjXFxymg7bAkiFVXUGL3diLQyEL2xQpIkUqJWDApbxYCov3LluUxH2frj8ZP8.PzSyOohljr9pc1wIQDx5A6WVhE+x2goyrkbc6BiM+UgKJVJnSyeWkB46tPzPvoPOmalIjxh7ZUe5im23uBnNVFwpORgnaEt.J2XNBoZHMxI.NYG7nSuXTIRBBbvfOOrwEaOarNE8LU89+iQ9ieZoP8Holcrvc0puuZkpWU0YVU85ci5lrcQL0MpF6qqtKGcEICOioxXzLCgFbS2A0916fVtAefgWJYnTbffqOdDSba8UISHSrC6DTAlpS6uVKq+JxcDNzEcYyaf9jT.Sr9B6us6wG89URyOq70NdWQH+vA6Aorr8C1Z33FwTZNFIV6wt.dJzz+th8dr3y0xQvqZ4IR3P9OO82k+Z4GdUywEOctcyK4g5A4BZ9yMGv38GT7p6e0sITSHuLqxHFOmVXO3XmiEQiIwzKXGH5nXPUD.2Evn31P1qomkirz+tLxf2wKgrFMGQUvdTdyxhlYv72OKlgXjAkCz72LIk1kGnm7RsARsijTnEW+S3fwHxdncYQSAvkKAvO7qyPc+4ucMXbYyIITS16g1FVZWk7xXlhbV+rYVdf859a5s05uXiMeNgqYCKonwy2ZyWzXqF9kTzvn4EfC999aPRqer9c6z9qqfkycgrxtIZsT.EYZUBasbUoiMntEk3k23qIEubYb355ZSuPp.ngyfMkxiRPzlLL0mmAshfAVvDvmZ+REmFAyycs4SfojjgIQT8ziNgyKNQAzMXpYTv4PDwb83xySduLO0GKbejcGtNXvMi2EtA7BW7uuw6joSqYueudv.BEfcI61+38+nnDyXD8OjpUb39jMTZzEJiCX.RDvUZris0BXuUyZObMxLcYhvzE+C7MQoOt1ZhR+Lkjgz.k7sAlNx37uKmJAvjH8eCnh8g3Zm7Vw11d08HCgwxeaP.REOAv9M6Si4vmmMG9r9b3yFygOaNG9r0b3yyuSev+inWlnkCMWS.Ac12zIyZeA17Nshj7u.aC88BC
                

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

                LindonL 1 Reply Last reply Reply Quote 0
                • LindonL
                  Lindon @d.healey
                  last edited by

                  @d-healey groan.. so this:

                  component.repaint();

                  thanks.

                  HISE Development for hire.
                  www.channelrobot.com

                  LindonL 1 Reply Last reply Reply Quote 1
                  • LindonL
                    Lindon @Lindon
                    last edited by

                    @Lindon Actually thinking about this - I feel this is a pretty clunky solution, three function calls just to get one thing done. So I could do this no?

                    HiseSnippet 1378.3ocsWstaaaCElxMZq1qdccXO.Z4WJEoNRt4R6BJlabh6xVShWcWw.1kBFIZahHSZPQkTih.Trmj8y8Xresmm8FrcNhxRxNIdaFqJHIlma7imui343tJY.KNVpHVUe4jwLh0cr6MQnG1dHkKHGtOJnKUvhzrXcLYuIiowwrPhk0sdFZgU0UHoO+4WtGMhJBXEhHjWI4ArmyGw0ER615a3QQcngrWxGUx5MacXfTzVFIS.zbKaOxXZvYzArionYUrIVevAgbsT0SSAzPrVYOY3jdCkWHL1+JdL+zHFtvmzCBjQbGYTHhXTJo8PdTX2om5XBDktE4faYxAel8Q7Pdt7hbwmjpvovix4CqJKBd9kgm2+d3YUBdqXf28r6En3i0EZPr8Q1GJzLUeJPAkgkwVRkw11skfEBciQzyXcTvhbOb21yacms77Va250pWCHhXsy4TkSJ2667Dmo9NfoaKGMVJfEtqZTupwq9Ih.MWJbFMoMMJZOf9bYmC1sV8ZusdMG3g22HoQPDO3LV3ZFwf1p3+0C4wMBoZZiXLIBaquyClW5tkMNloeEMJg4lazZynOXHULfE5hRQgW5Tu1kHXKA2w.8pOZR5YwcPYv53N2dWfWmrmAHDLUstduoC734YRioaGKJls.q87veysFP9fFgJ5EufEnc+Au08V2GHlc79o0ahFAFXx3XXNRlDyvD8oXhtHmiFVXUW7v8BYhlKXtkOonYE77dIZsTbyD8WwCCYhWvRi.Skw3le3hHH3N44Sovr8XjTxH2fogYcXq.tZ1LbpnL99yexSbRDgr9P7lVafO4QX1hiRttatwlOT3gxf4zJfKSQ8hKkMLTJxyStychV7gOKUt3Se0M1.9SFMcUHlEiqGKytAEfYi6urbQUPcrLh0XrBwwpbA71CyQHUinQNAvV6f6cJqWMRBBbPhHmBvE6NeheFpZlWe+ejFt+FkNpGK0rSDtqU6s0pV6xZNyqpe+qUWV3hXpqUM1lRsHGcEIiNkollQmZHbe8rMDru4FBk6WEXxKkLTJNTv0mLlIto1DjrjIzvnRFp.S0osKpOscAl6HbnovsMsz8Io.lX8o1ecuSN9sqlxOq9EN9WZBX4n7wYQwT7kFl6YO2sBSiWw..ju6v8AlG6ikgP.0iYJMGSHV6yNGFPvzUqp89r3yzxwvVlWO.X8e7P7l7M7cOq0jhce2VWvC0CyEz5GaMjwGLrXVjeuWKnzRdwzBrXbeZiclhcNQDMgDSOmcnnqhAEi.bqfmhaBYOmdZNxR+bYjAS2TBYMaMlpfXTNXSOMyg4ucdLCmQFTUQymjfTJJ2QmM+hARchjT3d+AujCFiH6t1kEMC.ucI.9tedtT2u8KWAFWzJiPMr2csMYo8TxKhgJgSGLcRt6Xuo+1d6r4i2Z6GQ3Z1nRJZ9nc19wM2ooeIEMMZdL3fuu+Vjz5Gqe0Nskwp3aE8.VwTFB0pZUBa8bUoCSotAk3c.wWQJ9NpwgqpqC8boBfFNY5LJONAQaxnTedHbiFLFGR.en8SUbZzLjxJ+GdABHDaq+.xuSvO3jNu7Ul+ClBUFlDQ0yNZJNOdlB35oYlADmySDy0SJOu96k4U+2B26Y2kqCFd83sx0fW7ls2y3Ma5+51GzuOL+UAXWwty2+9eTehYJsAGQ0JNVH.EY8fWHBX.RDvkCXKDqJ3k8l0d3ZLyziIBSW7WvSlRebsUlR+oJIinAJ4qCLWtie+hamJAvjH8qYU09HbsSduAaauFdjQvW640AAXp3A.1udeZtD97vkvmMWBe1ZI7Y6kvmcVBedzB8A+FmOMQKGYdMADz8.ychVGHv1.oUjj+FAHAXK.
                    

                    HISE Development for hire.
                    www.channelrobot.com

                    LindonL 1 Reply Last reply Reply Quote 0
                    • LindonL
                      Lindon @Lindon
                      last edited by

                      @Lindon nope... OK I think the thing I dont get is this

                      What gets saved (in a preset) with a panel is it ONLY this

                      myPanel.Value

                      or is it also saving this:

                      myPanel.data.something

                      ???

                      HISE Development for hire.
                      www.channelrobot.com

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

                        @Lindon Yes only the value gets saved and recalled so anything you want to keep must go in the panel's value and be restored in the panel's control callback.

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

                        LindonL 1 Reply Last reply Reply Quote 0
                        • LindonL
                          Lindon @d.healey
                          last edited by

                          @d-healey right thanks....

                          HISE Development for hire.
                          www.channelrobot.com

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

                          13

                          Online

                          1.7k

                          Users

                          11.9k

                          Topics

                          103.3k

                          Posts