Help - Search - Members - Calendar
Full Version: Weird Foobar's logic
Hydrogenaudio Forums > Hosted Forums > foobar2000 > General - (fb2k)
SacRat
Recent versions of Foobar allowed Keyboard shotrcut sorting, but it's done in some weird logic.
Wouldn't it be better to combine them together, like
A
B
?
Alt+A
Alt+B
Shift+A
Ctrl+B
Alt+Shift+A
Etc?

Second... Why can't we change a hotkey by double-clicking one in the list?
Sometimes Del-Add is too boring. I know, it's far not the most common operation, but work with Foobar often consists of such things...

The third and the last question/suggestion.
IMHO One of the worst Foobar's features is a lack of usability knowledge of its developer and plugin creators. No offence, I'm not blaming neither Peter nor Case or anyone else. One can hardly be a good singer, artist and boxer at the same time. There's nothing wrong with it.
But I'd really liked to see Foobar with redesigned interface 'till 1.0 arrives.

If any of developers is interested in free usability consultations, please contact me by e-mail. As interface designer with big enough expeience I might be useful to you. Besides, I could try to get a couple of professionals in this field to help if needful.

I'm very busy now and have a huge lack of free time, but I'll be happy to find some free time to help Foobar's developers.
Canar
QUOTE(SacRat @ Dec 14 2003, 08:41 AM)
The third and the last question/suggestion.
IMHO One of the worst Foobar's features is a lack of usability knowledge of its developer and plugin creators. No offence, I'm not blaming neither Peter nor Case or anyone else. One can hardly be a good singer, artist and boxer at the same time. There's nothing wrong with it.

I agree with your first two points, but I wonder about the third one. Where do you find the usability problems? I showed foobar2000 to my parents and sister (hardly technical users, any of them) and they all found it easier and more straight-forward to use than Windows Media Player or Winamp.

Honestly, with the new tabbed interface, what does it lack in usability? Where do you have issues with it? Both WiMP and WA are much, much less user-friendly than foobar, loaded with completely useless features that do not add one lick of useful functionality.

fb2k's basic interface has all the functions needed, a highly functional default configuration, and all the components needed to do anything audio related that's somewhat relevant. I uninstall most of my Winamp installation to make it do what I want. I install most of my foobar installation to make it do what I want. I think the latter option is the way it should be.
SacRat
I can tell very little bad things about layer's window usability, but when things come to more complex work (playlist programming, playback configuration, etc...) it turnes into a hell sad.gif
I'm far from being WA zealot. It's usability is higher, but sometimes it's logic even more perverted. The same about WMP.
Foobar between audio players got the same poit, as FAR manager among file managers: "eleet" powerful player with numerous unique features and relatively easy to use, which can make you crazy, when you're trying to change it's behaviour, thanking God that it happens really rarely.
I won't touch default UI (there's not too much to improve, IMHO), but take a look at settings... it's a garbage! Ask someone to find a needful thing there and I doubt they will. Even then they could have problems editing it.
I could name you all the "fault" of this GUI, bt I'm afraid, this list would take you hours to read (and days for me to write).
Canar
Care to list a point or two then? Some particularly glaring problems about the configuration usability?

Here are a few rebuttals already:

TAGZ is complex, yes. Here, the complexity gives power. If someone coded a simpler UI, this problem can be fixed. TAGZ gives the power to do anything you could possibly want when it comes to renaming stuff and the like. There are simpler ways to do things, and fb2k has the configurability to allow these simpler ways to work, but they'll lack power.

There can be many things to configure if you install a lot of components. Cause and effect here. Due to the fact that the plugins were coded by different people, there isn't necessarily any continuity between them. So, if this bothers you, uninstall those plugins. Component install/uninstall could be easier, admittedly, but it's not that hard to delete a .DLL.

There are a lot of "expert-level" configuration items shown. Perhaps this could be fixed with a MirandaIM-like "Show expert options" dialog.

Any other gripes?
nIRV
Thing is, foobar2k does really lack of what we could say "interface polishement" (much like my english sometimes wink.gif ). Small things that someone would think of doing at first are absent. For exemple dbl-click on the tab region doesnt create a new quick "New Playlist(X)"

And once you install some more components, the "Component" menu gets crowded (which is inevitable I guess) but the right-click context menu just gets over-stuffed and looks like a bunch of geek items without separators (the default positions of items in this menu is also not the best one either)

One can put his/her head in the sand and say fb2k doesnt lack any refinement in its interface and I think he/she would miss a major goal to fb2k 1.0. That being said I'm not against the current interface, the idea behind it is superbe, all it needs is some more work to make things roll even more easily (the best exemple of what I mean is: that windows picture viewer integrated in winxp doesnt exit when you press ESC although _everyone_ will think of doing that to close this app (I've seen bunch of people doing it, torturing their keyboards).)

Doing a component that would create an "Easy Dialog Preference" item in the menu would be nice too for some people because once again, when you get to install some components (and even with the new 0.7.5/0.7.6), you get a big tree
paulski
The thing that makes foobar really cool in my mind is extensibility on top of core functionality. Fortunately, this extensibility applies also to the look and feel of the user interface so that you can completely replace it if you want. By providing an explicit description of the tasks that you typically want to perform against the functionality offered by foobar (+plugins) it is possible to develop your own user interface to match your individual needs. foo_looks offers a way to do this but it is only really useful for playback control and not for advanced tasks like editing a playlist or database (as far as I know).
One thing that I experimented with in the past with was interfacing the Macromedia Flash player to the foobar core so that you could author any type of look and feel you liked (provided you know how to author Flash movies). If someone is interested in this (unfinished) foobar plugin for Macromedia Flash, I can send the source code to them.
Mike Giacomelli
Well tagging, sorting, title formatting, etc are ridiculously complicated if you don't have some familarity with it or some programming experience. I suggested that a few basic presets be added or a simple GUI for adjusting them a long time ago but it never happened.

Most of my friends who use foobar actually trade sort strings they found on the net rather then try and come up with there own.
The Link
Foobar2000's playlist formatting syntax is just pure logic. The fact that it is hard to learn/use for some people just shows how few "normal people" know about the basics of logic. I know that this is not their fault because you learn almost nothing about such elementary things at school.

Regards,
The Link
SacRat
Well, Canar, let me disagree with some of your states.

1. Tagz are really complex now. the more, I and some other people already mentioned, that in it's current form TAGZ generated code is very difficult to read. IMHO its main failt is that "space" and "tab" symbols are in some reasons written in their "straight" form without using tags. That makes code even less readable. I didn't say about power. Sure, we need it. But I never stated, that power and usability can't be together smile.gif

2. The same problem was with FAR. The difference is that its creator don't give a damn about users opinion at all sad.gif
I think, that plugin mamager can be more, than useful and helpful. Another bad thing with Foobar is that many plugin writers don't care about documentation... Well, that's the other movie...

And samples you asked about:
Go to settings. Now see: Comonent Libraries and Components.
Note, that none of them let you turn plugins on/off, sort plugins, and get their description in simple form (don't tell, that double clicking is not a problem. it's not, unless you have tens of modules).
IMHO this can be done by a single panel:
?????????????????????????????????????????????????????????
? abx comparator 1.1 (foo_ablx.dll) ?
?Xexperimental plugin (fooexp.dll) FAILED TO LOADXXXXXXX?
? new plugin (foo_new.dll) ?
? ?
?????????????????????????????????????????????????????????
? my first experiment in making plugins ?
? ?
? FAILE TO LOAD ?
? OLD SDK VERSION ?
?????????????????????????????????????????????????????????

Volume control on "playback" even though it can be disabled. The same is true for some other components: it's not obvious, that their current location is the best suitable.

A lack of separators in menus was aleady mentioned.

Are these enough?

[quote/]
Thing is, foobar2k does really lack of what we could say "interface polishement" . Small things that someone would think of doing at first are absent. For exemple dbl-click on the tab region doesnt create a new quick "New Playlist(X)"
[/quote]

Agree with most things you noted, nIRV. You understood me.

That's what I'm talking about. Things, which people feel intuitively just don't work.
A combination of all these factors influences total usability.

Most of usability problems I noted are hidden in Preferences menu and if things come the same way configuration of next versions might vecome even more complicated.

Try to experiment: give "average user" Case's installer and ask to do some basic things, like changing replaygain mode or surround settings of MOD decoding.

There are too much elements on the screen and that's not good for interface creators. ATC programmers suffered from the same problems and finally got flexible, but extremely bloated interface.

If anyone's interested, i could give some suggestions about possible Config interface improvements (we could talk about default GUI, but since it's changeable there's no much sence in doing that):
Add tiny icons near "key" elemnts: this would increase search speed in times.
Do whatever possible to reduce number of items displayed at once: organized TABs might be better here: user can't work effectively with interfaces, having more, than 7+/-2 elements at a time.
Try to copy "usual" behaviour or windows applications, maybe, some good features from competing products: migration to Foobar would be easier...



P.S.[offtopic on]
So from now discussing anything, where user's view is different from moderator's one is called trolling? OK.
[offtopic off]
anza
QUOTE(SacRat @ Dec 16 2003, 10:18 PM)
1. Tagz are really complex now. the more, I and some other people already mentioned, that in it's current form TAGZ generated code is very difficult to read. IMHO its main failt is that "space" and "tab" symbols are in some reasons written in their "straight" form without using tags. That makes code even less readable. I didn't say about power. Sure, we need it. But I never stated, that power and usability can't be together smile.gif

Agreed, formatting strings are a pain in the ass when it comes to reading it from foobar's preferences page, if you make it messy. Why not just split long lines to two or even more? It makes it much more easier to read. Or, if you're editing a script, why not do it in some text editor, like TextPad. I never edit my strings in foobar's prefs (except when I'm tweaking the colors), I always load it up in TextPad.

edit: When it comes to the preferences.. _My_ opinion is that there's no need to change anything there. Things are easy to find and categorized well. Also, at least in my opinion it's quite logical to have volume control under playback. Ok, maybe it could be under Output also, but maybe it's still better under playback. Meh, who even uses that volume bar?

Got some other things in mind but forgot them already tongue.gif
snek_one
QUOTE(Mike Giacomelli @ Dec 16 2003, 11:21 AM)
Well tagging, sorting, title formatting, etc are ridiculously complicated if you don't have some familarity with it or some programming experience.  I suggested that a few basic presets be added or a simple GUI for adjusting them a long time ago but it never happened.

Most of my friends who use foobar actually trade sort strings they found on the net rather then try and come up with their own.

I absolutely agree with this.. Most of foobar is great, except the formatting of strings. Having quite a bit of programming knowledge I can say that even I get demotivated once I see the syntax..

My vote goes out to rewriting the syntax in a couple of screens to simple English..
Just parse it back to tagz "behind the scenes".. with an option to show either tagz or english it would be very helpful for all.. that way people can easily learn the tagz as well because they can compare the two, if both views are updated realtime..

using 2 tabs for the different views could work, simple and advanced? or even right next to each other.. with a bit bigger preview window.. a lot of these names go out of the current bar..

just my 0.02 euro's tongue.gif
Mike Giacomelli
QUOTE(The Link @ Dec 16 2003, 11:32 AM)
Foobar2000's playlist formatting syntax is just pure logic. The fact that it is hard to learn/use for some people just shows how few "normal people" know about the basics of logic. I know that this is not their fault because you learn almost nothing about such elementary things at school.

Regards,
The Link

I strongly disagree. I'm a CS double major and that doesn't mean i instrinsically know what $caps2(x) does verses plain caps, nor does it mean i know the exact name of each possible variable. Logic is easy, the problem is most people are not too familar with the syntax.

Of course I'm a CS major so i just look them up and am happy to have them smile.gif But its still very annoying and time consuming if i want to modify someone else's sort string or something like that. Its also impossible if you don't spend the time studying the help file, which IMO should not be required to do something as basic as sort a list.
DaCypher
I agree that FB2K is a bit rough around the edges (some of the menu layouts and specific useablities that were mentioned earlier). However, this does not bother me at all. It makes for a bit higher learning curve when first starting to use it, but now that I am used to it, I don't have any complaints.

The only complaint that I could think of would be that FB2K is not very intuitive to use some of more powerful features. However, most power users that really want to get in and tweak around with the settings have to use more than just intuition anyways (thus seperating the power users from average users). Besides, as an end-user, why should we care how easy/intuitive FB2K is for Joe Schmoe to start using its powerful features?

That being said, I would like to see some of the playlist tab features and other things previously mentioned implemented eventually. smile.gif
foosion
QUOTE(snek_one @ Dec 16 2003, 10:44 PM)
My vote goes out to rewriting the syntax in a couple of screens to simple English..
Just parse it back to tagz "behind the scenes".. with an option to show either tagz or english it would be very helpful for all.. that way people can easily learn the tagz as well because they can compare the two, if both views are updated realtime..

I've already seen a natural language <-> formal language translation (it was OCL <-> English). It doesn't make things simpler except for rather trivial expressions and it also restricts you as to what you can write in English. In fact, complex expressions are hard to read when they get translated to a natural language, as the sentences get really long and are nested ad infinitum.

Or are you suggesting something like COBOL? I don't know any COBOL myself, but I've recently seen it in a lecture about programming languages. Examples from that lecture:

"Normal" programming language style:
CODE
a := b + c;

COBOL:
CODE
ADD GIN TO WHISKY GIVING VERMOUTH.

Well, these examples are from the lecture, I didn't make them up myself. smile.gif
anza
I just don't get it. I've got no programming experience whatsoever but still I think writing formatting strings is the easiest thing ever! Have you people checked the help button in title formatting preferences page? It tells you all you need/can/should know about writing the strings. Anything else you need would be pure logic.
billcow
My opinion (probable some things already mentioned - I skimmed the thread, but probably missed some specifics) is as follows. Note that although I'm not actually trained in the art of interface design (it's quite an art, too), I have a tendancy to have a very clear idea of where my "usability threshold" lies compared to less advanced computer users, so I tend to hit these sorts of things right on the mark.

1) Formatting strings. I think the main problem with them as they are is readability - you can't have spaces or anything to improve this without messing up the output. My solution would consist of several things...
(a) Code snippets. Things like detecting artist and title from filename if the tag isn't filled, various coloring tricks, removing "The" from the beginning of artist names, and so on could be consolidated into a seperate file defining macros. When the formatting engine reads the string it would go into this file and grab out stuff that it needs. This wouldn't be the same as user functions because they wouldn't be recursive or anything like that, and thus wouldn't make for any snafus that don't already exist.
(b) Better math. Even simple math stuff like finding the percentage based on the current position and song length are hard to understand, even with the $muldiv() function - "$muldiv(%_time_elapsed_seconds%,100,%_time_total_seconds)" is a whole lot harder to understand than "%_time_elapsed_seconds% * 100 / %_time_total_seconds". Maybe this could be implemented as a $math() function taking a bunch of variables, numbers and math symbols (+, -, /, and *) to make it backwards-compatible. Another useful thing to have would be floating-point, as it seems like that's a common thing that throws new users off.
© Better variables. The method for setting them ("$puts(var,value)") is pretty intuitive, except for the difference between "$puts()" and "$put()". The method for using them is somewhat un-intuitive - from a non-programmer's standpoint there's no obvious reason why you can't just get them the same as file tags. An easy way to fix this would be by simply retrieving script variables with %name% - or possibly with a prefix (such as the "__" prefix for tech info fields) to prevent conflicts with actual tags.
(d) The most obvious problem, spacing, should be fixed somehow. It couldn't be a matter of simply allowing spaces, as that would screw up anything that uses literal text (although I personally use the single quotes even when not strictly necessary if i'm using actual text) so a solution would be a little harder to come by, but should still be possible.
(e) Readability would be vastly improved if syntax-highlighting were included in the editor for playlist strings. The problem with that is that it'd take a lot of work for a relatively small benefit, so it wouldn't be too high on my priority list.

2) The config dialog. As has been said already, it is quite complex and overwhelming. There are a bunch of possible solutions, ranging from creating one small dialog with the most common settings, all the way to having certain sections designated "advanced" and then grouping them together somewhere else. I think the latter would be better in the long run, perhaps with a way for plugins with options that do the same thing as an option somewhere else for a different plugin sharing the option. An example there would be for module file decoders. Most of the different mod file formats have a setting whether to loop them, what sample rate to decode at and so on, so you could have all the decoder plugins share the same settings page for those settings. The problem with that is that the plugins would have to be partly re-written or else foobar wouldn't know how to handle them. Overall though, I think the easiest thing to improve the config dialog would be to have the tree be collapsed by default and remember which branches are open and which are closed. Then it wouldn't look as cluttered when you first open it. The next step IMHO would be to have a seperate part of the tree designated for "basic" settings - the sort of things that just about everyone will want to configure when they first install foobar. What output plugin to use, showing or hiding playlist tabs, whether to minimize to tray, behavior when adding files from command line/explorer, resumeing when started, and other stuff that falls into the category of things that people would expect to be able to change easily.

3) Menus. The "Playback" and "Foobar2000" menus are well-organized by default, with very little clutter, as is the playlist menu for the most part (although I would drop "add location" and "add playlist" - the former is somewhat confusing and the latter is useless since you can select a playlist in "add files"). The components menu however isn't sorted or anything, and with the lack of seperators it's hard to look at. Same goes for the context menu. The other problem is that it's fairly difficult to sort menus effectively. In the menus with seperators, different items end up in different parts of the menu, and items in submenus aren't kept together, and even the sorting list is a mess. I hate to use microsoft as an example for anything good, but I think a variation on the customize toolbar dialog they use for all there stuff would be good. The only thing I would change is to make the dialog resizable, and possibly make it a tree view to handle submenus. Drag and drop re-arranging in addition to the current "move up/down" buttons would make it easier, as would moving sub-menus by dragging the submenu title instead of all the individual items. One other nit-pick I have with the menus is that you are stuck with the sub-menu arrangement that the plugin creator defines. It would be nice, although not crucial, if you could make your own sub-menus and put whichever items in whichever submenus you want. Another addition to this idea is renaming items. It'd also be nice to be able to put context-menu items in the the main menus.

4) File info. This isn't a problem as the "special" file info dialog is just about perfect, and since you can just remove the standard one from the context menu and put the special one in it's place it isn't a probelm. Although I think it would be smart to make it the "official" file info dialog.

For the most part though, I think foobar has very few problems interface-wise that can't be solved with a little bit of looking around and in the case of formatting strings, a bit of concentration. Unfortunately, these are IMHO exactly the things that turn new users off to foobar. Of all the things I listed above, I think the biggest problem has to do with the readability of formatting strings. If they were easier to read then it'd be easier for new users to take one they got on the internet and either learn from it or modify it to change something they don't like about. With the "code snippets" idea new users could easily apply advanced stuff like filename-based tag deduction and sorting tricks (swapping first and last names if there's a comma (so the display is cleaner but sorting is by last name), removing "The" (to make stuff sort better), that sort of thing) to code that would be simple otherwise, but is complicated if you do anything fancy.

[edit]
Just noticed that the state of the config dialog's tree is now (in 0.7.6 beta 2) saved when you close it. That oughta make things a lot easier to get at.
mazy
i agree with billcow, mostly with (1)

code snippets / macros would be nices, they could make for smaller and easier to manage formatting strings.

they would get expanded internally.

defining macro would be easy like this:
macro(var_1,var_2,var3)=(
// macro code, using var_1 etc. as parameter substitutes
)

variables should get accesible the same way internal variables are, maybe using special prefix.

as for highlighting, i edit my strings in external editor anyway, so i think it would be good enough to have highlighting file for ultraedit etc. (should be easy to do, anyone going to do it?)

edit: ah, and move genral gui settings like fonts and colors to public vars so plugins could interference it (and billcow could modify his foo_syfm wink.gif)
billcow
Macros have actually been discussed before, but were ruled out as a result of numerous ways you could crash foobar with them.

Of course, the thing there was that said macros were actually thought of more in terms of functions - aka with recursion and such. If we do it this way, it would be a simple substitution - something you can easily do via find/replace in a text editor - something I do quite often when working with formatting strings. The benefit would be that you could actually edit the file without doing all the replacing every time you wanted to see if it worked.

As for fonts/colors, I'm for obvious reasons a huge supporter of moving them to a more "open" place so that they could be changed automagically by plugins that edit formatting strings. However, a long time ago Peter explained that the reason for having them in the GUI is that if, say, foo_looks were to use them it (the tagz string) wouldn't be able to use the color since the background is that of the underlying graphic, but the user would expect it to. And while that makes sense, it also seems like any use of formatting strings that's that advanced probably wouldn't look good in such an environment anyway, so it's basically a he-said-she-said thing, except in this case one of the viewpoints is the developer, so that's the one that wins if neither has any other side-effects.

Hence, my idea (or rather the most recent version of it) would be to give formatting strings access to a set of color codes defined by the user - like a primary, secondary, and tertiary color, and possibly brighter/darker versions of them. Then, whatever UI is using the formatting string would define what those colors are - either through a configuration setting or based on the graphic used for a skin, or whatever - and the formatting string says "use the primary color for the artist, the secondary color for the song title, and the tertiary color for everything else" and would have the same color scheme as any other formatting string.

This would have several benefits:
1) No problems switching formatting strings
2) The user can easily change the colors used without knowing anything at all about how the formatting string works
3) The idea could be extended to include other things as well - this would be quite complicated, but rather useful from a beginning user's standpoint as well. You could have a set of checkboxes telling what information to display - such as whether or not to show the genre, whether to show the album, replaygain, or whatever. This is actually something i've been wanting to do with foo_syfm for a while now, but unfortunately I've had some (read: a lot) difficulty implementing the necessary string-manipulation functions. It would be very complicated of course, but would be great for people who want to tweak the display without any Tagz programming

Other neat stuff would be informing the string whether the font is fixed- or variable-width, so the string could adjust between using tabbed columns or space padding.

If anyone has some extensive knowledge of string-manipulation (or a good, open source, relatively simple to implement regexp engine that supports Unicode and is easily implementable) PM me - I'd really like to do several things with foo_syfm that would benefit - this is on-topic because it's for the purpose of making more things possible for the end-user to do without having to learn to program Tagz.

Overall, I want to state again - Foobar is IMHO at the point now where it can do just about anything anyone would ever need or want it to do - now it's time to make more of that stuff easier/more intuitive to more people.
mazy
that colors stuff would be nice, indeed!

although i would still like to be able to change the gui colors and fonts.

anyway, that 'checkbox' processing shouldn't be that hard. you could make it to look for them in block bounded with say // TOGGLES:START and // TOGGLES:END, and they would have format like this
// name: description
puts(t_name,1)

you would strip this whole section from the string and append generated one in the beginning.

still i can see it could use nice regular expressions library.

you can find some info here:
http://www.codeproject.com/string/spencerregexp.asp
http://www.codeproject.com/string/regex__.asp

ah, it would be nice if plugins could add tagz functions, i would like regexp in it
SacRat
Well, let me try to tell you something else I think about Fooba and usability in general.

First of all, high quality interface should be intuitive in use:
1. none of control elements can be interpreted in two ways
2. finding needful control elements doesn't have to take time
3. user MUST NOT do RTFM to do simplest things, especially if there's no FM
3. one doesn't have to guess, hy program is doing this, not that or why this element is located here.... let's call it obvious behaviour

As you can see yourself, Foobar suffers from many problems above.

Good user interface could allow customization. The problem with FB is that almost any customization needs much enough efforts.

As for TAGz... Now it's possible to write a plugin, which parses readable text and converts it to TAGz markup, but this is the way of creating crutches Peter tries to avoid.

Just logic of programmer usually differs from "mortal's" way of thinking. That's OK, but difficult thing here is trying to imlement interface, which can be easy to use for everyone.

It's possible to do this and I'd liked to pay users' and developer's attention to this issue.

foosion, I'm not asking to convert TAGML to EnglishML. That's nonsence. If you were in Russia, I could show you some samples of such "languages".
IMHO it would be enough for people to get easily readable layout, where:
1. Spaces and Tabs are not meaningful (only defined by TAGz)
2. Function names and syntax are easier to read. For example, why not to make it look, like:
%_ispaused% --> %is_paused%
$caps2(x) --> $cap_leave(x)
$if(a,b,c) --> $if a $then b $else c

It's just a sample, so don't blame me smile.gif I'm sure, that people here might create a better ML, which could be even easier.

Even simple removing of tabs and spaces would help PL coders a lot!

anza, I have a little programming experience, but I think you're wrong. Hae you ever tried to program complex formatting? Sure, making strings, like ARTIST-TITLE won't need much time, but doing something more complicated is really hard. Many people already mentioned that.

Just TAGz isn't a good markup language. It's good enough for making simple expression, but not for advanced formatting some gus here try to do.

@billcow: have you tied colorer? I'm not sure about unicode, though...
I know some very owerful implementations of this engine.
anza
QUOTE(SacRat @ Dec 17 2003, 01:33 PM)
anza, I have a little programming experience, but I think you're wrong. Hae you ever tried to program complex formatting? Sure, making strings, like ARTIST-TITLE won't need much time, but doing something more complicated is really hard. Many people already mentioned that.

Yes I have. I use my own album-formatting, which looks like this.
The screenshot doesn't show much (eg the mode for single files), but check out the formatting here to see what it does.
And yes, I have made it COMPLETELY by myself. Actually, I have never even used (or even read the code of) someone else's formatting for the playlist. A little part of the statusbar code is taken from someone (can't remember) in the times of 0.5 or something.
It's also much newer than the one in formatting page.
mazy
well i guess ppl either have natural feeling and talent for programming and stuff like that or not wink.gif

of course not everyone can code their own string etc., that's why we have formatting string website, forums etc
panzemeyer
QUOTE(anza @ Dec 17 2003, 02:54 PM)
And yes, I have made it COMPLETELY by myself. Actually, I have never even used (or even read the code of) someone else's formatting for the playlist. A little part of the statusbar code is taken from someone (can't remember) in the times of 0.5 or something. It's also much newer than the one in formatting page.

Doing what you did is very time consuming, and I think not everybody is prepared to spend hours on formatting their audio player playlist.

The problem is partly solved by the ability to copy formatting strings on the web and paste them. Many people simply apply one formatting they found on the web and are happy with it. But when it comes to tuning this formatting to your own tastes (sometimes details matter), you need to get a good knowledge of formatting strings to manage it. And their complexity will deter most users I guess.

Maybe the answer would be adequate information on formatting strings in the html help file (which isn't really helpful as it is now when you want to create advanced formattings). Or adding default playlist formattings that any newbie could simply click on, preview and apply. Just an idea.


As for foobar's interface in general, like the thread starter I think that its lacks (on places) some sense of user-friendliness. Again, most of its shortcomings are really details, but fixing all these details would push foobar a step forward. As some said before, I think the main efforts should be directed on the Preferences GUI, which could display and order info in a more intuitive way.
anza
QUOTE(mazy @ Dec 17 2003, 03:11 PM)
well i guess ppl either have natural feeling and talent for programming and stuff like that or not wink.gif

of course not everyone can code their own string etc., that's why we have formatting string website, forums etc

Yes, I agree with you. But my point was to show that one CAN do quite complex strings without any knowledge of any kind of programming (well I know HTML a bit, but that doesn't help with TAGZ wink.gif).


Actually I just remembered that I have looked at someone's formatting before. smile.gif It was the first-ever album based formattign (can't remember whose it was, sorry), just to see how it was done. It was quite easy to spot that it was done by checking the track numbers, and I tweaked it a bit, but really soon I decided to write my own formatting from scratch,
ssamadhi97
QUOTE(mazy @ Dec 17 2003, 02:11 PM)
well i guess ppl either have natural feeling and talent for programming and stuff like that or not wink.gif

Yep.. some intelligence helps as well. :-P
SacRat
Well, in order to be more cunstructive I'd liked to start a list of possible Foobar improvements/features/changes, which could affect usability.

TAGz:
01. Change current TAGz system in order to get more readable "program" code, extend usability and make complex code easier to write.
02. Let Playlist Font, Color and other data from Display->default UI be changed from within TAGz.

Preferences:
01. Merge Preferences->Component Libraries and Preferences->Components into more intuitive single tab. Brief description is given in my post above.
02. Move Audio CD writer to Diskwriter (imho it?s a better place for this component)
03. Move ID3v2 Tag support settings to Standard Imputs, creating a button under TAG type selection.
04. Add separators to menu items.
05. Underline various menu items by color groups: playback, system, etc? This could let you find needful item faster.
06. Merge Context menu items and menu items to Items point. Just make two tabs in it. This would save some screen space and help organizing elements. Other solution might be merging them into a single tab and applying color scheme (preferences 05).
07. Organize shortcuts (my very first post), let shortcuts for menu items be defined directly in menu settings. For example: playback/stop [Win+C]
08. Remove Default UI-> system tray tab, move its elements to Default UI (there?s enough space)
09. Merge Core with Display and rename it to Interface
10. Move Diskwriter to Playback?

Misc GUI (incl default GUI) changes:
01. Create Volume Bar, which can be operated with mouse.
02. Add Toolpits for all elements: this could save a lot of time on reading 9and at first writing) documentation
03. Add possibility to rearrange default buttons (WA scheme, FB, scheme, etc?) with mouse and/or in Default UI settings
04. Add small icons to key elements in preferences: graphics lets one operate big menus faster and with more effectiveness.

Feel free to add/remove anything?

I?m ready to discuss any changes/improvements with both users and developers to find the best solution.
Canar
QUOTE(SacRat @ Dec 18 2003, 05:04 AM)
I?m ready to discuss any changes/improvements with both users and developers to find the best solution.

My Nitpicks:

Prefs:
02. Subjective. It's a component, and does not use standard diskwriter routines. Either solution is optimal.
05. I don't understand what you mean.
06. Although the concepts are similar, they are different. Combining the two is not logical.
07. If you're claiming that moving the keyboard shortcuts UI to the Menu setting area, that's not smart. They're different. Allowing fuller integration of keyboard shortcuts into the main menu systems would be cool, though.
10. Diskwriter is not a playback component, regardless of how you spin it.

GUI:
01. If there was a service that let you add toolbar items, like the seekbar or the visualization presently are, this could be done easily.

Just my comments. Most of the other stuff is interesting, though I doubt Peter would implement it. Who knows, though?

Edit: Fixed my ignorance in one area. tongue.gif
anza
QUOTE(Canar @ Dec 18 2003, 08:17 PM)
07. Windows key cannot presently be used in keyboard shortcuts.

Oh yes it can be used... It's been there for a while smile.gif
Canar
QUOTE(anza @ Dec 18 2003, 10:22 AM)
Oh yes it can be used... It's been there for a while smile.gif

blink.gif unsure.gif ohmy.gif laugh.gif

Nifty. Thanks for the update. Musta missed that one somewhere.
picmixer
QUOTE(SacRat @ Dec 18 2003, 02:04 PM)
TAGz:
01. Change current TAGz system in order to get more readable "program" code, extend usability and make complex code easier to write.

Can't really agree with that at all actually. Personally I find TAGz one fo the more powerfull features of Foobar.

Although it might take a bit of time and dedication to get the grips of it, it is extremely usefull in different areas of Foobar. It always applies to the same principles in these different implementations (ie.:playlist formatting, masstagger, sorting, searches). I therefore find it quite a powerfull scripting language for using the different metadata functions of a media player.

I could even imagine quite some interesting future uses for it. Such as a very powerfull and configurable media library and "smart playlist filtering" for example.

What might be interesting though one day, is a central place where users coudl find all kinds of different small ready made scrips for the most basic actions. This should be pretty straight forward (ie.copy and paste) and with a simple discription of what that script does. Also in case such a place would ever exist, it should probably be split into different sections (ie.albumlist, masstagger,sorting, etc.)
Killmaster
There are a couple things that I would like to see:

-Title Formatting Help should be in the menus by default, but place it above "Preferences" instead of below "Exit". Just about every Windows program out there puts "Exit" at the bottom, and any other way is very annoying to me tongue.gif

-Use the same list control in Context menu items and Main menu items that the main player uses, so you can select multiple items and drag them around. I also think there should be some kind of tree layout within the playlist instead of the current bla/bla, so you could have something like this:
CODE
Masstagger
->Edit Tags
->Rename Files
->Copy tags
Replaygain
->Scan Selection as album

Each one of those is a list entry, and would be represented by something similar to the ASCII form that I laid out.

Double clicking on the top level item will "collapse" all the items under it, so you'd just see "Masstagger" for example. If you add an item from the disabled items list, it'll automatically get added to the bottom of that "branch". All items under that branch would not be movable from their upper branch, which is how it currently works. Moving top level items around the playlist would also move everything under them, regardless of whether it is collapsed or not.

Of course, a real Tree control would probably be best for this, but I'm not sure if standard windows controls allow for dragging and dropping tree elements. Assuming that you can't do that, maybe you could keep the up and down arrows and just change it to a tree box, that might be the easiest solution smile.gif
MachineHead
QUOTE
Of course, a real Tree control would probably be best for this, but I'm not sure if standard windows controls allow for dragging and dropping tree elements.


I don't think it does. However, a custom tab bar like Outlook would be.
Moneo
QUOTE
01. Change current TAGz system in order to get more readable "program" code, extend usability and make complex code easier to write.

Well, tagz library isn't meant for complex code.

And if, for example, it required the user to enclose spaces in quotes, to improve code readability, the simple strings would suffer.
QUOTE(SacRat @ Dec 18 2003, 02:04 PM)
02. Move Audio CD writer to Diskwriter (imho it?s a better place for this component)

It doesn't belong there.

Diskwriter outputs create files on disks smile.gif , audio CD writer doesn't.
QUOTE
03. Move ID3v2 Tag support settings to Standard Imputs, creating a button under TAG type selection.

What if id3v2 component isn't installed?
QUOTE
05. Underline various menu items by color groups

You probably mean highlighting, not underlining.

And that would be a) nonstandard an b) ugly.
QUOTE
09. Merge Core with Display and rename it to Interface

Erm.

Now THAT would be some really weird logic.

Sorting/file type restriction settings have nothing to do with interface.
QUOTE
10. Move Diskwriter to Playback?

Eh?

That would be soooo winamp.
QUOTE
04. Add small icons to key elements in preferences: graphics lets one operate big menus faster and with more effectiveness.

I don't think standard treeview supports icons.
foosion
QUOTE(Moneo @ Dec 19 2003, 01:50 AM)
I don't think standard treeview supports icons.

TreeView controls support icons. They also notify the application when a drag operation would start, but the application has to do the dragging itself.
SacRat
@ Canar's "niticks":

Pref
02: IHMO it's logical enough. Writing to disks or discs... smile.gif
05: I meant highlighting. For example, you could change their style, font color, background and so on. For example, tiled background (i.e. white-blue-white) is often used in pricelists and long tables. It highly increases redability of text.
06: that HIGHLY depends on implementation.
07. OK, but integration of keyboard shortcuts to menu is left then. OK.
10. Well, tastes differ. Actually this won't play a big role anyway. Besides, there are some anti-Winamp folks and such a scheme could remind them their "favorite" player smile.gif

GUI
01. hm... I think, it should be. Surely, your variant is even better.

@Anza: I was surprised too. I thought of including it to my wishlist,b ut checked first. Now I can operate Foobar with simple shortcuts. Thanks to Peter smile.gif
But... did we miss anything? I can't recall this feature in whatsnew list...

@picmixer
I'm afraid you haven't read this thread sad.gif
I'm talking about "usability", which has very few in common with "power". You mix things.

@killmaster: interesting suggestions.

Preferences:
11: Create standalone HELP menu item with About and links to help, FAQ and tutorials. It's very common in modern applications.
12: Rearrange menu item's view (one possible solution is given by killmaster).

Actually I don't think, that Tree would be great there, but menu representation definitely needs to be changed.

I have one more possible solution: this menu recreates real menu with its current items and items can be easily removed/added by keys or dragon drop. IMHO it's the most intuitive solution, which allows aranging menu in the most efficient way. The only serious problem here is that its imlementation would require some efforts.

@Moneo.
"Well, tagz library isn't meant for complex code."
That's what I told you wink.gif
But people trend to create more and more complex strings, where spaces and tabs are needful much less often, than more "serious" tags. Let's take a look at my basic Status string as example. I'll highlight all spaces in tabs by uppercase letters.

$if2($upper($info(codec)),$upper($ext(%_filename_ext%)))
[#SPACE#%__bitrate_dynamic% kbps#SPACE#]
[#SPACE#'('T%__replaygain_track_gain%')']
['('A%__replaygain_album_gain%')']
$if(%__channels%,
$ifgreater(%__channels%,2,%__channels%ch,
$ifgreater(%__channels%,1,stereo,mono))#SPACE#,)[%__extrainfo%]#SPACE#

$select($add($mod(%_time_elapsed_seconds%,4),1),'--','\','|','/') '['$progress2(%_time_elapsed_seconds%,%_time_total_seconds%,15,'?','?')']'#SPACE#<> %_time_elapsed%[#SPACE#/#SPACE#%_time_total%]

Now let's calculate our "neospace" tags: only 6 spaces in 10 strings of text. So are these damned 6 spaces worthy to sacrifice hardly readable text?

You're a kind of mathematician, try to calculate a number of spaces and tabs even in the most complicated TAGz and then think if they really worth that much.

"What if id3v2 component isn't installed?"
Then there'll be no button wink.gif

"You probably mean highlighting, not underlining.
And that would be a) nonstandard an b) ugly."

Forgive me my English...
Take a look at two excel coluns. One of them is monotonous and another has every second item's background slightly highlighted. And the third colunt has no cells-separators at all. It looks like rows, typed on a piece of paper. Where can you find needful value faster?

As for my GUI 04 wish, I'd liked to send you downloading one program, called ArtIcons pro (www.aha-soft.ru). I used to create graphics for it and I bet, that by looking at its menu you'll understand what i meant here. OK?
ssamadhi97
QUOTE(SacRat @ Dec 19 2003, 10:50 AM)
dragon drop

user posted image Run! RUN!!1 ph34r.gif
Moneo
QUOTE(SacRat @ Dec 19 2003, 10:50 AM)
But people trend to create more and more complex strings, where spaces and tabs are needful much less often, than more "serious" tags. Let's take a look at my basic Status string as example.Now let's calculate our "neospace" tags: only 6 spaces in 10 strings of text. So are these damned 6 spaces worthy to sacrifice hardly readable text?

You are forgetting that TAGZ isn't used only for title formatting, but also for sorting, filenames, masstagget etc etc.

Here's my current diskwriter string for the filenames

%artist% - '('%date%')' %album%\$num(%tracknumber%,2). %title%

I would be really pissed if I had to use something like $char(32) instead of spaces there.

And trust me, I edit those much more often then the title formatting strings.
QUOTE
Forgive me my English...
Take a look at two excel coluns. One of them is monotonous and another has every second item's background slightly highlighted. And the third colunt has no cells-separators at all. It looks like rows, typed on a piece of paper. Where can you find needful value faster?

You seem to be forgetting that background and foreground colors of the menus are a part of windows color scheme, which can be changed by the user. Nonstandard colors would break that. This alone is a good enough reason why you're never going to see color highlighting in the menus.
QUOTE
As for my GUI 04 wish

That's adding separators to menu items. Yeah, this one actually makes sense.
QUOTE
I'd liked to send you downloading one program, called ArtIcons pro (www.aha-soft.ru). I used to create graphics for it and I bet, that by looking at its menu you'll understand what i meant here.

Hmmm.

No colors in menus, no "zebra" backgrounds for menus.

Hey, but these are design flaws!

wink.gif
picmixer
QUOTE(SacRat @ Dec 19 2003, 10:50 AM)
@picmixer
I'm afraid you haven't read this thread sad.gif
I'm talking about "usability", which has very few in common with "power". You mix things.

Not only have I followed this thread from the very beginning. I also reread the entire thread before posting my first reply. I have no problem with you dissagreeing with me whatsoever, but please don't claim I have not read something, when I actually have done so thouroughly.

I know you are talking about usability, but for me usability, power and flexibility go well together. I would absolutely hate to loose some of TAGz power only for a system that is slightly easier to set up.

Yes some people do write very complex formatting strings and take it to the extreme (including myself). But that is just it, taking it to the extreme. No one is required to wirte such a complex formatting string themselves. It simply is an extra possibility dues to the power of TAGz.

Am sure with a little reference most people could write a little string for basic formatting and coloring. As long as you keep things simple yourself it should not be that hard.

However what I see very often is people wanting to use Foobars more advanced functions and then start complaining about usability (this is in absolutely no reference to SacRat). Well that's simply what these advanced functions are: advanced. And if one want's to use them one will have to get aquainted with them at least a little bit.

I also don't see where Foobar lacks any usability out of the box, in comparison with other media players. I am sure someone who never used a Media PLayer before would get used to it just as easy as to for example Winamp or any other media player.

In case anyone would ever feel the need to write a plugin that makes writing TAGz strings easier for beginners, thats fine with me. I however as I said before would hate to loose some of TAGz flexibility.
Canar
QUOTE(SacRat @ Dec 19 2003, 01:50 AM)
@ Canar's "niticks":

BTW, I did spell "nitpicks" correctly in my first post. wink.gif

Two points: In the areas where we disagree, neither of us is provably right.

All the things you mention are very minor. Implementing them all would not lead to a more usable foobar, not by much at very least. Some of them are, IMO, counter-intuitive.

On to the TAGZ debate:

I agree that for more complex scripting functions, TAGZ is not adequate. It's designed more for the alteration of a string, not for complex formatting. Perhaps a backend to Windows Scripting Host could be coded in or something. (Although it's likely "buggy") Sure, we could have the legacy TAGZ stuff, but I think having access to more of foobar's functions and/or objects via VBscript or something could be interesting and useful. Legacy TAGZ could even be supported through the WSH.

@picmixer:

I agree with most of what you say. Good post. smile.gif
foosion
QUOTE(Canar @ Dec 19 2003, 04:33 PM)
Perhaps a backend to Windows Scripting Host could be coded in or something. (Although it's likely "buggy") Sure, we could have the legacy TAGZ stuff, but I think having access to more of foobar's functions and/or objects via VBscript or something could be interesting and useful. Legacy TAGZ could even be supported through the WSH.

Eat this.
user posted image
Canar
QUOTE(foosion @ Dec 19 2003, 09:28 AM)
Eat this.
[Flaming Bag of Hell]

laugh.gif I take it you don't care for that idea? Sorry, it was the first idea that popped into my head; I've been playing around with Active Desktops in WinXP, and thus have used more than a bit of VBScript/WSH and things.

What's so horrible about WSH anyhow? Is it just buggy, or stupid, or what?

Anyhow, the Windows Scripting Host bit could be replaced with a custom-built script language, or with one of the several billion open-source script languages.
foosion
I don't really like the idea of external applications/scripts messing around in fb2k (and I know other people feel the same).
I've been working on plugin that allowed Lua scripts to be run inside fb2k. Those scripts are able to directly access the database and other features, so those scripts are similar to plugins regarding their abilities, which makes them very useful, but just like malicious/malfunctioning plugins they can cause all kinds of problems (example: removing tags from all files - that's a one-liner in Lua). To be honest, that is also one reason why I hesitate to release that plugin to the public. (The other reason is that it's rather unfinished, am I am not content with the user and C++ interfaces; I don't even use it that often myself.)
mazy
same here, foosion. it would only add to instability, won't be fast enough, would require some additional code which could bring some bugs along etc. ...

plus, even though we are using m$ systems, we don't have to use every and any single technology m$ has came up with

edit: i would love that lua plugin foosion. plus i have tag writing disabled so i should be fine wink.gif. i'm thinking i could code my 'tag guessing plugin' in it myself, as i don't have vc++ installed etc.
Canar
QUOTE(foosion @ Dec 19 2003, 03:01 PM)
I don't really like the idea of external applications/scripts messing around in fb2k (and I know other people feel the same).
I've been working on plugin that allowed Lua scripts to be run inside fb2k. Those scripts are able to directly access the database and other features, so those scripts are similar to plugins regarding their abilities, which makes them very useful, but just like malicious/malfunctioning plugins they can cause all kinds of problems (example: removing tags from all files - that's a one-liner in Lua). To be honest, that is also one reason why I hesitate to release that plugin to the public. (The other reason is that it's rather unfinished, am I am not content with the user and C++ interfaces; I don't even use it that often myself.)

What is Lua, anyhow? I've heard a lot about it recently, but what exactly is it and can it do? Is it the same as this?
mazy
yes it is. it's small-footprint scripting library / language, similar to c++ in some ways. i really like it

you could do almost anything with it, given proper interfaces
SacRat
Dreams to come true... Visualizing some:

user posted image
Hints are more, than helpful in situations, when informative help is unavailable.

user posted image
Simply define columns in title formatting, assign TAGz with each of them and operate your music ollection with more efficiency. Sorting has never been that easy biggrin.gif
billcow
Yeah, tooltips are helpful. Foobar actually has them on some stuff, but a lot of other stuff doesn't, so it ends up being worse overall than none.

That second playlist screenshot is nice. Would be especially nice if you could have it sort by multiple columns (so you can have it sort by artist then by album then by track number and so on instead of what happens with a lot of programs with column sorting where the non-selected columns go back to a default sorting (explorer for instance sorts alphabetically after it sorts by the selected column)) Unfortunately that would probably require a complete re-write of the entire playlist drawing code.
renyoc
I've been using fb2k for a good while now, and your discussion of the TAGZ formatting intrigues me. I've got some I'd like to share on how I'd improve it, if I had the programming prowess to do so... unfortunately I don't, but whatever.

First off, I'd make it so there are different brackets for certain clauses. Borrowing some from C here, I think it would be optimal if, for example, $if() were $if{}. This could differentiate if statements and its ilk from a function, say, $cut(), to greatly improve readability. I've personally spent lots of time wading through parentheses, what does what, what from who, what the hell... pain, much pain. dry.gif

I would remove non-quoted text from the string, requiring either double-quotes or single-quotes as fb2k has now. This wouldn't require someone to do a str$(32) or anything (silly concept, really... a ' ' or " " would suffice), but would require a str$(34) or str$(39). However, since those aren't commonly used characters in formatting strings, that shouldn't be such a problem. This would also improve readability as there wouldn't be any un-marked, non-function elements to be waded through.

Continuing with the previous paragraph, it would also be nice to exclude spaces, tabs, and their like from the formatting string itself. That way they could be used to increase its readability both in fb2k and out of it. This would, perhaps, add the greatest improvement to readability, IMHO, as it would allow for indentation of $if() statements, etc., which would again remove a lot of the wading through endless seas of parentheses...

To be sure though, it would be awful to lose the flexability, power, et all, of the TAGZ system.. but there is often room for improvement in even the best of systems. I'll also admit that I don't have the need, desire, etc. to push TAGZ to its limits. But, I have programmed before, and I've never had to wade through procedures like I do with simple formats in TAGZ.

There really CAN be a balance between power and usability. Look at something like QuickBasic... it's got the power of Fortran for calculations, but so what if it's not so complex that it scares beginners away from some hallowed fraternity? And really, aren't calculations more difficult than formatting a string?

And no, quitting foobar at this time is not an option. They're just suggestions, after all, to improve an already wonderful product.
weetjerm
I'll add my two cents about some logic improvements in foobar before the final version. I've been using foobar for quite some time now, so I have learned to deal with its oddities. But since we are drawing ever nearer to a 1.0 release, some extra polish on the user interface would be nice.

Most of these observations come from the fact that I now see foobar not like notepad, but the excel of music players. This is a very powerful model, but requires very well thought-out interface decisions, the majority of which foobar has already made. I think this is what SacRat is hinting to with his columns and alternative line shadings.

Track selection issues:

- Multiple non-sequential selected tracks (ctrl-clicking) should be collected together when dragged around a playlist, and not keep spacers.

- Track selections should support full drag and drop, offering simple movement to other playlists (i.e. drag selection onto a playlist tab to move it). An added bonus would be drag and drop from the playlist to windows explorer, though anything that messes with the file system could be dangerous for some users.

- Track selection cut/paste should be native, not provided through a plugin. Why not an "Edit" drop down menu, with cut, copy, paste, delete, select all, undo and redo? This stuff all shows up in the Playlist drop-down menu, but is difficult to find.

Context menu issues:

- The context menu shoul be cleaned up, with configurable spacers between different sections.

- The "Selection" section of the playlist menu should be in the context menu.

- The context menu should come up when right-clicking on any part of a playlist, not just a track.

- The selected item frame should not move when ctrl-right-clicking, after other tracks have been selected, if ever. This is confusing.

Playlist tab issues:

- The tabs should support reordering by click-and-drag.

- The tabs should support renaming by double-clicking.

- The tab context menu should come up when right-clicking on any part of the tab bar, not just a tab.

Some of these issues were harder to explain than I expected, so don't hesitate to ask for clarification. Also don't hesitate to tell me I'm crazy wink.gif

Keep up the good work -- I'll never use anything else as it is.
Frankdoom
QUOTE(anza @ Dec 17 2003, 04:54 AM)
Yes I have. I use my own album-formatting, which looks like this.
The screenshot doesn't show much (eg the mode for single files), but check out the formatting here to see what it does.
And yes, I have made it COMPLETELY by myself. Actually, I have never even used (or even read the code of) someone else's formatting for the playlist. A little part of the statusbar code is taken from someone (can't remember) in the times of 0.5 or something.
It's also much newer than the one in formatting page.

(i'm a newbie so don't ya blame me tongue.gif)

if that was more adaptable on other playlists... i wonder if it's too complicated tongue.gif
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Invision Power Board © 2001-2008 Invision Power Services, Inc.