Features:

- text markers/cues.
- better resampling algorithm.
- pencil tool for sample drawing.
- multiple clipboards. (maybe)
- better LADSPA integration:
  - multiple channels. (done)
  - LADSPA envelope control.
- soundfile browser.

Cosmetic/UI:

- fix envelope drawing bugs at low magnification.
- optimize redrawing, blit new data only, other optimizations.
- better display algorithm for low magnification. (actually it is fine)
- select + drag outside window should scroll. (done)
- error handling + reporting (e.g. word wrap).

Bugs:

- sometimes playback becomes impossible, pthread_create return error?
- paste fit broken: pasted clipboard must *exactly* match selection
  length.
- tonegen frequency envelope inverts below -.5.

Technical/Other:

- check + sanitize envelope behaviour across modules.
- make selection independant per track (ui is problematic) (maybe).
- fix block_join and use it. (maybe)
- correctly "blend" graph data on element boundaries.
- selection control & undo is fragile. (not very important)
- more efficient replace operation (currently delete/insert).
- clean up actions and stuff. (think this through)
- redo after undo. (see above)
- disk store for clipboard and undo buffers at least.
- sample format conversion on output. 
- start play while loading yields incorrect (too low) frame_count
  so that playing stops prematurely. (not a bug, just inconvenient)
- reentrancy issues when nesting actions. (mostly done)
- disable certain functions on save, clipboard, etcetera.
  (i.e. reentrancy above) (mostly done)
- proper locking between player and gui threads particularly
  wrt. to recording. (basically done, maybe bugs) (fixed up, 
  pretty confident now) (still buggy, hopefully fixed now!)
- show clipboard. (sort of done, still problems, i.e. markers/selection
  are lost when opening/closing clipboard) (better now, maybe 
  needs more)
- undo in rapid succession recurses and crashes. (done?)
- paste over broken: pasting a clipboard larger than the selection
  should truncate to selection. (done)

Debugging data:

- crash (while dragging marker at very small hres factor,
  probably marker_being_dragged was never set to NULL something):

    #6  marker_list_marker_delete (ml=0x810d230, m=0x41cfff98) at marker.c:156

m points at nonsense!

    #7  0x8061dce in shell_canvas_button_press_event (widget=0x80fdf98, event=0x810e028, shl=0x80b4470) at shell.c:475
    #8  0x40289fbc in gtk_marshal_BOOL__POINTER () at eval.c:41
    #9  0x402bd916 in gtk_handlers_run () at eval.c:41
    #10 0x402bcc3d in gtk_signal_real_emit () at eval.c:41
    #11 0x402ba9f5 in gtk_signal_emit () at eval.c:41
    #12 0x402f50e9 in gtk_widget_event () at eval.c:41
    #13 0x40289f15 in gtk_propagate_event () at eval.c:41
    #14 0x40288f3f in gtk_main_do_event () at eval.c:41
    #15 0x40340e4f in gdk_event_dispatch () at eval.c:41
    #16 0x404d47f3 in g_main_dispatch () from /usr/lib/libglib-1.2.so.0
    #17 0x404d4dd9 in g_main_iterate () from /usr/lib/libglib-1.2.so.0
    #18 0x404d4f8c in g_main_run () from /usr/lib/libglib-1.2.so.0
    #19 0x40288803 in gtk_main () at eval.c:41
    #20 0x805cef5 in gui_run (argc=1, argv=0xbffff904) at gui.c:204
    #21 0x8067d6a in main (argc=1, argv=0xbffff904) at main.c:66
    #22 0x4051d617 in __libc_start_main (main=0x8067d04 <main>, argc=1, 
        ubp_av=0xbffff904, init=0x804f784 <_init>, fini=0x8067dd0
<_fini>, 
    rtld_fini=0x4000dcc4 <_dl_fini>, stack_end=0xbffff8fc)
        at ../sysdeps/generic/libc-start.c:129
	