HISE Logo Forum
    • Categories
    • Register
    • Login

    Preset Select + Mute script (to avoid clicks)

    Scheduled Pinned Locked Moved General Questions
    21 Posts 4 Posters 1.1k 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.
    • DanHD
      DanH
      last edited by

      Hi guys,

      So I tried to tinker with a script from @Natan which would mute my ShapeFX modules when changing presets (and thereby avoiding the clicks they produce when changing). I've showed it to @d-healey and he's described it as "crazy code" (a favourite term of his I think?!). Of course he's absolutely correct, but it was working so I left it. And now it's not working :smiling_face_with_open_mouth_closed_eyes:

      It uses a timer function to mute the modules, but I'm out of my depth with timer functions and don't know where it needs improving. Apparently the timer will just run endlessly. If any of you geniuses would like to offer any help, I would be super appreciative! Code below (the code does work with my next / previous preset buttons weirdly):

      //////////////////////////////////  PRESETS  ///////////////////////////
      
      //PRESETNAME  MUTES
      
      Synth.startTimer(0.01);
      var on = true;
      
      const var PRESETNAME = Content.getComponent("PRESETNAME");
      
      inline function onPRESETKNOBControl(component, value)
      {
             
      	if (Engine.getCurrentUserPresetName() == "")
      	    Content.getComponent("PRESETNAME").set("text", "CHOOSE PRESET");
      	    
      	else
      	    Content.getComponent("PRESETNAME").set("text", Engine.getCurrentUserPresetName());
      	    
      	{
          Synth.startTimer(0.01);
      	}
      	ShapeFX1.setBypassed(1);
      	ShapeFX2.setBypassed(1);
      	    
      };
      
      Content.getComponent("PRESETKNOB").setControlCallback(onPRESETKNOBControl);
      

      And the OnTimer function:

      function onTimer()
      
      
      {
      	if(on)
      	{
      		on = value;
      		Synth.startTimer(0.3);
      		ShapeFX1.setBypassed(1);
      		ShapeFX2.setBypassed(1);
      	}
      	else
      	{
      		on = true;
      		Synth.stopTimer();
      		ShapeFX1.setBypassed(0);
      		ShapeFX2.setBypassed(0);
      	}
      }
      

      DHPlugins / DC Breaks | Artist / Producer / DJ / Developer
      https://dhplugins.com/ | https://dcbreaks.com/
      London, UK

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

        @DanH said in Preset Select + Mute script (to avoid clicks):

        he's described it as "crazy code"

        I stand by this definition...

        You have a variable called on which is set to true and then in the timer callback you set it to value, what is value?

        In the timer you check if on is true and if it is you start the timer, but the timer is already started!

        Then if on isn't true you stop the timer and set on to true which will restart the timer. So your timer is never stopped.

        Check this snippet to confirm (set on to true in on init and hit compile, the timer will run forever)

        HiseSnippet 738.3ocsU01SaCCD1tzLs1sNMj1OfH9TqDqJcCXSpZZL5KnnsVpH.ZeCYRbnVjXG43vVEh+T6W19GrcNtPBaADpR3ujd2yctO97ycdlT3SSSERDtwQKRnH7Ks7VvUyGLmv3H2gH7qrlPRUTosw0dKRHooz.DFu19ZG3F0Q4qe+48HQDtOsvEBchf4S+FKloJ7Na2uxhhFSBnGwhKE8V655K3CDQhLfOqY4fRH9WPNmNknCqlEB+rQALkP5oHJZJBWeOQvBu4hevMweBKkcVDUazC4Aajw8XQTflwZunAyYQAyt4bmhfcYVQUXMSU3MVSXAra8WTMdcNfcQFkqG3ZOD85UldNOd5gKQu5F5stkmujknJPzb6EVtb3hJj.WAkokIVTsegsFHfH3ptwjKnikfwsYzdGGmMs21woS+VMujHsEb6OYqjYTvtUybQQ2TEQpzWZx185zOLi6qXPbB9Tghd.ucmlW0rQyqaZ+uPggUhooiTDEA6WUvl+objVMsgEKztslWFh0w37JyG8JmyY7.ZHiSC5W.TE8MnWa9PiRoUucgD.phsRjrjd8KuOvIJUDQ6lHYbU6MNxcxnCsc8rO73oScmt+FPzUVBZyyhOiJ2z9RRDbxtoX.232URYc+RpxJdey8bo.EbWNScPBkeeBMzRwA7qicGRTDs1aoOHtDpTwzT.OjdIzTaThMrFRSu.JFPa8+ISglEQPVDQc2NH8Xik.PM3NRUsbjmxTKJOV4Ios5wR20slwT9yqlu0pfuPU6oluKGR0xZTXH0WUP15Vi+9S+DIzghLEie9DhRx9InImlE6Ayr8o.S3bnUB7gqoUTFaGsstx3Q4A4F+AVKA6oswKA6cCHJl3KEm5a5NziAedtGfS77WCZ.OKA118P4cLPdVNccPwvz4S880kh2Bbu5bd2Jjy6Wgb1ZExY6UHmcVgb9vJjyGevbzOL9kLkH1zl.NlMJeLBFOhS.UVthD8W.pv3ic
        

        Edit: I just realised I missed out a key part of the logic in my snippet. on will be set to undefined in the timer (assuming value in your script is undefined as it appears to be), so the timer will stop after a few cycles. I've updated the snippet now.

        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

          Can you post a minimal snippet that demonstrates the shapeFX = click issue?

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

          DanHD 1 Reply Last reply Reply Quote 0
          • DanHD
            DanH @d.healey
            last edited by

            @d-healey I'll have to post a project as you'll need presets...

            DHPlugins / DC Breaks | Artist / Producer / DJ / Developer
            https://dhplugins.com/ | https://dcbreaks.com/
            London, UK

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

              @DanH No presets needed. I can make my own :) just the simplest example that demonstrates the issue. Preferably with a sinewave generator rather than a sampler.

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

              DanHD 2 Replies Last reply Reply Quote 0
              • DanHD
                DanH @d.healey
                last edited by

                @d-healey Ok! Snippet below:

                HiseSnippet 2126.3oc6ZzzaabbcnjVWSZKm3fDzdbAQOPgnnPR8ISgAW8AoDgkHI3Jaohz7wpcGJN0K2gX2gzV1U.8RA5egbK.8dOVfdK+.5gTzyEH.8PQu4+AsuYlc4NKEEEKAriUQW.a348l279bdeLzM8o13f.pOJU5iunGFk59ZlW3w5raGKhGp1dnTOTy7fsaVo5o50LMeRE8UQ6bQOqf.rCJUp42musToW.I9dc4crbs7rwwfPnmRI13CIcIrXnMMdLw0spkC9XRWkculQMap2tTWZePjlWKOpmk8yrNGW2hus4zPotSEGBi5axrX3.TpE1g5bgYG5y8j6+oj.xYtX9hBHS3fjfqRcc3RLGJZ2NDWmlQpd.BkRqYrgXdog3C0Nh3PFBO1f79BD5wTnZORM2jDuBphW9oW7RoHdKHEOvsX6S5whwvks6oUyig8aaAt.UwRtWzb+oEz1kB6visRWqmgq5CKFRQtMxmeY80ymeoewhYVLymdie55MaUwrxwl55SXWxyRty5aeTEc8idxwULWLC3oCX5Cr70M6X0CW8zB5ORWD8sx4XVk1sw1rbYE3zAjY4h0Uno3jnoXVopH2P.yxmwi27ykek7E3n3GD0CNBleerXqwLPQhejdjUCXxtzt8ndvhbYi2RHiHdtDOrd69d1LBbvTO4Vdb8F6vOBepaN6H5WFXiae7RKl4UKlQW9sXlzj154p3cNbNBt022G16SBv9M8wAXF+lPtkzezizylEHMMmpaV5VAnLWVF9ErrKqmc2CZzvrRnFJD8zgLG6FfmsC8FEYU1DpvWqeI8kvehhJ3rIJXNmDcjyeLnBYwkB+wjzAtOQpCgdlcsbcOCR2jaLdMo6UwuVmxvM7xsTlWkIclKynOJp1sGKtviyEz0wgVZEVhyKQTADL.RyRRKV5zhPUQPiPSGi4aUoMXBltIY6tLNBHlegWMhYGsWnXd8rJ+DXU9HVc4UsK47528LrezMiHKDj0KYZUsqOspZVeao6WYiTuZdDVidXuqKYKJLlAR6NenTArmIR5tXXR2is3Li.oVuql3eW.IDX0xdNVLKTpemVoMVI42fF0qWms0pGdZkM2UrF9qSKwWu9v0+5RG31H+Fx0qs5purzozm8zP7.8kJ0dMysBoe+82+webys5r1ZCou8GyYUI4ZoNITj4kJxCBUDSWhC1WnIOXXc982tV8Qzme61FSyYbes3KNW0hfdRs83FEnfTnMFr68v9LB2klZO7.nQAY0szZ6gCdFDoAt5gWbgxarvRyRNW0kZwHdmeLIza7dZpfJfdQrB7kFWDufX7bhCqSLfAFcvjy6D2ghdGiPYTJPumlLU1N9zmC40PmcdTSJ2WasBajey0Js9FagHLbWEDE2ZyMJUbyhETPTThoDPPgBEVGILIy8IozD4DyxiUMsFf2oOiQ8x9YhqeKODUkWzyxK.tyDrc.bd86x2RaK3Na7dDMS3eMG.O4TvUOV31kjfqhqp0.pOH+7NyRfrd+tRQfSSAILIfS3V2VfifBX9bYtdH2zHeK+eMBN7u.RbvCnGFT7Stw6lwgAFesRX.5yFILvfMZX.5yM5EkanlCu+pgsijPFt2zdsRIh7KTiHO654SOKen9IziFGwczDcb2k5DdKwlbF1E00J9fQ0MBX3dljWhU6LOne61DXWZZ5N6f5RbbbwMoADdB3388yMTUKsjl1Cs37R8hNuO.Ec5a6pnS4+MF7VCPoxDtY8j1rEltzHJJltxo+8ux.c0thgdyoN8csXIaXmayBQv0V0Ni4c+BWnXWnZqdizE+zJtOTqIgY2Y7x6biQdgDpuok2vYhVTS1gcrvtfV0SeyO.jpn7QRQ4dZm.YIEsjHDjORrtM0uq99XOrO2lVXBip98S6np8l5QUaXy.Q3XeHAcOZ.j2Q4jGAWQUb6gY88RtcInD6hqdUA0SYe20HBXQUfMs7RbXv5DmzQDk6T+P4Jd7rjlXPabZDXCJK21odcnYen9hHmdAUBiAWTE7AV9NfewNQ.57ScTw3mZO+3FK9NuSO09auzSyOch6M7vBoijQSR2dt3JdCvtP6YBY7CfJMss56xhfl7p0QTOZuNTORBmdKLymb943DwRiUg1lwf4thg7gFsvtXq.rZgoCgwKs7ORV4aVrEEldawj7W+LMo3pyyGn++FkUl+1VYkY2MufB+eXzzFgCpF9FZw8doJB612e.9ckI51gXEbHtcTcpe3Oz6uWlCqkR6qBfG..ZB5fZgqCoOOAne+eyH40JCiFCv9AVPd.XVJ06kIJhBSE1B6zOYMzs6ynmOxqBKJoVyqWeVhhb9jA3qsvzqKKM9UItPuuASpZxLGLfZQ6ymV7HKHSEu2XXjFSndtMFBE87vt7mZH0b7GEPtNOeMWDLwdNhE+a3KDYA95TgHKDgDM8waEGW71bZi5rkFmQb1Bfyjy90kGuy90kUb1ec61evT4rQn+uyNQ8zGDVOsEFrxmEVwWBRWBKYZlVTZWkY291u4a9Wk2CbNw9FiUW8eT9DL6PfZ2PX5+w8+qk2y+BUXnk9U+yxmnLgq3rp5iwuDqDB.P+yku0Zku6ve1JgIc+nJHQlccNjqcPfu6ub3Re2dXWqD08NIwqBf9kFiYTgZPiP9rlTWK+QqZN+ahRUStzNWkt8zJBuaRvjeaRfEgD2dD32WCF56c.w8sbxfIaRfJN2d7f+TMXV7h5hd10+wuo82FNx2F7nqksO8qrk+TF7br2U.AzaOw+CCRqcDes9vePGMs7qjm+bojux1lOXxm.1mwSSwYflUmAZVaFnY8YflMlAZ1bFnYqIRC+Ya3sY1UF+C.ZVQ7aljJk7kqDWEP+GXvDLvI
                

                I think that perhaps what is going on is that when I change preset HISE updates all the modules with their new settings, but gets to the UI knobs and buttons etc slightly later, thereby allowing the clicks through because the script hasn't got to the point where it mutes the ShapeFX etc.

                DHPlugins / DC Breaks | Artist / Producer / DJ / Developer
                https://dhplugins.com/ | https://dcbreaks.com/
                London, UK

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

                  So to recreate the issue all I need to do is save a few presets with different shapeFX settings and switch between them?

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

                  1 Reply Last reply Reply Quote 0
                  • DanHD
                    DanH @d.healey
                    last edited by

                    Yes, but make some super whacky shapes and crank the gain up - you should at least see the meters move when you change presets even if you don't hear the clicks. There's a lot going on in my project that's hard to replicate in a simple snippet to get exactly the same behaviour...

                    Thanks for helping!

                    DHPlugins / DC Breaks | Artist / Producer / DJ / Developer
                    https://dhplugins.com/ | https://dcbreaks.com/
                    London, UK

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

                      I'm not hearing or seeing an issue, the meters jump, but only up to the waveform generator, it doesn't pass through the the main container or HISE output because HISE auto mutes the instrument when you switch presets. I disabled all the scripting before I tried this btw because I didn't want it getting in the way.

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

                      orangeO DanHD 2 Replies Last reply Reply Quote 0
                      • orangeO
                        orange @d.healey
                        last edited by

                        @d-healey I think this is happening on the exported plugin, not in Hise.

                        develop Branch / XCode 13.1
                        macOS Monterey / M1 Max

                        DanHD 1 Reply Last reply Reply Quote 0
                        • DanHD
                          DanH @orange
                          last edited by

                          @orange It happens in Hise too

                          DHPlugins / DC Breaks | Artist / Producer / DJ / Developer
                          https://dhplugins.com/ | https://dcbreaks.com/
                          London, UK

                          1 Reply Last reply Reply Quote 0
                          • DanHD
                            DanH @d.healey
                            last edited by

                            @d-healey Ha, I thought that snippet might not do the sameas my project!

                            I think perhaps my script needs to be a lot more efficient in order to speed it up. Quite often when changing presets the panel and knob changes lag behing eachother when changing state. I need to get better at Arrays for sure.

                            Thanks for looking at it!

                            DHPlugins / DC Breaks | Artist / Producer / DJ / Developer
                            https://dhplugins.com/ | https://dcbreaks.com/
                            London, UK

                            ustkU 1 Reply Last reply Reply Quote 0
                            • ustkU
                              ustk @DanH
                              last edited by

                              @DanH How many components do you have in your interface?

                              Can't help pressing F5 in the forum...

                              DanHD 1 Reply Last reply Reply Quote 0
                              • DanHD
                                DanH @ustk
                                last edited by

                                @ustk 60+ including tables, analysers etc etc..

                                DHPlugins / DC Breaks | Artist / Producer / DJ / Developer
                                https://dhplugins.com/ | https://dcbreaks.com/
                                London, UK

                                d.healeyD ustkU 2 Replies Last reply Reply Quote 0
                                • d.healeyD
                                  d.healey @DanH
                                  last edited by

                                  @DanH That's not a particularly large amount of components so probably not the cause, but it's easy to test - make a backup and delete components one at a time and see if the problem goes away. I would suspect your script is causing the issue since I couldn't recreate it with the script disabled.

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

                                  1 Reply Last reply Reply Quote 0
                                  • ustkU
                                    ustk @DanH
                                    last edited by

                                    @DanH You got some controls but nothing that should add lag to the interface... I got lag in the past with 700+ components. If something is not going as expected it's definitely about the code (or when a slider sets 10 modules at the same time for instance...)

                                    Can't help pressing F5 in the forum...

                                    DanHD 1 Reply Last reply Reply Quote 0
                                    • DanHD
                                      DanH @ustk
                                      last edited by DanH

                                      @ustk I've no doubt the code can be better - it's the first one I've ever made! There's a lot of repetition. I was hoping to group some things into arrays but not having much luck - Can you put components into arrays?

                                      For example I have a button which switches on/off several panels and modules. At the moment the callback is one long list of about 15 lines, for eg:

                                      analyser1.setBypassed(1- value);
                                      panel1.showControl(value);
                                      etc x 15
                                      

                                      Can I get the list of components / modules into two different arrays and do for example:

                                      allanalysers = [analyser1,2,3 etc];
                                      

                                      and then in the callback:

                                      allanalysers[i].setBypassed(1- value);
                                      

                                      ?

                                      DHPlugins / DC Breaks | Artist / Producer / DJ / Developer
                                      https://dhplugins.com/ | https://dcbreaks.com/
                                      London, UK

                                      ustkU 1 Reply Last reply Reply Quote 0
                                      • ustkU
                                        ustk @DanH
                                        last edited by

                                        @DanH

                                        Can't help pressing F5 in the forum...

                                        DanHD 1 Reply Last reply Reply Quote 0
                                        • DanHD
                                          DanH @ustk
                                          last edited by

                                          @ustk checked this out recently but will go through it again!!

                                          DHPlugins / DC Breaks | Artist / Producer / DJ / Developer
                                          https://dhplugins.com/ | https://dcbreaks.com/
                                          London, UK

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

                                            @DanH Make sure your code follows these guidelines and it will go a long way to cleaning things up - https://github.com/davidhealey/hise_documentation/blob/master/scripting/scripting-in-hise/hise-script-coding-standards.md

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

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

                                            45

                                            Online

                                            1.8k

                                            Users

                                            12.0k

                                            Topics

                                            104.4k

                                            Posts