ARDOUR TO-DO: $Id: TODO,v 1.192 2003/10/17 15:11:57 pbd Exp $
----------------------------------------------------------------------

ITEMS REQUIRED FOR 1.0
----------------------

* Automation
    - must be able to apply a fade to a selected range
    - must be able to cut/copy/paste parts of automation curves
    - must be able to draw pan curves, not just gain curves
    - note: you will *not* be able to draw plugin parameter curves,
            they have to be initiated using on-screen sliders or
	    MIDI control, but can be edited on-screen.

* Crossfades
    - some reimplementation here of how they are done
    - new Overlap canvas item

* New export model
    - requires free-running JACK option
    - allows full export via busses

* Selection
    - BBT-based ranges to be removed
    - some way to select a track
    - rubber-banding for region selection
    - selecting something of type X cancels the selection
       of type Y

* rate limiter for reverse+ffwd  [PAUL-SOON]
* skip mode ("play 0.5secs then jump N secs") for reverse+ffwd 
     above this limit    
* fix whatever causes the butler thread to die 
* add option to region context menu for removing underlying audio file
          (with delayed expunge)
* ensure I/O port is selected in connection dialog
* add dialog to new track/bus menus to specify how many to add
* remove 2^n limit for zoom [JESSE]
* catch stacked zoom requests to avoid appearance of hanging
     while handling massive zoom in/out
* add support for master outs
* add a small buffer near the left edge of the editor canvas to
     make mouse operations near that edge easier to get right
* allow meters to go over 0dB
* change meter pixmap so that over 0dB is the only red section
* snap to marker
* do sample-rate conversion when importing sndfiles
* check SR for inserted external sndfiles
* make sure that stop-on-xrun is not the default, and make
     sure a message is displayed if it ever happens
* check brush mode

META ITEMS
----------

* there must be a manual
* bugzilla or mantis site established, running, 
      handles bug reports via email
* bug reporting script/gui (probably in python)

POST 1.0 WORK
-------------
* automation modes (from protools):
      - auto-touch
      - relative trim 
      - etc.
* pre-metering should use n-inputs rather than n-outputs for the
  displayed meter count.
* allow sends/inserts and perhaps plugins to be named
* popup a big panner
* control out support
* mix groups (adding new kinds of relationships to the groups, as per
   old ideas from tom pincince)
* add meter range control
* change meter tap point
* cassowary-based constraints for edit groups
* per-track latency compensation
* serializing the edit history (i have a plan for this now)
* autoconnect dialog
* gtk2 port
* like, totally rock, dude.
* make rulers hidable/reorderable
* set of useful click sounds
* use snapshot mechanism to provide persistent undo/redo
     - needs better integration of automation state
        into session state.
* duplicate-with-gap
* panner multichannel backend code
* select new port display when its created
* copy/paste io configurations
* use control outs in ardour/gtk
* a way to hide rulers selectively
* Better temporal navigation
* new region via plugin.
* digital input trim.
* indicate loop/punch status for location markers.
* possibly allow metering max-level adjustment at run-time
* use multi-loop-take ala Samplitude/PT
* song mode autonames for locate points
     intro, verse1, verse N, chorus, bridge, outro/tag
* different clock display modes:
    elapsed
    remaining
    time since location start
    time till location end
* handle missing audio sources when loading
* option/action to snap selection to zero crossings
* pitch shift?
* Midi-CC control for the panning.

* A control room mixer strip. With just a fader for the auditioner level, its 
   connections. 
   - Some global solo routing buttons and a sine/noise generator to
       test all the connections.  Possibly a talkback input and
       control.  Pretty much like the equivalent strip on a analog
       console.

WAITING FOR GTK+/gtkmm 2.0:
---------------------------
general gtkmmext::ui solution to delete_event in recursive Gtk::Main::run()
float<->ulong conversion in a GtkAdjustment (GTK2 uses doubles)
   * fix the problems caused by range (float) limits on Locations.
figure out how to get frames/timebars to extend to max_frames.

UNDO ITEMS
----------
track height?
capture?
I/O connection state, etc.

BUGS
----

initial Tempo marker can be dragged
duplicate region names can be created automatically

THREAD QUESTIONS
----------------
    - which thread should:
          - change playlists on a diskstream?
	  - change diskstreams on a track? (we don't support that in the UI)

    - can we reliably construct a copy of the RT state, instead of 
         using locks everywhere?

NOTES FROM THE MAILING LISTS
----------------------------

-- gerard --

Region gain has some bugs. They dissappear when trimming. Don't always 
playback correctly. 

I had some strange things with a chunk where the last region seemed to use 
the audio file as a peakfile. It played back correctly, but it showed up 
frames_per_peak too large.

-- gerard2 ---

Automation.
I see that automation editing is in the TODO.  How about the whole deal: 
Changing it during aplay. relative or absolute, latch (is that the word) or 
momentary override etc
Is this for >1.0 ? It is not that important for me but maybe for some 
folks...

Better metering configurability. Post/pre etc. 

Gui interface consistency.

more keyboard shortcuts for f.i. (are they hard to add?):
	-arrow keys to move selection from region to region
	-seperate region. This one can be the same for split region, if there is 
	 a range selected seperate, if not split.
	

Editcursor and playhead draghandles should always be visible on the top or 
bottom of the pane.

Should playhead also snap to grid?

Adding/removing snapshots through snapshot pane.

I would prefer to move the pre and post roll adjustments to the options 
menu, and have a start/end/duration of selection clocks.

A way to deal with misbehaving plugins. They shouldn't be able to freeze 
ardour.

What is the current (and planned) edit-group functionality? It doesn't seem 
to much.

-----

make use of transients a run-time option
panning for export

mute automation event
plugin automation event

region length/end editor clocks don't modify position

should we allow N-channels regions to be inserted into non-N-channel routes?

auto-crossfades are unreliable/hard to predict/confusing
reset declick curves when doing a region copy (only if auto-crossfading?)

audio clock editing
   - make drag work again
   - use tick field

post fader plug/inserts get into a very inconsistent state wrt active/not active
mixer strip widths are not persistent across state save/restore
automation-read updates in mixer-strip in editor
don't initiate MIDI binding if there is no MMC control
export to audiofile 
   - exports tracks not marked for export (?)
   - contains clicks/pops even with no SRC/dither (FIXED?)

timefx region length error (check back with audacity crew)
send gain control is clicky.
copy of selected regions doesn't do anything
some regionview names don't seem sensitive to canvas events
splice mode needs to work correctly all the time, at the right times
removing a port then adding a new one can cause duplicate names
plugin automation buttons don't update from a plugin signal
editor selection in general
how to handle multichannel selections
apparently selected location on startup of locations window, or
     when creating new location from selection is *not* selected
source/region naming/region list display

LONG TERM CHECKING
------------------
RT-ness of all RT-thread STL usage

GUI DETAILS
-----------
Use mouse wheel events (button4/5)
Remove regions from region list
Some location window ops need dbl click, some don't


CHROME
------
make prompters look nicer still.
make ladspa plugin selector look nicer
don't popup "no group" when there are no groups (mixer strip).
fix bug in Gtkmmext with wrapping on Gtkmmext::ClickBox
make region editors look nicer
region editor audition button doesn't pop up after audition is finished
allow same color for all streamviews

AUDIO STREAM
------------

[ These are JACK TODO's ]

* need to ensure that cards like the Hammerfall are really set
  to the correct sample rate when connected to an external
  clock source.
* ::connect_to_session() should indicate a problem if the
    sample rate is wrong ....

MIDI Machine Control
-----------------------

* handle stupid Mackie TC buttons
* send MMC rec-enable messages
* allow control (MMC/Local) selection to work
* make sure that MMC ID works

EDITOR, etc.
------------

* "use location to define selection"
