Author Topic: Additional Tagging & Reporting Tools  (Read 937827 times)

boroda

  • Sr. Member
  • ****
  • Posts: 4657
redownload the latest version. there was a bug in .net function implementation, so that version may or may not work for you depending on the .net version.

hiccup

  • Sr. Member
  • ****
  • Posts: 7908
Is there a chance the 'use MusicBee skin colours' implementation could be improved a bit so that it works well for dark skins?


hiccup

  • Sr. Member
  • ****
  • Posts: 7908
I’m certain I recall a ASR preset that only copied tags from <Tag 1> to <Tag 2> if <Tag 1> wasn’t empty. Is there any possibility of this being added to the preset bundle?
i don't recall such preset and can't imagine how it could be implemented.
Wouldn't it be a solution to create a virtual tag that outputs <Tag 1> and <Tag 2> combined:

virtual tag
Copy tag 1 to tag 2

formula
$IsNull(<Tag 1>,$IsNull(<Tag 2>,,<Tag 2>),$IsNull(<Tag 2>,<Tag 1>,<Tag 1>"; "<Tag 2>))

and then have Advanced Search & Replace write that virtual tag to <Tag 2>?



edit:
In case you don't want to add the value of Tag 1 to Tag 2, but replace Tag 2 with Tag 1 (if not empty), use this virtual tag:

formula
$IsNull(<Tag 1>,$IsNull(<Tag 2>,,<Tag 2>),<Tag 1>)
Last Edit: October 29, 2023, 09:58:26 AM by hiccup

boroda

  • Sr. Member
  • ****
  • Posts: 4657
Is there a chance the 'use MusicBee skin colours' implementation could be improved a bit so that it works well for dark skins?



it's already the best i've succeeded in doing. much better than it was initially. maybe i can make disabled text less dark. do you think it helps?

boroda

  • Sr. Member
  • ****
  • Posts: 4657
I’m certain I recall a ASR preset that only copied tags from <Tag 1> to <Tag 2> if <Tag 1> wasn’t empty. Is there any possibility of this being added to the preset bundle?
i don't recall such preset and can't imagine how it could be implemented.
Wouldn't it be a solution to create a virtual tag that outputs <Tag 1> and <Tag 2> combined:

virtual tag
Copy tag 1 to tag 2

formula
$If(<Tag 1>="",,$If(<Tag 2>="",,<Tag 1>"; "<Tag 2))

and then have Advanced Search & Replace write that virtual tag to <Tag 2>?



you are right! i forgot that ASR supports VT expressions. but this already doesn't matter. i've added 1 new option to the dedicated 'copy tag' command to preserve non-empty destination tags, and 2 new options to ASR (1 three-state checkbox for every ASR step). copy 'copy tag' preset and adjust required "(?)" option (read tooltip over checkbox).



https://www.mediafire.com/file/h2t08o9562efboi/mb_TagTools_latest.zip/file

hiccup

  • Sr. Member
  • ****
  • Posts: 7908
it's already the best i've succeeded in doing. much better than it was initially. maybe i can make disabled text less dark. do you think it helps?
Absolutely. My concern is mostly about (un)readability.
The fact that some elements/bars are much whiter then they ideally would be is far less important.

And perhaps take a look at the two icons 'Clear search text' and "Open quick settings'?
They are also very difficult to discern.

hiccup

  • Sr. Member
  • ****
  • Posts: 7908
copy 'copy tag' preset and adjust required "(?)" option (read tooltip over checkbox).


Shouldn't the checkbox tooltip be a position lower, at 'Replace with:' instead of at 'Search for:'?

hiccup

  • Sr. Member
  • ****
  • Posts: 7908
you are right! i forgot that ASR supports VT expressions. but this already doesn't matter. i've added 1 new option to the dedicated 'copy tag' command to preserve non-empty destination tags, and 2 new options to ASR…
Dizza17 must be pleased, going from zero options to two options within 30 minutes ;-)

hiccup

  • Sr. Member
  • ****
  • Posts: 7908
A request @boroda:

In the past AT&RT had a $log function, but I believe you removed it because you thought it was not used by anyone, and couldn't remember why it was implemented in the first place.

But...
I am currently trying to create a virtual tag that needs the ability to convert the decimal track peak value to dB's, and I found that that needs a logarithmic function.
(I believe it is specified as 'base 10' in this case)

See here to get some idea about what I am trying to do:
https://getmusicbee.com/forum/index.php?topic=40141.msg217380#msg217380

PS
I think I can now also recall why $log was implemented in the first place. I believe it had to do with a similar challenge regarding converting apples soundcheck to ReplayGain values?


Dizza17

  • Jr. Member
  • **
  • Posts: 69
Absolutely wrapped guys!! Appreciate you both taking time to look at this for me. I am sincerely grateful for all the work you put into this forum.

Buchas

  • Newbie
  • *
  • Posts: 3
It appears I had to upgrade MusicBee to the last version (3.5) (I had 3.4) to get menu "Tools -> Additional Tagging & Reporting Tools" working.
Now however I cannot figure out how to use the "Library Reports". I open it, select "LIBRARY TOTALS", click "Preview" and nothing happens.
A progress bar would be nice if the tool is doing something.

most likely you need mb latest patch from here: https://getmusicbee.com/patches/

I have installed Additional-Tagging-Tools-Plugin.zip and patch " MusicBee35_Patched.zip 2023-10-30 08:38 3.0M ", but the problem remains: "Preview" or "Proceed" doesn't do anything in Library reports. I mean I click "Preview", some fields gets disabled, button changes to "Stop", but report does not appear at the bottom table.


EDIT - Ahh it worked while I was typing a forum message!
Last Edit: October 31, 2023, 02:55:24 PM by Buchas

boroda

  • Sr. Member
  • ****
  • Posts: 4657
A request @boroda:

In the past AT&RT had a $log function, but I believe you removed it because you thought it was not used by anyone, and couldn't remember why it was implemented in the first place.

But...
I am currently trying to create a virtual tag that needs the ability to convert the decimal track peak value to dB's, and I found that that needs a logarithmic function.
(I believe it is specified as 'base 10' in this case)

it's done for the next update (i'm now fixing both skinned and not-skinned coloring and some other UI issues):

use Lg(number)

it's a decimal logarithm (natural logarithms are used mostly in mathematics and theoretical physics).

Bee-liever

  • Member
  • Sr. Member
  • *****
  • Posts: 3840
  • MB Version: 3.6.8878 P
As per post here:

This occurs when using 'Copy Tags to Clipboard'

Used a couple of old mb_TagTools.dll's that I had.
5.5.8403 is the last one I have that 'Copy Tags to Clipboard' doesn't throw an error.
5.8.8577 and newer all throw an error.

earlier plugin versions used win32 ClipboardSetText() function, but this led to tiny memory leaks. Later, i've changed it to .net function, which is working fine on my pc. but if this causes problems, I could revert to old implementation.

try this version:

https://www.mediafire.com/file/h2t08o9562efboi/mb_TagTools_latest.zip/file

Using Version: 7.1.8702.19923 and all is fine.
Thank you.
MusicBee and my library - Making bee-utiful music together

TheRealDavid

  • Newbie
  • *
  • Posts: 5
Would it be possible to amend one or both existing $TagContains functions to accept a partial/exact parameter? This would allow users to find exact-string matches instead of only partial-string matches.

As a simplified example of what I mean, the current behavior is for $TagContainsAnyString(<URL>,Genre,Pop|Rock) to return T for the exact matches of Pop and Rock in the Genre tag. It also returns T for partial matches like Synthpop, Hard Rock, etc.

but how "exact strings" must be separated? what can be delimiter? only spaces? semicolons? Something else?

I don't know how difficult making these changes would be, so I have 2 ideas for how to resolve this. Both ideas would provide the "exact matches" I'm looking for, but one of these might be easier to code or more stable than the other.

Idea 1: Update the existing function. 
Maybe exact matches could use quotes within the existing format. Adjusting my prior example: $TagContainsAnyString(<URL>,Genre,"Pop"|Rock) would return T for an exact match of Pop (quotes = exact match) and partial matches for Rock (no quotes = partial match, current behavior). 

Idea 2: Create a new function.
Maybe the function could be cloned to create something like $TagMatchesAnyString. The new Matches variation could then be coded to ONLY return exact matches, while the existing Contains variation would continue to return partial matches.

boroda

  • Sr. Member
  • ****
  • Posts: 4657
it's all obvious.

i mean, what must be treated as a "complete" or "separate" string inside a tag? depending on a tag, what of this is a "separate" or "complete" string "Pop" (all these are abstract examples)?

Pop;Synthpop
Pop,Synthpop
Pop:Synthpop
Pop+Synthpop
Pop-Synthpop
Pop/Synthpop
Pop(Synthpop)

or do you mean that only spaces must be treated as a string separator?