This document lays out the a for implementing Composite, according to the written specification.
To meet the needs of the specification, the following major subcomponents are required:
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.
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 |
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.
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.