Two Samplers One Filter
-
@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:
- Routing the Sampler to the master, and
- 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.OJDpvEeNAg1n5Zw01T5VXUIG5ewp9040Here'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.
-
@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

-
@DanSound The panning is just to make it obvious which sound is going through the filter.

-
@dannytaurus Ahh, got it
It seems the downside of this method is that you canβt use envelopes with the filter. -
@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.
-
@dannytaurus Yeah, or separate filters on each Sampler π« Anyway, thanks for your help!
-
@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.
-
@dannytaurus Yep, I've seen a few HISE-based instruments with independent filters on each sampler, and the CPU load seems fine.
-
@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....
-
@Lindon Thanks for confirming! That's exactly what I'm going to implement. Now I'm confident there isn't a better way.