One of the most requested feature (and to be honest since the first beta) was to support file tagging and rating.
We cannot deliver it for the V1 timeframe because we knew that such feature, done in the right way, was just too big for us. We need to introduce a database [and thanks to Ignito that was a quite easy task], the user interface must be reworked and everything needs to be tested again.
We do an internal review of what we want and what our user base wants, then we propose our plan to the most active Breezer professionals to get their feedback. Then we come up with that list:
- The tag library must be hierarchical. We think that a plain linear structure was not the optimal way to go.
- No limits on the number of tags that a file could accept.
- Keep things simple and fast!
- Support for keyboard gestures (click to add a tag to selection and ctrl+click to remove a tag from the same selection) and full drag'n'drop support.
- Multi-user and networked studio ready.
Those are all must-be-done features which means that Breezer 2013 must support all of the above. If we miss one we will delay the product launch.
Now let's go to analyze each of the above points.
IMPORTANT: REMEMBER THAT WE ARE TALKING ABOUT AN ALPHA VERSION SO THINGS WILL CHANGE AND IMPROVE. THAT POST IS ONLY ABOUT THE IDEAS BEHIND THE NEW UI NOT ABOUT THE DETAILS.
Everybody knows that a flat, one-level structure is not the best way to organize anything. For over thirty years we're using a parent/child folder structure, so:
- People knows how to deal with such structures [read: more user friendly].
- Since those paradigm was out for so long and it has proved to be an effective way for organizing things why change?
Nonetheless our competitors (both on mac or Windows) don't use that approach or they limit the structure to 3-4 (hard-coded) levels. Instead we choose a hierarchical approach so you can organize your tags in a standard folder structure like Windows explorer does.
To clarify, take a look at the right image. Here we have a Quality tag with five child, a Type tag with various instruments types and under the Drums tag I've just created a New tag, which I use later. Nice.
As you can see Breezer can organize the tag library into folders, and group them by genre, file format, your personal quality standards, by producer or company, or whatever you want. You choose.
To keep things simple we do not distinguish between folders or tags. Each tag can be naturally also a parent for any number of child.
The management of those parent/child relations is very easy, just drag'n'drop a tag over another one to make it a child of it, drag out to make it a parent.
I forget to say that a tag is color coded so you could apply a color to it and spot immediately.
Thanks to Ignito (our object-relational mapper) and the underlying database (SQL Server Compact) we could support tag hierarchies of any depth and an unlimited number of tags for a file with excellent performances.
Obviously there's a system-memory limit but it's hard to believe that someone could need thousand of tags for file. Apart the system memory limitation, there's another problem with such capability. How we could easily manage an unlimited number of tags for a file in the user interface?
We do many tests, with different layouts. The most promising one seemed to be a tag-bar next to each file name where the user can see the tags attached to each file.
We play a little with this approach and we found that was not sufficient we need more to control the "filter by tag" feature. So we introduce another concept that we call "tag-bar".
The tag bar
Just below the file view we put the tag-bar which contains the tags selected and used to filter the view. Below you can see an early preview of it.
The main purpose of it is to make easy for you to see what is the current filter and manipulate it.
Now i spend two words on another feature of Breezer that helps (a lot) with the tag selection and manipulation. As we said with the tag bar you could build an impressive filter by adding and removing tags. Nice, but how? With drag and drop? Too time-consuming and complex. Can we find another way to do it? We solved that problem with keyboard gestures.
The concept is very easy. In Breezer two little keyboard buttons gives a different meaning to a click.
For example when you're in the tag library:
||The tag bar will be cleared out of any tag. Automatically the one you've clicked in the library will be added to the filter.
||The clicked tag, if included in the tag bar, will be removed from it.
||The clicked tag will be added to the tag bar.
The same concept applies to the tag bar, for example a CTRL+Click on a tag will remove it.
Add or remove tags to a file
To add or remove a tag from one (or more) files is just a drag'n'drop operation. Choose a tag from the tag library and drag it over a file or a file selection, and drop it to tag the files. The same concept of keyboard gestures is available here: holding down the CTRL key when you drop the tag
To clarify everything take a look of how the workspace appears now:
Multi-user and network support
Another nice to have (and sometimes a deal-breaker one) is the possibility to "share" the tag library among many users. That means that if you're working in a group every tag, added, removed or altered in any way will be updated instantly to every workstation. This is a huge time-saver feature, because anyone can improve the tag library and be sure that the changes will be available to everyone in the team.
This feature is very easy to implement. Just copy the database file to a network share, point Breezer to it (see image below) and, boooom! you're done!
Regarding the tag database, we choose to give you the maximum control, and access, to your data. For that reason we choose to use a standard database format (SQL Server compact form Microsoft) and to not encrypt anything. That means that you could even extract your data to a custom report if you want to.
OK, for now, that's all folks! The next time I will introduce you to some of the [many] performance improvements we've right now.
Michael Sclepp - Revel Software
P.S. Don't forget to take a look at those previous posts: