MeadowlarkDAW / Meadowlark

A (currently incomplete) open-source Digital Audio Workstation
GNU General Public License v3.0
1.37k stars 49 forks source link

UI Workflow Discussion - Views and Workspaces #31

Open BillyDM opened 2 years ago

BillyDM commented 2 years ago

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

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

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

ghost commented 2 years ago

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

careymcmanus commented 1 year ago

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.