Is there a way to get a single Genre for each album?

I would like each and every album to just have 1 genre tag, even if it ends up slightly inaccurate, I prefer to browse music like this. I see a few albums with “different across multiple items” - is it possible to override this and have it set 1 main genre for such items?

Thanks!

Do you want to provide the override manually, or try to get it automatically (e.g. the genre from the first track on the album)? Also, do you want to replace the genre tag in the files or just use this for file naming?

I would prefer the first track of the album to be the new genre tag.

Okay, I haven’t tested this, but you might be able to achieve your desired result using the following…

First, from the Genres section of the Metadata Options, set the maximum number of genres to 1. You might also want to enable the “Fall back on album’s artists genres…” setting. This will help ensure that you end up with one and only one genre per track (although they may still be different between tracks at this point).

Next, install and enable the Persistent Variables plugin from the Plugins Options page in Picard. This will provide the functions necessary to create and retrieve a variable with a value common to all tracks on a release.

EDIT: Note that you need to use the “Make It So!” button to save your changes and activate the plugin before proceeding to adding the new scripts.

The third step is to create a new tagging script in the Scripting Options page. The script should be enabled (checked) and the “Enable Tagger Script(s)” option should also be checked. The script should contain the following:

$if($and($eq(%tracknumber%,1),$eq(%discnumber%,1)),$set_a(_common_genre,%genre%))

This script retrieves the value of the %genre% tag from the first track on the first CD and stores it in a special album-level variable called _common_genre.

Now create another tagging script after (below) the one just created, and make sure that it is also enabled. This new script should contain the following:

$set(genre,$if2($get_a(_common_genre),None))

This script retrieves the value of the album-level variable _common_genre saved in the first script, and stores it in the %genre% tag for each of the tracks in the album. If there was no genre found for the first track of the first disc, the %genre% tag will be set to “None”. If you would like a different default genre value to be used, simply replace “None” in the second script with your preferred default.

As I said earlier, I haven’t tested this so please let me know if it it works for you or if you run into any problems. Thanks.

4 Likes

Some error was given when adding the first script:

1:51:$set_a: unknown function '$set_a

You probably need to use the Make It So! button to ensure that the plugin is activated and then go back and enter the scripts.

1 Like

Your solution seems to work great, thank you very much!

3 Likes

Hi @rdswift. I’m hopping on this old thread to ask if your script could be adapted to have, say, the 3 most common genres (or 2 or 4 or whatever) applied to all tracks on an album.

I certainly prefer to keep genres simple, but paring it all the way down to just 1 would give me a whole lot of “rock” :laughing:. Stepping into a bit of detail would give me some variety at least.

As well, I’m not a fan of each track on an album potentially having differing genres. To me, that’s the other end of the spectrum, feeling over-done and too-much-information.

So, I bumped into this thread researching options, and if I’m correct, I might just need a modified version of what you came up with above?

You might be able to get some ideas from the discussion in Script to create an album genre from its various recording genres. That should help you get the most common genres from each of the tracks to find the common ones on the album. Once you have that, you can use another tagging script to assign those genres to each of the tracks (replacing the current %genre% tag).

1 Like

Thanks. I’ll tack on a specific question here: Is there a difference in using comma vs semicolon, etc. in listing multiple genres?

Is there a standard that allows compatibility / readability in other apps? Is semicolon the preference here?

Multi-value variables have the elements separated by a semicolon and space when they are displayed in Picard. If it is a true multi-value it is stored as an array, and different applications might display the values differently. You can also convert the multi-value to a single string, using whatever separators you like, for those applications that don’t properly handle the real multi-value array.

1 Like

I like what was done with the tagger scripts in that other thread to tidy up genres, but I do think outputting genres as separate items would be more useful and versatile.

Happy to start a new topic if you like, and post what I have. It’s only had a couple of changes to comments and typos.

Not sure how difficult it would be to take that earlier work and version it in this different way.

I’ve only played with it a bit so far, but Plex / Plexamp in particular seems to read the multi-genre tag as a genre just fine… but you can’t really search for the separate terms inside it, rendering it only useful for presentation. :frowning:

So I suppose the primary thing for me is simply not having multiple genres within a single album. Having the 5 most common ones, that’s great too.

Plex does not handle multi-value tags well. The best way to ensure they will be readable and listed as separate, searchable items is to “flatten” them once any scripting done to this tag is complete by placing the following at the bottom of any script that modifies the genre tag:

$set(genre,%genre%)

Adding that single line as one final script does indeed do the job, and I can see Plex recognizing genres in a useful way now, so thanks @rhetticent for speaking up with that.

Now, it feels like a very long way around to compact all the genres down, just to separate them back out at the end… however, there’s lots of other good work along the way here (identifying and putting to use the most commonly used genres, as well as tidying up albums that have a smattering of different genres across different tracks).

If there’s a more straightforward approach overall, I’d be happy to open another topic to discuss that. That said, this does get me what I wanted. :grinning_face:

1 Like

To recap, and for my own notes, this is where I ended up. I have disabled (and not included below) two of the original scripts (clean genres and sort genres) for now at least.

Script A: Create Persistent Variable Of Aggregated Genres

$noop(___Script A: Create Persistent Variable Of Aggregated Genres___)
$if($and(%genre%,$not(%_processed%)),
  $set(_temp,$replace($replace(%genre%,; ,;),;,; ))
  $set_a(_common_genre,$trim($get_a(_common_genre); %_temp%, ;))
  $unset(_temp)
)
$set(_processed,$add($if2(%_processed%,0),1))

Script B: Create MultiVariable From Persistent Variable

$noop(___Script B: Create MultiVariable From Persistent Variable___)
$if($and(_common_genre,$not(%_processed2%)),
  $if($eq(%_absolutetracknumber%,1),
    $set_a(_aggregate_genre1,$get_a(_common_genre))
    $setmulti(_temp,$replace($replace(%genre%,; ,;),;,; ))
    $set_a(track1_genre_length,$lenmulti(%_temp%))
    $unset(_temp)
  )
  $setmulti(_aggregate_genre,$get_a(_aggregate_genre1))
  $setmulti(_aggregate_genre,$slice(%_aggregate_genre%,,-$get_a(track1_genre_length)))
  $set(_aggregate_genre_length,$lenmulti(%_aggregate_genre%))
)
$set(_processed2,$add($if2(%_processed2%,0),1))

Script C: Count And Save Frequency Of Recording Genres

$noop(___Script C: Count And Save Frequency Of Recording Genres___)
$if(%_genre_count_processed%,,
  $foreach($get(_aggregate_genre),
    $set(_genre_key,_Genre '%_loop_value%' count)
    $set(%_genre_key%,$add($if2($get(%_genre_key%),0),1))
    $unset(_genre_key)
  ,; )
)
$set(_genre_count_processed,1)

Script D: Create Album Genre From Genre Counts

$noop(___Script D: Create Album Genre From Genre Counts___)
$if(%_album_genre_processed%,,
  $foreach($get(_aggregate_genre),
    $if($gte($mul($get(_Genre '%_loop_value%' count),2),%_totalalbumtracks%),
      $if($not(%_album_genre%),$setmulti(_album_genre,%_loop_value%),
      $copymerge(_album_genre,_loop_value))
    )
  )
)
$set(genre,%_album_genre%)
$set(_album_genre_processed,1)

Script E and F (Clean Genres and Sort Genres) SKIPPED FOR NOW

Script G: Separate Multi-Genres Back Out to Individuals

$noop(___Script G: Separate Multi-Genres Back Out to Individuals___)
$set(genre,%genre%)

For others who might come looking and not want to click elsewhere to find them, here are those other two scripts. I haven’t personally tried them yet.

Script E: Clean genres

$noop(___Script E: Clean genres___)
$setmulti(_genre,$title(%genre%))
$setmulti(_genre,$map(%_genre%,$upper($substr(%_loop_value%,0,1))$substr(%_loop_value%,1,)))
$replacemulti(%_genre%,Aor,AOR)
$replacemulti(%_genre%,Eai,EAI)
$replacemulti(%_genre%,Ebm,EBM)
$replacemulti(%_genre%,Edm,EDM)
$replacemulti(%_genre%,Funk de bh,Funk de BH)
$replacemulti(%_genre%,Idm,IDM)
$replacemulti(%_genre%,Midi music,MIDI music)
$replacemulti(%_genre%,Mpb,MPB)
$replacemulti(%_genre%,Nwobhm,NWoBHM)
$replacemulti(%_genre%,R&b,R&B)
$replacemulti(%_genre%,Uk bass,UK Bass)
$replacemulti(%_genre%,Uk drill,UK Drill)
$replacemulti(%_genre%,Uk funky,UK Funky)
$replacemulti(%_genre%,Uk garage,UK Garage)
$replacemulti(%_genre%,Uk hard house,UK Hard House)
$replacemulti(%_genre%,Uk hardcore,UK Hardcore)
$replacemulti(%_genre%,Uk hip hop,UK Hip Hop)
$replacemulti(%_genre%,Uk jackin',UK Jackin')
$replacemulti(%_genre%,Uk street soul,UK Street Soul)
$replacemulti(%_genre%,Us power metal,US Power Metal)
$replacemulti(%_genre%,Afoxê,Afoxé)
$replacemulti(%_genre%,Afro rock,Afro-rock)
$replacemulti(%_genre%,Afro-zouk,Zouk)
$replacemulti(%_genre%,Alternative country,Alt-country)
$replacemulti(%_genre%,American primitivism,American Primitive Guitar)
$replacemulti(%_genre%,Andean music,Andean Folk Music)
$replacemulti(%_genre%,Andean,Andean Folk Music)
$replacemulti(%_genre%,Appalachian folk,Appalachian Folk Music)
$replacemulti(%_genre%,Appalachian music,Appalachian Folk Music)
$replacemulti(%_genre%,Arabesque rap,Arabesk Rap)
$replacemulti(%_genre%,Avtorskaya pesnya,Bard Song)
$replacemulti(%_genre%,Azonto,Afrobeats)
$replacemulti(%_genre%,Baggy,Madchester)
$replacemulti(%_genre%,Balearic trance,Ibiza Trance)
$replacemulti(%_genre%,Ballroom house,Ballroom)
$replacemulti(%_genre%,Baroque era,Baroque)
$replacemulti(%_genre%,Beatdown,Beatdown Hardcore)
$replacemulti(%_genre%,Beijing opera,Peking Opera)
$replacemulti(%_genre%,Bele,Bélé)
$replacemulti(%_genre%,Bleep,Bleep Techno)
$replacemulti(%_genre%,Brass and military,Brass & Military)
$replacemulti(%_genre%,Breaks,Breakbeat)
$replacemulti(%_genre%,Brit funk,Britfunk)
$replacemulti(%_genre%,Bubblegum,Bubblegum Pop)
$replacemulti(%_genre%,Cabo zouk,Cabo-zouk)
$replacemulti(%_genre%,CCM,Contemporary Christian)
$replacemulti(%_genre%,Chanson française,Chanson)
$replacemulti(%_genre%,Christian black metal,Unblack Metal)
$replacemulti(%_genre%,Christmas,Christmas Music)
$replacemulti(%_genre%,Classical period,Classical Era)
$replacemulti(%_genre%,Club,Club-house)
$replacemulti(%_genre%,Colinde,Colindă)
$replacemulti(%_genre%,Comedy hip hop,Comedy Rap)
$replacemulti(%_genre%,Country and irish,Country & Irish)
$replacemulti(%_genre%,Cretan,Cretan Folk Music)
$replacemulti(%_genre%,Crust,Crust Punk)
$replacemulti(%_genre%,Cuban charanga,Charanga)
$replacemulti(%_genre%,Cubaton,Cubatón)
$replacemulti(%_genre%,Dangak,Dang-ak)
$replacemulti(%_genre%,Dansband,Dansbandsmusik)
$replacemulti(%_genre%,Danzon,Danzón)
$replacemulti(%_genre%,Dark country,Gothic Country)
$replacemulti(%_genre%,Dark wave,Darkwave)
$replacemulti(%_genre%,Darkcore,Darkside)
$replacemulti(%_genre%,Death-doom metal,Death Doom Metal)
$replacemulti(%_genre%,Dimotiko,Dimotika)
$replacemulti(%_genre%,Doina,Doină)
$replacemulti(%_genre%,Donosti sound,Sonido Donosti)
$replacemulti(%_genre%,Drumless hip hop,Drumless)
$replacemulti(%_genre%,Dubwise,Dubwise Drum and Bass)
$replacemulti(%_genre%,Educational,Educational music)
$replacemulti(%_genre%,Electroacoustic improvisation,EAI)
$replacemulti(%_genre%,Electro-funk,Electro)
$replacemulti(%_genre%,Electropunk,Synth Punk)
$replacemulti(%_genre%,Emo pop,Emo-pop)
$replacemulti(%_genre%,Éntekhno,Entechna)
$replacemulti(%_genre%,Estrada,Soviet Estrada)
$replacemulti(%_genre%,Favela funk,Funk Carioca)
$replacemulti(%_genre%,Field recordings,Field Recording)
$replacemulti(%_genre%,Fife and drum,Fife and Drum Corps)
$replacemulti(%_genre%,Forro,Forró)
$replacemulti(%_genre%,Free tekno,Freetekno)
$replacemulti(%_genre%,Full-on,Full-on Psytrance)
$replacemulti(%_genre%,Funaná,Funaná)
$replacemulti(%_genre%,Funk brasileiro,Funk Carioca)
$replacemulti(%_genre%,Gamelan joged bumbung,Gamelan Jegog)
$replacemulti(%_genre%,Gamelan selunding,Gamelan Selonding)
$replacemulti(%_genre%,Género grande,Zarzuela Grande)
$replacemulti(%_genre%,Glam,Glam Rock)
$replacemulti(%_genre%,Glitch hop edm,Glitch Hop [EDM])
$replacemulti(%_genre%,Goth rock,Gothic Rock)
$replacemulti(%_genre%,Gothic,Gothic Rock)
$replacemulti(%_genre%,Grand opéra,Grand Opera)
$replacemulti(%_genre%,Greenlandic music,Inuit)
$replacemulti(%_genre%,Guaracha edm,Guaracha [EDM])
$replacemulti(%_genre%,Guoyue,Minyue)
$replacemulti(%_genre%,Hard nrg,NRG)
$replacemulti(%_genre%,Hardcore [edm],Hardcore Techno)
$replacemulti(%_genre%,Hi-tech,Hi-tech Psytrance)
$replacemulti(%_genre%,Hyangak,Hyang-ak)
$replacemulti(%_genre%,Impressionist,Impressionism)
$replacemulti(%_genre%,Indigenous andean music,Andean Folk Music)
$replacemulti(%_genre%,Indo jazz,Indian Jazz Fusion)
$replacemulti(%_genre%,Irish folk,Irish Folk Music)
$replacemulti(%_genre%,Izvorna,Izvorna Bosanska Muzika)
$replacemulti(%_genre%,Jackin house,Jackin' House)
$replacemulti(%_genre%,Javanese gamelan,Gamelan Jawa)
$replacemulti(%_genre%,Jazz manouche,Gypsy Jazz)
$replacemulti(%_genre%,Jazz rock,Jazz-rock)
$replacemulti(%_genre%,Jeongak,Jeong-ak)
$replacemulti(%_genre%,Jump up,Jump-up)
$replacemulti(%_genre%,Kasékò,Kaseko)
$replacemulti(%_genre%,khmer music,Khmer Folk Music)
$replacemulti(%_genre%,Koplo,Dangdut Koplo)
$replacemulti(%_genre%,Korean court music,Korean Classical)
$replacemulti(%_genre%,Kuda kepang,Kuda Lumping)
$replacemulti(%_genre%,Kumi-daiko,Taiko)
$replacemulti(%_genre%,Laiko,Laika)
$replacemulti(%_genre%,Laïkó,Laika)
$replacemulti(%_genre%,Lao music,Lao Folk Music)
$replacemulti(%_genre%,Lectures,Lecture)
$replacemulti(%_genre%,Liquid funk,Liquid Drum and Bass)
$replacemulti(%_genre%,Lute song,Elizabethan Song)
$replacemulti(%_genre%,Mangue beat,Manguebeat)
$replacemulti(%_genre%,Maskanda,Maskandi)
$replacemulti(%_genre%,Medieval classical music,Medieval)
$replacemulti(%_genre%,Melodic trance,Uplifting Trance)
$replacemulti(%_genre%,Menzuma,Manzuma)
$replacemulti(%_genre%,Mittelalter-metal,Medieval Metal)
$replacemulti(%_genre%,Mo lam,Mor Lam)
$replacemulti(%_genre%,Modern electric blues,Electric Blues)
$replacemulti(%_genre%,Modern hardtek,Hardtek)
$replacemulti(%_genre%,Modern laiko,Modern Laika)
$replacemulti(%_genre%,Molam sing,Mor Lam Sing)
$replacemulti(%_genre%,Molam,Mor Lam)
$replacemulti(%_genre%,Motown,Motown Sound)
$replacemulti(%_genre%,Movie soundtrack,Film Soundtrack)
$replacemulti(%_genre%,Mugham,Azerbaijani Mugham)
$replacemulti(%_genre%,Música criolla,Música Criolla Peruana)
$replacemulti(%_genre%,Narodnozabavna glasba,Narodno Zabavna Glasba)
$replacemulti(%_genre%,Nature sounds,Nature Recordings)
$replacemulti(%_genre%,Néo kyma,Neo Kyma)
$replacemulti(%_genre%,Neoclassical dark wave,Neoclassical Darkwave)
$replacemulti(%_genre%,Neo-trad,Néo-trad)
$replacemulti(%_genre%,Neo-traditionalist country,Neo-traditional Country)
$replacemulti(%_genre%,Nerdcore,Nerdcore Hip Hop)
$replacemulti(%_genre%,New wave of british heavy metal,NWoBHM)
$replacemulti(%_genre%,No melody,No Melody Trap)
$replacemulti(%_genre%,Nu disco,Nu-disco)
$replacemulti(%_genre%,Nueva cancion,Nueva Canción)
$replacemulti(%_genre%,Nuevo flamenco,Flamenco Nuevo)
$replacemulti(%_genre%,Nuevo tango,Tango Nuevo)
$replacemulti(%_genre%,Nyū myūjikku,New Music)
$replacemulti(%_genre%,Occitan,Occitan Folk Music)
$replacemulti(%_genre%,Oi,Oi!)
$replacemulti(%_genre%,Old school hip hop,Disco Rap)
$replacemulti(%_genre%,Opéra comique,Opéra-comique)
$replacemulti(%_genre%,Opera-ballet,Opéra-ballet)
$replacemulti(%_genre%,Original pilipino music,OPM)
$replacemulti(%_genre%,Palm wine music,Palm-wine)
$replacemulti(%_genre%,Phonk,Rare Phonk)
$replacemulti(%_genre%,Pinpeat,Cambodian Classical)
$replacemulti(%_genre%,Piobaireachd,Pìobaireachd)
$replacemulti(%_genre%,Plainsong,Plainchant)
$replacemulti(%_genre%,Ragga hip-hop,Ragga)
$replacemulti(%_genre%,Rapcore,Rap Rock)
$replacemulti(%_genre%,Rasqueado cuiabano,Rasqueado)
$replacemulti(%_genre%,Rave,Breakbeat Hardcore)
$replacemulti(%_genre%,Reggaeton,Reggaetón)
$replacemulti(%_genre%,Rembetika,Rebetiko)
$replacemulti(%_genre%,Revolutionary opera,Chinese Revolutionary Opera)
$replacemulti(%_genre%,Rhythmic noise,Power Noise)
$replacemulti(%_genre%,Riddim dubstep,Riddim)
$replacemulti(%_genre%,Rock and roll,Rock & Roll)
$replacemulti(%_genre%,Rock andaluz,Andalusian Rock)
$replacemulti(%_genre%,Rock urbano,Rock Urbano Español)
$replacemulti(%_genre%,Romantic classical,Romanticism)
$replacemulti(%_genre%,Romantic,Romanticism)
$replacemulti(%_genre%,Rune singing,Runolaulu)
$replacemulti(%_genre%,Runo song,Runolaulu)
$replacemulti(%_genre%,Saya,Saya Afroboliviana)
$replacemulti(%_genre%,Score,Film Score)
$replacemulti(%_genre%,Scouse house,Donk)
$replacemulti(%_genre%,Sea shanties,Sea Shanty)
$replacemulti(%_genre%,Sertanejo raiz,Sertanejo de Raiz)
$replacemulti(%_genre%,Shan’ge,Shan'ge)
$replacemulti(%_genre%,Shima-uta,Amami Shimauta)
$replacemulti(%_genre%,Skiladiko,Skiladika)
$replacemulti(%_genre%,Song,Lied)
$replacemulti(%_genre%,Song-cycle,Song Cycle)
$replacemulti(%_genre%,Sundanese pop,Pop Sunda)
$replacemulti(%_genre%,Synth-pop,Synthpop)
$replacemulti(%_genre%,Tearout brostep,Tearout [Brostep])
$replacemulti(%_genre%,Technobanda,Tecnobanda)
$replacemulti(%_genre%,Television music,Television)
$replacemulti(%_genre%,Tembang sunda cianjuran,Tembang Cianjuran)
$replacemulti(%_genre%,Tishoumaren,Desert Blues)
$replacemulti(%_genre%,Tone poem,Symphonic Poem)
$replacemulti(%_genre%,Trap edm,Trap [EDM])
$replacemulti(%_genre%,Tsugaru-jamisen,Tsugaru Shamisen)
$replacemulti(%_genre%,UK jackin,UK Jackin')
$replacemulti(%_genre%,Urtiin duu,Mongolian Long Song)
$replacemulti(%_genre%,Vgm,Video Game Music)
$replacemulti(%_genre%,Vikingarock,Viking Rock)
$replacemulti(%_genre%,Waulking song,Òrain Luaidh)
$replacemulti(%_genre%,Western classical music,Classical)
$replacemulti(%_genre%,Western classical,Classical)
$replacemulti(%_genre%,Western,Western Country)
$replacemulti(%_genre%,Whistling,Siffleur)
$replacemulti(%_genre%,Work songs,Work Wong)
$replacemulti(%_genre%,Yue opera,Shaoxing Opera)
$replacemulti(%_genre%,Ancient music,Ancient mmmmm)
$replacemulti(%_genre%,Arabic bellydance music,Arabic bellydance mmmmm)
$replacemulti(%_genre%,Armenian church music,Armenian church mmmmm)
$replacemulti(%_genre%,Background music,Background mmmmm)
$replacemulti(%_genre%,Bass music,Bass mmmmm)
$replacemulti(%_genre%,Beat music,Beat mmmmm)
$replacemulti(%_genre%,Big music,Big mmmmm)
$replacemulti(%_genre%,Bit music,Bit mmmmm)
$replacemulti(%_genre%,Capoeira music,Capoeira mmmmm)
$replacemulti(%_genre%,Cartoon music,Cartoon mmmmm)
$replacemulti(%_genre%,Chamber music,Chamber mmmmm)
$replacemulti(%_genre%,Christmas music,Christmas mmmmm)
$replacemulti(%_genre%,Early music,Early mmmmm)
$replacemulti(%_genre%,Educational music,Educational mmmmm)
$replacemulti(%_genre%,Epic music,Epic mmmmm)
$replacemulti(%_genre%,Ethiopian church music,Ethiopian church mmmmm)
$replacemulti(%_genre%,Flex dance music,Flex dance mmmmm)
$replacemulti(%_genre%,Furniture music,Furniture mmmmm)
$replacemulti(%_genre%,Halloween music,Halloween mmmmm)
$replacemulti(%_genre%,Hill tribe music,Hill tribe mmmmm)
$replacemulti(%_genre%,Holiday music,Holiday mmmmm)
$replacemulti(%_genre%,Incidental music,Incidental mmmmm)
$replacemulti(%_genre%,Islamic modal music,Islamic modal mmmmm)
$replacemulti(%_genre%,Kitchen dance music,Kitchen dance mmmmm)
$replacemulti(%_genre%,Library music,Library mmmmm)
$replacemulti(%_genre%,Light music,Light mmmmm)
$replacemulti(%_genre%,Louisiana music,Louisiana mmmmm)
$replacemulti(%_genre%,Mechanical music,Mechanical mmmmm)
$replacemulti(%_genre%,Mobb music,Mobb mmmmm)
$replacemulti(%_genre%,Mouth music,Mouth mmmmm)
$replacemulti(%_genre%,Nervous music,Nervous mmmmm)
$replacemulti(%_genre%,New music,New mmmmm)
$replacemulti(%_genre%,Nordic old time dance music,Nordic old time dance mmmmm)
$replacemulti(%_genre%,Ottoman military music,Ottoman military mmmmm)
$replacemulti(%_genre%,Outsider music,Outsider mmmmm)
$replacemulti(%_genre%,Production music,Production mmmmm)
$replacemulti(%_genre%,Program music,Program mmmmm)
$replacemulti(%_genre%,Ratchet music,Ratchet mmmmm)
$replacemulti(%_genre%,Regional music,Regional mmmmm)
$replacemulti(%_genre%,Spy music,Spy mmmmm)
$replacemulti(%_genre%,Tamil film music,Tamil film mmmmm)
$replacemulti(%_genre%,Tape music,Tape mmmmm)
$replacemulti(%_genre%,Turntable music,Turntable mmmmm)
$replacemulti(%_genre%,Video game music,Video game mmmmm)
$setmulti(_genre,$rreplace($rreplace(%_genre%,\( folk music;\), fffff;),\( folk music\)\$, fffff))
$setmulti(_genre,$rreplace($rreplace(%_genre%,\( traditional music;\), ttttt;),\( traditional music\)\$, ttttt))
$setmulti(_genre,$rreplace($rreplace(%_genre%,\( music;\),;),\( music\)\$,))
$setmulti(_genre,$replace(%_genre%,mmmmm,Music))
$setmulti(_genre,$replace(%_genre%,fffff,Folk Music))
$setmulti(_genre,$replace(%_genre%,ttttt,Traditional Music))
$setmulti(_genres,$unique(%_genre%))
$setmulti(_genre,$unique(%_genres%))
$setmulti(genre,%_genre%; %period%)
$cleanmulti(genre)

Script F: Sort genres

$noop(___Script F: Sort genres___)
$noop(___Add primary genres and place at end of genre multivariable___)
$noop(___Make a copy of the original genre for reference___)
$set(genreOLD,%genre%__________DELETE ME___________)
$if($inmulti(%genre%,Classic Rock),
   $replacemulti(%genre%,Classic Rock,)
   $cleanmulti(genre)
)

$if($or($inmulti(%genre%,Ambient Americana),$inmulti(%genre%,Space Ambient),$inmulti(%genre%,Tribal Ambient)),$set(_lastgenre,Ambient))
$if($inmulti(%genre%,Ambient),$replacemulti(%genre%,Ambient,))
$if($eq(%_lastgenre%,Ambient),$copymerge(genre,_lastgenre))

$if($find(%genre%,Blues),$set(_lastgenre,Blues))
$if($inmulti(%genre%,Blues),$replacemulti(%genre%,Blues,))
$if($eq(%_lastgenre%,Blues),$copymerge(genre,_lastgenre))

$if($and($find(%genre%, Soul),$not($inmulti(%genre%,Soul Jazz))),$set(_lastgenre,Soul))
$if($inmulti(%genre%,Soul),$replacemulti(%genre%,Soul,))
$if($eq(%_lastgenre%,Soul),$copymerge(genre,_lastgenre))

$if($or($inmulti(%genre%,Blue-Eyed Soul),$find(%genre%,R&B),$inmulti(%genre%,Doo-Wop),$inmulti(%genre%,Quiet Storm),$inmulti(%genre%,Swamp Pop)),$set(_lastgenre,R&B))
$if($inmulti(%genre%,R&B),$replacemulti(%genre%,R&B,))
$if($eq(%_lastgenre%,R&B),$copymerge(genre,_lastgenre))

$if($or($find(%genre%,Ska),$inmulti(%genre%,2 Tone)),$set(_lastgenre,Ska))
$if($inmulti(%genre%,Ska),$replacemulti(%genre%,Ska,))
$if($eq(%_lastgenre%,Ska),$copymerge(genre,_lastgenre))

$if($or($inmulti(%genre%,Dancehall),$inmulti(%genre%,Dub),$inmulti(%genre%,Lovers Rock),$inmulti(%genre%,Mento),$find(%genre%,Reggae),$inmulti(%genre%,Rocksteady)),$set(_lastgenre,Reggae))
$if($inmulti(%genre%,Reggae),$replacemulti(%genre%,Reggae,))
$if($eq(%_lastgenre%,Reggae),$copymerge(genre,_lastgenre))

$if($find(%genre%,Christmas),$set(_lastgenre,Christmas Music))
$if($inmulti(%genre%,Christmas Music),$replacemulti(%genre%,Christmas Music,))
$if($eq(%_lastgenre%,Christmas Music),$copymerge(genre,_lastgenre))

$if($or($inmulti(%genre%,Ballet),$inmulti(%genre%,Baroque),$inmulti(%genre%,Classical Period),$inmulti(%genre%,Contata),$inmulti(%genre%,Concerto),$inmulti(%genre%,Fantasia),$inmulti(%genre%,Impressionism),$inmulti(%genre%,Nocturne),$inmulti(%genre%,Opera),$inmulti(%genre%,Sonata),$inmulti(%genre%,Symphony),$inmulti(%genre%,Toccata)),$set(_lastgenre,Classical))
$if($find(%genre%,Classical),$set(_lastgenre,Classical))
$if($inmulti(%genre%,Classical),$replacemulti(%genre%,Classical,))
$if($eq(%_lastgenre%,Classical),$copymerge(genre,_lastgenre))

$if($inmulti(%genre%,Country),$set(_lastgenre,Country))
$if($inmulti(%genre%,Country),$replacemulti(%genre%,Country,))
$if($eq(%_lastgenre%,Country),$copymerge(genre,_lastgenre))

$if($or($inmulti(%genre%,Club),$inmulti(%genre%,Downtempo),$inmulti(%genre%,EDM),$inmulti(%genre%,House),$inmulti(%genre%,Glitch),$inmulti(%genre%,IDM),$inmulti(%genre%,Techno)),$set(_lastgenre,Electronic))
$if($or($find(%genre%,synth),$find(%genre%,Synth),$find(%genre%,tronica),$and($find(%genre%,Wave),$not($inmulti(%genre%,New Wave))),$find(%genre%,wave),$find(%genre%,house),$find(%genre%, House)),$set(_lastgenre,Electronic))
$if($eq(%_lastgenre%,Electronic),
   $if($inmulti(%genre%,Electronic),
       $replacemulti(%genre%,Electronic,)
       $copymerge(genre,_lastgenre)
   )
)

$if($or($inmulti(%genre%,Appalachian Folk),$inmulti(%genre%,Celtic),$inmulti(%genre%,Contemporary Folk),$inmulti(%genre%,Old-Time),$inmulti(%genre%,Talking Blues),$inmulti(%genre%,Work Song)),$set(_lastgenre,Folk))
$if($inmulti(%genre%,Folk),$replacemulti(%genre%,Folk,))
$if($eq(%_lastgenre%,Folk),$copymerge(genre,_lastgenre))

$if($or($inmulti(%genre%,Afro Trap),$inmulti(%genre%,Afroswing),$inmulti(%genre%,Battle Rap),$inmulti(%genre%,Boom Bap),$inmulti(%genre%,Bounce),$inmulti(%genre%,Crunk),$inmulti(%genre%,Digicore),$inmulti(%genre%,G-Funk),$inmulti(%genre%,Trap)),$set(_lastgenre,Hip Hop))
$if($or($find(%genre%,Hip Hop),$find(%genre%,Rap)),$set(_lastgenre,Hip Hop))
$if($inmulti(%genre%,Hip Hop),$replacemulti(%genre%,Hip Hop,))
$if($eq(%_lastgenre%,Hip Hop),$copymerge(genre,_lastgenre))

$if($or($inmulti(%genre%,Bebop),$inmulti(%genre%,Big Band),$inmulti(%genre%,Dixieland),$inmulti(%genre%,Hard Bop),$inmulti(%genre%,Stride),$inmulti(%genre%,Swing)),$set(_lastgenre,Jazz))
$if($find(%genre%,Jazz),$set(_lastgenre,Jazz))
$if($inmulti(%genre%,Jazz),$replacemulti(%genre%,Jazz,))
$if($eq(%_lastgenre%,Jazz),$copymerge(genre,_lastgenre))

$if($or($find(%genre%,rock),$find(%genre%, Rock),$find(%genre%,Metal),$inmulti(%genre%,AOR),$inmulti(%genre%,Mod),$inmulti(%genre%,New Wave),$inmulti(%genre%,Surf),$find(%genre%,Punk),$find(%genre%,punk)),$set(_lastgenre,Rock))
$if($and($inmulti(%genre%,Rock),$eq($get(_lastgenre),Rock)),$replacemulti(%genre%,Rock,))
$if($eq(%_lastgenre%,Rock),$copymerge(genre,_lastgenre))

$if($or($inmulti(%genre%,Production Music),$inmulti(%genre%,Musical)),$set(_lastgenre,Production Music))
$if($inmulti(%genre%,Production Music),$replacemulti(%genre%,Production Music,))
$if($eq(%_lastgenre%,Production Music),$copymerge(genre,_lastgenre))

$setmulti(genre,%genre%)
$cleanmulti(genre)

$set(_lastgenre,$getmulti(%genre%,-1))

$if(%sortgenre%,,$if($find(%_lastgenre%,Christmas Music),$set(sortgenre,Christmas)))
$if(%sortgenre%,,$if($find(%_lastgenre%,Classical),$set(sortgenre,Classical)))
$if(%sortgenre%,,$if($find(%_lastgenre%,Country),$set(sortgenre,Country & Folk)))
$if(%sortgenre%,,$if($find(%_lastgenre%,Bluegrass),$set(sortgenre,Country & Folk)))
$if(%sortgenre%,,$if($find(%_lastgenre%,mbient),$set(sortgenre,Ambient)))
$if(%sortgenre%,,$if($find(%_lastgenre%,Folk),$set(sortgenre,Country & Folk)))
$if(%sortgenre%,,$if($find(%_lastgenre%,Hip),$set(sortgenre,Hip Hop)))
$if(%sortgenre%,,$if($find(%_lastgenre%,Rock),$set(sortgenre,Rock & Pop)))
$if(%sortgenre%,,$if($find(%_lastgenre%,Reggae),$set(sortgenre,Reggae & Ska)))
$if(%sortgenre%,,$if($find(%_lastgenre%,Ska),$set(sortgenre,Reggae & Ska)))
$if(%sortgenre%,,$if($find(%_lastgenre%,R&B),$set(sortgenre,R&B\, Blues\, Funk & Soul)))
$if(%sortgenre%,,$if($find(%_lastgenre%,Blues),$set(sortgenre,R&B\, Blues\, Funk & Soul)))
$if(%sortgenre%,,$if($find(%_lastgenre%,Funk),$set(sortgenre,R&B\, Blues\, Funk & Soul)))
$if(%sortgenre%,,$if($find(%_lastgenre%,Soul),$set(sortgenre,R&B\, Blues\, Funk & Soul)))
$if(%sortgenre%,,$if($find(%_lastgenre%,Jazz),$set(sortgenre,Jazz & Fusion)))
$if(%sortgenre%,,$if($find(%_lastgenre%,Production Music),$set(sortgenre,Production Music)))
$if(%sortgenre%,,$if($find(%_lastgenre%,lectroni),$set(sortgenre,Electronic)))

===

Note that scripts A-F were carried over from this original thread, with only some minor comment and typo fixes:

1 Like