Skip to content
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

DAG topology #52

Open
Ralith opened this issue Jun 7, 2021 · 0 comments
Open

DAG topology #52

Ralith opened this issue Jun 7, 2021 · 0 comments
Labels
enhancement New feature or request

Comments

@Ralith
Copy link
Owner

Ralith commented Jun 7, 2021

oddio presently only has good support for signals and filters arranged in trees. It's unclear if there's a compelling use case for more complex graph topology; if you have one, please comment!

The primary difficulty in resolving this is that Signal::sample implicitly advances time, so if a single signal must be sent to multiple places, it must be buffered. Additionally, because multiple consumers might sample over differing amounts of time, the buffering logic is non-trivial.

One approach would be to define a special Fork filter that allows any number of handles to be produced (via an internal Arc) which tracks the relative positions of each handle, and buffers at least enough samples to cover the difference between the earliest and latest handle. To avoid dynamic allocation on the audio thread, a maximum buffer size would be needed up front.

@Ralith Ralith added the enhancement New feature or request label Jun 7, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

1 participant