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

Refactor Flocking to remove technical debt and improve support for AudioWorklets #310

Open
colinbdclark opened this issue Mar 7, 2023 · 1 comment

Comments

@colinbdclark
Copy link
Collaborator

colinbdclark commented Mar 7, 2023

Flocking has for been largely stagnant for a long time and my attention has been focused on Signaletic, which I hope will form the long-term basis for future Flocking-like work across multiple platforms, including the Web and Eurorack/embedded hardware.

However, Flocking still contains tons of useful and interesting work, which I (and maybe others?) would like to have access to in a more focused AudioWorklet-compatible environment. There's enough technical debt and dead design branches that we should simple prune a lot of it off and just focus on the core identity of Flocking: its unit generators, declarative format for expressing signal graphs, and support for visual renderings of signal graphs.

My intent with this refactoring will be to remove anything that isn't directly supportive of running Flocking within an AudioWorklet and idiomatically interfacing it with the rest of the Web Audio API. The following things will be removed:

  • All overarching framework functionality that tries to abstract away the Web Audio API (Environments, the Audio System, the Output Manager)
  • Older leaky abstractions such as the Scheduler
  • Wrappers around Web Audio API nodes such as audio input, media sources, etc.
  • The imperative (i.e. JavaScript) playground

Moving forward, the focus will be on:

  • Defining AudioWorklets that run a Flocking unit generator graph
  • Mapping AudioParams and inputs/outputs to the Flocking graph (for zero garbage realtime parameter updates)
  • Modifying a Worklet's unit generator graph declaratively (for on-the-fly modification of a graph as in the Live Playground)
  • Integrating with Signaletic signals, and slowly replacing Flocking's unit generators with Signaletic Signals as appropriate
  • The JSON-based visual playground editor
colinbdclark added a commit to colinbdclark/Flocking that referenced this issue Mar 7, 2023
colinbdclark added a commit to colinbdclark/Flocking that referenced this issue Mar 10, 2023
….enviro and flock.synth.

Migrates NodeList and its tests.
colinbdclark added a commit to colinbdclark/Flocking that referenced this issue Mar 12, 2023
…oWorklet example.

Refactors evaluators.js to fit with the new world.
colinbdclark added a commit to colinbdclark/Flocking that referenced this issue Mar 12, 2023
Renames UnitGraph to UnitGeneratorGraph.
colinbdclark added a commit to colinbdclark/Flocking that referenced this issue Mar 16, 2023
colinbdclark added a commit to colinbdclark/Flocking that referenced this issue Jul 10, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant