musikinformatik / SuperDirt

Tidal Audio Engine
GNU General Public License v2.0
519 stars 75 forks source link

Lag processor / interpolation for effects #230

Open jarmitage opened 3 years ago

jarmitage commented 3 years ago

The effects bus (#190) issue originally was also about how you would do something like this:

d1 $ s "bev" # legato 1 # panbus 1 "0 1 0 1"

While also moving smoothly between the panbus values. From Tidal we can do:

d1 $ s "bev" # legato 1 # panbus 1 (segment 128 $ sine2)

But would there be a way to do this on the SuperDirt side in the continuous domain? So e.g. from Tidal:

d1 $ s "bev" # legato 1 # panbusBy 1 "linear" "0 1 0 1" -- & ease, etc

d1 $ s "bev" # legato 1 # panbusBy 1 50 "0 1 0 1" -- 50ms lag

And SuperDirt would do the rest? And could this also work outside of effects?

d1 $ s "bev" # legato 1 # panBy "50" "0 1 0 1"

d1 $ s "bev" # legato 1 # speedBy "50" "1 2 1 2"
telephon commented 3 years ago

You mean if you could have superdirt run a continuous curve from one bus value to the next?

telephon commented 3 years ago

In that particular case, tidal could use a different message to set the bus, instead of /c_set, it could send:

"/s_new", "system_setbus_control_1", -1, 1, 1, "values", <the-value>, "out", <bus-index>, "fadeTime", <crossfade-time>, "curve", <a-bipolar-shape-value>
jarmitage commented 3 years ago

You mean if you could have superdirt run a continuous curve from one bus value to the next?

Yes exactly that. Depending on cost/benefit of implementing, could be options for different curves, additional params, etc.

telephon commented 3 years ago

The costs are relatively low. Maybe we should let the current system sink in a little, just to be sure it is the right design. For instance, adding a new name for every crossfading method for each existing parameter smells like combinatorial explosion already.