Skip to content
Colin Clark edited this page Jun 20, 2015 · 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
  • Block-accurate scheduling
  • Improved factoring of core components (merge in the graphical-ioc branch), removal of hard-coded references to flock.environment
  • Performance improvements
    • Functions + state for main sample processing loop
    • ✅ remove Infusion events and invokers from the main processing loop
  • Upgrade to latest version of Infusion 2.0.0-alpha
  • Alias fluid.defaults to flock.def for easier declaration of named, shareable synths

0.3.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.4.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

0.5.0: Improved Scheduler

  • New scheduler API, including the ability to:
  • create synths
  • manipulate the environment (e.g. add synths, remove them, destroy them)
  • use value expressions (e.g. ${synth.freq}) anywhere within a change specification
  • Ability to inject change unit generators for sample-accuracy when scheduling value changes
  • 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.7.0: Input Mapping

  • Input mapper
  • Finish MIDI support
  • Out of the box support for OSC.js

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

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

Clone this wiki locally