Skip to main content

Notice

Please note that most of the software linked on this forum is likely to be safe to use. If you are unsure, feel free to ask in the relevant topics, or send a private message to an administrator or moderator. To help curb the problems of false positives, or in the event that you do find actual malware, you can contribute through the article linked here.
Topic: Navigator-Suite Feedback (Read 355203 times) previous topic - next topic
0 Members and 1 Guest are viewing this topic.

Navigator-Suite Feedback

Reply #25
ah, i see ... but you do $lower on it, so it wouldn't work ... (going to change ' ost ' to back uppercase and remove $lover )

Navigator-Suite Feedback

Reply #26
good call - that was quite stupid of me - i just copy'n pasted the line from the VA-checking and forgot to remove that unnecessary function. Will be fixed in next version. Thanks for pointing that out.

- Lyx
I am arrogant and I can afford it because I deliver.

Navigator-Suite Feedback

Reply #27
Lyx, as for speed-ups, i think we should bug musicmusic about that non-track specific globalstring. it could get distinct tab called like 'non-track specific variables' or something like that. now how should it interact with global string? would we need variables from it to be accessible in global string ('variables'), or just apped its list of exported vars to list from global string for use in columns?

also, it would be nice to have this accessible in other places. i think that atm it would be enough for musicmusic to provide service which would return list of these exported variables from non-track specific global string. 3rd party components could look for this service, and if available, get that list and then use it as extra parameter in their calls to formatting routines (that's possible and easy to do with current sdk). or - musicmusic could provide custom / modified formatting routine for others to use, but that wouldn't be that 'clear' way to do it.

this could be helpful for (until we could have foobar-wide custom vars or even functions) synchronizing color themes amongs components like track info etc.

we could go even further and have similar service for track-specific (maybe a new one, not columns ui oriented as 'variables' global string is) global string, which could contain tag guessing and other stuff, which you would like to easily use at other places too ...

and - extra nice feature for speed-ups, though it would require quite a lot of work to implement, would be to disable parts of 'variables' global string based on changes to previous track.

that would require something like '$changed(<string to evaluate>,<true-branch>,<false-branch>)', for example '$changed($left(%_path%,$sub($len2(%_path%),$len2(%_filename_ext%)))|%album%,<album-wide code>,$reuse(album_mode))'.

columns ui would have to parse string and find those $changed parts and its params. then it would evaluate <string to evaluate> for current track and last displayed track. in case they are not same or that there wasn't any previously displayed track, it would execute <true-branch> using foobar's routines, <false-branch> otherwise.

in my proposal, <false-branch> could contain list of names of previously exported variables, which would get reused, so they would get exported in current pass using value from the last one. that's just first idea, there are many things to work out / discuss about ...

that's just one idea i had, it's probably way to complicated or of minor use, but it could help ...

Navigator-Suite Feedback

Reply #28
Quote
Hmm, someone else who did lots of test-runs of it for me has a 700mhz box, and he says it runs acceptable - but i guess your bars are higher because you're a coder :-)[a href="index.php?act=findpost&pid=273301"][{POST_SNAPBACK}][/a]
Tagz is a coding language

Its probably my different habits - I like to use page up/down keys to navigate, with will load more tracks at once, and maybe my laptop's processor is melted also.

Quote
Large parts of the code is non-trackspecific stuff *hinthint*
Lets not turn this into a columns ui thread  Developments in that area will come in due time (yes i know its been long enough as it is)

Quote
To be more specific....... the "culprits" for the resource-hog are two:
1. non-trackspecific code - like calculation of secondary colors
2. the tag-guess code eats resources even though its inside a large if-loop which only gets executed when not all standard tags are there - but the parsing alone seems to be heavy already.[a href="index.php?act=findpost&pid=273301"][{POST_SNAPBACK}][/a]
Well probably the general overhead of parsing the script, or something, I dont know. But you're not going to make a "do-everything" script that is fast without rewriting the tagz engine or something. Of course a non-track specific string will help significantly, though.
.

Navigator-Suite Feedback

Reply #29
@mazy
Mmh, i'll try to make the situation and my point of view simple:

Preferable, there should be a centralized config-manager which provides this service.

Well, thats the idea since months, musicmusic said that he doesn't have time to create and maintain such a plugin, and no one else is able and willing to do it. So lets be realistic: we won't get the "preferable" solution anytime soon.

Because of this, i agree with you that it should be implemented into ui_columns instead. Because thats still much better than having no global control-service via global-vars at all - and its desperatelly needed, not just for formatting strings but perhaps even more for controling stuff like colors from a central place. The panel-hell won't become better, only worse, so the earlier the better.

In what my opinion differs from yours is not the idea itself, but the implementation: I'd go for a KISS-approach. Just have one more tab in the ui_columns globals page called "vars (non-trackspecific)". After parsing its string, it will just export vars just like the trackspecific global string. It would also automatically make the exported vars available to the track-specific global string. The track-specific globals string in turn should be able to overwrite vars exported from the non-trackspecific global string. These are instantly available to ui_columns itself (just as it is now) - BUT, additional ui_columns gets a service which makes the exported non-trackspecific vars also available to other plugins and panels.

Technically under-the-hood, this means that there are two var-tables.... each of them can contain vars with the same name, but different value. This is because the non-trackspecific string gets executed only one time(possibly only when selecting a playlist) and then creates a read-only copy of its exported vars...... these vars then can be called from the trackspecific global string - and overwritten - but in reality, they're not overwritted but instead stored in a 2nd var-table..... the trackspecific one.

I dunno if this makes sense.

- Lyx
I am arrogant and I can afford it because I deliver.

Navigator-Suite Feedback

Reply #30
yep Lyx, that makes sense ... and that's one way to implement it that i was thinking about. i don't know what would be easier for musicmusic to implement though ...

making results from non-track specific global string available in track specific one is easy, but merging them would take some work. it's probably not a big issue and you're not going to have lots of variables, so you could use simple look-up method when merging them, but because of my education it would be against my habit to do that, ehm . how would musicmusic implement this?

Navigator-Suite Feedback

Reply #31
how about an option to display just the artist and track when you hover the mouse over the systray icon? it currently displays quite a lot of info and for me at least seems to vary what info it displays randomly.

Navigator-Suite Feedback

Reply #32
Quote
how about an option to display just the artist and track when you hover the mouse over the systray icon? it currently displays quite a lot of info and for me at least seems to vary what info it displays randomly.
[a href="index.php?act=findpost&pid=273616"][{POST_SNAPBACK}][/a]


I forgot to mention that in the docs, but you can do that already. Open the prefs->titleformatting and switch to the systray-tab of that page. At the top of the string which gets then displayed you can enable/disable each line which gets displayed in the systray.

I'm sorry, its currently technically not possible to make this configurable from the globals-string in ui_columns..... among other things, thats what mazy and i were discussing: the ability to control other stuff than the playlist from one single config-section in the ui_columns globals page.

- Lyx

edit: oh, i forgot to mention - you may need to disable and then reenable the systray-display to see the changes.
I am arrogant and I can afford it because I deliver.

Navigator-Suite Feedback

Reply #33
thanks, i really like this fcs.

Navigator-Suite Feedback

Reply #34
Thanx Lyx,
just when I thought I had Foobar how I wanted it !!!       

Navigator-Suite Feedback

Reply #35
Sweet fcs, Lyx! Much classier than my own. 

Performance is fine in full album-mode with a playlist of 28000 songs on my XP 3200+. All of my songs are full tagged, though, so I can't imagine there's much tag-guessing going on.
That's so plausible, I can't believe it.

Navigator-Suite Feedback

Reply #36
I should have been really worried if any kind of lag is visible on a 3200mhz machine ;-)

In the normal version, a bit of performance is always taken away by the tag-guess code - thats because even if that part of the fcs is skipped when all tags are there, then even "skipping" that part still takes about 1/4 of the speed which would be used when it would indeed guess tags. Or more simple: even skipping tag-guessing takes a bit resources. Thats why on lowend machines a difference is perceivable when using the lite-version, even with fully tagged files.

Then again, having tag-guessing as a backup kicking in when its needed has some advantages :-) While designing the albummode i stumbled over a possible bug a few days ago.... i thought "hmm, i wonder if i remove the artist tag if the lines in the album-column would then get out of order"..... so i removed the tag...... but nothing changed - then i remembered that tag-guessing was enabled ;-)

- Lyx
I am arrogant and I can afford it because I deliver.

Navigator-Suite Feedback

Reply #37
thinking about tagz, it would be great to have some kind of pre-processing function in the core, which would make some sort of derivation / parsing tree.

you would call that function for string, which you're not going to change that often (ideal for playlist string) and it would return you some data about it.

then, when displaying the string, you would call new formatting routine, which would take extra param - these data.

it could use them to quickly skip to next token etc ...

what do you think? this could really speed things up, but peter would have to implement that himself ...

Navigator-Suite Feedback

Reply #38
Umm, i'm sorry i can't follow your idea? The only thing i understood was that it sounds like some serious magick ;-)

- Lyx

edit: actually, although it doesn't look like it - i'm really bad at coding and not very knowledgeable - its all just intuition :-)
I am arrogant and I can afford it because I deliver.

 

Navigator-Suite Feedback

Reply #39
sorry Lyx, i know i go way to far sometimes .

you can imagine result of that pre-processing for example like data, that would tell you for left bracket on given position where is (=position) corresponding right bracket etc.

you could store this info for brackets, string constants, parameters of tagz functions in the string etc.

it would help you with evaluation of the string. for example when you come to $if and evaluate its condition as false, you could jump right to false-branch of that $if instead of doing parsing of the string in between. in other words, when skipping large parts of code because of $if, you wouldn't have to look for where to continue by inspecting (parsing) the string, but you *would* know where to continue right away because of the look-up table (in reality it doesn't have to be a table).

parsing is probably quick enough, but for huge strings repeated over and over it can slow things down  (as you saw for yourself - disabling large chunk of code doesn't give you same speed-up as actually deleting it).

this, combined with global non-track specific string could help a lot in columns ui ...

Navigator-Suite Feedback

Reply #40
Okay, now i understood what it does, but not "how" :-) But i guess thats natural for me, because i'm actually quite bad at maths and complex-systems. As long as something is intuitively imaginable my brain works great - but as soon as it becomes too abstract and complex i fail miserably (don't ask me how i got that tag-guess spaghetti-code to work ;).

- Lyx
I am arrogant and I can afford it because I deliver.

Navigator-Suite Feedback

Reply #41
hmm, can i have IFs inside of a $strstr and $replace? like this:


Code: [Select]
$strstr(
$replace(
$lower($if2(%various artists%,$if2(%various%,$if2(%va%))))
,va,1,'v.a.',1)
,1)


That would allow me to cut the size of the VA-code in half. Maybe there is an easier solution than using cascaded IF2s.

- Lyx

edit: nevermind - found a much easier less resource-hungry solution.
I am arrogant and I can afford it because I deliver.

Navigator-Suite Feedback

Reply #42
Hi Lyx.

Just downloaded Navigator 1.01 and I really like it.

Using "singlemode default", how can I remove the album info from the artist column?

Thanks for your help.

Alessandro

Navigator-Suite Feedback

Reply #43
Just rightclick the column-headers - there you can enable and disable every column.

For example, there is:
Artist
Artist & Album
Album

"Artist & Album" is enabled by default, and the artist- and album-columns are disabled by default. But you can also make it the other way around :-)

- Lyx
I am arrogant and I can afford it because I deliver.

Navigator-Suite Feedback

Reply #44
Awesome config, i will try it!

Navigator-Suite Feedback

Reply #45
Soo easy!

Thank you!

Alessandro

Navigator-Suite Feedback

Reply #46
updated to v1.02 - changelog is in the first post of this thread.

I will probably not add new features for a while and only fix bugs when they're found and optimize the code. Instead, i'll work on a trackinfo-panel string in the next 1-2 months.
I am arrogant and I can afford it because I deliver.

Navigator-Suite Feedback

Reply #47
I had been using eriks3 format string for quite some time, so when I switched over to Navigator I really wanted to keep the same color scheme.  So, I whipped this up:

Code: [Select]
// CUSTOM COLOR-THEME CONFIG   (ignored if "theme" is not 0)
// colors are in decimal values (RGB / 0-255)
// ===============================================

// is your custom-theme a dark-theme? (0=no, 1=yes)
$puts(theme_dark,1)

// foreground colors
$puts(standard_color,$rgb(0,0,0))
$puts(special_color,$rgb(0,0,0))
$puts(playing_color,$rgb(220,240,255))
$puts(borders_color,$rgb(149,149,149))

// background colors
$puts(bg_color,$rgb(255,255,255))
$puts(bg_color2,$rgb(240,247,250))

// various symbols used in display
$puts(symbol_seperator,'  •  ')
$puts(symbol_rating,⋆)


And here's a screenshot.

Hope someone enjoys it.

Navigator-Suite Feedback

Reply #48
cool, thanks for sharing this one.

Now, if i would include it in the next version, how should i call it? Also, since you mention that the scheme is from another FCS how to handle the credits?

edit: the way you made the highlighted (primary) colors appear like the secondary by defining it as a dark-scheme instead of a bright one is interesting
I am arrogant and I can afford it because I deliver.

Navigator-Suite Feedback

Reply #49
As far as I'm concerned, you can just give the original author credit, I'm not really worried about seeing my name.  So I guess you'd just call it eriks3, or 4, or whatever.

Edit: Also, I've just noticed that when it's defined as a dark theme, the stars on the rating column look really awful.  If you set a song to a 4 rating, 4 stars are light grey, and 1 is black.  Personally I think that's backwards.  But if you set it to a light theme, it looks fine.  Just thought I'd point that out...