HISE Logo Forum
    • Categories
    • Register
    • Login

    UserPresetHandler.setPreCallback does not work properly

    Scheduled Pinned Locked Moved Bug Reports
    13 Posts 4 Posters 718 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.
    • Casey KolbC
      Casey Kolb
      last edited by Casey Kolb

      I had to refactor the logic for a few controls to avoid some weird behaviors when loading presets, so I need add backwards compatibility for older presets and session. I've used setPreCallback successfully before, but it only works in very specific occasions, and the callback doesn't seem to function properly.

      In this case, I need to invert the value of a slider (0-1) from older presets, but this code does not work:

      const var up = Engine.createUserPresetHandler();
      
      up.setPreCallback(function(data) {
          for (d in data.Content) {
              if (d.id == "cornerA_Sample_Start") {
                  d.value = 1 - Engine.doubleToString(d.value, 3);
              }
          }
      });
      

      I've also tried every other permutation like d.value = 1 - d.value and for some reason it will never update the value of the slider if you try to do any math with it. In fact, you can't even Console.print() anything if you put it after an assignment like d.value = 1 - d.value, so it seems like the callback function aborts completely.

      Note: If I use a hardcoded value like d.value = 0.5 it will work, but I need to be able to do logic on previous controls..

      @Christoph-Hart Any ideas why this callback would function this way?

      Casey Kolb
      Founder & CEO of Lunacy Audio
      Composer | Producer | Software Developer

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

        @Casey-Kolb Can you reproduce it with a minimal example?

        It might be possible that a script error is not propagated to the console in this callback so if you do something wrong you won't get notified, but there is nothing special for this callback that would prevent doing dynamic things. If you use Control.print(d.value) before the assignment, what does it say?

        Casey KolbC 2 Replies Last reply Reply Quote 0
        • Casey KolbC
          Casey Kolb @Christoph Hart
          last edited by Casey Kolb

          @Christoph-Hart Let me try to do a minimal snippet. If you print Console.print(d.value) before the assignment it will work, but not after.

          Casey Kolb
          Founder & CEO of Lunacy Audio
          Composer | Producer | Software Developer

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

            @Casey-Kolb Did you call this function UserPresetHandler.setEnableUserPresetPreprocessing(bool processBeforeLoading, bool shouldUnpackComplexData) ?

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

            Casey KolbC 1 Reply Last reply Reply Quote 0
            • Casey KolbC
              Casey Kolb @d.healey
              last edited by

              @d-healey Yup!

              Casey Kolb
              Founder & CEO of Lunacy Audio
              Composer | Producer | Software Developer

              Casey KolbC 1 Reply Last reply Reply Quote 0
              • Casey KolbC
                Casey Kolb @Casey Kolb
                last edited by Casey Kolb

                @Christoph-Hart Here's a really simple snippet where it will only ever print "Before Assignment" and not "After Assignment" if you try to modify the preset value:

                HiseSnippet 1249.3ocsV0saaaCElxIJq1saccn6dAicgCfqgcSW2vJBR7ucFsI0KNsa.ECcLhT1bQhTfjJItEAXWz62dRFvdBFv.1CxdC1c6xrCkjsjSbSSLP4Ex97K+NjmygmARgKUoDRjUw8mDRQV2xd3Dtdb6wXFG0uCx5F1CjTEUiZMIDqTTBxxZkGajZUbUT75e2pE1GycoYrPnWHXtzmxBX5LtC19ILe+dXBceVPNsev18cE71BeQDfjUrqiBwtGhGQ2EaTqfMxZstDlVHGpwZpBzokfLY3Xww7D8eASwNvmZHZfFBNJgMp8XlOYvznTgPVqNHKlWIIluq8NLBaF+rX+SiE3jYQ9y.qBWFjZbMfjUNHsZBjti8PWIKTmIwfmaZ2mqoROLbTmGJI5hJ74EraK.M35ZA3Co8j.wLKp7v50q5.eV+QkJAG2JsyQXoSTnylNc4iXbZMWIEhkmqnxj67uEyI9TYEiEQg0.Nc4XHlxz.9Fl.QFeTEsLhV0w7MyBPi1Xe+CfKzJdQbWMSvqPvZ75NuoTQOgzoBwgwcLrpkhdiHmzEyCTnFi3r4lNkeBWbPixwVNUNXhR3SqEJYbckxsnfKoNMA.MhG.9pL.EmbKRsiv9QTHna3buoTyqx4bYSO3D7c3wSKk78z0ezzfyQv2UnoOiWY8R.NKApbdQddKTlI5kB+3S7EH1TyHuLCqviBNfJq5DGSyTDRplOScsqVlpaxkQNEE79bl9YgzT5dBehICz7+KlWiRuMMY3oHDTUGme+Io42C8YDpDw.m7Q1w2tnXvm1a3m90+5u2B879cfjiotA7HrKgTolYBFqNzifNMIkMEs6PUGpEgPSi1hfPA2r+V2TmVmmro87EXMjutOCBZyVea67rZfNIq0zWr8jYDa+yaeLinGirrs5T.gFSYiFqMTkslEsI.41ocMaIEGCEKnCFMs6Vw0.O8eF2wzzfLt+wY+1Yyy89oJGuhOAJ71B1lJixl6jg3inshzZAu72DWyUcpjtmDh4JH0P0TAtJJvngG1WkoR7MmbwlaRQUWvmPFTh5yIJiMjTCwKHqQ8YF0jPV7VrGkCc1WrrNTep9cHqG9HgDNgLOWjWVJx5CQMg1RHgXatPd2nfjCBC32HlUB82atO2Ct5EffWFWLWu1FmaU8ZxGX+iw6wSYJcSnm5rylzcn5h9YlUIHaOwwCvDBjSdUsaHEKcG2BKaIh3DSj9xDA6.cDSNgNujrbnyKY5I8EjV5TSp9rRqa8dqmyJl9kuKWwDPnzSLccVKVQT.i.O1LPnXltZ4lt3OUZZ3P1qiaJ7l696O9ed8a2JH+.HHT.9j7yinh77XmDO4fGyOPoAr0O.Fn.Y8Y1vqWNDpGNxW6nND7iOieHkruHVezEeLFFCPPh7w54mMvLDTp.Cfy+fr4QWHWTOIOntFCLT+RGX3pBw6XOfocGuXLVXAXDZw9g.ioiY8w1c87nt5L.tpcueXYmo58r86IhL8y2ACW8PhfMzAXHzS0kB6NmS8Ul11ELORkPW2PaNAFR4jXhyfUpvFFZqTgMlJDR5bkhW4l7zlYPtaDyAvDOdt0h16Xncl8llsc8Z0MI5rW45ZB+60.gVrM2eIrYikvlGrD17kKgMObIr4qVBa95K0Fy37MizhfjxAfwftwurZYkLYabVH5+Aejij8.
                

                Casey Kolb
                Founder & CEO of Lunacy Audio
                Composer | Producer | Software Developer

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

                  @Casey-Kolb I wonder if it's because Content is a keyword.

                  Oh I know what the problem is. Do Console.print(trace(data)) and see if you can spot the issue.

                  If you give up and just want the answer:

                  HiseSnippet 1206.3ocsV0saaaCElxIpq1cacEXO.DF6Ba.WW6lttgEDD+Sr2LZSpWTZ2.5FJXjns4hDo.EURcKBvvPue6UYOR61c0taWlcnnrjbhSWmwptvI77cNjemCO+vwRgKMJRHQVkOZdHEY8g1Ny4pY8mQXbzn8PV2zdrjFQUndyCIQQTOjk0FesF0p7lnju+Z2dDeB2klKBgdlf4ReLKfoxkNtyiX99CIdziXAEz9AcF4J38E9hXfIaX2BERbOgLkd.QqVIaj0MF3wTBoihnnQHqM6I7l6LSbF2n+yXQri8o5EsQNvFYDOT36oYrVJp+Llu23EdbDB1kw49+FF++Ss2m4wxjmGG9jD.btEEiGVkVldarD8ZWjdsJPuUPIqBTZSCktisiqjEpxQz74V1i3JpbBAB6EohQWTo9kr6K.M3plAjSnCkvhLKp8vVsZfgepuckJPnORgOkHwwg3cvC3SYbZSWIE7kmFQkl6+ugv87oxZZKhCaBRFvIfOkqA7anghL9zZJYLsAV+atEfF8I99GCWt0lDycULAulGQQpieckxUJOQHw07vLNVKrYJ+qWo7qqfS+XS.MZx7v6rCt5i3hiaWsdFHrIK9Wv1HgOsYnjwU0p1iB6ME2E31Td.roUAVkorWySI9wTv4aiuKNjHinC8EDUsTf5aiu28xzhEgIXGErwSwame3q3T6NAh2W5PWn54UL+dd8sWDJvB9ABE8I7Z0qniGfJWFZxjUhoiTRgex8yJf0Uax2lg03wAGSkMvF2cghPJ3x401WedcwxNWyEWAEE7Qbl5IgT90ULhRus00.orBTUkTA7woU.N9LOpDwfD8OvN4xGkP3zNI3e3W+ycQOczdPxyhsA1Q3TBoRES6.V6QOE5KYJrJauGM5DkHDZwzWDDJ35y25VpzNAlCMIS.tqOhANp9nuscQQsQuLuQ1m0Yd1hN+TmyXdpYYBv+RmYT1zY4MDwxNobzPnam1qsmTbFTVgNd5hdhkuAn9eqsgonA4R+8K9sKVV58SUN4KIRT5Mkr0EPU02GNjSo8hUJAu5WkTc1XAxfWFR3QPZQT2HXqhCzZLg3GkqRR6T4pMWmdFck8DxdLpuDTtXHgF7W.qcqLi554s5i3PJGlGrZr8n9T00fMjbpPBQH8PlhXoLaD30dzdBI3aK4xGDGXBDZxuUhHy5uSeudHjBH.fmmTH2p4VW5qw+Q4f3eL4LdLKR0E59lEaROgFq5OYVYX1ghyFS77fby2U6bnDo6rdDYOQL2S6oO2.rOzvzDgtLRdNzkQVDouBZky0E3YkX1+q004EU+72VnnBVDongNrWsnnuye7p2rK5pSMg40BuXehZ4g35WtjB.o5KM4TOcDRETyK9xl+2lr+tRw6XOlobmsZNVZEbD5z89fiouG5irGLYB0UkSvMsG98ued7C5PQrts59DX3Jj.XCEfNPKMWJb5bN0WOAxpjdVgYcK8ZcDvgx8RVbA7kB1Vu1JEr8BPT.wUJdgqYBi9EW2LQBvIdxiMKauudMNazhscqlsPAvi+dgqq18uKL9Z01b+0vlsVCadvZXymuF17v0vluXMr4Keq1ne2c2XkHvTN.BFOHYvlkk4InIYgn+gx7122
                  

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

                  Casey KolbC 1 Reply Last reply Reply Quote 1
                  • Casey KolbC
                    Casey Kolb @d.healey
                    last edited by Casey Kolb

                    @d-healey Oh yes I had tried doubleToString in the example above for that very reason, and that didn't work. I wasn't even aware of parseFloat in HISE haha. I knew the string must have something to do with it but couldn't find a way to convert it without the function aborting. Nice one!

                    Casey Kolb
                    Founder & CEO of Lunacy Audio
                    Composer | Producer | Software Developer

                    1 Reply Last reply Reply Quote 0
                    • Casey KolbC
                      Casey Kolb @Christoph Hart
                      last edited by

                      @Christoph-Hart Back in business! Working now with parseFloat

                      Casey Kolb
                      Founder & CEO of Lunacy Audio
                      Composer | Producer | Software Developer

                      d.healeyD 1 Reply Last reply Reply Quote 1
                      • d.healeyD
                        d.healey @Casey Kolb
                        last edited by

                        @Casey-Kolb

                        Oh yes I had tried doubleToString

                        That does the opposite.

                        I wasn't even aware of parseFloat

                        Was only added a few weeks ago.

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

                        Casey KolbC 1 Reply Last reply Reply Quote 0
                        • Casey KolbC
                          Casey Kolb @d.healey
                          last edited by Casey Kolb

                          @d-healey said in UserPresetHandler.setPreCallback does not work properly:

                          @Casey-Kolb

                          Oh yes I had tried doubleToString

                          That does the opposite.

                          My brain is fried...how did I miss that?

                          Edit: I actually tried Math.round first and that didn't work.

                          Casey Kolb
                          Founder & CEO of Lunacy Audio
                          Composer | Producer | Software Developer

                          d.healeyD 1 Reply Last reply Reply Quote 1
                          • d.healeyD
                            d.healey @Casey Kolb
                            last edited by

                            @Casey-Kolb I think these t-shirts are going to sell out fast!

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

                            Matt_SFM 1 Reply Last reply Reply Quote 2
                            • Matt_SFM
                              Matt_SF @d.healey
                              last edited by

                              @d-healey but it creates a special bound between us all, doesn't it? 😅

                              Develop branch
                              Win10 & VS17 / Ventura & Xcode 14. 3

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

                              18

                              Online

                              1.8k

                              Users

                              12.1k

                              Topics

                              105.4k

                              Posts