HISE Logo Forum
    • Categories
    • Register
    • Login

    Switching stereo field.

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

      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!

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

        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 :)

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

        marcLabM 2 Replies Last reply Reply Quote 0
        • marcLabM
          marcLab @d.healey
          last edited by

          @d-healey True that! Optimization!

          Thanks @d-healey

          1 Reply Last reply Reply Quote 0
          • marcLabM
            marcLab @d.healey
            last edited by

            @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 :) ?

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

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

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

              marcLabM 2 Replies Last reply Reply Quote 1
              • Christoph HartC
                Christoph Hart
                last edited by

                Making inv local will be the best optimisation.

                1 Reply Last reply Reply Quote 3
                • marcLabM
                  marcLab @d.healey
                  last edited by

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

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

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

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

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

                      @marcLab something is telling me that inv and !value might be equivalent 😉

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

                      1 Reply Last reply Reply Quote 4
                      • marcLabM
                        marcLab @d.healey
                        last edited by

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

                        1 Reply Last reply Reply Quote 0
                        • marcLabM
                          marcLab @d.healey
                          last edited by marcLab

                          @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); 
                                  }
                                  
                              }
                          
                          d.healeyD 1 Reply Last reply Reply Quote 0
                          • d.healeyD
                            d.healey @marcLab
                            last edited by d.healey

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

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

                            marcLabM 1 Reply Last reply Reply Quote 0
                            • marcLabM
                              marcLab @d.healey
                              last edited by marcLab

                              @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.

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

                                @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.

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

                                marcLabM 2 Replies Last reply Reply Quote 0
                                • marcLabM
                                  marcLab @d.healey
                                  last edited by

                                  @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
                                  
                                  1 Reply Last reply Reply Quote 1
                                  • marcLabM
                                    marcLab @d.healey
                                    last edited by

                                    @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

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

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

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

                                      marcLabM ustkU 2 Replies Last reply Reply Quote 3
                                      • marcLabM
                                        marcLab @d.healey
                                        last edited by

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

                                        1 Reply Last reply Reply Quote 0
                                        • ustkU
                                          ustk @d.healey
                                          last edited by

                                          @d-healey You little jokester 🤣

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

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

                                            @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...

                                            d.healeyD 1 Reply Last reply Reply Quote 2
                                            • First post
                                              Last post

                                            24

                                            Online

                                            1.7k

                                            Users

                                            11.8k

                                            Topics

                                            102.7k

                                            Posts