monocasual / giada

Your Hardcore Loop Machine.
https://www.giadamusic.com
GNU General Public License v3.0
1.73k stars 98 forks source link

Action Editor enhancements #382

Open tomek-szczesny opened 4 years ago

tomek-szczesny commented 4 years ago

Derived from #357:

obraz Okay, let's think here for a minute.

The way I see it:

  1. If loop is shorter than full 32 beats, this ugly grey area is here. If notes were present before shortening loop, they are still there, but not possible to edit (once grabbed with a mouse, they will be moved to active zone). I think there's no need to restrict users to currently playing loop only. I think a full 32 beats editor should always be present, but with "not playing zone" in a different color. 1b) Action Editor upon opening should be properly sized to whatever is going to appear in it. It may be small enough to hide "Grey Zone" if the currently playing loop is shorter. A horizontal scroll bar is enough.

  2. Vertical scroll bar for Note Editor should be on a left hand side. Currently it's far at the end of the whole Grey Zone. 2b) By default this bar should be set somewhere closer to the middle of the range, not the very beginning of the list.

  3. Mouse wheel currently zooms time axis. I think that a better use of mouse wheel would be to scroll vertically through MIDI notes or the whole window, depending on current cursor position.

  4. There's room for buttons 1-16 above Note Editor - let's use this space for MIDI channel selector. As discussed in #252, a channel shall remember all notes on all channels. One channel may be presented at a time, with notes on other channels in dimmed colors. 4b) Channel 10, recognized by General MIDI standard as a channel for percussive instruments, may have more meaningful labels for each sound, like "Kick Drum", "Snare" etc.

  5. Below Velocity Editor, a small "+" button could be placed to add CC message timelines. A small menu would pop up, to add either a predefined message timeline, like Balance, Pan, Modulation, Soft Pedal etc, and also "Generic CC", with no value, a binary value, single byte digital, single byte analog or two bytes analog. "Digital" means that user inputs a specific value (a number) for each message, and "Analog" is presented as a graph. Messages like Pitch Bend / Modulation are well defined within the standard. Modulation is actually a two byte value message with 0x8000 as a default midpoint, and Balance is a single byte parameter. Some others, like Foot Pedal, only accept binary values (MSB from what I understand, so any value from 64 to 127 will do, but it may be a user setting as well). All actions recorded from a MIDI controller would of course make the relevant timelines show up.

5b) Instead of a "+" button with a menu, there might be as well a horizontal set of buttons representing each menu entry. Once a timeline is created, its button disappears. It won't take more vertical space than a single button anyway.

  1. On "analog" timelines, like Velocity or Panning, dragging each slider is a chore. A "drawing" mouse action would be desired. Still, precise manipulation of each slider should still be a possibility.

  2. Under the hood: Most CC messages must not be binded to notes, like Velocity. I think a simple list of time-sorted CC messages in a MIDI channel is a way to go, to be parsed by Action Editor later on.

tomek-szczesny commented 4 years ago

Another important feature: Note Editor scrollbar should be set so the already existing notes are visible upon opening.