Skip to content

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Second set of Choke groups #1078

Closed
kinwie opened this issue Feb 16, 2022 · 3 comments
Closed

Second set of Choke groups #1078

kinwie opened this issue Feb 16, 2022 · 3 comments
Labels
improvement Improve on existing functionality

Comments

@kinwie
Copy link

kinwie commented Feb 16, 2022

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 :

  1. Self-Choke : when the region choke itself, to prevent build-up sound effect. Usually longer off_time
  2. 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.

@kinwie
Copy link
Author

kinwie commented Feb 16, 2022

I link this issue for monitoring :
https://github.com/redtide/test/issues/3

@kinwie
Copy link
Author

kinwie commented Feb 19, 2022

I break down the opcode details :

  • choke_group : Given a new number ID for a region. This ID not related to group / off_by opcodes and not related to polyphony or note_poyphony opcodes. Value : Integer. Default value : 0

  • choke_by : When a new region with a choke_group number equal to choke_by plays, that region will be turned off. Value : Integer. Default value : 0

  • choke_mode : Determinate how a region is turned off by a choke_by opcode. Value : fast, normal, time. Default value : time.

  • choke_time : When choke_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 by choke_curve. Value and default, follows ARIA

  • choke_curve : When choke_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

@paulfd paulfd added the improvement Improve on existing functionality label Feb 19, 2022
@kinwie
Copy link
Author

kinwie commented Feb 28, 2022

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"

@sfztools sfztools locked and limited conversation to collaborators Nov 10, 2023
@redtide redtide converted this issue into discussion #1208 Nov 10, 2023

This issue was moved to a discussion.

You can continue the conversation there. Go to discussion →

Labels
improvement Improve on existing functionality
Projects
None yet
Development

No branches or pull requests

2 participants