-
Notifications
You must be signed in to change notification settings - Fork 127
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
Question: dsp swap with longer cross-fade? #406
Comments
Hi,
There's no builtin way to do this directly with a bind-func . Indirectly
this is possible but you're comparing apples and oranges here. In
Extempore when you recompile a bind-func you are literally switching the
executing code atomically - it's not a "high level audio node" in an audio
signal chain that hangs around and can be cross-faded. Now, having said
that, you could certainly build such a thing - but this would be running at
a higher level of abstraction, it's not an inherent property of XTLang's
general purpose functions.
Cheers,
Andrew.
…On Sat, Jan 1, 2022 at 10:16 PM avdrd ***@***.***> wrote:
The supported way to swap a dsp in extempore is to bind-func it again. I
could not find a way to do this with a longer cross-fade though.
In some other systems like SuperCollider it's pretty easy to have a Ndef
cross-fade to another when its source is changed; there's even a
\fadeTime parameter in SC (well in JITLib, but it ships with SC) that
controls that cross-fade and one can even supply their own fading envelope
with a bit more work (the default one is S-shaped for audio, i.e. sine a
sine from 0..pi/2 for the fade-in source and its mirror, i.e. pi/2..pi, for
the source being faded-out. For control-rate sources, a linear envelope is
automagically used instead. As you can see, a fair bit of thinkinging went
into designing that in SC, so it mostly work as expected "out of the box")
So how can I get an equivalent functionality in extempore, at least in
terms of controlling a basic \fadeTime length when doing a bind-func for
dsp that's already bound?
—
Reply to this email directly, view it on GitHub
<#406>, or unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAEHPKJENN7I5LQTZVET5WDUT3PAVANCNFSM5LCMLV3Q>
.
Triage notifications on the go with GitHub Mobile for iOS
<https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675>
or Android
<https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub>.
You are receiving this because you are subscribed to this thread.Message
ID: ***@***.***>
|
Fair enough. Even in SuperCollider such layering exists. The basic scsynth server doesn't quite have those notions of replacement with cross-fade, but only of node replacement, although it does have an XOut ugen that allows multiple "dsps" to effectively give the impression of running on the same "dsp slot", or rather on the same (share) bus in scsynth's case. I see Extempore doesn't seem to have this notion of shared busses at the lowest layer. I'm guessing it's not not hard to add such a shared-bus notion that's basically an array of functions all piping through the same dsp. I'm just a bit surprised that nobody using Extempore need this yet, i.e. I'd have expected you to point me to some Extempore library that does this. 🧀 |
I agree with Andrew; this comparison is not just unfair, it's impractical and unhelpful. That being said, the crossfade functionality you're talking about is certainly both useful and possible; here's one way it could perhaps work: Let's assume we have a
We therefore need a new macro, which could be something like This sounds like a fun little project so I may take a stab at it soon. One thing I'm not sure about, is the call to |
The supported way to swap a dsp in extempore is to
bind-func
it again. I could not find a way to do this with a longer cross-fade though.In some other systems like SuperCollider it's pretty easy to have a Ndef cross-fade to another when its
source
is changed; there's even a \fadeTime parameter in SC (well in JITLib, but it ships with SC) that controls that cross-fade and one can even supply their own fading envelope with a bit more work. The default one is S-shaped for audio, i.e. sine a sine from 0..pi/2 for the fade-in source and its mirror, i.e. pi/2..pi, for the source being faded-out. For control-rate sources, a linear envelope is automagically used instead. As you can see, a fair bit of thinking went into designing that in SC, so it mostly works as expected "out of the box".So how can I get an equivalent functionality in extempore, at least in terms of controlling a basic \fadeTime length when doing a
bind-func
for a dsp that's already bound?The text was updated successfully, but these errors were encountered: