Vertical slider to control delay time - how to set parameters?



  • I'm trying to use a vertical slider to control the L / R delay times of the delay, and I can't get it to work smoothly, either in tempo sync mode or not.

    Tempo unsync'd: the sliders work, but are heavily weighted to > 1000ms, meaning, the first 5% of the slider controls from 0ms - 1000ms, and the other 95% of the slider controls 1000ms-20000ms.

    Tempo sync'd: the sliders don't really work... they just move between 1/1 and 1/2D.

    1. is there a way to make a single slider that will work in both sync'd and unsync'd mode?

    2. if so, how? if not, I really only care about sync'd; how should I set the parameters?

    Thank you!



  • @tk_tmm if the center value is not good for you, you can adjust it in the property editor

    Now for the sync, you need either a second hidden slider or to change dynamically the properties of this one
    The tempo sync values are going from 0 to 18 with a linear setting and stepSize set to 1



  • @tk_tmm said in Vertical slider to control delay time - how to set parameters?:

    Tempo unsync'd: the sliders work, but are heavily weighted to > 1000ms, meaning, the first 5% of the slider controls from 0ms - 1000ms, and the other 95% of the slider controls 1000ms-20000ms.

    Sounds to me like you want to look under the sliders Component Specific Property and set your middlePosition to 10000 and then under suffix put ms. This will set the middle position of the slider (straight up) to 10000 ms.

    If you're only interested in synched, under Component Specific Properties set the min to 1 and the max to 18. Set mode to TempoSynch. Set the step size to 1, and middle position to 9.



  • This is how i setup LFO for my projects.

    HiseSnippet 1314.3oc4X0uaaTDDeO6bQ0t3BUj+BIjV4+xQDZs6WDnBgabRJgFmXpKEjpfp02sW7pddWyc60F2p7LvqFOJvS.Lyde55qoFq.EDVIm7Nes+1Ylcl47f.kCOLTEPrp8nYS4Dq2yd3LodbuwLgjbvtDqqX2mEp4AzXR6LaJKLj6RrrpdejfUs0HlO+1WsCymIc34jHjGqDN7CESD5bpC59.gu+9LW9iDSJH8s5dfiR1S4qh.7T0tMYJy4YrS3GwPwpXSrVeOWgVELTyz7Ph0Z6nbmMbr5ExX4erHTLxmiK5PFBFJl79JeWDw32I8FK7cGjdtCIDK6A4dgpwdgMr6KbEYzy8FefgAMWih9CqJmG75rhvyp.7VKFdW0dnSfXpNmChsKaefDBTdLHDTDVwxRp76Us6o.Ij5qMg8L99AvhLMZcy1s2hBO17tMp2nNDHB0zmyBnGt+wc1+g68szujlp8IbcO0joJIrnUSi.A7eNhKcl0LV8qec5S9lgGeD8AR0nerQ8TMC4HlmxCzBdH.fInPutI1h9pF0ozlSTt7leAsYANF5P13zghWh7Zes1chI5x8XQ95Gy7iLJ0IU3HOOwoHE5W+xlMpeVYmu9GuKb7LI93gquxMxmAAxXj0rLU.gcNWWBJPhlBouPxodQRGsPIoJYp.n5AJ+VNo5tErAvIXyF0AePMvMZ1G.PbytBzRvK5JumVGHFEo4sRI9HNXGTkT6.6eM3OgWqT6VCMrwxuPncFS0JpF0hFh6D5yQ9oQcbaZEGI1h1Ly7lC1BRwNEDpy1FdmA+y8C4ktgdoQz2x9MeZ0BRIjfPPJP62LZtc47Dtt97ApPAFOPwRw7Yl.VZ3AkNID0i46OBJG0Zgf2l2sPf8Hklerr0l0eU8Z0OqN80Y44UJuDS4yCJkMVmL37TrkLZxHdPZTOUPnfw7Ujt7xUQxINqtffJ4ARg93o7j040rPdwm5TtsIYG1hjxOiEoZNZkHVNoEKIRRt0AEGqjHNHp1TZ7JIkFG5Kb4ADAfw22dt5KDiOpXSJxaxH6Do0JowH0sSC6kn+2cvtLMCqUmfr7hb.sc4OGZBFW4tl8t7vmoUSMPO4ROPdoA+oP+Jq8f8bF9ksgufWVvh+4x.o9fIW+FInKtDHHtMTBjLete9wXitEKgVrsNo.PWaYbPmloc2gcmku3m5RVrWFzQMsbaw1r3rEILPXVreF1yRBveVQP9Wn2a6R681orDskDtW0d.VZqb7VoD7hYt+Mi2jIYZXummG2QmC10r2+GV0wVVMnboXn7Q122WMh4m6.gKK.p3wiu7wIroY7oYBz4bl67WW14NmtzycZUcdOR0kqrYICus16fYKu3yu+vEBMgWn2HWwoguRLjswJOFbttoFzaGZ4kJyHdotXhwA44Uc+kteO64bOUvjjR2YpeH+DvGTjR1fQEyAGNQoziExSlOcaitGpTS2SxfCuaQiLXLKDaZBCcTzL8hB0pIoXw7dPCgIfMcbrdh8ct00fOdeB97y6AOt4wWLqWnD0peKnxRmmAwOZVHCS29Wdk+XDmkO8e.Det8pp9+ydUOTEog6o8Yv6SgCJcTzjgPy.GNfDoDdMFbVqJ3cw30sw0lq3boqYwe.eRX1AWakvrSJy+Q1iILm.0SchmlEu3cICE3bKM+DJ0r6iqocRmg01Fd8IbjPwScbP28mB9mx04FqfN2bEz4VqfN2dEz4NqfNe1Jny1mqNXG+6EA02iuJBDFrWbkcqrNDVUI+oL13iM
    

    Time/Tempo slider change modes according to Sync button. For the frequency mode you can set the mid point of the slider with the value set in this line

    LFO1FREQ.set("middlePosition", 5);
    

    found this solution by searching posts on the forum!



  • @musictop How do you deal with it jumping in values when you switch between sync and unsynced ?



  • @lalalandsynth i just live with it - until a solution is found! 🙂

    what bugs me is that LFO time/frequency is not loaded correctly on some user presets, it is not random, it happens to a specific one constantly and even resave does not help... can't figure out why!



  • @musictop i see..lol.
    Not really acceptable on a released plugin.
    Guess i will have to choose either synced or not for my plugin.

    Do you know if its possible to script what parameters get saved in a preset ? If so i might have a solution.



  • @lalalandsynth i do not know. My knowledge of scripting is very basic.



  • @musictop I guess this is a known problem then ? I have been fighting this all day ! 😛



  • @musictop With the preset that is weird , is there a preset next to it with unsynced ?
    I have noticed that when you go from a sync preset to an unsynced preset . everything gets messed up .



  • @lalalandsynth Yes, i think so, ...and sometimes also when you reload/click the preset one more time the correct values are loaded from the preset.



  • @lalalandsynth noticed that when doubleckliking the preset in the library, or loading the same preset twice, the correct LFO values get loaded when you switch from synced LFO preset to nonsynced and vice versa...



  • @musictop I think the solution for this is to have 4 sliders , 2 for synced and 2 for unsynced.

    Try this.

    Left and right delay times are named SyncSldr and UnSyncSldr.

    const var Sync = Content.getComponent("Sync");
    const var SyncSldr = Content.getComponent("SyncSldr");
    const var UnSyncSldr = Content.getComponent("UnSyncSldr");
    const var SyncSldr1 = Content.getComponent("SyncSldr1");
    const var UnSyncSldr1 = Content.getComponent("UnSyncSldr1");
    const var lftFeedback = Content.getComponent("lftFeedback");
    const var RghtFeedback1 = Content.getComponent("RghtFeedback1");
    const var delayMix = Content.getComponent("delayMix");
    const var delOnOff = Content.getComponent("delOnOff");
    
    
    
    
    
    
    
    const var Delay1 = Synth.getEffect("Delay1");
    
    
    
    
    
    
    inline function onSyncControl(component, value)
    {
    
    	Delay1.setAttribute(Delay1.TempoSync,value);
    	if(value)
    	{
            UnSyncSldr.showControl(false);
            UnSyncSldr1.showControl(false);
            SyncSldr.showControl(true);
            SyncSldr1.showControl(true);
            SyncSldr.changed();
            SyncSldr1.changed();
    
    	}else{
            UnSyncSldr.showControl(true);
            UnSyncSldr1.showControl(true);
            SyncSldr.showControl(false);
            SyncSldr1.showControl(false);
            UnSyncSldr.changed();
            UnSyncSldr1.changed();
    		
    	}
    
    	
    };
    
    Content.getComponent("Sync").setControlCallback(onSyncControl);
    
    
    
    
    inline function onUnsyncSldrControl(component, value)
    {
    
        if (Sync.getValue() == 0)
        {
    	   // Delay1.setAttribute(Delay1.DelayTimeLeft,value);
    	    Delay1.setAttribute(Delay1.DelayTimeRight,value);
        }
    };
    
    Content.getComponent("UnSyncSldr").setControlCallback(onUnsyncSldrControl);
    
    
    
    inline function onUnsyncSldr1Control(component, value)
    {
    
        if (Sync.getValue() == 0)
        {
    	    Delay1.setAttribute(Delay1.DelayTimeLeft,value);
    	   // Delay1.setAttribute(Delay1.DelayTimeRight,value);
        }
    };
    
    Content.getComponent("UnSyncSldr1").setControlCallback(onUnsyncSldr1Control);
    
    
    
    
    
    
    
    inline function onSyncSldrControl(component, value)
    {
    	if (Sync.getValue() == 1)
        {
    	    //Delay1.setAttribute(Delay1.DelayTimeLeft,value);
    	    Delay1.setAttribute(Delay1.DelayTimeRight,value);
        }
    };
    
    Content.getComponent("SyncSldr").setControlCallback(onSyncSldrControl);
    
    
    inline function onSyncSldr1Control(component, value)
    {
    	if (Sync.getValue() == 1)
        {
    	    Delay1.setAttribute(Delay1.DelayTimeLeft,value);
    	    //Delay1.setAttribute(Delay1.DelayTimeRight,value);
        }
    };
    
    Content.getComponent("SyncSldr1").setControlCallback(onSyncSldr1Control);
    
    
    
    inline function onlftFeedbackControl(component, value)
    {
    	Delay1.setAttribute(Delay1.FeedbackLeft, value);
    };
    
    Content.getComponent("lftFeedback").setControlCallback(onlftFeedbackControl);
    
    
    
    
    inline function onRghtFeedback1Control(component, value)
    {
    	Delay1.setAttribute(Delay1.FeedbackRight, value);
    };
    
    Content.getComponent("RghtFeedback1").setControlCallback(onRghtFeedback1Control);
    
    
    
    
    inline function ondelayMixControl(component, value)
    {
    	Delay1.setAttribute(Delay1.Mix, value);
    };
    
    Content.getComponent("delayMix").setControlCallback(ondelayMixControl);
    
    
    inline function ondelOnOffControl(component, value)
    {
    	Delay1.setBypassed(1- value );
    };
    
    Content.getComponent("delOnOff").setControlCallback(ondelOnOffControl);
    


  • @lalalandsynth cool, i will give it a try. Thnx!


Log in to reply
 

18
Online

1.2k
Users

3.8k
Topics

33.7k
Posts