sfizz
sfizz copied to clipboard
Second set of Choke groups
I know I seems greedy for opcode request, but really... we need a second set of Choke opcodes for drums and percussion stuff (especially cymbals) to simulate closer to the real instrument. So, they are :
choke_group=
choke_by=
choke_mode=
choke_time=
choke_shape=
choke_curve=
Why we need two sets? Because we are using one_shot mode and we need two different off_time (release time) to define two different choke events :
- Self-Choke : when the region choke itself, to prevent build-up sound effect. Usually longer off_time
- Choked-By : when it choked by other region, like for hihat and crash choke. Usually very short off_time.
In this simple example :
<region>
sample=crash.wav
loop_mode=one_shot
key=60
group=1
note_polyphony=1
off_time=5
choke_group=10
choke_by=11
choke_time=0.3
choke_shape=-3
<region>
sample=*silence
key=62
choke_group=11
The crash is set to 1 polyphony, group
id No. 1 and with off_time
5 seconds, so it will self-choke and every previous hits will be decaying in 5 seconds.
Then it has choke_group
id No.10 and will be choked by key 62 which has choke_group
id No.11. The off_time (choke_time
) is quick, in 0.3 seconds.
I link this issue for monitoring : https://github.com/redtide/test/issues/3
I break down the opcode details :
-
choke_group
: Given a new number ID for a region. This ID not related togroup
/off_by
opcodes and not related topolyphony
ornote_poyphony
opcodes. Value : Integer. Default value : 0 -
choke_by
: When a new region with achoke_group
number equal tochoke_by
plays, that region will be turned off. Value : Integer. Default value : 0 -
choke_mode
: Determinate how a region is turned off by achoke_by
opcode. Value : fast, normal, time. Default value : time. -
choke_time
: Whenchoke_mode
is set to time, this specifies the fadeout time for regions being muted by voice-stealing. Value : seconds. Default value : 0.006 seconds. -
choke_shape
: The coefficient used bychoke_curve
. Value and default, follows ARIA -
choke_curve
: Whenchoke_mode
is set to time, this specifies the math to be used to fade out the regions being muted by voice-stealing. Value and default, follows ARIA
Using ampeg_dynamic=1
can offer a workaround for this, by modulating ampeg_release
with off_mode=normal
But still there are some issues involved in the practical usage :
- Choke with polyaft CC130, the data event is very quick changing from CC value 127 to 0, and this cause the region to be choked but then released again so it sounded wrong
-
ampeg_dynamic
seems doesn't work with extended CC 133 (key number) to use the "key-mapped choke"