surge-synthesizer / shortcircuit-xt

Will be a sampler when its done!
GNU General Public License v3.0
251 stars 28 forks source link

Tails and Group Release #852

Open baconpaul opened 6 months ago

baconpaul commented 6 months ago

Tail is an interesting problem. We have three types of processors

No tail. (So, like, the pitch ring) Tail which decays (like a delay or reverb) Tail doesn't make sense / is infinite so external system has to decide (like a sine generator)

For voice its easy. Everything is gated by the AEG. We can save some CPU by not running the no tail processors once the sample is finished if my upstream processors are also no tail.

But for groups it really matters. A delay in a group slot you want to ring out after the voices are finished. A generator probably less so.

But the 'group-process lifetime' is actually a tricky problem! If you add, say, a sine generator as a monphonic drone in your group and pitch it based on like last voice pitch or some such, it will end very abruptly. So need to think about that some. it's almost like you want a 'group release' modulation source but how long etc....

one to think about. For now I will just set the generators with 0 tail. but will definitely want to revisit this so I'll stick this comment in an issue

baconpaul commented 6 months ago
The generator problem is really just with group generators
“Until silence” isn’t a cheap calculation with a delay oddly. Imagine a long delay with feedback and a short pulse. Lots of silence. But that’s a well solved problem
The zone level generators can get an eg from the zone eg already!
Andreya — Today at 10:08 AM
Yeah I know! But if they get their own EG they have finite lifetime I mean. Which puts them in the same category as the delay/reverb.
It could be a simple AR one even. Which would have the additional benefit that you could say smooth the attack without burning an EG sources
baconpaul — Today at 10:13 AM
Yeah right and then they release after last voice ends in group
That’s a really clever solution
Andreya — Today at 10:14 AM
Exactly!
baconpaul — Today at 10:14 AM
But in zone it is wierd because you don’t want it to release when un gated
Since it is inside the aeg
Andreya — Today at 10:16 AM
Option to disable when loaded in zone?
baconpaul — Today at 10:17 AM
It’s like you want the ar on group generators but not zone
Jinx
Andreya — Today at 10:18 AM
Yup!
baconpaul — Today at 10:18 AM
Ok will ponder some more. Good idea
Ahh also it’s annoying if you have generators chained
Need to think some more
Maybe group eg can solve this too
baconpaul commented 1 month ago

GroupTailsDontWork.scm.zip

Here's a great SCM which shows it

Compare holding a key down with pressing a key. That group delay should keep on ringing