Composite Roadmap

Abstract

This document lays out the a for implementing Composite, according to the written specification.

Major Components

To meet the needs of the specification, the following major subcomponents are required:

Path and Milestones

In rough terms: get the plugins working (with GUI)... and then build Composite (with audio plumbing).

Versions for development: 0.nnn(.p), where:

When 1.0 is released, the scheme will certainly change.

Target dates below are a guess, and assume that I will be the only developer. Other developers are welcome to join, of course.

Phase 1: Bootstrapping

Milestone What's Involved Target Date Status
Create repo based on Hydrogen Clone the current repo and convert to Git. Break SVN link. Merge several branches in with transport_redesign_2 branch that are still pending (e.g. jackMidi). Then rebrand. 2009-11 Complete: v0.002 2009-11-17
LV2 and DSSI sampler plugin (no GUI) Tritium: Refactor Hydrogen to get Sampler classes, logging system, build system, start of some serialization code. Base it on the transport_redesign_2 branch. 2009-12 Complete: v0.006 2010-03-18
—— Development on hold while working on a customer's project. Dates are no longer valid.——
LV2 and DSSI sampler plugin (with GUI) Composite: Refactor Hydrogen's Mixer + the Instrument Editor. Tritium: Improve serialization. 2010-01  
Refactor GUI to be LV2 host and load the new sampler. Composite: Quick and dirty. Tritium: Redo internal sound plumbing. Either extending transport_redesign_2 or borrowing one from another program. JACK driver refactored through HiJack (from InConcert). Also consider changing audio back-end to Ingen or Raul. 2010-02  
Implement new UI with the Matrix View, which will trigger patterns individually (no grouping, and all synchronous). Composite: Refactor into libcomposite. Quick and dirty UI stuff. Tritium: implement a sampler-like sequencer to handle this sort of stuff. 2010-04  
Implement live tempo sync, including tap-tempo (MIDI only). Tritium: borrow code from InConcert and complete it. 2010-05  
Add audio clips to matrix view (just triggers, no looping). Figure out how to load samples dynamically. May need to create LV2 extension. 2010-06  
Implement session recording (and playback) and undo. Tritium: come up with a way to record events so that we can do time travel. 2010-08  
Implement audio loops using resampling (instead of time-stretch) for tempo sync. Tritium: add audio looping support. 2010-09  
Implement beat-sliced audio loops (with editor) Composite: create editor. Tritium: come up with a beat-sliced loop format, and learn how to load/sequence it. 2010-10  

Phase 2: Finishing the Core

At this point, Composite has most of the basic building blocks, but is still missing key features like asynchronous sequencing, time-stretch for loops, an intuitive library, and real-time loading of stuff from the library. This phase will implement these.

XXX TO-DO: Construct the roadmap. :-) It makes little sense to write this section before Phase 1 is even started.

Phase 3: Stabilizing

Stabilize features, and audit against the specification. The 1.0 release will be based on being feature-complete without any know release-critical bugs. Release critical includes any segfaults, data corruption, or erratic behavior that differs from the specification.