Add URL's and documentation for Composite Sampler.
[composite:composite-planning.git] / roadmap.html
1 <?xml version='1.0' encoding='ISO-8859-1' ?> <!-- -*- mode:nxml; -*- -->
2 <!DOCTYPE html 
3           PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
4           "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
5 >
6 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7   <head>
8     <link rel='stylesheet' type='text/css' href='style.css' />
9     <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
10     <title>Composite - Roadmap</title>
11   </head>
12   <body>
13     <h1><span class='application'>Composite</span> Roadmap</h1>
14
15     <div>
16       <h2>Abstract</h2>
17
18       <p>This document lays out the a for implementing <span
19       class='application'>Composite</span>, according to the written
20       <a href='specification.html'>specification</a>.</p>
21
22     </div>
23     <div>
24       <h2>Major Components</h2>
25
26       <p>To meet the needs of the specification, the following major
27       subcomponents are required:</p>
28
29       <ul>
30         <li>
31           libtritium &mdash; The library guts.
32           <ul>
33             <li>
34               The sampler (classes, etc.).
35             </li>
36             <li>
37               The audio plumbing (mixer, transport, audio loop, etc.)
38             </li>
39             <li>
40               The sequencer.
41             </li>
42             <li>
43               The logging system.
44             </li>
45             <li>
46               Serialization.
47             </li>
48             <li>
49               The resources library (samples, sequences, loops,
50               plugins, etc.)
51             </li>
52             <li>
53               The audio looper.
54             </li>
55             <li>
56               Event abstraction and translation.
57             </li>
58           </ul>
59         </li>
60         <li>
61           libcomposite &mdash; the reusable GUI components like
62           widgets and user preferences.  This includes the components
63           used for the plugin GUI's.
64         </li>
65         <li>
66           Sampler Plugin applications (LV2 and DSSI), including GUI's.
67         </li>
68         <li>
69           Composite &mdash; the final application.
70         </li>
71       </ul>
72
73     </div>
74     <div>
75       <h2>Path and Milestones</h2>
76
77       <p>In rough terms: get the plugins working (with GUI)... and
78       then build Composite (with audio plumbing).</p>
79
80       <p>Versions for development: 0.nnn(.p), where:</p>
81
82       <ul>
83         <li>nnn := a release (000, 001, 002, ...), and</li>
84         <li>p := bugfix release (0, 1, 2...), only as necc.</li>
85       </ul>
86
87       <p>When 1.0 is released, the scheme will certainly change.</p>
88
89       <p>Target dates below are a guess, and assume that I will be the
90       only developer.  Other developers are welcome to join, of
91       course.</p>
92
93       <div>
94         <h3>Phase 1: Bootstrapping</h3>
95
96         <table border='1'>
97           <tr>
98             <th>Milestone</th>
99             <th>What's Involved</th>
100             <th>Target Date</th>
101             <th>Status</th>
102           </tr>
103           <tr>
104             <td>Create repo based on Hydrogen</td>
105             <td>Clone the current repo and convert to Git.  Break SVN
106             link.  Merge several branches in with transport_redesign_2
107             branch that are still pending (e.g. jackMidi).  Then
108             rebrand.</td>
109             <td>2009-11</td>
110             <td>Complete: v0.002 2009-11-17</td>
111           </tr>
112           <tr>
113             <td>LV2 and DSSI sampler plugin (no GUI)</td>
114             <td>Tritium: Refactor Hydrogen to get Sampler classes,
115             logging system, build system, start of some serialization
116             code.  Base it on the transport_redesign_2 branch.</td>
117             <td>2009-12</td>
118             <td>In progress</td>
119           </tr>
120           <tr>
121             <td>LV2 and DSSI sampler plugin (with GUI)</td>
122             <td>Composite: Refactor Hydrogen's Mixer + the Instrument
123             Editor.  Tritium: Improve serialization.</td>
124             <td>2010-01</td>
125             <td>&nbsp;</td>
126           </tr>
127           <tr>
128             <td>Refactor GUI to be LV2 host and load the new
129             sampler.</td>
130             <td>Composite: Quick and dirty.  Tritium: Redo internal
131             sound plumbing.  Either extending transport_redesign_2 or
132             borrowing one from another program.  JACK driver refactored
133             through HiJack (from InConcert).  Also consider changing
134             audio back-end to Ingen or Raul.</td>
135             <td>2010-02</td>
136             <td>&nbsp;</td>
137           </tr>
138           <tr>
139             <td>Implement new UI with the Matrix View, which will
140             trigger patterns individually (no grouping, and all
141             synchronous).</td>
142             <td>Composite: Refactor into libcomposite.  Quick and dirty
143             UI stuff.  Tritium: implement a sampler-like sequencer to
144             handle this sort of stuff.</td>
145             <td>2010-04</td>
146             <td>&nbsp;</td>
147           </tr>
148           <tr>
149             <td>Implement live tempo sync, including tap-tempo (MIDI
150             only).</td>
151             <td>Tritium: borrow code from InConcert and complete
152             it.</td>
153             <td>2010-05</td>
154             <td>&nbsp;</td>
155           </tr>
156           <tr>
157             <td>Add audio clips to matrix view (just triggers, no
158             looping).</td>
159             <td>Figure out how to load samples
160             dynamically.  May need to create LV2 extension.</td>
161             <td>2010-06</td>
162             <td>&nbsp;</td>
163           </tr>
164           <tr>
165             <td>Implement session recording (and playback) and undo.</td>
166             <td>Tritium: come up with a way to record events so that we
167             can do time travel.</td>
168             <td>2010-08</td>
169             <td>&nbsp;</td>
170           </tr>
171           <tr>
172             <td>Implement audio loops using resampling (instead of
173             time-stretch) for tempo sync.</td>
174             <td>Tritium: add audio looping support.</td>
175             <td>2010-09</td>
176             <td>&nbsp;</td>
177           </tr>
178           <tr>
179             <td>Implement beat-sliced audio loops (with editor)</td>
180             <td>Composite: create editor.  Tritium: come up with a
181             beat-sliced loop format, and learn how to load/sequence
182             it.</td>
183             <td>2010-10</td>
184             <td>&nbsp;</td>
185           </tr>
186
187         </table>
188       </div>
189       <div>
190         <h3>Phase 2: Finishing the Core</h3>
191
192         <p>At this point, Composite has most of the basic building
193         blocks, but is still missing key features like asynchronous
194         sequencing, time-stretch for loops, an intuitive library, and
195         real-time loading of stuff from the library.  This phase will
196         implement these.</p>
197
198         <p>XXX TO-DO: Construct the roadmap. :-) It makes little sense
199         to write this section before Phase 1 is even started.</p>
200
201       </div>
202       <div>
203         <h3>Phase 3: Stabilizing</h3>
204
205         <p>Stabilize features, and audit against the specification.
206         The 1.0 release will be based on being feature-complete
207         without any know release-critical bugs.  Release critical
208         includes any segfaults, data corruption, or erratic behavior
209         that differs from the specification.</p>
210
211       </div>
212     </div>    
213
214   </body>
215 </html>