Let me flesh out my second option with examples.
This model says to keep everything server side as it is, so let’s take three random existing recordings:
has the tag gabber,
has thrash metal, and
is tagged francophone.
Picard (or similar software) could come with lists of mappings, for example a simple textfile, which would specify how to apply a tag. Let’s say rough.txt contains:
- gabber: electronic
- thrash metal: rock
- francophone: pop
If you used this file, the first recording would be tagged electronic, the second one rock, and the last example as pop. But you can ship multiple files, so a file balanced.txt could contain:
- gabber: drum and bass
- thrash metal: heavy metal
The tags of the recordings will be drum and bass, heavy metal, francophone, respectively. Picard can come with a number of those files, and allow you to chose one, or supply your own custom mapping.
All that said, I like the first option I gave better, as it puts more data on the server, does not have issues with old software versions using stale lists, etc. But it would need server support, maybe a schema change.