Forum
    • Categories
    • Register
    • Login

    Two Samplers One Filter

    Scheduled Pinned Locked Moved General Questions
    13 Posts 4 Posters 123 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.
    • dannytaurusD
      dannytaurus @DanSound
      last edited by dannytaurus

      @DanSound You can do this with Send Effects and a Send Container.

      • Sampler 1 has Send Effect 1, sending to Send Container 1
      • Sampler 2 has Send Effect 2, sending to Send Container 1
      • Send Container 1 has Filter 1

      Then use a script for each Sampler to simultaneously toggle:

      1. Routing the Sampler to the master, and
      2. The Send Effect bypass

      This will send the audio from the sampler to either [1] the Master output, or [2] the Send Container > Filter > Master output.

      HiseSnippet 1707.3oc6Z0sTaaDEdEFk.Ns4+1lbmFldgokgAIHjjgoCNXvIdJDbhoIsSuHcszZaMQZWUoUT7jIyj9pzWjxE8An216ZeCReBZOqjr8Ji.LN7aq8EdXOZO69se6YOmuE4p9LSRP.yGojeq1dDjxGoVqMk2pTKrMEUYUjx0TKa6vI9OmExsoMQqz1CGDPrPJJ4drnSJSNNJ5y6WdErClZR5YBgdAy1jrtsqMum0pE+ZaGmxXKxV1tR8dghULYzRLGVH.nbpyg7vluF2j7TrnaiohdBNnER4KTMsVvbAyEqufNF23950WjT+A52Wm7.y6Y8PSSr48papO+7XjxkVyxly7qwwbR.RY7UXVsq0h8Sz3I3E1A10cHhF5nZvLGatLywRrDEVQkZY6XUsCSEfPJWtZOdKWLuca0Mrsr6ZuG+c8nGn0yCYBTYrzvKWJ3oKCu4jfWFPRQBRiGCoanVyz21i26IB7bE0JTX6rAF1mjgRbeQi8G4TKwfdP4y5heMorOznqGEVbt4lQC9Z5kxmG1qB3Z9t5ZekVTPyrMI7jvjMvbe6cJL0KwaSZv7c0dLgR7wvRUeJv2NtZbjb0nmqADpUp4csFMHl7BSUCdfVbC8zc23P5dznm2l5XSIZMBolbaFUiQiC+2h0roCQWPM9LmBlLWOFEHoYz1F6DRlN+axqAeranUH1f1aDTyrlNDregoWZoXHOa.g2g0Kz.6DPldIs2F4JAZj3D1xBlHJIBBElaFftyvt9L5Sm0vx8CiG02tT9NakvRtTGHWXpTKoolV3cxBqD1woNbnqP1qaACcHTjwAQQS1G+XzG+XLH7iw9vOF6K+X7AvOFCB+XHwOR7xSYbxlzBQq77vpn+G0nQlOKYvbH9Y9XQRS+CxwBzP25DeYdWzQHwP5rMp6e1F4jglwbjTGYzJTa9ldD59khDkPrPlowRPEzUdTdoqljWZkPNmQQ1V8JxjDsgh.tbYDzQdPLxXP9lJqh4XQ1xD3AP1i3ysErgxpjsgZUw4NmTcURvq4LuH7mDX.D3.uB1o6DWjUrc2FuqYQzPLdF623sqSQzdy7C0bXVgNhblxEhDkqSd.DujJ6uHCOMvl2Vtb9wV0oAEh2PspM2rU1XbrLvnH75D.iI0z+X03JC8.33pk+1SlB3xS+cim9qnJJAFUxJZx+D0Lpld.5w98AUOl2.qGaSSN.gs7wz.OV.Dl2KZ4WqQbs2BhqCzkmu97vP9Yc8Hk0UI7PJQeulR0KAUTFnBo9MQwNFMjMVESk5z2sKzN0Hsg8NxMWihgMrZDXkasYfIPLBdV9XQ0PnRzKss3sjF2+Txrgr4mf8sf8PyTKbN1mWsENH8xrm4T.TI2AogUeH0vdoSJMriOXGANX3cAHoVJI2S1Ai0rc8bHqQ2l3.kVhv3MgZIMvgN7NVSencCFk40hQsSEh7bBnBtYSRpHuLWPOhyAAI8rb6hOm.hpBjNH+4EWGTrg8AdhLjbg9Q95GYtecG0X3pIxzn8grucpFlcfElxMPElN1w6YPQpTayWNd9mPUbGJXFES8UUku+Upp2oqMUXW.ufRcGPCLntNcUApUEpEYG4c+ZtLFuk3++fbHQtS6v2aDu9N6iaScWYPI+SCcqAUoMIIzpPcuxXBcywsmSztC6F03efOIOTWzVI4g5cd3fmBFpfdw4n7moBU0MzhNOqc1ef9Tdi7HHszX+jV9t125TUZojPwyJokWefjVVbjzxQRKOakVZLRZ4Hok+2WZowHokijVNRZ44pMxIhYlqEEGK9+qCzBwWN1tqQ8i1aQ98Kmkzx2ub1RKgZY8Is7jQky3iT4LpZ44gpkIBDuoZUlS6X4dwu6nHPLYxKR5fNygPk8I+XHgZ1g49geq9uT7Yxa6oE3cmhOKD6zGSuhsGyA6+g9dZNjBpiOfgJepZ2Ek1YuJ9qGiTU00KuYxAO3uz5ha8CGX8uGs6e8y+8xh7eUn8e8UwM4SdQlccecRSXhjsrEw0ismKP1QNT5rp2t35LlW7MXsRckUwkJyPpELraw1.G.gdkbXx2h.gpzjx7IwucbY6kBC3L2NKfnewO03DunWZqx2qt3ByBeZ7khueXI3q4273o8wXz4XCXz4sh196tOKBDNmm5MFwoNSctuXgHM2EG8i2UMICZDKewA2WU8Y+O4dKmFygK1zm8Jy3euKhTJSDYAV2zneFjSptgnsVF+JYbAQluxzL8PsGGMFVGmeXcbgg0w6MrNt3v538GVGevg6n3N.OJDpvEeNAg1n5Zw01T5VXUIG5ewp9040
      

      Here's the script:

      const rm1 = Synth.getRoutingMatrix("Waveform Generator1");
      const rm2 = Synth.getRoutingMatrix("Waveform Generator2");
      const send1 = Synth.getEffect("Send Effect1");
      const send2 = Synth.getEffect("Send Effect2");
      
      inline function onFilterToggle1Control(component, value)
      {
          if (value) { rm1.clear(); send1.setBypassed(false); }
          else { rm1.addConnection(0,0); rm1.addConnection(1,1); send1.setBypassed(true); }
      };
      Content.getComponent("FilterToggle1").setControlCallback(onFilterToggle1Control);
      
      inline function onFilterToggle2Control(component, value)
      {
      	if (value) { rm2.clear(); send2.setBypassed(false); }
          else { rm2.addConnection(0,0); rm2.addConnection(1,1); send2.setBypassed(true); }
      };
      Content.getComponent("FilterToggle2").setControlCallback(onFilterToggle2Control);
      
      

      Don't know if this is the best way, but it works. Although I can imagine getting in quite a mess if you needed multiple routable effects.

      I couldn't figure out how to do it with routing matrix since the filter effect seems to be hard-coded to the 1/2 outputs.

      Meat Beats: https://meatbeats.com
      Klippr Video: https://klippr.video

      D 1 Reply Last reply Reply Quote 1
      • D
        DanSound @dannytaurus
        last edited by

        @dannytaurus Thank you, this looks interesting and with proper routing it should do the job. I guess the Send Container was added recently, because I don't remember it being there a few years ago. One question though: is there a reason you hard-panned the Waveform Generators left and right? At first I thought it was an issue related to the routing πŸ™‚

        dannytaurusD 1 Reply Last reply Reply Quote 0
        • dannytaurusD
          dannytaurus @DanSound
          last edited by

          @DanSound The panning is just to make it obvious which sound is going through the filter. πŸ˜€

          Meat Beats: https://meatbeats.com
          Klippr Video: https://klippr.video

          D 1 Reply Last reply Reply Quote 0
          • D
            DanSound @dannytaurus
            last edited by

            @dannytaurus Ahh, got it πŸ™‚ It seems the downside of this method is that you can’t use envelopes with the filter.

            dannytaurusD 1 Reply Last reply Reply Quote 0
            • dannytaurusD
              dannytaurus @DanSound
              last edited by dannytaurus

              @DanSound Yeah, I assume it's because the Send Container doesn't get the note triggers, so anything triggered by a note, like a voice start constant or triggered envelope, isn't available.

              If you need envelope on the filter, then ScriptNode is likely the way to go.

              Meat Beats: https://meatbeats.com
              Klippr Video: https://klippr.video

              D 1 Reply Last reply Reply Quote 0
              • D
                DanSound @dannytaurus
                last edited by

                @dannytaurus Yeah, or separate filters on each Sampler 🫠 Anyway, thanks for your help!

                dannytaurusD 1 Reply Last reply Reply Quote 0
                • dannytaurusD
                  dannytaurus @DanSound
                  last edited by dannytaurus

                  @DanSound I'd try filter on each sampler first. Do some CPU tests. The code to sync all filters/envelopes/etc. from one set of controls is easy enough. And it will give you much more flexibility.

                  Meat Beats: https://meatbeats.com
                  Klippr Video: https://klippr.video

                  D 1 Reply Last reply Reply Quote 0
                  • D
                    DanSound @dannytaurus
                    last edited by

                    @dannytaurus Yep, I've seen a few HISE-based instruments with independent filters on each sampler, and the CPU load seems fine.

                    1 Reply Last reply Reply Quote 0
                    • LindonL
                      Lindon @DanSound
                      last edited by

                      @DanSound best practice is to use separate filters in each sampler's FX chain - and have one set of controls that manage all the filters....

                      HISE Development for hire.
                      www.channelrobot.com

                      D 1 Reply Last reply Reply Quote 2
                      • D
                        DanSound @Lindon
                        last edited by

                        @Lindon Thanks for confirming! That's exactly what I'm going to implement. Now I'm confident there isn't a better way.

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

                        17

                        Online

                        2.1k

                        Users

                        13.2k

                        Topics

                        114.2k

                        Posts