package vermilion;

////////////////////////////////////////////////////////////////////////////////
// These TODOs are my own plan and will affect multiple systems simultaneously.
// It is best not to touch these and avoid my sweeping changes as they happen.
////////////////////////////////////////////////////////////////////////////////

// @todo: addremove tracks/patterns working, if enter data then add track does
// it save?
// @todo: finish track utils, note-offs, pattern offs
// @todo: shortcut keys not working on pattern editor
// @todo: change buffers to float[][] everywhere
// @todo: sample bank - filetypes, sample types, envelopes
// @todo: sample bank - oscillators, functional audio etc
// @todo: finish description field help
// @todo: project that builds a single demo machine
// @todo: pattern/machine names, remember to change cues
// @todo: make things on system router etc. static, avoid passing refs
// @todo: saving when a machine is moved
// @todo: comments, especially in longer methods
// @todo: shortcut keys reg from components, il81n33t

////////////////////////////////////////////////////////////////////////////////
// These TODOs are open tasks that are more or less self-contained. Smaller TODOs
// are littered throughout the classes they belong to.
////////////////////////////////////////////////////////////////////////////////

// TODO: Tab ordering of the system plugins should be controllable by the user,
// without affecting the loading order of the plugins.

// TODO: Optimise the audio routines in the audio thread and simple wire classes.
// Loop unrolling, SIMD, etc. (Java Guru)

// TODO: Improve the mechanism for registering event and audio providers, adding
// the ability to have multiples of each. (Hard)

// TODO: Implement basic locking of data between the main (GUI) thread and the
// audio thread (and any parameter window threads). (Parallel programming)

// TODO: Generalise the audio processing routines so that we can add wavelet
// audio to Vermilion. (Hard)

// TODO: Generalise the main event driving mechanisms to allow e.g. a video
// thread, video providers etc. (Hard)

// TODO: Examine the life cycle of ALL composition and runtime data for
// concurrency and locking problems including parallelisation. (Hard)