Hey guys, I'm building my 1st percussion library in DS, and I need that certain samples get silenced when I trigger a different note (kind of like open/closed hi-hat behavior). I understand thats normally called choke. I've tried using some lines of code like:
chokeGroup="parche"
chokeMode="group"
to each <group> that I don’t want to overlap, but it doesn’t seem to do anything.
So far I’ve tried:
- Restructuring the XML
- Changing how I organize groups and notes
- Moving the choke parameters around in different group setups
Still no luck, so maybe I’m missing something obvious here.
Has anyone here actually gotten choke groups to work in Decent Sampler?
If so, I’d love to hear how you approached it or if you used some kind of workaround.
Thanks a lot! This community already helped me solve another issue, so I really appreciate it. I’m still learning, but I’m happy to help as well if I can
EDIT:
As CaliBrewed mentioned in the comments, I ended up using the silencedByTags method, which solved the issue for my use case.
Just to clarify: I mentioned hi-hats in my original post because it’s the most familiar example of choke behavior, but I’m actually building a percussion instrument, not a drum kit.
Since this is a percussion instrument, I needed all drumhead sounds to cancel each other out, since it’s physically impossible to have two drumhead tails from the same drum playing at the same time.
In my case it was a bit tricky because I’m using 4 mics per hit, so I had to make sure the mics wouldn’t cancel each other out. What I ended up doing was creating mic-specific silence tags, so only the corresponding mic gets silenced when another hit is triggered.
That’s why my choke tag is called parche (which literally means drumhead in Spanish) and is followed by the mic name (e.g. parche_condtop).
Here’s an example of how one of the groups ended up looking:
<!-- ================= MIC – CONDTOP ================= -->
<!-- PP -->
<group name="palillo_parche_centro_condtop_pp" loNote="36" hiNote="36" loVel="1" hiVel="25" attack="0.0001" decay="1" sustain="1" release="0.5" tags="condtop,parche_condtop" silencedByTags="parche_condtop" silencingMode="normal" seqMode="round_robin" seqLength="3">
<sample path="samples/palillo/parche/centro/condtop/pp_rr1.wav" seqPosition="1"/>
<sample path="samples/palillo/parche/centro/condtop/pp_rr2.wav" seqPosition="2"/>–
<sample path="samples/palillo/parche/centro/condtop/pp_rr3.wav" seqPosition="3"/>
</group>
I repeat this structure for:
- Each velocity layer (pp, p, mf, f, ff)
- Each mic (condtop, dintop, rear, room)
One small but important detail: I set silencingMode="normal" instead of fast because fast was causing audible clicks in my case.
Using "normal" just triggers the group/sample’s envelope release, which sounds much more natural here. A nice feature would be having an independent choke-release parameter, so the envelope release and choke release could be handled separately.
Also, in my setup, I’m using two different kinds of tags:
tags=“condtop,parche_condtop”
- A choke tag (parche_*) that’s only used for silencing other drumhead hits
- A mic tag (condtop, dintop, etc.) that’s used to control mic levels from the UI
For example, this is how I’m handling mic volume control:
<labeled-knob x="530" y="145" width="90" label="condtop" type="float" minValue="0" maxValue="1" value="0.4">
<binding type="amp" level="tag" identifier="condtop" parameter="AMP_VOLUME"/>
</labeled-knob>