vsariola / sointu

Fork of 4klang that can target 386, amd64 and WebAssembly. Tools run on Windows, Mac & Linux
MIT License
266 stars 17 forks source link

Idea: Show Multiple Units at once? #173

Open qm210 opened 1 month ago

qm210 commented 1 month ago

Especially in Full-Screen View on my QHD monitor, there's a lot of space to the right that could actually be put to good use.

Wouldn't it improve the UX greatly if one could see not only the current unit, but e.g. all currently selected in a multi-column view, making it possible to change various parameters without clicking through the units in between?

QM's mad GIMP skills might showcase this:

multiple_units_view

wayfu commented 1 month ago

or you could have them scrollable in a long list, and clicking the name would just jump there

vsariola commented 1 month ago

Somewhat similar idea was discussed here: #7. I also think it would be very useful to filter a list of all units: e.g. "show all out / outaux" units would be almost like a mixing table.

Also: you guys have insane monitors.

qm210 commented 3 weeks ago

I'm current going to implement this on our repo, just that it is known ;)

vsariola commented 2 weeks ago

So, here's what I propose instead, with my shitty paint drawing skillz: image

1) The sliders are replaced with knobs, and all parameters of an unit are shown horizontally. 2) Multiple units are shown at once, in a vertical list. Possible even all the units of the patch are in the list, so you can scroll through the whole patch. When you scroll past an instrument, it just switches which instrument is selected. 3) A rail showing signal flow is shown in the left (or on the right?), with the number of vertical lines corresponding to the number of signals in the stack before/after unit. For extra finesse, we can show arithmetic units so that they visualize which signals get combined using the lines. 4) I'm not sure what the best place is for the copy unit / disable unit etc. buttons. But they could appear in the far right of the unit only when hovering the mouse on it. This needs to be thought still. 5) For extra wide monitors, we support the ability to split the instrument view (possibly splitting it even multiple times). This way you can e.g. have Global and an instrument in the view at the same time. 6) The sends can show using a bezier line where the signal goes. Sends could be connected to any parameter/port by dragging a line from the small circle at send to the parameter. 7) Arrow keys would allow navigating the parameters, since they are now essentially in a grid. Left-right moves to the previous-next parameter of the unit. Up-down would move to the previous unit. 8) Holding ctrl would switch to adjusting the value of the parameter so now arrow keys allow changing its value. Similarly, holding ctrl would allow using scroll wheel in the mouse to adjust the parameter. This is to avoid accidentally changing a value with scroll wheel, as is possible now. This way the mouse & keyboard behaviour is also consistent.

vsariola commented 2 weeks ago

There's also the possibility that we don't even have the small unit list on the left; the units can be expanded to show the parameter knobs or shrunk to only show one line, similar to the list. Maybe ctrl-click expand on a chevron expands all units or shrinks all units.

But I'm not sure if I like this idea. Having a "table of contents" of sorts always visible on the left is helpful to understand what the instrument does & to quickly navigate to particular unit.

LeStahL commented 2 weeks ago

The mockup looks great! We should definitely do this.

I'd love to keep the short-list tho, as it somehow resembles "some sort of assembly code", which makes it easier to understand what's going on for me as a coder.

vsariola commented 2 weeks ago

Let's keep the short form list. It's anyway already implemented and I agree; typing units there is fast like coding & it gives good mental overview.

vsariola commented 2 weeks ago

To break this work into more manageable pieces, there's several features that can implemented relatively independent of each others:

  1. Change sliders into knobs
  2. Layout the parameters horizontally and have multiple (all?) units in vertical list ("multi-unit view")
  3. Split view (multiple instrument editors side-by-side)
  4. Signal rail (this is really just bonus, but could be cool nevertheless)
  5. Moving the unit edit buttons (clear, copy, delete etc.) to a new location. I think maybe we could make the icons smaller and fit them into the bottom of the small list, next to the "Add Unit" button.
  6. (?) Ability to search and filter units in the megalist. I think ability to show only "out" or "outaux" units would be pretty cool, as it would be almost like a master mixing table then.
LeStahL commented 1 week ago

We could maybe replace the rail by a keyboard shortcut that displays the modulation wiring above the synth while pressed (that way you get the visual spaghetti in complex synths only when you explicitly want to look at it)

LeStahL commented 1 week ago

or maybe rather "toggle modulation wiring display on/off per keyboard shortcut"