Mouse control

h2. Tasks and priorities Depending on the current user task, the different operations are more or less frequently needed. Most frequently listed first. No mention of editing controlers as I think it generaly tends to occure less frequently than any note editing and will most likely happen in something like automation tracks anyway. Editing realtime recorded MIDI * Move * Scale * Adjust velocity * Delete * Add Programming MIDI * Add * Delete * Adjust velocity * Move * Scale Tweaking MIDI * Adjust velocity * Scale * Move It could be of advantage to have modes / tools that match these lists. h2. Target areas Besides moving notes, it must also be possible to resize them, which can be though of as moving either note ons or offs. Short notes on common zoom levels are likely too small to offer target areas (handles) for 2 (whole note, note off) or even 3 operations (whole, on, off). Approaches: # Resizing handles outside the actual note. But how to avoid overlap with other notes and handles? # Separate tools for moving whole notes vs note ons and offs. h2. Modality Editing MIDI consist of a number of actions like adding, deleting and selecting notes. To make these accesible via the mouse, usually a number of modes, called tools, is introduced. Modes add context the user needs to keep in mind, as the same actions will not always lead to the same result anymore. Mode switching also means additional steps the user has to take. Therefore it seems desirable to minimize modality. Jeff Raskin proposed the use of quasimodes, where a mode is kept in place only as long as a key is held down. This way the user can hardly forget about it. Holding a key for a longer duration is tiresome, though. Quasimodes should be considered for short tasks, but avoided for long tasks. Having as much functionality as sensible in one mode is desireable. With MIDI, there are problems: The most efficient way to add notes via mouse would be to just click where they shall appear. Or click-drag to also define their length. Just clicking or dragging are also nice for selection. Moving notes happens best by just dragging. I can think of 3 approaches to deal with this: # One tool per action. Modifier keys could be used to temporarily switch to other tools, or to switch to a submode. # Using modifiers and mouse buttons to have one main mode and everything else as quasimode. # Selection, action: using the mouse to select single notes or to draw selection rectangles only. All other actions work on the selection and could be triggered by shortcuts, context menu or GUI buttons. # Keys instead of clicks: use mouse for position and trigger actions with keys. Example: A to add notes. Number 3 is complicated. 4 would use up keys that might better be used otherwise. 2 would likely lead to prolonged holding down modifier keys. 1 adds so many tools, but could show to be efficient. It certainly meats common GUI practice and user expectations the best.