Skip to content
Colin Clark edited this page May 8, 2016 · 23 revisions

Flocking Release Plan

0.2.0: Internal Refactoring and Early Live Playground

  • ✅ Migrate website to more reliable hosting and change to stable branch
  • ✅ Migrate mailing lists to the Fluid Project
  • ✅ Basic, view-only version of the Flocking "live" graphical Playground
  • ✅ Playground's play button should fade in and out smoothly to avoid clicks
  • ✅ Ability to record to a buffer and asynchronously save it as a WAVE file
  • ✅ Upgrade to latest version of Infusion 2.0.0-beta
  • Improved factoring of core components
    • ✅ Merge in the graphical-ioc branch
    • ✅ Remove all hard-coded references to flock.environment
  • Performance improvements
    • ✅ remove Infusion events and invokers from the main processing loop
    • ✅ Functions + state for main sample processing loop
  • Better error reporting in new Playground
  • Comprehensive, basic tutorial for using Flocking, including: ** How to create synths ** How to start and stop the environment and add/remove synths in the environment ** How to sequence and schedule in-graph changes (using flock.sequencer and flock.change) ** How to schedule other events using the bare Schedule API (i.e. once(), repeat(), and clear()
  • Reference documentation for all unit generators

0.3.0: Scheduling and Input Mapping

  • Block-accurate scheduling (via Bergson)
  • Declarative means to perform all major actions in Flocking via the scheduler (and eventually via OSC-style remoting), including: ** Create, add, remove, and destroy synths ** Update synth values ** Start and stop the environment
  • Improvements to flock.modelSynth, which will become the default
  • Improved MIDI support
  • Out of the box support for OSC.js

0.4.0: Wire Specifications

  • Complete rewrite of the Flocking interpreter (a.k.a. the parser) to be more modular
  • Support the separation and naming of unit generators with wire specifications, which will enable one unit generator to be hooked up as the input to more than one other unit generator (sketches)
  • Consider an expression syntax (compatible with Infusion) that will allow for a more terse means of wiring
  • Refactor the Live Playground to support wire specifications

0.5.0: Web Audio Islands

  • SignalEvaluator
  • JSON Specification for wiring up WebAudio nodes
  • Ability to connect synths up to other synths directly, rather than depending on buses
  • Ability to schedule WebAudio AudioParams declaratively

0.6.0: Live, On the Fly Data Merging

  • "Generous" JSON parser and CodeMirror mode that supports unquoted keys, comments, and line/character index metadata
  • Expression parser that supports mathematical expressions, references to constants, etc. in JSON
  • Ability to load a JSON file containing a band/synthDef from the local file system or a URL
  • Refactor flock.synth so its synthDef is a "live model," where all changes to the unit generator graph are mediated by the ChangeApplier and take effect on-the-fly

0.8.0: Improved Visual Playground

  • Rewrite the visual playground and underlying synthDef/ugenDef parsing logic
  • Replace JSPlumb with Cytoscape or equivalent
  • Better visual representations for unit generators, envelopes, etc. (i.e. render them directly)
  • Support for rendering multiple synths and bands
  • Support for rendering common Infusion IoC expressions
  • Add ability to edit unit generator graphs

0.9.0: Documentation

  • Awesome getting started tutorial
  • Documentation for all unit generators
  • How to reuse and extend other synths

1.0.0: Unit Generator Performance Optimization

  • Functions + state for all unit generators
  • Further optimize all hot paths
  • Ability to inject change unit generators for sample-accuracy when scheduling value changes

1.1.0: Collaborative Playground

  • Support for file management
    • Create, delete, save
  • New view for selecting and creating
  • OAuth integration with Github
  • Gist persistence manager
  • PouchDB-based local caching, wrapped with a similar REST-style API to Gist’s

Shipped

0.1.0: Essential Unit Generators and Better WebAudio API Integration