Switching stereo field.



  • Hey, I want to switch my sampler stereo field with a btn.

    
    const Sampler1 = Synth.getChildSynth("Sampler1");
    var m1 = Synth.getRoutingMatrix("Sampler1");
    
    const Button1 = Content.getComponent("Button1");
    Button1.setControlCallback(stereo);
    
    inline function stereo(component,value)
    {
        if (value)
        {  
            m1.removeConnection(0, 1);
            m1.removeConnection(1, 0);
            
            m1.addConnection(0, 0);
            m1.addConnection(1, 1);
        }
        else
        {   
            m1.removeConnection(0, 0);
            m1.removeConnection(1, 1);
            
            m1.addConnection(0,1);
            m1.addConnection(1, 0);
        }
            
    }
    
    

    Is there a simpler way? Or I'm on the right path?

    Thanks!



  • I think you're on the right path but I bet you can reduce the lines of code. value is always going to be a 1 or a 0, and the only numbers you are using are 1s and 0s so I'm sure there is a saving to be made ๐Ÿ™‚



  • @d-healey True that! Optimization!

    Thanks @d-healey



  • @d-healey

    inline function stereo(component,value)
    { 
       var inv = 1-value;
       
       m1.addConnection(value, value); // L
       m1.addConnection(inv, inv); // R
       
       if (!value)
       {
              m1.addConnection(value, inv); // L
              m1.addConnection(inv, value); // R
       }
    
    
    }
    

    How about this for optimization ๐Ÿ™‚ ?



  • @marcLab I think you can do better. I don't think you need the if statement at all.



  • Making inv local will be the best optimisation.



  • @d-healey damn, my brain hurts a little bit..



  • Don't you still need to remove the old connection?



  • @marcLab something is telling me that inv and !value might be equivalent ๐Ÿ˜‰



  • @d-healey did the test, they seem to change when only calling .addConnection



  • @d-healey just can't figure out how to arrive at only 2 lines of code

    .addConnection(0,0) // L -> L
    .addConnection(1,1) // R -> R

    OR

    .addConnection(0,1) // L -> R
    .addConnection(1,0) // R -> L

    With juggling with my value (0 or 1) without the if statement.

    inline function onstereoFieldControl(component,value)
        { 
            local index = btnStereo.indexOf(component);
            
            // L->L R->R
            samplerMatrix[index].addConnection(value, value); 
            samplerMatrix[index].addConnection(!value, !value); 
        
            // L->R R->L
            if (!value)
            {
                samplerMatrix[index].addConnection(value, !value); 
                samplerMatrix[index].addConnection(!value, value); 
            }
            
        }
    


  • @marcLab Index has magically appeared, do you have more than one stereo button? And do you have a snippet?



  • @d-healey yeah index because I have 6 btn for 6 different samplers :p, but this part is working ๐Ÿ™‚

    I'm just trying to reduce the number of lines. For being full optimal.



  • @marcLab

    I'm just trying to reduce the number of lines. For being full optimal.

    Give me a simple snippet with a single sampler and routing matrix etc and I'll see what I can do.

    The number of lines doesn't always make much difference to the performance but it can make a different to maintenance, reuse, and debugging.



  • @d-healey

    HiseSnippet 1598.3oc6b1saaaCEGWJNpKwqoXsnWraFfZ1tvAoNUNwNc.Ys0INIEAKNwvJsX.EcELRz1DUlTPhJqYE898nrK2dC16wdI5av1gRxVeT2TGk90Vnunv7PdN7O+PmyOkfzNdLKruOySQc9iN0EqndUMySo7AsFfHTk81VQcNMeN1CyT15TWjuO1VQUszCE8pN+rJged8C1B4fnV3DSJJOlQrv6SFR3IV6z7GINN6hrwGQFlZz0atmEi1h4vB.kTRyPwEY8bTe7AHwvlQSQ8J6XS3LOSNhi8UTmcKl8olCX+BMZ7Ol3SN1AKZTSwDBTj4cYN1BEK9tRqADG6NiVw9JJpk6jr9KEs9uoVahMYr8j8guJrC8DORuenNyYIuZokmwDkWsIIO0Txa1H4ccMSKOhKOoGg19Rs8nvgTODbDjVVQiUYleujVKFLBJekgnmi20CZL1iJqaXba8FFFKswBkWnLbP3y0O3Qsel4ls6r+Nc0um95o54XN0L7BAX+IOciQl8QCccvdsQbOxKF00Bk6w7zqPtmwFjeHUH2fr7xKsP4WtPYc3Sz+lI.Og7THFg2DWoOl2kEvIz9Q8UYQyngt3xUHKWaIgrSByX4shaf+fJiV1PPZwF5xnPiJKNdPKtLYr+iMBS9J9hwS4dLmVHGmigaiUDKSQ26RvN1wcJ78Uh0Ig5PnX8dATKNgQ0mzfqXMRA29DjS.VrCDqZGlExQmPswh8tj0PnkC6k34Hwlrfuycz2u582Wua062ch6jhP7zUP1BYPwgxqR37ea8HYrg9T62shc7VY8LsR5JTx9QVH8zicYoHCuLQ8SuJyMYmSol04WEddk5X5.FGeHsxRkeY44K+px546pWuI1W7QJngI1sH8l2Y4XEZvviwdij2nABOmmMQh1aOQR57bVQWySMPFcOJgenKl91RunD+rAjn4JwpBFJOLMy0hSyrU.mynJDaQggwWKMTBUc5r8JmuHT6BGgUuvQXsKbDpegiPiIDgGs21HNRj9O9.BNzbwdbh39f513Sf5pQEClWaar+y4L2vSv3LDvUno6L7EvsK08fI7TwWZDI9yWPpkKH+bQBxp4BxuUjfrVtf7mEIH0yEj+tHAoQtfnoJ.ediB4.NAyNvAwyxXH.qh6.xWjoXtnfM0mvOMM30GDvioUtWWqCgaMXx5clInW3R8GZ8Fiwsf1N85AUBRD6rZ69Se3Y1RKkuIRJ2Pyj6gQCA.lXvkP8TVKtUs2Gj0tSMYcGOrCCYaR90TC6uZtU.re4k05ezLbp1bHKflYthUdWrKFwgi+T9LWytcenGKvMuWJMCurbjGvRAaEoWiGRwv9d5wpzxi462CVNgwxOcWcB75K1qRrzEeB1yOqsCBFBm8.MfinJpp3gvG4iEm0DqHrgziNbVLNBEddCutQX6Z4ZuZt1qkqc8bsajq854Ze2j1QansQthaFeq1lcasYUCiZU217npPdEOXCq5QdDV08Yv2Zu6avI7ESGm.LCcPvdRpQtEo+3YOxR5a3iOGB0ZpW3ZButxU9r9so93kCtzzI22wK7M+HMZRDmN6POAdtErHz3MfB+8PAN7QVylCoMixbGvnDqrOk.2i52G6kV6SbAsImCOjlX4lM6hcvH+TOl+cM2GdeGjW1G9OW6E0l98hy575q0hjqtHwm9+OpcV5ResyyZq6ZwUN0gY2i+Y947U0By0qKJM+oRpY9wm.UCgZil.OfENcExYDUciZaLphoIlZG13efOwcVSIBoMryZi5TwZTnf0V72CeMF0RXpnzQHRnCTn1I8UZef5PHInDXAHmVURNIImjjSRxoK.4zpRxII4jjbRRNcohbZsKGjSu9ARxooibR7qXOGXzbuGAixBFjZnuUJo2wuZbIwzmLho0jDSRhIIwjjX5REwTcIwjjXRRLIIlJ.wTcIwjjXRRLIIltTQL0PRLIIljDSRhoBPL0PRLIIljDSRhoKUDSqKIljDSRhIIwTAHlVWRLIIljDSRho+CSLUHUpbVpT8MT4PjkG6YVQ+U5Jz5bgV.URC++Zh40ZKZqO9uPYMMiULTFB0pdlkk3AgpvN7j8Y0B3yZEvm5EvmFEvm0KfO2s.978moOBLgMC3rgQIIACc1I5hk5NiuXUR4eA.erEXN
    


  • @d-healey said in Switching stereo field.:

    The number of lines doesn't always make much difference to the performance but it can make a different to maintenance, reuse, and debugging.

    Trying to be PROFESSIONAL ๐Ÿ˜›



  • inline function onstereoFieldControl(component, value)
    {
        local index = btnStereo.indexOf(component);
    
        samplerMatrix[index].addConnection(value, value - 1 * value);
        samplerMatrix[index].addConnection(!value, !value + 1 * value);
    }
    


  • @d-healey damn..let me try this!



  • @d-healey You little jokester ๐Ÿคฃ



  • @d-healey said in Switching stereo field.:

    The number of lines doesn't always make much difference to the performance but it can make a different to maintenance, reuse, and debugging.

    In my experience it also doesnโ€˜t make sense going into full-riddle mode and condensing the functionality down to the least amount of characters because you will come back in a few months and think โ€žwhat lunatic has written thisโ€œ.

    But itโ€˜s a fun excercise...


Log in to reply
 

13
Online

1.6k
Users

4.6k
Topics

42.5k
Posts