Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

UI Workflow Discussion - Views and Workspaces #31

Open
BillyDM opened this issue Jan 23, 2022 · 2 comments
Open

UI Workflow Discussion - Views and Workspaces #31

BillyDM opened this issue Jan 23, 2022 · 2 comments

Comments

@BillyDM
Copy link

BillyDM commented Jan 23, 2022

How should the workflow of showing, hiding, and arranging various views and panels work?

There are two likely methods for going about this:

Magnetic Floating Windows

This is the approach that "FL Studio" takes. The idea is that every view/panel is a floating window, and these windows can "snap" magnetically to any edge of the screen.

Pros

  • Very flexible and allows the user easily organize windows in whatever manner they wish.
  • Windows can easily be sent to separate monitors.

Cons

  • Less space efficient on smaller screens, and usually requires the user to constantly show/hide various windows.
  • Saving various preset "workspaces" would be more difficult and finicky.
  • Extra work will be needed to ensure views will scale and stretch correctly on different sizes and orientations.
  • Usually looks less "clean" requiring window titlebars and borders on every view.

Tiling Panels

This is the approach that DAWs like Bitwig Studio and Ableton Live take. In this approach every view is a non-floating panel that can be tiled with other panels. Usually each panel has a pre-defined location.

Pros

  • More space efficient on smaller screens.
  • Easier to create and switch between various preset "workspaces".
  • Usually looks cleaner.

Cons

  • Less flexible for the user to organize views how they want, usually locking in the user to preset locations for views.
  • Harder and more finicky to send views to separate monitors.

Please post any ideas and design mockups of how each of these approaches could work in this thread.

@ghost
Copy link

ghost commented Mar 27, 2022

My opinion

I definitely prefer Tiling Panels.

I've used FL Studio, Live and Bitwig and the floating windows of FL Studio are really annoying and unsatisfying to work with and something that shouldn't be a thing you have to deal with while you are making music. When using Bitwig I never have to think about arranging my windows which is great.

Of course this also means that the user would have less flexibility to rearrange the windows which forces the user to adapt to the DAW instead of the other way around. For Meadowlark I definitely see the point of making the UI more modular, but for me it should still be possible to have tiling panels. I think Blender does a great job at achieving this modularity.

Main Idea

Everything defaults to a tiled panel view so that you essentially end up with a DAW that looks similar to Live or Bitwig, but with the ability to rearrange most panels or even all panels however you want to.

Edit Mode / Rearranging

To make rearranging possible and still clean looking we might have something like an Edit Mode that you can activate. If activated you are able to rearrange the panels the way you want to and then save the changes when leaving the Edit Mode.

The rearranging might be done using title bars and borders that are only available/shown while inside of the Edit Mode. Another idea would be that the whole UI is mostly deactivated while in the Edit Mode so you can just interact with the frame of the panel and just drag and drop them around however you like. The rearranging should be snapping so that you always end up with a clean tiled panel look, but have it organized the way you want it to.

Panel structure

Every panel should be of a type that can be reused and rearranged however one likes to. This would mean that we would have a TimelinePanel, MixerPanel, BrowserPanel, PropertyPanel and so on. Those are essentially just the things that allow users to communicate with the backend. Having these be removable and rearrangeable everyone can just build there own UI.

Multiple panels of the same type

It might also be worth considering if you can only have one panel of a type (e.g. one TimelinePanel, one MixerPanel, etc.) or if you can have multiple panels. Essentially we have to structure panels in a way that they respond to data changes in some way. If we have a good implementation of this having multiple panels that point to the same data shouldn't be a problem.

I personally don't have a need for this, but maybe that's because it's not possible in the DAWs I tried

Plugins

When using tiling panels we would need floating windows for external plugins regardless. For internal plugins that profit from a larger interface it would be nice to be able to use the space of the timeline for a single plugin view (like an EQ for example; So essentially changing the panel type from TimelinePanel to PluginViewPanel or something like this) or even detach the whole plugin into a separate window. This would be especially useful for things like analyzers that you could just move to a second screen.

I personally love the plugin racks from Live or Bitwig that let you interact with every internal plugin in a small tiled view instead of having to open an additional window/view for all of them (like with external plugins for example). This makes the interface really clean and productive.

Workspaces

While using a tiling window manager I really started appreciating the fact that you can have multiple workspaces set up the way you want them to and just switch between them. Live for example has a Session View and a Timeline View which is optimized for different things.

I would definitely like to have generic workspaces inside of the DAW. Together with the modular structure mentioned above I can see great potential. You could create a workspace to work on the timeline, a workspace to work in the piano roll or on automations etc.. You for example don't need to see your sample browser while changing automations which also helps users with smaller screen resolutions.

This could be a real productivity boost since you can just setup your DAW once with the Edit Mode described above and use the the DAW to it's full potential.

Projects

Adding to the idea of workspaces, having multiple projects open at a time is also really convenient. This is for example done in Bitwig where you can have multiple projects open at a time, but only activate the audio engine for one of them. The combination of having multiple workspaces and multiple projects open at a time would be really phenomenal in my eyes.

The workspaces would probably be the same for each project, because I wouldn't save the workspace setup in the project file. So you could just switch projects and look at them in the same workspace. This would also allow us to have a Live like session view if desired.

References

  • Blender allows to rearrange/resize the individual panels however you like and also have multiple panels of the same type that are synced with the underlying data.
  • Bitwig allows resizing some panels like the browser window for example.
  • Bitwig already has a pop out / make a window floating feature for internal plugins that have a large view like the Eq-5 for example.

@careymcmanus
Copy link

I really like where your thinking is at with this.
It seems a bit like the approach vs code takes which is more of tiling approach with a workspace configuration file that lets you modify the layout (amongst other things) which I really like particularly in comparison to Visual Studio which has a floating window style UI which drives me up the wall.
I think that your right with the idea that you want the ability to customise the UI to your workflow but once youve done that be able to lock it in that way you don't accidently change your layout all the time.
One of the things that can be tricky is making the configuration both easy to do and powerful, as in I want to be able to change everything but I also don't want get bored trying to work it out. I think vscode does a pretty good job of this by have a UI settings editor which covers the most common settings and then a json settings file that has all of the available settings if you want to spend the time looking up the docs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants