Help - Search - Members - Calendar
Full Version: foo_playlist_tree
Hydrogenaudio Forums > Hosted Forums > foobar2000 > 3rd Party Plugins - (fb2k)
Pages: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37
fabiospark
QUOTE(MiSP @ Jan 31 2007, 16:36) *

QUOTE(fabiospark @ Jan 31 2007, 07:57) *

Use %<genre>% instead of %genre%.

This causes foobar to freeze. sad.gif

How long?
Have you tried leaving it alone for a few minutes? (say 5)
How many tracks have you?
Ono
Is @sum<> supposed to work in Format? I can't get it to do anything.
MiSP
QUOTE(fabiospark @ Jan 31 2007, 18:50) *

How long?
Have you tried leaving it alone for a few minutes? (say 5)
How many tracks have you?

Fifteen minutes and counting, with no hard disk activity whatsoever. I have 3000-ish songs.
fabiospark
QUOTE(MiSP @ Feb 1 2007, 00:09) *

QUOTE(fabiospark @ Jan 31 2007, 18:50) *

How long?
Have you tried leaving it alone for a few minutes? (say 5)
How many tracks have you?

Fifteen minutes and counting, with no hard disk activity whatsoever. I have 3000-ish songs.

Do you mind posting your format string?
We could better try to guess.

Thanks.
MiSP
This is what I have now.
CODE
$if(%genre%,
@icon<2>%genre%|[@icon<2>%style%|]@icon<29>%artist%|['['%date%']'] $if2(@icon<11>%album%,@icon<86><Unknown album>)|[$num(%tracknumber%,2) - ]%title%,
@icon<86>-<Unknown genre>-|$if(%artist%,@icon<29>%artist%|['['%date%']'] $if2(@icon<11>%album%,@icon<86><Unknown album>)|[$num(%tracknumber%,2) - ]%title%,@icon<86>-<Unknown artist>-|$if(%album%,@icon<11>%album%|[$num(%tracknumber%,2) - ]%title%,@icon<86>-<Unknown album>-|[$num(%tracknumber%,2) - ]%title%))
)

What I'm trying to do, is
CODE
$if(%genre%,
@icon<2>%<genre>%|[@icon<2>%<style>%|]@icon<29>%artist%|['['%date%']'] $if2(@icon<11>%album%,@icon<86><Unknown album>)|[$num(%tracknumber%,2) - ]%title%,
@icon<86>-<Unknown genre>-|$if(%artist%,@icon<29>%artist%|['['%date%']'] $if2(@icon<11>%album%,@icon<86><Unknown album>)|[$num(%tracknumber%,2) - ]%title%,@icon<86>-<Unknown artist>-|$if(%album%,@icon<11>%album%|[$num(%tracknumber%,2) - ]%title%,@icon<86>-<Unknown album>-|[$num(%tracknumber%,2) - ]%title%))
)

The only difference is %<genre>% and %<style>% at the beginning of line 2.
cwbowron
QUOTE(MiSP @ Feb 1 2007, 13:18) *

The only difference is %<genre>% and %<style>% at the beginning of line 2.


There's some issues with using %<tag%> stuff inside of complex $if statements and such. If you want to use the %<tag>% consider doing so without nesting it inside of an $if.
q-stankovic
QUOTE(cwbowron @ Jan 22 2007, 16:02) *

QUOTE(q-stankovic @ Jan 22 2007, 09:49) *
It doesn't matter if you add "NOT mood MISSING AND" at the beginning or append "AND NOT mood MISSING" at the end. You don't have added this to the bug list in the wiki so far - so let me ask for any news about this. rolleyes.gif


I think the issue is that meta_sep(x,y) doesn't return anything when the tag doesn't exist at all.

I think you're best bet is to rework the query into some sort of @format<$if($meta(x),bla bla bla,x MISSING)> type query.


I tried following:

mood IS @format<$if($playing('%mood%'),$playing('$meta_sep(mood, AND mood IS )'),qwert)> AND "$meta_num(mood)" IS @format<$playing('$meta_num(mood)')>

It is similar to old query but the string "$playing('$meta_sep(mood, AND mood IS )')" should only be applied if the playing track contains a mood tag. If not then the first part of the criteria is "mood IS qwert" - a value that doesn't exist.

But also here the same problem: If the playing track has no mood tag the whole database is displayed instead of nothing.

Before getting frustrated i like to ask again for help. biggrin.gif
cwbowron
QUOTE(q-stankovic @ Feb 1 2007, 14:03) *

I tried following:

mood IS @format<$if($playing('%mood%'),$playing('$meta_sep(mood, AND mood IS )'),qwert)> AND "$meta_num(mood)" IS @format<$playing('$meta_num(mood)')>

It is similar to old query but the string "$playing('$meta_sep(mood, AND mood IS )')" should only be applied if the playing track contains a mood tag. If not then the first part of the criteria is "mood IS qwert" - a value that doesn't exist.

But also here the same problem: If the playing track has no mood tag the whole database is displayed instead of nothing.

Before getting frustrated i like to ask again for help. biggrin.gif


Try something like

@format<$if($playing('%mood%'),mood IS $playing('%mood%'),mood MISSING)>
fabiospark
Is there any option not to have such a huge pts file (like in old PLT style)?
Mine is 92 megs and growing...

I remember having even more numerous and complicated queries with a 14KB pts file.

Maybe we can have the option to choose between huge pts file + fast FB start and tiny file + quite slow FB start. We usually launch FB once a day so it wouldn't be an issue, for us.

The giant file makes backups a pain in the neck.


Thanks.
q-stankovic
QUOTE(cwbowron @ Feb 1 2007, 20:13) *


Try something like

@format<$if($playing('%mood%'),mood IS $playing('%mood%'),mood MISSING)>


Maybe this query is going to work - but it won't do what i like. Let me give an example: The playing mood is "hard, aggressive, militant" - but the criteria won't give back all the songs with mood "aggressive, hard, militant" because the single entries of the multiple tag are sorted in a different way.

So it is time to get frustrated! biggrin.gif
cwbowron
QUOTE(q-stankovic @ Feb 2 2007, 09:27) *

QUOTE(cwbowron @ Feb 1 2007, 20:13) *


Try something like

@format<$if($playing('%mood%'),mood IS $playing('%mood%'),mood MISSING)>


Maybe this query is going to work - but it won't do what i like. Let me give an example: The playing mood is "hard, aggressive, militant" - but the criteria won't give back all the songs with mood "aggressive, hard, militant" because the single entries of the multiple tag are sorted in a different way.

So it is time to get frustrated! biggrin.gif


I get that. But you can use what I put in as a basis for getting what you want. Make the mood IS $playing part more complex and add in whatever $meta_sep stuff you need.
q-stankovic
Oh?

Does that mean the criteria accepts just one @format<> expresssion? Did not know that!
I will try that and report the result.

Thanks! smile.gif
q-stankovic
No, it doesn't work. I think there is a bug in processing an $if-function. Here is the way how i came to the conclusion:

At thirst i thought the playlist_gen_query language doesn't like all the $meta-functions because the following simple criteria (for purpose of testing)seemed to work:

@format<$if($playing('%artist%'), artist IS $playing('%artist%'), artist MISSING)>



But if you change the else part of $if function to get this:


@format<$if($playing('%artist%'), artist IS $playing('%artist%'), artist HAS ea)>


you should expect that f.e. the Beastie Boys are shown if playing track has no artist tag. But instead of that nothing is shown. I think the else part is never processed.



cwbowron
QUOTE(q-stankovic @ Feb 4 2007, 11:29) *

No, it doesn't work. I think there is a bug in processing an $if-function. Here is the way how i came to the conclusion:


I think its more likely a bug in the way the $playing() function works. Test what shows up witha $playing() function when the song doesnt have the tag, and change your $if function to a test of that.... I dont have my foobar2000 handy, but my guess is that $playing is returning an empty string so just change your $if() to something like $greater($length($playing('bla')),0)
Melomane
i use this:

$if($strcmp($playing('%bla%'),?),A,B))
Ono
Is it possible to include hidden text (using $hidetext() ) in display name sorting.

I have some text at the start of fuction but I only want to sort by it, not show it.
q-stankovic
QUOTE(cwbowron @ Feb 4 2007, 17:52) *

I think its more likely a bug in the way the $playing() function works. Test what shows up witha $playing() function when the song doesnt have the tag, and change your $if function to a test of that.... I dont have my foobar2000 handy, but my guess is that $playing is returning an empty string so just change your $if() to something like $greater($length($playing('bla')),0)



I am not really sure what you mean - however i made the following test:

@format<$if($greater($len($playing('%artist%')),0), artist HAS dmc, artist HAS eas)>


If the playing track does not contain an artist tag the length of "$playing('%artist%')" is grater "0" wich seems to be correct because "?" is also counted.
cwbowron
QUOTE(q-stankovic @ Feb 6 2007, 07:46) *

QUOTE(cwbowron @ Feb 4 2007, 17:52) *

I think its more likely a bug in the way the $playing() function works. Test what shows up witha $playing() function when the song doesnt have the tag, and change your $if function to a test of that.... I dont have my foobar2000 handy, but my guess is that $playing is returning an empty string so just change your $if() to something like $greater($length($playing('bla')),0)



I am not really sure what you mean - however i made the following test:

@format<$if($greater($len($playing('%artist%')),0), artist HAS dmc, artist HAS eas)>


If the playing track does not contain an artist tag the length of "$playing('%artist%')" is grater "0" wich seems to be correct because "?" is also counted.


Use $if($strcmp($playing('%bla%'),?),A,B)) like Melomane suggested.
q-stankovic
QUOTE(cwbowron @ Feb 6 2007, 14:21) *

Use $if($strcmp($playing('%bla%'),?),A,B)) like Melomane suggested.


It works!! smile.gif

So the problem was that if no tag exists $playing('tag') gives back a "?" if it is a string but doesn't give back nothing (neither true or false) if it is a logical statement?
Kiteroa
When I try to use this plug-in and I choose any of the menu options which are not greyed-out nothing happens!

How do I start using this?



Problem solved: you need the Playlist Tree panel open so the PLaylist Tree menu options have any effect!

Looking forward to using this plug-in.
barry123
is it possible to make an Library tree?
fabiospark
QUOTE(barry123 @ Feb 16 2007, 18:08) *

is it possible to make an Library tree?

Can you explain better?
barry123
My Media Libary is not integrated in Foobar.
I click on the toolbar Libary - Album list .
But I want my Libary integrated on the left side like this.

IPB Image
q-stankovic
You are in the wrong thread! wink.gif

That is not Playlist Tree but Album List. However, if you like to place a panel in your ColumnsUi go to preferences ->View->ColimnsUi to create your layout. If you prefer Album List be sure to install the panel version.



barry123
Sorry for wrong thread but I can't find the Album list topic.
Anyway, I go to, preference - Display, Colums UI, right?
I click tab Layout.
When I right click on vertical splitter, Insert panel, I dont see Album list in Panels, Playlist views, Splitters and Toolbar.

I use foo_ui_columns.dll
and
foo_uie_quicksearch.dll


EDIT.
sorry it's a little confusing for me, but I think I fixed it, I use foo_uie_albumlist.dll now.
gob
is it possible to have different font sizes for playlist tree panels? that would make switching from desktop to tv mode easy with a remote.
Kiteroa
I want to use this plug-in to show lists of other versions of teh same track, other albums/tracks by the same artist etc. .


Is it possible to test against tags other than by IS or HAS?

I am looking for a more fuzzy sort of matching so that, for example, Fred Smith and Smith,Fred would match!

Maybe something like the HAS MOST OF option in the databse search plug-in?

wolfsong
Is there a maximum megs allowed in a query? I'm tryin to fill a 15 GB but if I specify 15000 megs I get no results back.
Capric0rn
Can this plugin use 256 colors for the icons?
I used this plugin before and back them it supported even XP icons.
cwbowron
I just uploaded a new Beta Version of playlist tree. Please read the readme.txt file included in the zip for installation instructions.

It includes a new feature in the form of an embedded version of the scheme programming language for describing queries. The basics are you set the source of the query to "@scheme" and put the scheme code in the "Format" field.

Here's an example that will add every database entry in artists\album\title:
CODE
(for-each-db-entry
(lambda (handle)
   (add-node
    handle
    (list (format-title handle "%artist%")
      (format-title handle "%album%")
      (format-title handle "%title%")))))


The edit box for the format field is not a good place for editting scheme code, so I suggest getting Emacs and editting there and pasting into the format box.

More examples can be found here.

This is not a feature for beginner users, its for advanced users who know a little bit about programming. Other than posting occasional snippets of code on the above wiki page, I will not help users build fancy queries.

Playlist tree adds some scheme primitive function which are described on the wiki at http://wiki.bowron.us/index.php/Template:F...Embedded_Scheme

From the changelog:
QUOTE

* better selection actions options -> fixed the interaction with foo_utils
* mzscheme integration
o the formatting will now be a real language with looping and other fancy features.
o powerful scripting for power users.
o (display ...) and (print ...) both output to foobar2000 console
o Sample query:
Chaser
Thank you for the update!
aliendesaster
Crash occured when removing one by one all queries and folders of a playtree in a docked panel.
CODE

Illegal operation:
Code: C0000005h, flags: 00000000h, address: 015EA911h
Access violation, operation: read, address: 039171B4h
Call path:
entry=>app_mainloop
This is the first crash logged by this instance.
Code bytes (015EA911h):
015EA8D1h: 00 51 FF D6 6A 10 FF 15 CC 61 62 01 66 85 C0 68
015EA8E1h: 90 81 62 01 68 90 81 62 01 79 0D 8B 15 10 07 64
015EA8F1h: 01 B9 10 07 64 01 EB 0B 8B 15 1C 02 64 01 B9 1C
015EA901h: 02 64 01 8B 42 04 FF D0 50 33 C9 E8 9F FD 02 00
015EA911h: 8B 0F 83 C4 0C 6A 00 6A 08 68 0B 11 00 00 51 FF
015EA921h: D6 B8 01 00 00 00 5F 5E 5B 8B E5 5D C2 10 00 E8
015EA931h: 1B 14 00 00 85 C0 74 0B 8D 54 24 0C 52 50 E8 1C
015EA941h: 0C 00 00 B8 01 00 00 00 5F 5E 5B 8B E5 5D C2 10
Stack (0012F5B4h):
0012F594h: 00B5E530 7C9D93C0 77F443DD 7C9D93C0
0012F5A4h: 00000004 00000000 00B5DA3C 00000000
0012F5B4h: 01763EB8 01628190 01628190 0012F67C
0012F5C4h: 015EA550 00000000 0000029D 00000233
0012F5D4h: 00000067 00000016 00000004 00157F28
0012F5E4h: 00000004 00157F28 00000002 00000000
0012F5F4h: 00000000 00000000 00000000 00000000
0012F604h: 00000000 03917180 00000000 77D1C331
0012F614h: 0012F640 77D18734 0050007E 0000007B
0012F624h: 00360154 0233029D 015EA550 DCBAABCD
0012F634h: 00000000 0012F67C 015EA550 0012F6AC
0012F644h: 77D2418D 015EA550 0050007E 0000007B
0012F654h: 00360154 0233029D 0000007B 0050007E
0012F664h: 0074BEE0 00000014 00000001 00000000
0012F674h: 00000000 00000010 00000000 00DF32EB
0012F684h: 00000000 00000001 00000000 00000000
0012F694h: 0012F65C 0012F1D8 0012F7B4 77D40467
0012F6A4h: 77D241B0 00000000 0012F6F4 77D23FD9
0012F6B4h: 00000000 015EA550 0050007E 0000007B
0012F6C4h: 00360154 0233029D 0074BEF4 0012F6FC
Registers:
EAX: 00000001, EBX: 03917180, ECX: 1531D114, EDX: 016282FB
ESI: 77D1B8BA, EDI: 039171B4, EBP: 0012F614, ESP: 0012F5B4
Crash location: "foo_playlist_tree", loaded at 015E0000h - 01651000h

Loaded modules:
foobar2000 loaded at 00400000h - 004F3000h
ntdll loaded at 7C910000h - 7C9C7000h
kernel32 loaded at 7C800000h - 7C907000h
COMCTL32 loaded at 773A0000h - 774A3000h
msvcrt loaded at 77BE0000h - 77C38000h
ADVAPI32 loaded at 77DA0000h - 77E4A000h
RPCRT4 loaded at 77E50000h - 77EE1000h
GDI32 loaded at 77EF0000h - 77F37000h
USER32 loaded at 77D10000h - 77DA0000h
SHLWAPI loaded at 77F40000h - 77FB7000h
SHELL32 loaded at 7C9D0000h - 7D4E4000h
ole32 loaded at 774B0000h - 775ED000h
shared loaded at 10000000h - 10029000h
comdlg32 loaded at 76350000h - 763A6000h
UxTheme loaded at 5B0F0000h - 5B128000h
foo_ac3 loaded at 003C0000h - 003EB000h
foo_adpcm loaded at 00A40000h - 00A8F000h
foo_asap loaded at 5FFF0000h - 6000B000h
MSVCR80 loaded at 78130000h - 781CB000h
foo_cdda loaded at 00AD0000h - 00B06000h
foo_common loaded at 00B30000h - 00B6A000h
foo_converter loaded at 00B90000h - 00BF9000h
foo_cuesheet_creator loaded at 00C20000h - 00C4D000h
foo_cwb_hooks loaded at 00C70000h - 00CA5000h
foo_discogs loaded at 00CD0000h - 00D42000h
gdiplus loaded at 4EBA0000h - 4ED43000h
WS2_32 loaded at 71A10000h - 71A27000h
WS2HELP loaded at 71A00000h - 71A08000h
WINMM loaded at 76AF0000h - 76B1E000h
foo_dockable_panels loaded at 00DF0000h - 00E24000h
foo_dsp_std loaded at 00E50000h - 00E91000h
foo_freedb2 loaded at 00EC0000h - 00F00000h
foo_input_dts loaded at 00F20000h - 00F85000h
foo_input_monkey loaded at 00FB0000h - 00FF9000h
foo_input_mslive loaded at 01020000h - 01047000h
WMVCore loaded at 01060000h - 012BD000h
WMASF loaded at 070E0000h - 07119000h
OLEAUT32 loaded at 770F0000h - 7717C000h
foo_input_std loaded at 012C0000h - 013D4000h
foo_lnk loaded at 01400000h - 01419000h
foo_lyricsdb loaded at 01440000h - 0145E000h
MSVCP80 loaded at 7C420000h - 7C4A7000h
WININET loaded at 77180000h - 7722A000h
CRYPT32 loaded at 77A50000h - 77AE5000h
MSASN1 loaded at 77AF0000h - 77B02000h
foo_masstag loaded at 01470000h - 014C0000h
foo_osd loaded at 014E0000h - 01512000h
foo_playcount loaded at 01550000h - 01578000h
foo_playlist_length loaded at 015A0000h - 015BF000h
foo_playlist_tree loaded at 015E0000h - 01651000h
libmzsch360_000 loaded at 10400000h - 105D0000h
WSOCK32 loaded at 71A30000h - 71A3A000h
libmzgc360_000 loaded at 01680000h - 01724000h
foo_random loaded at 01770000h - 017AF000h
foo_rgscan loaded at 017D0000h - 01818000h
foo_sic loaded at 01840000h - 01899000h
foo_skip loaded at 019C0000h - 019DB000h
foo_uie_albumart loaded at 01A00000h - 01A3C000h
foo_uie_console loaded at 01A60000h - 01A7B000h
foo_uie_lyrics_panel loaded at 01AA0000h - 01B08000h
foo_uie_quicksearch loaded at 01B30000h - 01B76000h
foo_uie_tabs loaded at 01BA0000h - 01BCA000h
foo_uie_trackinfo_mod loaded at 01BF0000h - 01C46000h
foo_uie_vis_egoh loaded at 01C60000h - 01C7D000h
foo_ui_columns loaded at 01C90000h - 01D27000h
foo_ui_std loaded at 01D50000h - 01DA7000h
foo_verifier loaded at 01DD0000h - 01E00000h
appHelp loaded at 77B10000h - 77B32000h
CLBCATQ loaded at 76F90000h - 7700F000h
COMRes loaded at 77010000h - 770E5000h
VERSION loaded at 77BD0000h - 77BD8000h
ntfslink loaded at 021F0000h - 0222D000h
cscui loaded at 02450000h - 02503000h
CSCDLL loaded at 765A0000h - 765BD000h
SSSensor loaded at 062D0000h - 062E5000h
xpsp2res loaded at 20000000h - 2030E000h
browseui loaded at 75F20000h - 7601E000h
USERENV loaded at 76620000h - 766D5000h
SETUPAPI loaded at 778F0000h - 77A4A000h
ntshrui loaded at 76940000h - 76966000h
ATL loaded at 76AD0000h - 76AE1000h
NETAPI32 loaded at 597D0000h - 59824000h
shdocvw loaded at 03340000h - 03543000h
CRYPTUI loaded at 76880000h - 76912000h
WINTRUST loaded at 76BF0000h - 76C1E000h
IMAGEHLP loaded at 76C50000h - 76C78000h
WLDAP32 loaded at 76F20000h - 76F4D000h
DBGHELP loaded at 59DD0000h - 59E71000h

Stack dump analysis:
Address: 015EA550h, location: "foo_playlist_tree", loaded at 015E0000h - 01651000h
Address: 77D1C331h, location: "USER32", loaded at 77D10000h - 77DA0000h
Symbol: "SetRectEmpty" (+0000004Fh)
Address: 77D18734h, location: "USER32", loaded at 77D10000h - 77DA0000h
Symbol: "GetDC" (+0000006Dh)
Address: 015EA550h, location: "foo_playlist_tree", loaded at 015E0000h - 01651000h
Address: 015EA550h, location: "foo_playlist_tree", loaded at 015E0000h - 01651000h
Address: 77D2418Dh, location: "USER32", loaded at 77D10000h - 77DA0000h
Symbol: "PrivateExtractIconExW" (+000002B2h)
Address: 015EA550h, location: "foo_playlist_tree", loaded at 015E0000h - 01651000h
Address: 00DF32EBh, location: "foo_dockable_panels", loaded at 00DF0000h - 00E24000h
Address: 77D40467h, location: "USER32", loaded at 77D10000h - 77DA0000h
Symbol: "DeregisterShellHookWindow" (+000001CFh)
Address: 77D241B0h, location: "USER32", loaded at 77D10000h - 77DA0000h
Symbol: "PrivateExtractIconExW" (+000002D5h)
Address: 77D23FD9h, location: "USER32", loaded at 77D10000h - 77DA0000h
Symbol: "PrivateExtractIconExW" (+000000FEh)
Address: 015EA550h, location: "foo_playlist_tree", loaded at 015E0000h - 01651000h
Address: 77D188D1h, location: "USER32", loaded at 77D10000h - 77DA0000h
Symbol: "GetWindowLongW" (+0000002Bh)
Address: 77D184FCh, location: "USER32", loaded at 77D10000h - 77DA0000h
Address: 77D185A4h, location: "USER32", loaded at 77D10000h - 77DA0000h
Address: 77D24204h, location: "USER32", loaded at 77D10000h - 77DA0000h
Symbol: "DefDlgProcW" (+00000022h)
Address: 00DF32EBh, location: "foo_dockable_panels", loaded at 00DF0000h - 00E24000h
Address: 00DF3230h, location: "foo_dockable_panels", loaded at 00DF0000h - 00E24000h
Address: 77D18734h, location: "USER32", loaded at 77D10000h - 77DA0000h
Symbol: "GetDC" (+0000006Dh)
Address: 00DF3230h, location: "foo_dockable_panels", loaded at 00DF0000h - 00E24000h
Address: 00DF3230h, location: "foo_dockable_panels", loaded at 00DF0000h - 00E24000h
Address: 77D18816h, location: "USER32", loaded at 77D10000h - 77DA0000h
Symbol: "GetDC" (+0000014Fh)
Address: 00DF3230h, location: "foo_dockable_panels", loaded at 00DF0000h - 00E24000h
Address: 77D40467h, location: "USER32", loaded at 77D10000h - 77DA0000h
Symbol: "DeregisterShellHookWindow" (+000001CFh)
Address: 77D18830h, location: "USER32", loaded at 77D10000h - 77DA0000h
Symbol: "GetDC" (+00000169h)
Address: 77D1B89Bh, location: "USER32", loaded at 77D10000h - 77DA0000h
Symbol: "GetParent" (+0000016Ch)
Address: 00DF3230h, location: "foo_dockable_panels", loaded at 00DF0000h - 00E24000h
Address: 77D1B903h, location: "USER32", loaded at 77D10000h - 77DA0000h
Symbol: "SendMessageW" (+00000049h)
Address: 773D9F51h, location: "COMCTL32", loaded at 773A0000h - 774A3000h
Symbol: "Ordinal384" (+0001E0B1h)
Address: 773DAB5Fh, location: "COMCTL32", loaded at 773A0000h - 774A3000h
Symbol: "Ordinal384" (+0001ECBFh)
Address: 773DA549h, location: "COMCTL32", loaded at 773A0000h - 774A3000h
Symbol: "Ordinal384" (+0001E6A9h)
Address: 77D18BD9h, location: "USER32", loaded at 77D10000h - 77DA0000h
Symbol: "GetWindowThreadProcessId" (+00000159h)
Address: 77D1885Ah, location: "USER32", loaded at 77D10000h - 77DA0000h
Symbol: "GetDC" (+00000193h)
Address: 77D1882Ah, location: "USER32", loaded at 77D10000h - 77DA0000h
Symbol: "GetDC" (+00000163h)
Address: 773DA549h, location: "COMCTL32", loaded at 773A0000h - 774A3000h
Symbol: "Ordinal384" (+0001E6A9h)
Address: 77D18734h, location: "USER32", loaded at 77D10000h - 77DA0000h
Symbol: "GetDC" (+0000006Dh)
Address: 773DA549h, location: "COMCTL32", loaded at 773A0000h - 774A3000h
Symbol: "Ordinal384" (+0001E6A9h)
Address: 773DA549h, location: "COMCTL32", loaded at 773A0000h - 774A3000h
Symbol: "Ordinal384" (+0001E6A9h)
Address: 77D18816h, location: "USER32", loaded at 77D10000h - 77DA0000h
Symbol: "GetDC" (+0000014Fh)
Address: 773DA549h, location: "COMCTL32", loaded at 773A0000h - 774A3000h
Symbol: "Ordinal384" (+0001E6A9h)
Address: 773DA549h, location: "COMCTL32", loaded at 773A0000h - 774A3000h
Symbol: "Ordinal384" (+0001E6A9h)
Address: 77D40467h, location: "USER32", loaded at 77D10000h - 77DA0000h
Symbol: "DeregisterShellHookWindow" (+000001CFh)
Address: 77D18830h, location: "USER32", loaded at 77D10000h - 77DA0000h
Symbol: "GetDC" (+00000169h)
Address: 77D1C63Fh, location: "USER32", loaded at 77D10000h - 77DA0000h
Symbol: "IsWindowUnicode" (+000000A1h)
Address: 773DA549h, location: "COMCTL32", loaded at 773A0000h - 774A3000h
Symbol: "Ordinal384" (+0001E6A9h)
Address: 77D1C665h, location: "USER32", loaded at 77D10000h - 77DA0000h
Symbol: "CallWindowProcW" (+0000001Bh)
Address: 773DA549h, location: "COMCTL32", loaded at 773A0000h - 774A3000h
Symbol: "Ordinal384" (+0001E6A9h)
Address: 015EA3ABh, location: "foo_playlist_tree", loaded at 015E0000h - 01651000h
Address: 773DA549h, location: "COMCTL32", loaded at 773A0000h - 774A3000h
Symbol: "Ordinal384" (+0001E6A9h)
Address: 015EA1B0h, location: "foo_playlist_tree", loaded at 015E0000h - 01651000h
Address: 062D25C0h, location: "SSSensor", loaded at 062D0000h - 062E5000h
Symbol: "SsCreateScreenSaverSensor" (+00000090h)
Address: 77D318A2h, location: "USER32", loaded at 77D10000h - 77DA0000h
Symbol: "UnhookWinEvent" (+00000025h)
Address: 77D3E185h, location: "USER32", loaded at 77D10000h - 77DA0000h
Symbol: "User32InitializeImmEntryTable" (+00000E18h)
Address: 77D3E162h, location: "USER32", loaded at 77D10000h - 77DA0000h
Symbol: "User32InitializeImmEntryTable" (+00000DF5h)
Address: 01623368h, location: "foo_playlist_tree", loaded at 015E0000h - 01651000h
Address: 77D18734h, location: "USER32", loaded at 77D10000h - 77DA0000h
Symbol: "GetDC" (+0000006Dh)
Address: 015EA1B0h, location: "foo_playlist_tree", loaded at 015E0000h - 01651000h
Address: 015EA1B0h, location: "foo_playlist_tree", loaded at 015E0000h - 01651000h
Address: 77D18816h, location: "USER32", loaded at 77D10000h - 77DA0000h
Symbol: "GetDC" (+0000014Fh)
Address: 015EA1B0h, location: "foo_playlist_tree", loaded at 015E0000h - 01651000h
Address: 77D40467h, location: "USER32", loaded at 77D10000h - 77DA0000h
Symbol: "DeregisterShellHookWindow" (+000001CFh)
Address: 77D40467h, location: "USER32", loaded at 77D10000h - 77DA0000h
Symbol: "DeregisterShellHookWindow" (+000001CFh)
Address: 77D18830h, location: "USER32", loaded at 77D10000h - 77DA0000h
Symbol: "GetDC" (+00000169h)
Address: 77D189CDh, location: "USER32", loaded at 77D10000h - 77DA0000h
Symbol: "GetWindowLongW" (+00000127h)
Address: 015EA1B0h, location: "foo_playlist_tree", loaded at 015E0000h - 01651000h
Address: 77D1DAEAh, location: "USER32", loaded at 77D10000h - 77DA0000h
Symbol: "DestroyWindow" (+00000000h)
Address: 77D2E04Ah, location: "USER32", loaded at 77D10000h - 77DA0000h
Symbol: "IsDialogMessageW" (+0000008Eh)
Address: 77D40467h, location: "USER32", loaded at 77D10000h - 77DA0000h
Symbol: "DeregisterShellHookWindow" (+000001CFh)
Address: 77D189F0h, location: "USER32", loaded at 77D10000h - 77DA0000h
Symbol: "GetWindowLongW" (+0000014Ah)
Address: 77D18A10h, location: "USER32", loaded at 77D10000h - 77DA0000h
Symbol: "DispatchMessageW" (+0000000Fh)
Address: 004301ADh, location: "foobar2000", loaded at 00400000h - 004F3000h
Address: 10002DD2h, location: "shared", loaded at 10000000h - 10029000h
Symbol: "uCallStackTracker::uCallStackTracker" (+00000032h)
Address: 004C0560h, location: "foobar2000", loaded at 00400000h - 004F3000h
Address: 00D1DAEAh, location: "foo_discogs", loaded at 00CD0000h - 00D42000h
Address: 00430CF3h, location: "foobar2000", loaded at 00400000h - 004F3000h
Address: 004BC44Ch, location: "foobar2000", loaded at 00400000h - 004F3000h
Address: 004C70FCh, location: "foobar2000", loaded at 00400000h - 004F3000h
Address: 004C70FCh, location: "foobar2000", loaded at 00400000h - 004F3000h
Address: 7C920732h, location: "ntdll", loaded at 7C910000h - 7C9C7000h
Symbol: "RtlAllocateHeap" (+0000015Eh)
Address: 00400000h, location: "foobar2000", loaded at 00400000h - 004F3000h
Address: 004C70E0h, location: "foobar2000", loaded at 00400000h - 004F3000h
Address: 7C920732h, location: "ntdll", loaded at 7C910000h - 7C9C7000h
Symbol: "RtlAllocateHeap" (+0000015Eh)
Address: 7C920732h, location: "ntdll", loaded at 7C910000h - 7C9C7000h
Symbol: "RtlAllocateHeap" (+0000015Eh)
Address: 7C921538h, location: "ntdll", loaded at 7C910000h - 7C9C7000h
Symbol: "wcsncpy" (+00000AA9h)
Address: 7C921596h, location: "ntdll", loaded at 7C910000h - 7C9C7000h
Symbol: "wcsncpy" (+00000B07h)
Address: 7C9206EBh, location: "ntdll", loaded at 7C910000h - 7C9C7000h
Symbol: "RtlAllocateHeap" (+00000117h)
Address: 004E41B0h, location: "foobar2000", loaded at 00400000h - 004F3000h
Address: 7C92056Dh, location: "ntdll", loaded at 7C910000h - 7C9C7000h
Symbol: "RtlFreeHeap" (+00000130h)
Address: 7C884780h, location: "kernel32", loaded at 7C800000h - 7C907000h
Address: 10003251h, location: "shared", loaded at 10000000h - 10029000h
Symbol: "uGetCallStackPath" (+00000451h)
Address: 004E3E80h, location: "foobar2000", loaded at 00400000h - 004F3000h
Address: 7C91EE18h, location: "ntdll", loaded at 7C910000h - 7C9C7000h
Symbol: "strchr" (+00000117h)
Address: 7C9206F0h, location: "ntdll", loaded at 7C910000h - 7C9C7000h
Symbol: "RtlAllocateHeap" (+0000011Ch)
Address: 7C91EE18h, location: "ntdll", loaded at 7C910000h - 7C9C7000h
Symbol: "strchr" (+00000117h)
Address: 7C9206F0h, location: "ntdll", loaded at 7C910000h - 7C9C7000h
Symbol: "RtlAllocateHeap" (+0000011Ch)
Address: 7C9206EBh, location: "ntdll", loaded at 7C910000h - 7C9C7000h
Symbol: "RtlAllocateHeap" (+00000117h)
Address: 00491D18h, location: "foobar2000", loaded at 00400000h - 004F3000h
Address: 004E4230h, location: "foobar2000", loaded at 00400000h - 004F3000h
Address: 0040CA96h, location: "foobar2000", loaded at 00400000h - 004F3000h
Address: 004480F4h, location: "foobar2000", loaded at 00400000h - 004F3000h
Address: 00407DE2h, location: "foobar2000", loaded at 00400000h - 004F3000h
Address: 00497FFDh, location: "foobar2000", loaded at 00400000h - 004F3000h
Address: 004C0570h, location: "foobar2000", loaded at 00400000h - 004F3000h
Address: 10002D87h, location: "shared", loaded at 10000000h - 10029000h
Symbol: "uPrintCrashInfo_SetDumpPath" (+000000A7h)
Address: 004C0570h, location: "foobar2000", loaded at 00400000h - 004F3000h
Address: 004AF5D4h, location: "foobar2000", loaded at 00400000h - 004F3000h
Address: 004C0570h, location: "foobar2000", loaded at 00400000h - 004F3000h
Address: 00430EFAh, location: "foobar2000", loaded at 00400000h - 004F3000h
Address: 00400000h, location: "foobar2000", loaded at 00400000h - 004F3000h
Address: 004E0928h, location: "foobar2000", loaded at 00400000h - 004F3000h
Address: 0049729Ah, location: "foobar2000", loaded at 00400000h - 004F3000h
Address: 004935BCh, location: "foobar2000", loaded at 00400000h - 004F3000h
Address: 004935B6h, location: "foobar2000", loaded at 00400000h - 004F3000h
Address: 004B49E4h, location: "foobar2000", loaded at 00400000h - 004F3000h
Address: 004B34A0h, location: "foobar2000", loaded at 00400000h - 004F3000h
Address: 004E4228h, location: "foobar2000", loaded at 00400000h - 004F3000h
Address: 00496FE0h, location: "foobar2000", loaded at 00400000h - 004F3000h
Address: 004AF9C8h, location: "foobar2000", loaded at 00400000h - 004F3000h
Address: 00496154h, location: "foobar2000", loaded at 00400000h - 004F3000h
Address: 00400000h, location: "foobar2000", loaded at 00400000h - 004F3000h
Address: 00496FE0h, location: "foobar2000", loaded at 00400000h - 004F3000h
Address: 7C816FD7h, location: "kernel32", loaded at 7C800000h - 7C907000h
Symbol: "RegisterWaitForInputIdle" (+00000049h)
Address: 7C839A10h, location: "kernel32", loaded at 7C800000h - 7C907000h
Symbol: "ValidateLocale" (+000002B0h)
Address: 7C816FE0h, location: "kernel32", loaded at 7C800000h - 7C907000h
Symbol: "RegisterWaitForInputIdle" (+00000052h)
Address: 004961BDh, location: "foobar2000", loaded at 00400000h - 004F3000h
Address: 004E0049h, location: "foobar2000", loaded at 00400000h - 004F3000h
Address: 004F0044h, location: "foobar2000", loaded at 00400000h - 004F3000h
Address: 01C6C0AAh, location: "foo_uie_vis_egoh", loaded at 01C60000h - 01C7D000h
Address: 004B0063h, location: "foobar2000", loaded at 00400000h - 004F3000h
Address: 003D006Eh, location: "foo_ac3", loaded at 003C0000h - 003EB000h
Address: 003D0065h, location: "foo_ac3", loaded at 003C0000h - 003EB000h
Address: 003D006Eh, location: "foo_ac3", loaded at 003C0000h - 003EB000h
Address: 01C6C0AAh, location: "foo_uie_vis_egoh", loaded at 01C60000h - 01C7D000h
Address: 00410072h, location: "foobar2000", loaded at 00400000h - 004F3000h
Address: 003D0065h, location: "foo_ac3", loaded at 003C0000h - 003EB000h
Address: 004E0049h, location: "foobar2000", loaded at 00400000h - 004F3000h
Address: 004F0044h, location: "foobar2000", loaded at 00400000h - 004F3000h

Version info:
foobar2000 v0.9.4.2
UNICODE

Additional info:
Standard Input Array 1.0 (foo_input_std)
BRR decoder and converter 0.7 (foo_adpcm)
Lyrics panel 0.34.1 (foo_uie_lyrics_panel)
Console panel 0.2.1 (foo_uie_console)
Dockable Panels 1.0.5 [Dec 4 2006 - 09:04:00] (foo_dockable_panels)
On-Screen Display 1.52 (foo_osd)
mslive 0.2 (foo_input_mslive)
File Integrity Verifier 1.0.1 (foo_verifier)
Egoh Spectrum analyser (uie) 1.1.2 (foo_uie_vis_egoh)
Tabbed panel modified 0.2.5 (foo_uie_tabs)
CD Audio Decoder 2.1.1 (foo_cdda)
DTS decoder 0.1.7 (foo_input_dts)
AC3 decoder 0.7 (foo_ac3)
Discogs Tagger 0.92 (foo_discogs)
foosic music database 1.0 beta 12 (foo_sic)
Playlist Tree Panel 3.0.BETA_0 [Mar 12 2007 - 15:29:48] (foo_playlist_tree)
freedb Tagger 0.5.2a (foo_freedb2)
Masstagger 1.6 (foo_masstag)
Cuesheet Creator 0.4.5 (foo_cuesheet_creator)
Track info panel mod 0.8.0 beta [Jan 5 2007 - 13:36:12] (foo_uie_trackinfo_mod)
ReplayGain Scanner 2.0.2 (foo_rgscan)
Playlist length 1.0 (foo_playlist_length)
Album Art Panel 0.2.6 (foo_uie_albumart)
Interplay ACM decoder 1.0 (foo_adpcm)
Playback Statistics 1.3.2 (foo_playcount)
Monkey's Audio decoder 2.1.1 (foo_input_monkey)
Quick Search Toolbar 2.8k (foo_uie_quicksearch)
Randomized playlist entry 1.2.3 (foo_random)
Default User Interface 0.9acc (foo_ui_std)
OKI-ADPCM decoder 0.14 (foo_adpcm)
XA ADPCM decoder 1.1 (foo_adpcm)
FLAC Decoder 1.1.0 (foo_input_std)
Columns UI 0.1.3 beta 1v7 (foo_ui_columns)
Standard DSP array 1.0 (foo_dsp_std)
GCN DSP decoder 1.2 (foo_adpcm)
cwbowron's title format hooks 1.1.0beta [Dec 1 2006 - 13:47:34] (foo_cwb_hooks)
Common services 0.1 (foo_common)
ASAP 0.2.1 (foo_asap)
Converter 1.0.1 (foo_converter)
WMA Decoder 1.1 (foo_input_std)
kode's ADPCM decoders 1.2 (foo_adpcm)
RAC decoder 1.0 (foo_adpcm)
Shell Link Resolver 1.2 (foo_lnk)
foo_skip 0.2 (foo_skip)
foobar2000 core 0.9.4.2 (Core)
ADX decoder 1.0 (foo_adpcm)
foo_lyricsdb 0.0.7 beta 4 (foo_lyricsdb)

Kiteroa
Great upgrade! Works fine for me.

1). I don't get 3 refresh options as per your screenshots; only the "automatically refresh" check box, as in the previous version.

2). Any chance of reading and setting PVARs from within PTP?

3). If the query screeen was bigger you could have a bigger format box! (Big enough to edit simple schemes in situ.)

I was already using PTP to show other versions of the now playing song, other tracks by the same artist and other works by the same composer! Looking forward to using the new features ....

Thanks.
q-stankovic
QUOTE(cwbowron @ Mar 12 2007, 20:47) *


This is not a feature for beginner users, its for advanced users who know a little bit about programming. Other than posting occasional snippets of code on the above wiki page, I will not help users build fancy queries.



I consider myself as advanced user of playlist tree but unfortunately i have no programming experience. Can you give me a link that would lead me to a tutorial of this language?

My most important question before i start learning a new language: What are the advantages of it?
Is there a speed improvement (on autorefresh for example)? Can i create formats that are not possible with the usual way using TAGZ?
cwbowron
QUOTE(q-stankovic @ Mar 13 2007, 06:41) *

QUOTE(cwbowron @ Mar 12 2007, 20:47) *


This is not a feature for beginner users, its for advanced users who know a little bit about programming. Other than posting occasional snippets of code on the above wiki page, I will not help users build fancy queries.

My most important question before i start learning a new language: What are the advantages of it?
Is there a speed improvement (on autorefresh for example)? Can i create formats that are not possible with the usual way using TAGZ?


There is probably not a speed improvement (in fact, it probably takes a little longer using a @scheme query) but, yes it is possible to generate formats that are not possible with TAGZ which is the entire reason I put in the scheme interpreter. The biggest asset will be using the (meta-list ... ... ) function for multiple value tags.
q-stankovic
QUOTE(q-stankovic @ Mar 13 2007, 12:41) *

Can you give me a link that would lead me to a tutorial of this language?


laugh.gif
I had a look on the site wich link i found in your readme-file! Now i know that this is another dimension than Playlist_gen_query or TAGZ. I think i will copy & paste other peoples formats.
ozstrike
I have aproblem, and I'm not sure whether it's a problem with Playlist tree or browser.
I'm using browser and playlist tree in order for me to be able to browse my files (winamp-style), and on double click, it sends files to the library playlist.
Now, it would be really handy if the library playlist could be automatically renamed to whatever the album the currently playing files are from. However, I can't figure out if it's possible or not, or how to do it.
Any tips?
cwbowron
QUOTE(Kiteroa @ Mar 12 2007, 19:14) *

Great upgrade! Works fine for me.

1). I don't get 3 refresh options as per your screenshots; only the "automatically refresh" check box, as in the previous version.

2). Any chance of reading and setting PVARs from within PTP?

3). If the query screeen was bigger you could have a bigger format box! (Big enough to edit simple schemes in situ.)

I was already using PTP to show other versions of the now playing song, other tracks by the same artist and other works by the same composer! Looking forward to using the new features ....

Thanks.


1 - that's normal. Some of those screenshots are from previous version
2 - what do you mean by PVAR?
3 - In the dev version, I've increased the size in the version and made a little bit easy to edit the code in the dialog, so that will be in the next released version
Kiteroa
QUOTE(cwbowron @ Mar 15 2007, 06:33) *

QUOTE(Kiteroa @ Mar 12 2007, 19:14) *

Great upgrade! Works fine for me.

1). I don't get 3 refresh options as per your screenshots; only the "automatically refresh" check box, as in the previous version.

2). Any chance of reading and setting PVARs from within PTP?

3). If the query screeen was bigger you could have a bigger format box! (Big enough to edit simple schemes in situ.)

I was already using PTP to show other versions of the now playing song, other tracks by the same artist and other works by the same composer! Looking forward to using the new features ....

Thanks.


1 - that's normal. Some of those screenshots are from previous version
2 - what do you mean by PVAR?
3 - In the dev version, I've increased the size in the version and made a little bit easy to edit the code in the dialog, so that will be in the next released version




Thanks.

$setpvar and $getpvar are functions in Panels_ui (including Track Display and Single Column Playlist) which set and get variables which are accessible between panels and which persist between refreshes. It would be particularly useful to me (at least) if you could set a variable in PTP which could be read and used in a Track Display!






VeaaC
I want to sort my artists by playtime using this code:

CODE

@quote<@format<%_play_length%>> %artist%|%album%[-%disc%]-%tracknumber%-%title%


But I'm a bit confused on how to sort this.
The lists contains entries like "1:40", "13:45:12" and "1:50:01". Is it possible to format this in a way that it gets sorted right?
theprash
I have a feature request:

If I create a query with source @playlists and make it automatically refreshing then I am essentially browsing through normal Foobar2000 playlists. When I click on these folders it would be great if this actually changed the active playlist in columns ui as opposed to just reproducing the contents of the playlist in a browsing playlist.

Of course, this would only really make sense if used with an automatically refreshing @playlists query. The reason I would find this useful is that I could go to a playlist in the tree, start it playing and switch playlists and have the playlist continue while I browse through others.

Why don't I just use the playlist switcher, I hear you ask? Because the playlist switcher doesn't arrange playlists alphabetically or allow me to filter any playlists out.

Please let me know if you think this is worth implementing as an option and how difficult it would be do it.

Thanks.

EDIT:
Also, if a playlist is removed from a query with source @playlists, could it delete the foobar2000 playlist?
noorotic
About the sorting by artist duration, try using

$pad_right(time,10) %artist%|whatever

This works fine for me, although it goes in ascending order.

Here's the code example:

CODE
@quote<@format<$pad_right(%_play_length%,10) %artist%  
|%album%|$num(%tracknumber%,2) - ]%title%

And on activating playlists (the other question) that is what the library playlist (special type) accomplishes, more or less. Do some playing around with the Library Playlist, and see if you can get what you want.

Best
cwbowron
New release. 3.0.beta1

Not much new unless you are using the new scheme queries.

QUOTE
* Minor layout changes to query options dialog
* scheme preferences page with a scheme startup option where you can put code that will be evaluated before any scheme functions are used... allows you to put in global define's and such.
* new functions
o (add-query-node label source criteria format [population-order] [sortp] [max-n] [max-type]) => returns a tree-node which can be used in refresh-query, max-type can be one of tree-max-tracks, tree-max-minutes, tree-max-megs, tree-max-subfolders
o (refresh-query query-node)


CODE
;;; Example of a nested query
(let ((source "@database")
      (format "%artist% - %title% '('%rating%')'")
      (pop-sort "$rand()")
      (max 60)
      (max-type tree-max-minutes)
      (not-recent
       "(\"$cwb_datediff(%last_played%,%cwb_systemdate%)\" GREATER 7 OR NOT %last_played% HAS 20)"))
  (for-each
   (lambda (label criteria)
     (refresh-query
      (add-query-node label source criteria format pop-sort #f max max-type)))
   (list "Great Stuff" "Good Stuff" "Decent Stuff")
   (map (lambda (c)
      (string-append c " AND " not-recent))
    (list "rating GREATER 4" "rating GREATER 3" "rating GREATER 2"))))
q-stankovic
I noticed in the wiki that you suggested to use the new @scheme functions to create complicated formats with multiple tags: hopefully you will give one example.

However, i think one issue should be solved: It is not necessary anymore to realize the possibility to apply string functions on multiple tags but as long as PT's %<tag>% expression doesn't support field remapping they should work in a simple $if-function to realize something simple like: $if($meta(album artist),%<album artist>%,%<artist>%)
cwbowron
QUOTE(q-stankovic @ Mar 22 2007, 07:21) *

I noticed in the wiki that you suggested to use the new @scheme functions to create complicated formats with multiple tags: hopefully you will give one example.


Here's a small script that will loop over all the genres and artists of the playing song to create a
GENRE\ARTIST\TITLE tree.

CODE
(let ((handle (now-playing)))
  (for-each
   (lambda (genre)
     (for-each
      (lambda (artist)
    (let ((title (format-title handle "%title%")))
      (add-node handle (list genre artist title))))
      (meta-list handle "artist")))
   (meta-list handle "genre")))
tberman333
I am trying to find all of the tracks I have that are tagged incorrectly. One tag mistake I made int eh past was to add an %album artist% tag to every track (instead of just to various artist albums).

To fix this, I am trying to search for all tracks where the %album artist% is equal to the %artist%.

In doing that, I created a query like this:

Source = @database
Criteria = artist IS @format<$meta(album artist)>

This query is returning every track in my database (including tracks that don't have an %album artist% tag and tracks where the %album artist% is NOT equal to the %artist%.

Does anyone know why this query will not work? Also, is there a way to accomplish what I want in PT?

Thanks for the help!
cwbowron
QUOTE(tberman333 @ Mar 22 2007, 11:26) *

I am trying to find all of the tracks I have that are tagged incorrectly. One tag mistake I made int eh past was to add an %album artist% tag to every track (instead of just to various artist albums).

To fix this, I am trying to search for all tracks where the %album artist% is equal to the %artist%.

Does anyone know why this query will not work? Also, is there a way to accomplish what I want in PT?


You can do this using the built in scheme language interpreter...

Set the "Source" to "@scheme" and the "Format" to:

CODE
(for-each-db-entry
(lambda (handle)
   (let ((artist (format-title handle "$meta(artist)"))
     (album-artist (format-title handle "$meta(album artist)")))
     (if (and (> (string-length artist) 0) (equal? artist album-artist))
     (let ((title (format-title handle "%title%")))
       (add-node handle (list artist title)))))))
tberman333
QUOTE(cwbowron @ Mar 22 2007, 13:29) *

QUOTE(tberman333 @ Mar 22 2007, 11:26) *

I am trying to find all of the tracks I have that are tagged incorrectly. One tag mistake I made int eh past was to add an %album artist% tag to every track (instead of just to various artist albums).

To fix this, I am trying to search for all tracks where the %album artist% is equal to the %artist%.

Does anyone know why this query will not work? Also, is there a way to accomplish what I want in PT?


You can do this using the built in scheme language interpreter...

Set the "Source" to "@scheme" and the "Format" to:

CODE
(for-each-db-entry
(lambda (handle)
   (let ((artist (format-title handle "$meta(artist)"))
     (album-artist (format-title handle "$meta(album artist)")))
     (if (and (> (string-length artist) 0) (equal? artist album-artist))
     (let ((title (format-title handle "%title%")))
       (add-node handle (list artist title)))))))




That worked perfectly! Thanks for the help!!!!!
cwbowron
New version - Should work better with panels ui.

QUOTE
# fixed a DestroyWindow problem - fixes? problem with panel ui interaction - thanks terrestrial
# (handle-apply function path [subsong-index])
# (file-creation filename) => retusn the file creation in seconds, same scale as the mzScheme (current-seconds) results.
# (file-last-access filename) => see file-creation
# (file-last-write filename) => see file-creation
Chaser
QUOTE
Forbidden
You don't have permission to access /foo_playlist_tree.zip on this server.

Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request.


could you please fix this?
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.