! title TODO list for the Non-sequencer -- ; General * allow deletion and renumbering of individual patterns and phrases. * add mode for disconnected operation. This is especially important for the situation where there is a timebase master when Non is started that exits before Non is closed, resulting in a lack of BBT information on the transport and a subsequent crash. * add option to create new instrument defintion. * per phrase tempo setting? Perhaps a percentage of global tempo? * add channel field to event list widget (but channel bits in pattern event lists are currently meaningless.) * add uneditable "other" tab to event list widget. * new Phrase playback mode. In this mode, a single phrase is looped, and the next phrase to be looped can be queued. This is similar the the playlist, but not linear from bar 1. * live performance record. Does this have to be internal to Non? Is there no jack MIDI capable recorder that could be connected to all non ports? How would ports be handled anyway? As separate tracks in an SMF-1 file, perhaps? * add global setting for composer name/copyright to be included in song files. * !!! now that we're not using stupid-ass STL list container for the event lists we can perhaps keep a pointer to the next event in the playback thread, which would eliminate much overhead. This might also require keeping a "dirtied" bit in the grid to let the playback thread know that the UI thread has changed the list between process calls (also, what about transport relocations?) * guess key signature of imports? * figure out how to handle SysEx events with Jack MIDI (packetize them?) * add chords to scale list... a pattern using the scale of a chord would contain a melody within that chord. ; Canvas * custom scrollbar widget (dots) * add vertical scrollbar widget to canvas. * update beat/measure line drawing when BPB changes. * update phrase height when number of patterns changes... (good use for a signal?) * phrases need a way to show/hide relevant patterns. The whole "mapping" system is a total mess. How about only showing rows containing events? How would one add a pattern in this system? A button that adds an event for the given pattern? * split canvas into separate widgets (ruler, names, canvas)?