SongKong Jaikoz

SongKong and Jaikoz Music Tagger Community Forum

Organizing Music Folders by Composer

Sure ! Lets go for it.

A few things before I start the process of all my files again !

  1. I identified by checking the syslogs that I had a OOM tat was closing my java process ! So, I limited the docker container to 40G of RAM, that way, I hope my unraid server wont run Out Of Memory again, and that songkong will keep running fine (no more docker crashes) -> FINGER CROSSED :smiley:

  2. here are the settings I plan to use:


  • Ignore songs previously checked that could not be matched: Yes
  • For songs already fully matched : Ignore
  • Rename files based on metadata: Yes if has metadata

I just want to be 100% sure that “Yes if has metadata” will keep prioritizing Musicbrainz and Discogs identification methods, before it simply moves the tracks based on the flac metadata. Is this the case ?
Rest of the time, I can say 99% of my releases DO have metadata, as they are coming from a source where metadata is mandatory. Can you please confirm I can safely click Start ?

  1. If I do move tracks, in processed/Artists/Album/… using the metadata, I guess I will still be able to run a MB and discogs check later on for the tracks that were not matched using these online sources, right ? So, it will generate the nice folder structure, and still allow me to fix things based on MB, Discogs and accousticsID later on ?

Thanks again for the great support @paultaylor

Ps: what you say here scares me “Unlike Delete Duplicates (which has to load all files before finding duplicates)”. I’m quite doubtful about a possibility to find the dupes if all 3.5 millions tracks needs to be loaded upfront the deletion. :smiley: We’ll have to discuss this once the files will have been fixed I guess :smiley:

Oh and one very very last thing, how can I ask songkong to put all the releases of one composer in a folder at his/her name ? so, Eg: all next albums goes in “Anton Bruckner”, and not “Anton Bruckner, blablabla”.

Interesting, usually SongKong itself recognizes when low on memory and takes action. So it sounds like this is a pecularity of the docker system being out of step with the physical machine it is running on ?

Yes it will, file renaming comes at the end after metadata matching and has no effect on the metadata matching. All I would say is the Yes if has metadata option will rename your songs based on their metadata will rename your songs even if your songs have not be matched to MusicBrainz/Discogs and have existing bad metadata. Because you are dealing with so many songs I would be more cautious and use Yes if matched to a release instead

Yes, correct.

Agree, Delete Duplicates is not as developed as Fix Songs a bit more thought needs to go into it. Now technically you cannot determine all the duplicates until all files loaded as the first file and last file loaded could be a duplicate, however that doesn’t prevent us checking for duplicates and deleting them as we go along, and usually duplicates are going to be in same folder or similar folder name so likely to be loaded at similar time anyway, so yes Delete Duplicates needs some tweaks.

So SongKong can usually identify Classical release from Non-Classical, so you could write a function that outputs the composer instead of the albumartist if the release is a classical release and use that in your mask


function addClassicalComposer()
 return isclassical =='1' ? composer + '/' : ifnotempty2(albumartist,artist,'/');

and use it in your chosen rename mask instead of the album artist line.

However this would mean that albums that have works by different composers would have songs in different folders so I dont think it is a great idea.

It is much better for SongKong and music players and Roon to have one album = one folder. As long as the metadata is correct you can browse by composer no problem but its much harder to identify the correct album if all the tracks from the album are not in the same place, so i would stick to using the album artist field since the album artist field is defined to be the same for all tracks in an album.

In fact since the composer is usually not actually involved in the creation of the album because they are long dead before the album was recordered I think it is better for the composer to not be part of the album artist field (unless mdoern composer involved in the album), and we have the options Remove Composer from Album Artists to do this, and option Add Composers to Start of Album Title instead.

OK I followed all your advices, and just ran a new fix job.
I cross fingers and hope it wont crash the docker this time.

You are right about the MEM issue, unraid by default allows all memory to the docker containers, and it seems like songkong was at some point trying to use more memory that what was available. —> OOM.

I also agree on the idea each album should remain intact in its own folder. So, I would rather, for the sake of not flooding my artists folder of thousand of different composer, etc. folders, use this kind of structure :

Eg: Composer_name/Composer, etc names (that currently are in the “artists folder”/album_name/track

So in short, Create a containing folder that would be named by the composer name. can you let me know how I can do this ?

So you mean have composername/albumartist/album, but this isn’t going to solve the problem.

Originally you requested composername/album but when an album had multiple composers this could lead to having


but this new idea would give you


so we have still split the album.

Not exactly.

The actual idea would be to put all classical releases in a dedicated classical folder.
Currently I have /processed/Artist
So I’d like to get /processed/classical/ and then these releases (because they are classical) under that specific folder

So if you look at above screenshot, the releases would be in /processed/classical/ and would then be kept as they currently are.


IF genre is NOT classical -> move to /processed
IF genre IS classical -> move to /processed/classical

Okay so we have an is_classical field that is set to 1 for classical releases, this is based on examining the details of the matched MusicBrainz release and doesnt depend on the songs being tagged with a Classical genre. And we already have a function that puts Classical into Classical folder and non-classical into PopRock

function addClassical()
 return isclassical =='1' ? 'Classical/' : 'PopRock/';

So you could edit this to only add extra folder if classical

function addClassical()
 return isclassical =='1' ? 'Classical/' : '';

and then use in your rename mask

+ ifnotempty2(albumartist,artist,'/')
+ ifnotempty(album,'/')
+ ifmultidisc('Disc ' + ifnotempty(pad(discno,2),'/'))
+ ifmultidisc(ifnotempty(pad(discno,2),' - '))
+ ifnotempty(pad(trackno,2),' - ')
+ title