Merge big changes (mostly Controllable) from trunk
[ardour.git] / DOCUMENTATION / TODO
1 ARDOUR TO-DO: $Id$
2 ----------------------------------------------------------------------
3
4 ITEMS REQUIRED FOR 1.0
5 ----------------------
6
7 * Automation
8     - must be able to apply a fade to a selected range
9 * Drag handles for region/xfade curves
10
11 * ensure I/O port is selected in connection dialog
12 * add a small buffer near the left edge of the editor canvas to
13      make mouse operations near that edge easier to get right
14 * context menus everywhere
15      - edit groups
16      - mix groups
17      - track lists
18      - region list
19      - click button
20
21   (miscellany)
22
23 * propagate name changes to equivalent regions in region list
24 * destroy region removes equivalent regions from region list
25 * fix edit group visibility toggle
26
27 META ITEMS
28 ----------
29
30 * there must be a manual
31
32 POST 1.0 WORK
33 -------------
34 * make region state of a playlist be position,length,layer, and save
35    that for BoundsChange or Layer change.
36 * automation modes (from protools):
37       - relative trim 
38       - etc.
39 * 2-step file expunge 
40 * allow sends/inserts and perhaps plugins to be named
41 * popup a big panner
42 * mix groups (adding new kinds of relationships to the groups, as per
43    old ideas from tom pincince)
44 * add meter range control
45 * change meter tap point
46 * cassowary-based constraints for edit groups
47 * serializing the edit history (i have a plan for this now)
48 * gtk2 port
49 * like, totally rock, dude.
50 * make rulers reorderable
51 * set of useful click sounds
52 * use snapshot mechanism to provide persistent undo/redo
53      - needs better integration of automation state
54         into session state.
55 * duplicate-with-gap
56 * panner multichannel backend code
57 * select new port display when its created
58 * copy/paste io configurations
59 * Better temporal navigation
60 * new region via plugin.
61 * digital input trim.
62 * possibly allow metering max-level adjustment at run-time
63 * use multi-loop-take ala Samplitude/PT
64 * song mode autonames for locate points
65      intro, verse1, verse N, chorus, bridge, outro/tag
66 * different clock display modes:
67     elapsed
68     remaining
69     time since location start
70     time till location end
71 * handle missing audio sources when loading
72 * option/action to snap selection to zero crossings
73 * pitch shift?
74
75 - Some global solo routing buttons and a sine/noise generator to
76        test all the connections.  Possibly a talkback input and
77        control.  Pretty much like the equivalent strip on a analog
78        console.
79
80 WAITING FOR GTK+/gtkmm 2.0:
81 ---------------------------
82 general gtkmmext::ui solution to delete_event in recursive Gtk::Main::run()
83 float<->ulong conversion in a GtkAdjustment (GTK2 uses doubles)
84    * fix the problems caused by range (float) limits on Locations.
85 figure out how to get frames/timebars to extend to max_frames.
86
87 UNDO ITEMS
88 ----------
89 track height?
90 capture?
91 I/O connection state, etc.
92
93 BUGS
94 ----
95
96 initial Tempo marker can be dragged
97 duplicate region names can be created automatically
98
99 THREAD QUESTIONS
100 ----------------
101     - which thread should:
102           - change playlists on a diskstream?
103           - change diskstreams on a track? (we don't support that in the UI)
104
105     - can we reliably construct a copy of the RT state, instead of 
106          using locks everywhere?
107
108 NOTES FROM THE MAILING LISTS
109 ----------------------------
110
111 -- gerard --
112
113 Region gain has some bugs. They dissappear when trimming. Don't always 
114 playback correctly. 
115
116 I had some strange things with a chunk where the last region seemed to use 
117 the audio file as a peakfile. It played back correctly, but it showed up 
118 frames_per_peak too large.
119
120 -- gerard2 ---
121
122 Automation.
123 I see that automation editing is in the TODO.  How about the whole deal: 
124 Changing it during aplay. relative or absolute, latch (is that the word) or 
125 momentary override etc
126 Is this for >1.0 ? It is not that important for me but maybe for some 
127 folks...
128
129 Better metering configurability. Post/pre etc. 
130
131 Gui interface consistency.
132
133 more keyboard shortcuts for f.i. (are they hard to add?):
134         -arrow keys to move selection from region to region
135         -seperate region. This one can be the same for split region, if there is 
136          a range selected seperate, if not split.
137         
138
139 Should playhead also snap to grid?
140
141 Adding/removing snapshots through snapshot pane.
142
143 I would prefer to move the pre and post roll adjustments to the options 
144 menu, and have a start/end/duration of selection clocks.
145
146 A way to deal with misbehaving plugins. They shouldn't be able to freeze 
147 ardour.
148
149 What is the current (and planned) edit-group functionality? It doesn't seem 
150 to much.
151
152 -----
153
154 make use of transients a run-time option
155 panning for export
156
157 mute automation event
158
159 region length/end editor clocks don't modify position
160
161 should we allow N-channels regions to be inserted into non-N-channel routes?
162
163 auto-crossfades are unreliable/hard to predict/confusing
164 reset declick curves when doing a region copy (only if auto-crossfading?)
165
166 audio clock editing
167    - make drag work again
168    - use tick field
169
170 post fader plug/inserts get into a very inconsistent state wrt active/not active
171 mixer strip widths are not persistent across state save/restore
172 automation-read updates in mixer-strip in editor
173 don't initiate MIDI binding if there is no MMC control
174 export to audiofile 
175    - exports tracks not marked for export (?)
176    - contains clicks/pops even with no SRC/dither (FIXED?)
177
178 timefx region length error (check back with audacity crew)
179 send gain control is clicky.
180 some regionview names don't seem sensitive to canvas events
181 splice mode needs to work correctly all the time, at the right times
182 removing a port then adding a new one can cause duplicate names
183 plugin automation buttons don't update from a plugin signal
184 how to handle multichannel selections
185 apparently selected location on startup of locations window, or
186      when creating new location from selection is *not* selected
187 source/region naming/region list display
188
189 LONG TERM CHECKING
190 ------------------
191 RT-ness of all RT-thread STL usage
192
193 GUI DETAILS
194 -----------
195 Use mouse wheel events (button4/5)
196 Remove regions from region list
197 Some location window ops need dbl click, some don't
198
199
200 CHROME
201 ------
202 make prompters look nicer still.
203 make ladspa plugin selector look nicer
204 don't popup "no group" when there are no groups (mixer strip).
205 fix bug in Gtkmmext with wrapping on Gtkmmext::ClickBox
206 make region editors look nicer
207 region editor audition button doesn't pop up after audition is finished
208 allow same color for all streamviews
209
210 AUDIO STREAM
211 ------------
212
213 [ These are JACK TODO's ]
214
215 * need to ensure that cards like the Hammerfall are really set
216   to the correct sample rate when connected to an external
217   clock source.
218 * ::connect_to_session() should indicate a problem if the
219     sample rate is wrong ....
220
221 MIDI Machine Control
222 -----------------------
223
224 * handle stupid Mackie TC buttons
225 * send MMC rec-enable messages
226 * allow control (MMC/Local) selection to work
227 * make sure that MMC ID works
228
229 EDITOR, etc.
230 ------------
231
232 * "use location to define selection"