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 :) -
-
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 -> ROR
.addConnection(0,1) // L -> R
.addConnection(1,0) // R -> LWith 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.
-
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.
-
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 :P
-
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...