SongKong Jaikoz

SongKong and Jaikoz Music Tagger Community Forum

Naim WAV Genre Import

Hi Paul –

Just been tinkering with Songkong (Melco license, on Mac) to test out the Naim import option as I’d like to tag copies of all of my Core’s WAV rips and then add additional metadata from there etc and get everything as I would like…

Just did a couple of tests and don’t know if I’m hitting an issue or if it’s user error – but should the Naim Import function import Genres that have been applied by the Core (whether they be automatic or user edits)…? I don’t seem to be getting them coming through to the saved files.

A quick example here, showing the text with the original meta.naim file –
You can see three entries for Genre (note one of these is a ‘sub genre’ which the Naim App lists a few of and allows to be added – these then present quite nicely as sub sections within the higher level genre)…However, none of these Genres are being tagged once processed by Songkok (have checked with Songkong and Metadatics)…
Screenshot 2024-11-05 at 08.59.51

At the Start of the Naim Import action there is a checkbox for Add/replace Genres, I have had this checked and unchecked, no difference…I also note it says ‘See genre tab for more options’ but there doesn’t appear to be one…?

Finally, whilst looking around the text of the meta.naim file (not that I can understand much!) I noticed there’s actually quite a lot of metadata in there (certainly far more than the Naim Core and App present) but that again isn’t being processed and added to the files by the Songkong action i.e all these ‘performer’ credits…None of these Musician Credits were embedded in the saved files –

Appreciate any thoughts and feedback as to what should/can be done by the Naim Import action…My understanding was that the action would import all the metadata contained with the separate external files used by Naim i.e not just the basic tags, but user edits and any other data that was contained…?

Before I go ahead and run this over all my library I would just like to be confident that everything that is currently there will be transposed to the saved files, instead of having to check each and every album manually and tweak etc…

Thanks in advance,

Actually, regardless of the Naim Import action results, the more I look into Genres the more confused I get…! I’ve read some of the Songkong instructions and help sections etc, and reread, and still finding it confusing…! :flushed:

How ‘should’ sub-genres be handled…? Or is that a function of Grouping…?
eg If I want ‘Pop/Rock > Alternative/Indie Rock’ (as can be applied on the Naim App) how is this best done…?
I know I can add multiple Genres (in Songkong using ‘;’ ?) but this isn’t the same as a ‘sub genre’ I believe, as per the example above…?

Frustratingly confused…!

Thanks, SC

It looks for the Genre field, but not within user section. Within the meta section then can be competing multiple sources, we use in order Rovi/MusicBrainz/Freedb/Defaults.

If you could email support@jthink.net your full meta.naim I can give you a definitive answer.

It will only add Genres if you have Update Genres enabled, and the Genre is in the Genre list. There is one copy of the genre list that is shared by all profiles and tasks so we moved it to Preferences:Genres

Currently we add performers that are defined at release level but not at track level. Ive riased issue to consider this further https://jthink.atlassian.net/browse/SONGKONG-2664

Please note, there is no specification for the meta.naim file so we have just had to analyse example files and work out the best way to extract as much information as possible. For items such as performers a subsequent run with Fix Songs will be able to match most songs to MusicBrainz and extract addtional performer information from there.

Thanks Paul, always appreciate your responses and assistance.

Will email you the same example meta.naim file in a short while for you to have a look. It just happened to be one of the first ones I experimented with and then hit the issue early on…

Re Genres and ‘user’ section, could this function be added possibly…? I didn’t realise they would be listed separately as such within the meta.naim file, just presumed they’d be appended…
It’s rare that I will just leave the Genre as added by the Core as they tend to be rather basic or inaccurate, so will often add additional genres or delete/tweak etc (as best possible via the Naim App metadata editing on a rip)…Before I purchased Songkong I understood (perhaps misunderstood) and thought I’d read that the Naim Import action included any User Applied Edits, so I presumed this would naturally include Genres…?
My own personal preference would be that any user edits take priority over the other sources listed in the file (i.e Rovi etc) as obviously this indicates that I have made a deliberate and desired edit…If I subsequently then want to run a 2nd pass of Fix songs/Match Album and apply any more/different Genres then obviously that is still an option…
To be honest, it would be a really useful, arguably important, tweak of the Naim Import action…

OK, understood. So just to be clear, this one Genre list is used by each and every action incl Naim Import, there’s no separate lists for each action…?
So I presume I have to add to the list and include and Genre wording that the Naim Core/App use exactly as they have it…?

OK, sounds good. TBH, that one wasn’t such a huge deal (though would be good if it did get added etc), it was just that it was another example of data within the file that I noted was being carried over, hence why it stopped me in my tracks and started wondering just how much of the original+user edit Naim data was indeed being extracted…It would be ideal that everything that is there is extracted in some form…

Yeah, I appreciate that – good old Naim! As I said above, I appreciate I can always run a second pass etc which I’d potentially be happy to do in particular scenarios…In my head I see it as a 2 step process – extract all that the meta.naim file has within it, importantly including any/all user edits, as an initial stage…and then potentially running a further lookup if desired…Personally, what I don’t want to do is run a Fix Songs on all the Naim library from the very start and potentially change any metadata as I currently have it based upon the matches that Musicbrainz matches to etc, I sort of want to have a little more careful control – this was one of the reasons why I was happy the single Album Match action was added…Makes it all a lot slower on a large library obviously, but does allow the finite control/match Vs the relatively automated Fix Songs…

OK, thanks again…Will email that file soon
SC

Re the subject of Sub Genres as I mentioned earlier above, one thing I have discovered is that the Naim App does NOT seem to appear to read the Grouping Tag…So this doesn’t seem to be a solution for adding sub genres, for me anyway (basically, I’m wanting to tag all my original Naim ripped WAV files as ID3, adding extra metadata, tweaking etc…then re-add to the Core (Downloads folder along with my HD files there) and, for now, continue using the Naim App…)

I’ve discovered, I THINK, that if multiple Genres are within the Genre Tag field (I did this via Metadatics) AND the wording of the Genres matches what the Naim App uses, then it will see and display those genres as sub genres…Hope I’m making sense here.

Eg:

I have this James download tagged with THREE separate Genres: Alternative & Indie (which is a main level genre on the Naim App), Pop/Rock also a main level and then Alternative/Indie Rock which appears as a ‘sub genre’ option when scrolling through Pop/Rock genre in the Naim App when editing metadata…So with these three genres in the metadata (applied externally via Metadatics) the album DOES list in the Naim app when searching within the Genre section just as it would if I had applied the Sub Genre to a rip on the Core via the App…i.e Appears under Alternative & Indie genre and also under the general Pop/Rock and then sub filtered to Alternative/Indie Rock…Screen grabs as per below.

This method only, so far, seems to work if the genre wording is exactly the same as the default genre options within the Naim App, in other words I don’t seem to be able to add a non default genre as per the Naim App and then it appears as a sub genre under Pop/Rock…

Example of Naim applied tagging via Naim App showing sub genre of Pop/Rock (on a different album)…

A different download file, the James album, tagged via Metadatics, with Three separate Genres tags (ensuring same wording as per Naim tags) –
Screenshot 2024-11-05 at 18.13.51

The main ‘high level’ Genres as appear in the Naim App. The James album does appear within the Alternative & Indie list due to the ‘Alternative & Indie’ genre tag…

And it ALSO appears within the Pop/Rock Genre, which when filtered via ‘Alternative/Indie Rock’ then shows the album…


As I said, the wording of the Genre has to be exactly the same as the Naim defaults for it to be listed as a sub genre of the high level genre…

Incidentally, that same James album, when viewed within Songkong, shows the 3 Genre tags separated by x3 ;;; – can you explain how this works and why it is x3, I thought just a single ‘;’ was used as a separator…?

Thanks again, will leave you to digest…!
SC

Thanks for the meta.naim file, for this file it would read genre from the rovi section

"rovi": {
    "version": "2",
    "authority": "rovi",
    "authorityVersion": "2",
    ........
    ........
    "descriptors": [
        {
            "type": "genre",
            "id": "MA0000002613",
            "name": "Pop\/Rock",
            "weight": "10"
        }
    ],

However, notice the escaped / between Pop and Rock, we dont do any special processing that may also prevent it being read in.

So I checked the code and originally Naim Import was for the older Naim UniitServe, and this uses amginfo.xml, cddbinfo.txt and UserEdits.xml and we do process the UserEdits.xml file which contains any user edits.

For the newer UnitiCore they only use a meta.naim file and I don’t think we had any examples of user edits and have not coded for user edits, so if you could possibly find some files (or make some edits) with user changes to album titles and song titles I can then add processing of user edits as part of https://jthink.atlassian.net/browse/SONGKONG-2665 becuse I don’t have a UnitiCore myself.

Yes, because I cannot see a usecase for when you would want to allow a Genre that was provided by MusicBrainz but if the same Genre was in Naim you would not want to allow it.

I certainly think you should run Naim Import first, but what you can do with Fix Songs is add all fields to Only Modify the fields If Empty so that Fix Songs only adds metadata rather than changing metadata, could also run Preview Only.

So Im not that familiar with Naim App but I think its a UPnP app and therefore can only show the metadata provided to it by the uPnP server. So to clarify are you using it with a Naim UnitiCore, Melco Server or something else becuase if using Naim UnitiCore I think it justs ignore ID3 tags and reads from the meta.naim file

How multiple fields are stored in the file depends on the underlying format. So if using ID3 (for mp3, wav,aiff) this is completely different to if using Vorbis Comment (for ogg/flac), your tagger usually hides this detail away from you so you can use the same method whatever the underlying format.

For ID3 multiple values are seperated by the null character (unicode 0000) but this does not relate to a keyboard character so it is not easy to enter. In SongKong we allow manual editing of multiple values using three semicolons (;;;) and displays them using (;;;), I’m guessing metadatics uses a single semi-colon (;) but in both cases when the changes are saved to file a null character is actually used. We use ;;; instead of ; in SongKong to allow for cases where you want to actually use a ; as part of the text, remember this multi value support applies to all fields not just genres.

Hi Paul!

Many thanks. OK, will digest what you’ve written and likely reply with more tomorrow…Can also send you more files etc…
I’m +8hrs GMT so going to turn brain off for a bit…!
More soon,
SC

Yes, correct. I have a Core (and a US as well actually) – I can send you as many examples of the generated meta.naim files as you would like, with and without user edits…How many would give you a good sample…?

SC

Ten with some user edits would be great

Will send through tomorrow, be there first thing for you….:+1:

Sent through earlier today Paul, was a 16mb .zip attachment, so hopefully came through ok…?

Yes, I did see that and noted it being unusual…But I wasn’t really sure what it meant code wise and the purpose…? Is this something that can be accommodated with the Naim Import action…?

Yes, you are correct. I have both a UnitiServe (currently unused) and a Core and yes there was a change between the two in the external files that Naim use to store/edit metadata and rip info etc…With the Core there are now just two files generated, a meta.naim file and a rip.naim file (the latter I think is just a record of the actual CD rip stats)…So all metadata, whether it be the auto lookup from the Core and any subsequent ‘user’ edits are now stored within the meta.naim file…

I just presumed the file method re the Core was fully covered by the Naim Import action as it’s been out some time now (2019 I believe) and also presumed other users would have come across any issue with user edits in this time…I guess there’s not many of us…! :flushed:

As requested, I’ve sent you through a good selection of sample files, some with minor user edits and some with extensive due to the Core not returning any lookup results etc…

Is it going to be possible to have the Naim Import action process both types of proprietary metadata files ie legacy (UnitiServe, HDX etc) and the current Core…? As I say I have both and still do have some older US rips to process at some point but I also wouldn’t want any potential users to have to choose between one option or the other…?

Sounds good…

SC

Yes, UPnP and I agree that it’s dependent upon the server, however experience shows me that the Naim App is also somewhat picky in what it exactly ‘shows’ – I’ve been through all this years ago with MinimServer and the Unitiserve…

To clarify for current usage, I’m using the Naim Core and using the Naim iOS App.

Re ID3 tags: No, the Core definitely DOES read them, but only in a certain scenario. Just to explain, in case you are not familiar – if the Core rips a CD and stores the files (folder=Music) within it’s internal ‘store’ (which can also be external NAS etc) then it generates it’s own propriety metadata file (meta.naim) and this file and the actual audio files are Read Only access via the Core direct (altering them externally can mess up the database etc)…the only supported way to alter the applied metadata and make any user edits is via the Naim App, which obviously then makes changes within the meta.naim file…

However, there is also a ‘Downloads’ folder within the Core’s store – this is intended for users to add their own rips, HD downloads etc etc and has full read/write access…This is actually the only way to import HD downloads to your Core. And obviously, by nature, this has to accommodate a range of potential file types and metadata tagging solutions – otherwise it just wouldn’t work!..

This is all much the same between the current Units Core and the older US/HDX etc, just that the external metadata files used by each have changed slightly…

So, I can confirm that as the ‘Downloads’ folder is where I put my HD WAV downloads, that the Core does read ID3 tagging, it’s just that it doesn’t use this method for it’s own generated files via ripped CDs – it will default to the meta.naim file if present (I was advised by Naim support to ensure no such meta.naim file exists in any folder if I want the Core to read other embedded tags)…The James Yummy example I showed at the start of this thread was a WAV download which I tweaked the ID3 tags via Metadatics and then imported into the Core’s Download folder…So it’s definitely reading ID3 OK…But as I say, I have a feeling the Naim App is being picky in just what/which of those tags it’s using and displaying…I know from testing yesterday, it doesn’t seem to do anything with the Grouping tag.

My aim is to just populate the audio files (both Core generate rips and my own downloaded HD files) with all the metadata I can/possible…what the Naim App then picks up and use is another story and one which I’ll perhaps address at a future date…But as long as my archive of files is in a state that I’m content with, then that’s my ideal…

Ah ok, understood now. Good to know. I’m not sure this is documented anywhere…? I was aware that a single ‘;’ was often used as a separator as well as sometimes ‘//’ …but I see the logic of what has been implemented in Songkong now that you have explained it and as you say, allows the use of those characters within text if desired…

If there’s anything further you would like to know re the Core’s operation to help out on all this just give me a shout and I’ll try to assist…!

Many thanks again,
SC

Thankyou , all received.

Yes, just something I hadnt considered so need to check it.

Yes, and many customers don’t actually contact us when they have an issue.

There is a hierachy, if its finds meta.naim it will use that, if not and it finds amginfo.xml it will use that and useredits.xml, if it doesnt find that but find cddbinfo.txt it will use that and useredits.xml. So basically it uses the best one.

Okay, thanks for the clarification

In ID3v24 null terminated strings are allowed for all text frames, from https://id3.org/id3v2.4.0-frames

4.2. Text information frames

The text information frames are often the most important frames,
containing information like artist, album and more. There may only be
one text information frame of its kind in an tag. All text
information frames supports multiple strings, stored as a null
separated list, where null is reperesented by the termination code
for the charater encoding. All text frame identifiers begin with “T”.
Only text frame identifiers begin with “T”, with the exception of the
“TXXX” frame. All the text information frames have the following
format:

 <Header for 'Text information frame', ID: "T000" - "TZZZ",
 excluding "TXXX" described in 4.2.6.>
 Text encoding                $xx
 Information                  <text string(s) according to encoding>

In the older IDv2.3 specification multiple null terminated fields were not supported but these days it has become common for ID3v23 as well. Officially only some fields support multiple values by using ‘/’ but this is not wel supported and is not treally multiple fields.
e.g>

TPE1
The ‘Lead artist(s)/Lead performer(s)/Soloist(s)/Performing group’ is
used for the main artist(s). They are seperated with the “/”
character.

Remember in SongKong the ‘;;;’ just denotes multiple values ‘;;;’ isnt actually stored in the files, that is format dependent and for ID3 we use null character.

Having looked at the code more carefully, I see for the meta.naim file we do already use user edits instead of the standard metadata for the following:

  • Album Title
  • Album Artist
  • Track Title
  • Track Artist

but not for anything such as genres

Would be useful if you could confirm that this part works as expected, you can run Naim Import in Preview Only mode if you don’t want to actually modify anything.

Looked at your examples meta.naim files and for all of them the only changes are either to the items I think already covered:

  • Album Title
  • Album Artist
  • Track Title
  • Track Artist

or a form of genre, the genres have different types

  • genre
  • Subgenre
  • style
  • user

So I have a few questions that I hope you can help with me:

  • Is the genre type a free text field or are they defined to mean something?
  • Which genre fields should I be considering, currently I only consider ones of type genre (and Im ignoring user defined genres only taking the ones from the standard metadata) ?
  • Can you modify any other metadata ?

Also, I was incorrect about the Genre list, this is only used by Fix Songs task, and the help text See genre tab for more options should be replaced for Naim Import task. So it won’t currently import any genre descriptors that are in the User section, but it should import them if they are in the metadata section, but only if in the main one (i.e Rovi, then MusicBrainz…) and if of type genre

1 Like

Thanks Paul….

OK, interesting…

Leave it with me over the w’end, and I’ll get back to you with some screen grabs re the Naim App metadata editing elements…and answer your queries…

Cheers,
SC

OK, have just run a couple of tests to confirm what is happening. (I used Preview mode initially but then also ran live and saved on some backup copies, just to confirm what is processed).

In short, yes you are correct, those fields do indeed seem to be processed and include any User Edits (only those fields).

I used a couple of the examples that I had sent you the meta.naim files of, namely:
– Thelonious Monk: 1947-1953 'Round Midnight (the meta.naim files is named Album_20231214_010005_001)
– Prince: Sign ‘O’ The Times [Disc 2]

The Monk album was one that the Naim Core failed to import any metadata (hence the naming of the naim.meta file as it goes into the ‘Unknown’ folder on the Core), so basically every main field I have manually added (via the Naim App to the Core) – as you can see from the screen grab below, the resulting files saved from Naim Import action DO have ID3 for Artist, Album, Track etc…But NOT Genre (The user edit was ‘Jazz’)
note–using Metadatics to show the resulting tags as I find it easy to display the metadata


(p.s – as a side note, I noticed Metadatics is showing the tagged processed files as format ID3v2.3 – I have the default Songkong setting as ‘Same as or v24’ so I would have presumed they would be formatted as v24 from the Naim Import action…? It may just be a Metadatics thing (i.e not reading correctly, though it does handle/write v2.4) but thought I’d just mention it…)

The Prince rip, I used as a test as there were just a couple of user edits – the Album title I changed from the default Rovi selection to Musicbrainz as they used the ‘peace’ symbol in the title. There was also a minor change in one of the track titles. I had NOT added any genre myself, so there was just the TWO that the Core had appended ‘Pop/Rock’ and ‘R&B’ …
As you can see, the album title has been processed correctly as per my user edit and all else is correct…It HAS brought in a Genre, I guess because it is not a user edit, but ONLY one of them – so I guess it’s just looking at the first entry and ignoring any additional…?

As a point of interest, what is amazing is the amount of additional metadata that the action IS processing ie ‘Engineer’ ‘Performer’ etc, loads of it…! I see none of this via the Naim App (Which I guess is selective in what it displays) but it’s interesting to see just what extent some of the Rovi/Musicbrainz lookup is being retrieved and stored in the meta.naim file…and GREAT that this is being processed by the Songkong Naim Import action…

So to recap, it does seem that those main metadata fields are correctly being processed when they also have User Edits…But Genre is NOT.

I may have said it earlier, but IMHO the ideal results from the Naim Import action is for everything that is within the meta.naim file to be processed and mapped to relevant tag fields in the resulting ID3 tagged files, whether they be user edits, default lookup and also all additional metadata info that has been imported on the lookup (whether the Naim App currently uses/displays or not)…Naturally, I’m not the software designer and I’m sure there’s a lot more involved than it sounds, but that would be my ideal…

Cheers for now,
SC

I’ll try and answer Paul, hopefully I understand correctly, but just shout if you need more…

So to recap, to edit the metadata on a Rip that the Core has done, you can ONLY do so via the Naim App (select album and then there’s a Edit Metadata option) and this is ONLY for the Core’s own rips and cannot be used on files that are in the ‘Downloads’ folder (for these you have to use 3rd party tagging solutions) – this is all much like the UnitiServe/HDX models before the Core.

The options (i.e tagging fields) are quite basic and limited via the Naim App. Basically, that is Album, Artist, Track and Genre. That’s it! (However, as shown in my earlier post, that is not to say the actual lookup hasn’t brought in a lot more additional metadata via Rovi or Musicbrainz, just that the App does not display/use any of it and nor can you see or edit any of the additional metadata)

Some example screens from the Naim App:

Selecting ‘Edit Metadata’ for a selected album brings up this window:


You can select between the Rovi/Musicbrainz/FreeDB search results at the top (Rovi is typically default) and that will populate all the fields from that lookup…

You can then also click into any of these fields and make individual selection or manual text edit (but NOT Genre)…If you do make a change of any kind, it is indicated by the thick vertical line to the left of that field (e.g as can be seen on the album title above)

If you then go to Genre at the bottom – typically the Core will add a single genre from its lookup, sometimes two. You can delete these (via the X) or keep and manually add further genres if desired. When clicking the Add genre, it brings up a new page with a fairly long list of Genre (the list is longer than displayed here)…These are predominantly ‘main’ genre types I’d say…
You can simply select any main genre type by hitting the ‘+’ at the left of list…

Or, if a Genre has a ‘>’ to the right of the list, you can tap this and it will take you into a further ‘sub’ list, in effect ‘sub-genres’ I guess…(?), in this example R&B sub-genres…

If you select one of these ‘sub genre’ listings, then it will be added to the list of Genres for the album on the initial edit page and will be shown with the >
In this example, I had chosen R&B > Funk

To confirm, there is no way to enter any free text in the Genre editing, the choices have to come from the embedded lists…But you CAN enter free text in the Album/Artist/Track fields…

Re what Genre fields should be considered, IMO any and all that are present within the meta.naim file, whether they be user edits or the Core’s default choices…? That’s my take on it anyway. I certainly think any User edit in this field should be considered as by definition this will obviously have been a deliberate/desired choice at some point, so I feel this should have priority…?
Ideally, I would like any multiple genres to be carried over upon import…but how best to map this I don’t know…? All as multiple entries within Genre…?
I’m not really sure/understand how the Naim software is handling sub-genre, if it is at all…? I guess the graphic indication of ‘>’ implies a sub-genre…? You be able to tell more/understand from inspecting the meta.naim files…?

As I wrote a few posts ago, if I do some Genre editing on files with 3rd party software and then import to the Core’s Download folder, the only way I have currently found to match the Core’s ‘sub-genre’ filtering is if I add separate multiple genres to the Genre tag but the text MUST match exactly the genres as listed in the Naim App’s list (when editing) e.g If I add R&B and also Funk as multiple entries in the Genre tag, the result in the Naim WILL be R&B>Funk and therefore will appear in the relevant selections when browsing by Genre on the App (like the Pop/Rock example I showed in a earlier post)… I hope I’m making sense here?
I can also add Genres (or different spelling etc) via 3rd party tagging and the Core/Naim App WILL read them and it will also create a new genre type in the App, but it will NOT be seen as a sub/filter of a main genre IF the wording doesn’t match the default Naim…

Does this answer your queries Paul?

SC