HISE Logo Forum
    • Categories
    • Register
    • Login

    Automation doesn't redraw panels

    Scheduled Pinned Locked Moved Bug Reports
    13 Posts 3 Posters 1.2k 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.
    • Christoph HartC
      Christoph Hart
      last edited by

      Which host? I am using this technique on HEXERACT and got no complaints so far...

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

        @christoph-hart I've only tested in Reaper. I've tried setting it to use repaint() and repaintImmediately() but it didn't make a difference.

        Here is the minimal test I did

        HiseSnippet 1336.3ocsW0saaaCElxIJHwaFXEaWsKF37ECRaIN1ascEqHnt0NY0XMsF0cYcXqnfVh1hHRjdRzNwqH.6l8lrGj9JrmicydCxNjTxR9mjTOfpKRBOmyG424GxyIciEdzjDQLxZmWLcDEY8g18lxkAsBHLNpSaj011cioITI5QSGQRRn9HKqM9dkVqc1Do+92G7HRHg6QyEgPmHXdzmvhXxboca9CrvviH9zWvhJX8sa1wSvaIBEiAlrgcczHh2ojgzmRTlUxFYs0g9LoHtmjHoIHqMejveZu.wYbi8mvRX8CopEMP8fMxH9HQnuhwJonVArP+tYdbBB1kt49+FF++SrOl4ylIOON7QZE3bDEiGVktN503loW8UQOqBzaSC8tkcOuX1HYtFE29.6NbIMd.ARAEokwVTIqsraI.K3xZQjSoGECKlgv4t0quK9N0q6d+JkqTFRDIR7DRLtKgSCwGfyfNjJaIhFI3vBmpZsMpp.kC4Ij9WCDsVCjJk03qAEVNUIgghyZA+rOj0SptKtZqPF7W6herXBMF+E31wjgCY7goX2eeba5.Fmh8RQg6SCHSXP8Sgc9Xw3DZ195LXL2SxDbG5DfMtUJ+lJkwvGa.1Hplm5To9tF4opUe6ueOxDJVFPAuLbLEOHVDoWFoNBrFXt4x.VRMehjTSqtMTFbhF1AFUPTQu1Q4MJ.WX9EMLgtzYmSOeHH3lqnfMFNhAW0abHTApoVBkmvjrIL4TCqm2dU5xmkHU2aw.yJbHuDuGNe0O6h2G2ndccjewcfSOKy0NlHCpES3CoNWY.3qlcj6NKT3TMhwq5Nm.x4UccW5.UghYG3muTvzcdqWH9n9zEflZNI8bITokscYYhhe47IQRG0i86zpt3CN.2.+.itjri135hwb+Y7y0E+cKX0MdVwzQvqMxNQQTeFjFCm5bk15Enhz9KYvE4KuXVw0EKbkqq5XdtXrDtBkeuXnaZHSkX0IxBEroIEnxXg718ywXbPUsTlMOlxFFHcTUP5MzE+kXm8VXGfphEyjYNk4WCqM.Za7vvPmbj8GZZWTclwCUdlQXA6XRZzhVt3N+bpmz4WpmWAlQ68LdTtheh4KCbbW1xW4deytBg5r.JVvepPReF2ws7aJuS4KJunlACVkJ0imwhvPZ7pzp5bFeMvb3ii5Si20bmOyNnAx7cn15cqCkm4g7BFJ3c3L4yFQSWe8sXQocBftYkRIHXpT2KqRVuLUYIh4qm0P2UAo4d57A3+7e96GftJv5qzofM8Wx.CSMf9wNsgWgTsRS4AvsQzXISEBrZSm.ynXZrticaZxoRwHssosrfwgtQpd9rwX9CRyo4yz7qMOSUrLSva62LPWrLSRyeq47c9PVep8U04CkUvCv25xKu7uT6PdwsR5GS+rK0RS5FNFvzkDCiOAc4AWpzn4EYFrZa6dgLevfDn8VGd5fdf0yEC19Fi3mWbvu7XvaeUyQjXXOJtYYwsAPBQ8lZNz6sbDS8JsISt7nPv.YBeU6t4mRSMZZpB3dwbiCoF4Q0SbZwQWWiQ2p+NOY46JcukcWlzKX07szJ3q5dz6Y9lNHbE6CGL.dXLmraZezK++N06ZPESeogPO0XFTXY+zwQ8fJbOJvDNT5.GjsUI0SKl00UqUQldTtudAb83xTkMTqsRU1HSIJh3EKdsm4ME0n1aqk.bhquXri8wp03YOln3cDL++q87TAh8.luZDe8Zi3aVaD2dsQbm0FwcWaDe6Zi3dWCB0+r0CGKEQlqEfftGpeK2x5PNAppzUfn+Ci6LBDB
        

        0_1535972640702_Peek 2018-09-03 12-01.gif

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

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

          I just tested in Bitwig and it's exactly the same so I don't think it's a host issue.

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

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

            @dustbro Kindly tested this for me on Windows and the result was the same for him.

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

            1 Reply Last reply Reply Quote 0
            • Dan KorneffD
              Dan Korneff
              last edited by

              Here's what I'm seeing

              0_1536067340517_ezgif-1-f165fcc369.gif

              Dan Korneff - Producer / Mixer / Audio Nerd

              1 Reply Last reply Reply Quote 1
              • Christoph HartC
                Christoph Hart
                last edited by

                In your example you don't call Panel.repaint() in the control callback, so it's no wonder why it doesn't repaint :)

                Actually the recommended way of handling this is to just calculate the value in the mouse callback, call changed() and do all necessary UI updates in the it the control callback that's about to follow.

                This way you make sure that it works in all scenarios:

                
                // Define callback behaviour
                Panel.setMouseCallback(function(event)
                {
                    if (event.clicked)
                    {
                        //Save the value from the mouse click
                        this.data.mouseDownValue = this.getValue();
                    }
                    else
                    {
                        if (event.drag)
                        {
                            // Calculate the sensitivity value
                            var distance  = (event.dragX - event.dragY) / 100;
                
                            var newValue = Math.range(this.data.mouseDownValue + distance, this.get("min"), this.get("max"));
                
                            if (newValue != this.getValue())
                            {
                                
                                this.get("stepSize") == 1 ? this.setValue(Math.round(newValue)) : this.setValue(newValue);
                                this.repaintImmediately(); // <= BAD, do not call this here, but let the controlCallback do it's work..
                                this.changed();
                            }
                        }
                    }
                });
                
                function onControl(number, value)
                {
                    // Call repaint here. Fun fact: in the new HISE version, repaintImmediately and repaint() do exactly the same thing :)
                    Panel.repaint();
                
                    // Theoretically you also need to call this here. BUT: if you're automating this control, it will fire in the audio callback
                    // (or whatever other high priority thread the host is using for automation).
                    // This is bad practice and will make the new AudioThreadGuard go crazy. The solution to this problem would be to 
                    // make this asynchronous somehow (the quickest and nastiest hack would be calling this in the paint routine of the panel
                    // that's about to be executed asynchronously).
                    Label.set("text", value);
                }
                
                
                
                d.healeyD 1 Reply Last reply Reply Quote 0
                • d.healeyD
                  d.healey @Christoph Hart
                  last edited by

                  @christoph-hart But for most of my sliders I don't have a control callback because they perform their action through the parameter ID system which doesn't trigger the control callback.

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

                  1 Reply Last reply Reply Quote 0
                  • Christoph HartC
                    Christoph Hart
                    last edited by

                    Ah, I see. In this case you probably need something like a method

                    Panel.set("repaintOnValueChange", true);
                    

                    that handles this automatically. Shouldn't be too hard and is a sensible request. You're still on your own when it comes to update the label though - this would be the line where you have to leave the comfort zone of the parameter ID system.

                    1 Reply Last reply Reply Quote 1
                    • Christoph HartC
                      Christoph Hart
                      last edited by

                      Actually I took a look in the source code and it should already automatically repaint itself if it's connected to a parameter ID. Your minimal example is not connected.

                      I think the reasoning behind this solution is that you either:

                      1. Have not connected the slider to anything. Then it's just a dummy control and doesn't need to be updated from external automation - like your minimal example :)
                      2. Have a script defined callback. Then it's your responsibility to call repaint() in the script.
                      3. Have the panel connected to a parameter. In this case the engine will call repaint() for you.

                      Do you experience this problem with real-world scenarios?

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

                        @christoph-hart I'm putting together a more realistic test now and will report back soon

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

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

                          I just edited the example to control the release of an envelope for the sine wave generator and the result is the same.

                          HiseSnippet 1579.3oc4Ws0aaTDEdWmrUItDDUTjP7.ZvOf1ERbrglREUQ0oNIsVzzZEmdAAUUi2cr8nt6La2crSBUQhG4GB+C3OP+IvOk9FOFNyL6MeIWgBRv9PhmykY9NWly4Lsi3tj3Xdjg4h6cXHwv78r5bHSLn4.LkYzZSCyErZGQhIBi6dXHNNl3YXZN28jbMWbdC02auycw9XlKImjgwS3TWxCnATQN01M9Npu+1XOxdzfBReiFsb4rlbe9P.IyYUyHD69RbexCwRwJYYXdks7nBdTGAVPhMLm+tbuC6LfuOSK+Snwzt9D4h5FcfMRSdatumDwxeazb.02qcpEGaXXZ0N29mSa+W2ZGpGMidte3CTLP4ZTzeXV5zfW8KI7LK.u40v6ZVcbinghbNRrcUqVLAIpGFBAEgkVViR+gkUSNHASTM.+Rx1QvhLMruYsZKiVqVMmauT4kJCAhXAZDNB0FyH9n0Qop1mHZxCB4LXgcEE25UjJkqxCvcOEUTb0prTYk9UgDK6JXee99Mg+1Eh5wUVFUooOE90xn6yGQhPeNZyHb+9TV+DcWcUzljdTFA4lnEpKY.dDExeJry6vGFSR2W6dCYtBJmYSFAnwYoxudoxH3i1CoIU0UdpDOGM8D1xuUWsCdDAIFP.qzeHA0KhGnVFHOBjRwbwECnwU8vBbUE6MgzfmnTacMKvqnVaKsFoBGo+GwOlL0YmCOOvI3jynfLZLh.S0cnOjApfVLgESEzQTwgZTOt7xvkGMVHu2h.jU3PdFZET9pu2AsJpV0Zqob8StELx9o11NXwfpQXVeh8I5A9xryb4Legck.JqhyXDvGTwwYpCT5KxNvOaJuoy3ROgCR9ox.0IcBxABHUKc6RCEE+xwSrfD1g9SjJNn0WGUGcGMu3ziVa57gLuL743f91Ij5LOqHRHTtQXehB3NP5d8lRfixWdTVJ0QSbQqsbu2kOT.WbxuMz2IwOIilpnWgzzjHAjOLQv5145nsJYFTpL2mP6O.rBHuQsgNnu.YuxD6.jJLY3K0nz+qe0dPyhM78sy0raecShJYB2WZYZhEjiJHASJ4j67tDWg8OTKOsKE1qnsnbFOk5IFX6LsjO2415cEb0oNTDm8Ptf7HlsS4WWdwxGUdRN85MKVxRlQbeeRzr3J6WFcJpYyFFzkDsr9ldpbPaiw6KckyWeIWc46BBxYsXTwiBIIqy6bUeFctLRp+C8vJk.PPTgpC1RocvjokFTO0DFpdIFJrmMUvu7aMLNIkU2iSTV2UYFJ+3VaBUfj8QSfC.wPRjfJ8DlaRFACnn6ptn0lj3WJ3gJYS5WAs7OSDeP1A9y3FGlOPyO1XeYNSFg2zsw.UNSFkFupw3s8LL+DqSpsmQZdOn9UN93i+U4NjmiKo9gjO8XE0319CAcZiifYmfV7fIUJbbR5opVvpiO0CDHF5s0hkLkmT5zHYKO4.GPmV7PewVrQDev+AilkrMR1KZsKwmfiIFPghhd+fhCH1pwX90ENyf4AEmjL2u9lm2.NcXOJtYowhdPPVViNW0aMcTPV0erjjoGwBFzi6IaiN9zexQdSX.27FaLK4nTxdsGVbj3KvHg0l4Hgy7h04DtWypMU3NX13szLvq7l56X7lLf8RVa0qGT5MGryas8ytrSSe4fx6qgxUs5.sBUu2QAjORsF8T4rd2ivHQRm5o7tme+79tmvy86ddjq.N88f1lwg73w13Nj.5dPRebQhONFllm7pckA4hzaxwQyj0auy1fMNSc5fECiTYKa.SswDikcL2k5ANieoof7y30Ny+uviw96+l2e8BEyc9bsmw6EWLEicnAg9jrp25pCSVSuHH2gy3gC3LpawDfcIhHZ+9x9I4Pel1yFBAzOKmx0aj1hnPc2G.Ig3HvMQd26JNsv0GaogKRdwD8ei56y8+y565W1zGdJVDElev5gCC5.0UcI.RXvDBvAYYVRVaTutlbstvJySs.lr53Dl0kqMSXVOk4+HmQ.1Mh+BW8juxb4ETT.6lolaaQqcjqQYi7J8MAP4vW35Jc1q.dmYqwWcg03quvZbiKrFqcg03lWXM9lKrF25TzP16YigBdf9pGPn8VpmZXZtECCYtprbi+Dp9lvc.
                          

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

                          1 Reply Last reply Reply Quote 0
                          • Christoph HartC
                            Christoph Hart
                            last edited by

                            Ah, OK, then I'll take a look why it doesn't behave...

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

                            46

                            Online

                            1.7k

                            Users

                            11.7k

                            Topics

                            101.8k

                            Posts