Did you try the same mask outside of the Playlists branch, e.g. inside the Magic Nodes folder?
I have just tried this as a Magic Node instead of a Playlist, and it does work without MM crashing. I expected this. However, my goal is to create this as a Playlist, due to the limitation of MediaMonkey that the Android app will not access (and therefore) sync any music files from the Magic Nodes branch. I must create them as Playlists to access and sync to my phone. Such is the pain necessitating Playlist nodes. Unless you know of a better way?
Why are you using the Filter string on the local level of mask (for the HAVING part of the query), when it is intended for the WHERE part of the query? Did you try the same Filter to apply on the global level of mask?
Yes, I've tried both, same result. I always do my testing in Magic Nodes node first, since it is faster, and then when I am sure the filters work, I change it to a Playlist child node.
In the first post you said that you have two local levels, one for artist and another for album, but the mask contains only the first local level. Do you have the same issue with this mask?
Apologies, while I was trying to fix it, I mistakenly posted a redacted version of the mask yesterday. I'll post the correct mask at the bottom of this post, including edits following your suggestions.
In the first post you said that you are using Right Until, but the mask has Exclusive Right Until. Do you have the same issue with both of them? What happens if you use Exclusive Right Of instead of Right Of?
Yes I just tried both. The result with non-exclusive is that I get all artists (both @~ and ~). My goal is to show only @~ in this particular playlist, because these are the ones I have full discographies of. Using exclusive produces exactly what I want to see, before it ends up crashing MM.
What happens if you replace '%@~%' in the Filter with '%@@~%' (since the "@" is an escape character for the SQLite LIKE operator)?
I've just tried this too, it seems to break it, I get an error "Magic Node produced an error". However, my original issue is not that I get incorrect information; my mask works correctly. It causes MM to fill the RAM.
Why do you use filtering by "@~" in the Filter when it is already applied by the Exclusive Right Until? The Exclusive Right Until (and all other parsing qualifiers) has the effect to the all level of the mask, not only on the level where it is specified.
I have now removed the second Exclusive Right, so that only the first/root one exists. I've tested the original issue, and it still occurs the same.
What happens if you use Path instead of Folder?
I tried switching all instances of "Folder" to "Path" in the mask, and interestingly Path processes nodes faster than Folder, however this also means that the RAM fills up much faster (~3 minutes instead of the 15 or so with Folder). So I switched all Path to Folder to see what the difference might be. It runs slower overall, but produces the same end result.
A quick video I made of the RAM filling, sped up 3x:
A still image of the crash:
The issue, from where I stand, seems to be that when Magic Nodes is populating Playlist child nodes, MediaMonkey will store all this data into RAM. MediaMonkey does not empty or cleanse it's RAM at any point, it keeps it all in RAM. After some time of populating a Playlist node that filters through ~8,000 subfolders, the RAM fills to the 3.5gb limit of a 32-bit application, and crashes.
Question: Would it be possible to tell/force MM to clean it's RAM storage between node populations, or at all?
My current mask, including your above suggestions. Produces the same end result as my original post.
Code: Select all
:[Discogs]:|Icon:31|Show tracks:No|Filter:<Path> Like 'E:\Music\Library =\%' AND <Path> Like '%@~%'|Child of:Playlists|Position:Child\<Path|Unknown:No|Right of:+\|Exclusive right until:@~\>\<Path|Unknown:No|Right until:\|Right of:@~\>