I would definitely like the freedom of having more Custom Tags and Virtual Tags. I have five Custom Tag slots left, but that's because I've consolidated some of the eleven I use now in order to have the leftover tags for information that won't fit into any of the currently used ones.
For Virtual Tags, I have three remaining, but I may be able to free up a fourth if <Album Duration> displays in HH:MM:SS format (I haven't updated to the patch where @Steven made this change yet.) I would like more Virtual Tags, because I have many extremely complicated functions. Some tags are performing two or more distinct actions, simply because I'm trying to save VTs where I can.
The below Virtual Tag was difficult to write.
That's because it has to parse a tag that may look like this...
...or...
The result is something like...
...or...
If I had more Custom Tags, I would likely come up with an easier process for displaying the track creation process, because parsing the dates with the recording location was a pain in the ass.
These are my two most ridiculous Virtual Tags. I use them to parse the track contributors and credits. I would likely have written them differently had I had Virtual Tags to spare.
$IsNull(<Composer><Lyricist><IPLST>,,$Replace($Replace($Replace($Replace($Replace($Replace($Replace($RxReplace($IsNull(<Composer><Lyricist>$RxSplit(<IPLST>,"(arranger|orchestrator|writer):(.+?)(?:;|$)",2),,$If($And(<Composer>=$RxReplace($RxReplace($RxReplace($RxReplace($RxReplace(<IPLST>,"(producer|engineer|mixer|writer).+?(;\s|$)",""),";(?=[^;$])",","),",(?:\s|)$",""),",(?=[^,]*$)"," and"),"(arranger|orchestrator):",""),<Composer>=$RxReplace($Replace(<Lyricist>,;,","),",(?=[^,]*$)"," and")),$If(<Composer>=$RxReplace($RxReplace($RxReplace($RxReplace($RxReplace(<IPLST>,"(producer|engineer|mixer|arranger|orchestrator).+?(;\s|$)",""),";(?=[^;$])",","),",(?:\s|)$",""),",(?=[^,]*$)"," and"),"writer:",""),"Writing, ",$IsNull(<Composer>,"Writing: "$RxReplace($RxReplace($RxReplace($RxReplace($RxReplace(<IPLST>,"(producer|engineer|mixer|arranger|orchestrator).+?(;\s|$)",""),";(?=[^;$])",","),",(?:\s|)$",""),",(?=[^,]*$)"," and"),"writer:",""),"Music, "))$If($Contains(<IPLST>,arranger:),Arrangement,)$If($Contains(<IPLST>,orchestrator:),Orchestration,)$IsNull(<Lyricist>,," and Lyrics: "<Composer>),$IsNull(<Composer>,$If($Contains(<IPLST>,orchestrator:),Orchestration,$If($Contains(<IPLST>,Arrangement),Arrangement,)),$If(<Composer>=$RxReplace($RxReplace($RxReplace($RxReplace($RxReplace(<IPLST>,"(producer|engineer|mixer|arranger|orchestrator).+?(;\s|$)",""),";(?=[^;$])",","),",(?:\s|)$",""),",(?=[^,]*$)"," and"),"writer:",""),Writing,Music))$IsNull(<Lyricist>$RxSplit(<IPLST>,"(arranger|orchestrator):(.+?)(?:;|$)",2),": "<Composer>,$IsNull(<Composer><Lyricist>,"Arrangement: "$RxReplace($RxReplace($RxReplace($RxReplace($RxReplace(<IPLST>,"(producer|writer|engineer|mixer).+?(;\s|$)",""),";(?=[^;$])",","),",(?:\s|)$",""),",(?=[^,]*$)"," and"),"(arranger|orchestrator):",""),$If($Or(<Composer>=$RxReplace($RxReplace($RxReplace($RxReplace($RxReplace(<IPLST>,"(producer|writer|engineer|mixer).+?(;\s|$)",""),";(?=[^;$])",","),",(?:\s|)$",""),",(?=[^,]*$)"," and"),"(arranger|orchestrator):",""),<Composer>=$RxReplace($Replace(<Lyricist>,;,","),",(?=[^,]*$)"," and")),$IsNull(<Composer>,," and"),": "<Composer>)$IsNull($RxSplit(<IPLST>,"(arranger|orchestrator):(.+?)(?:;|$)",2),," "$If($Contains(<IPLST>,orchestrator:),Orchestration,Arrangement)$If($RxSplit(<IPLST>,"(arranger|orchestrator):(.+?)(?:;|$)",2)=$RxReplace($Replace(<Lyricist>,;,","),",(?=[^,]*$)"," and")," and",": "$RxReplace($RxReplace($RxReplace($RxReplace($RxReplace(<IPLST>,"(producer|writer|engineer|mixer).+?(;\s|$)",""),";(?=[^;$])",","),",(?:\s|)$",""),",(?=[^,]*$)"," and"),"(arranger|orchestrator):","")))$IsNull(<Composer>,," "))$IsNull(<Lyricist>,,$If($IsMatch(<STYLE>,"^Classical$"),Libretto,Lyrics)": "$RxReplace($Replace(<Lyricist>,;,","),",(?=[^,]*$)"," and"))))","),"(\s+|\,)$",""),Composition,{font: Meiryo UI;Bold;8.25}Composition{font: default}),Writing,{font: Meiryo UI;Bold;8.25}Writing{font: default}),Music,{font: Meiryo UI;Bold;8.25}Music{font: default}),Arrangement,{font: Meiryo UI;Bold;8.25}Arrangement{font: default}),Orchestration,{font: Meiryo UI;Bold;8.25}Orchestration{font: default}),Lyrics,{font: Meiryo UI;Bold;8.25}Lyrics{font: default}),Libretto,{font: Meiryo UI;Bold;8.25}Libretto{font: default})$If($Contains(<STYLE>,Soundtrack),$IsNull(<CREDITS>,,)" ",))
$IsNull(<IPLST>,,$Replace($Replace($Replace($RxReplace($IsNull($Replace($RxReplace($RxReplace($RxReplace($RxReplace(<IPLST>,"(arranger|orchestrator|writer|engineer|mixer).+?(;\s|$)",""),";(?=[^;$])",","),",(?:\s|)$",""),",(?=[^,]*$)"," and"),producer:,)$Replace($RxReplace($RxReplace($RxReplace($RxReplace(<IPLST>,"(arranger|orchestrator|writer|producer|mixer).+?(;\s|$)",""),";(?=[^;$])",","),",(?:\s|)$",""),",(?=[^,]*$)"," and"),engineer:,)$Replace($RxReplace($RxReplace($RxReplace($RxReplace(<IPLST>,"(arranger|orchestrator|writer|producer|engineer).+?(;\s|$)",""),";(?=[^;$])",","),",(?:\s|)$",""),",(?=[^,]*$)"," and"),mixer:,),,$If($And($Replace($RxReplace($RxReplace($RxReplace($RxReplace(<IPLST>,"(arranger|orchestrator|writer|engineer|mixer).+?(;\s|$)",""),";(?=[^;$])",","),",(?:\s|)$",""),",(?=[^,]*$)"," and"),producer:,)=$Replace($RxReplace($RxReplace($RxReplace($RxReplace(<IPLST>,"(arranger|orchestrator|writer|producer|mixer).+?(;\s|$)",""),";(?=[^;$])",","),",(?:\s|)$",""),",(?=[^,]*$)"," and"),engineer:,),$Replace($RxReplace($RxReplace($RxReplace($RxReplace(<IPLST>,"(arranger|orchestrator|writer|engineer|mixer).+?(;\s|$)",""),";(?=[^;$])",","),",(?:\s|)$",""),",(?=[^,]*$)"," and"),producer:,)=$Replace($RxReplace($RxReplace($RxReplace($RxReplace(<IPLST>,"(arranger|orchestrator|writer|producer|engineer).+?(;\s|$)",""),";(?=[^;$])",","),",(?:\s|)$",""),",(?=[^,]*$)"," and"),mixer:,)),$If($Replace($RxReplace($RxReplace($RxReplace($RxReplace(<IPLST>,"(arranger|orchestrator|writer|engineer|mixer).+?(;\s|$)",""),";(?=[^;$])",","),",(?:\s|)$",""),",(?=[^,]*$)"," and"),producer:,)=$Replace($RxReplace($RxReplace($RxReplace($RxReplace(<IPLST>,"(arranger|orchestrator|engineer|producer|mixer).+?(;\s|$)",""),";(?=[^;$])",","),",(?:\s|)$",""),",(?=[^,]*$)"," and"),writer:,),"Writing, ",$IsNull($Replace($RxReplace($RxReplace($RxReplace($RxReplace(<IPLST>,"(arranger|orchestrator|writer|engineer|mixer).+?(;\s|$)",""),";(?=[^;$])",","),",(?:\s|)$",""),",(?=[^,]*$)"," and"),producer:,),"Writing: "$Replace($RxReplace($RxReplace($RxReplace($RxReplace(<IPLST>,"(arranger|orchestrator|engineer|producer|mixer).+?(;\s|$)",""),";(?=[^;$])",","),",(?:\s|)$",""),",(?=[^,]*$)"," and"),writer:,),"Producer, "))" "$IsNull($Replace($RxReplace($RxReplace($RxReplace($RxReplace(<IPLST>,"(arranger|orchestrator|writer|producer|engineer).+?(;\s|$)",""),";(?=[^;$])",","),",(?:\s|)$",""),",(?=[^,]*$)"," and"),mixer:,),," and Mixer: "$Replace($RxReplace($RxReplace($RxReplace($RxReplace(<IPLST>,"(arranger|orchestrator|writer|engineer|mixer).+?(;\s|$)",""),";(?=[^;$])",","),",(?:\s|)$",""),",(?=[^,]*$)"," and"),producer:,)),$IsNull($Replace($RxReplace($RxReplace($RxReplace($RxReplace(<IPLST>,"(arranger|orchestrator|writer|engineer|mixer).+?(;\s|$)",""),";(?=[^;$])",","),",(?:\s|)$",""),",(?=[^,]*$)"," and"),producer:,),,$If($Replace($RxReplace($RxReplace($RxReplace($RxReplace(<IPLST>,"(arranger|orchestrator|writer|engineer|mixer).+?(;\s|$)",""),";(?=[^;$])",","),",(?:\s|)$",""),",(?=[^,]*$)"," and"),producer:,)=$Replace($RxReplace($RxReplace($RxReplace($RxReplace(<IPLST>,"(arranger|orchestrator|engineer|producer|mixer).+?(;\s|$)",""),";(?=[^;$])",","),",(?:\s|)$",""),",(?=[^,]*$)"," and"),writer:,),Writing,Producer))$IsNull($Replace($RxReplace($RxReplace($RxReplace($RxReplace(<IPLST>,"(arranger|orchestrator|writer|producer|engineer).+?(;\s|$)",""),";(?=[^;$])",","),",(?:\s|)$",""),",(?=[^,]*$)"," and"),mixer:,)$Replace($RxReplace($RxReplace($RxReplace($RxReplace(<IPLST>,"(arranger|orchestrator|writer|producer|mixer).+?(;\s|$)",""),";(?=[^;$])",","),",(?:\s|)$",""),",(?=[^,]*$)"," and"),engineer:,),": "$Replace($RxReplace($RxReplace($RxReplace($RxReplace(<IPLST>,"(arranger|orchestrator|writer|engineer|mixer).+?(;\s|$)",""),";(?=[^;$])",","),",(?:\s|)$",""),",(?=[^,]*$)"," and"),producer:,),$IsNull($Replace($RxReplace($RxReplace($RxReplace($RxReplace(<IPLST>,"(arranger|orchestrator|writer|engineer|mixer).+?(;\s|$)",""),";(?=[^;$])",","),",(?:\s|)$",""),",(?=[^,]*$)"," and"),producer:,)$Replace($RxReplace($RxReplace($RxReplace($RxReplace(<IPLST>,"(arranger|orchestrator|writer|producer|engineer).+?(;\s|$)",""),";(?=[^;$])",","),",(?:\s|)$",""),",(?=[^,]*$)"," and"),mixer:,),"Engineer: "$Replace($RxReplace($RxReplace($RxReplace($RxReplace(<IPLST>,"(arranger|orchestrator|writer|producer|mixer).+?(;\s|$)",""),";(?=[^;$])",","),",(?:\s|)$",""),",(?=[^,]*$)"," and"),engineer:,),$IsNull($Replace($RxReplace($RxReplace($RxReplace($RxReplace(<IPLST>,"(arranger|orchestrator|writer|engineer|mixer).+?(;\s|$)",""),";(?=[^;$])",","),",(?:\s|)$",""),",(?=[^,]*$)"," and"),producer:,),,$If($Or($Replace($RxReplace($RxReplace($RxReplace($RxReplace(<IPLST>,"(arranger|orchestrator|writer|engineer|mixer).+?(;\s|$)",""),";(?=[^;$])",","),",(?:\s|)$",""),",(?=[^,]*$)"," and"),producer:,)=$Replace($RxReplace($RxReplace($RxReplace($RxReplace(<IPLST>,"(arranger|orchestrator|writer|producer|mixer).+?(;\s|$)",""),";(?=[^;$])",","),",(?:\s|)$",""),",(?=[^,]*$)"," and"),engineer:,),$Replace($RxReplace($RxReplace($RxReplace($RxReplace(<IPLST>,"(arranger|orchestrator|writer|engineer|mixer).+?(;\s|$)",""),";(?=[^;$])",","),",(?:\s|)$",""),",(?=[^,]*$)"," and"),producer:,)=$Replace($RxReplace($RxReplace($RxReplace($RxReplace(<IPLST>,"(arranger|orchestrator|writer|producer|engineer).+?(;\s|$)",""),";(?=[^;$])",","),",(?:\s|)$",""),",(?=[^,]*$)"," and"),mixer:,))," and",": "$Replace($RxReplace($RxReplace($RxReplace($RxReplace(<IPLST>,"(arranger|orchestrator|writer|engineer|mixer).+?(;\s|$)",""),";(?=[^;$])",","),",(?:\s|)$",""),",(?=[^,]*$)"," and"),producer:,)))$IsNull($Replace($RxReplace($RxReplace($RxReplace($RxReplace(<IPLST>,"(arranger|orchestrator|writer|producer|mixer).+?(;\s|$)",""),";(?=[^;$])",","),",(?:\s|)$",""),",(?=[^,]*$)"," and"),engineer:,),,$If($Contains(<IPLST>,producer)," ",)Engineer$If($Replace($RxReplace($RxReplace($RxReplace($RxReplace(<IPLST>,"(arranger|orchestrator|writer|producer|mixer).+?(;\s|$)",""),";(?=[^;$])",","),",(?:\s|)$",""),",(?=[^,]*$)"," and"),engineer:,)=$Replace($RxReplace($RxReplace($RxReplace($RxReplace(<IPLST>,"(arranger|orchestrator|writer|producer|engineer).+?(;\s|$)",""),";(?=[^;$])",","),",(?:\s|)$",""),",(?=[^,]*$)"," and"),mixer:,)," and",": "$Replace($RxReplace($RxReplace($RxReplace($RxReplace(<IPLST>,"(arranger|orchestrator|writer|producer|mixer).+?(;\s|$)",""),";(?=[^;$])",","),",(?:\s|)$",""),",(?=[^,]*$)"," and"),engineer:,)))$If($IsMatch(<IPLST>,"producer|engineer")," ",))$IsNull($Replace($RxReplace($RxReplace($RxReplace($RxReplace(<IPLST>,"(arranger|orchestrator|writer|producer|engineer).+?(;\s|$)",""),";(?=[^;$])",","),",(?:\s|)$",""),",(?=[^,]*$)"," and"),mixer:,),,"Mixer: "$Replace($RxReplace($RxReplace($RxReplace($RxReplace(<IPLST>,"(arranger|orchestrator|writer|producer|engineer).+?(;\s|$)",""),";(?=[^;$])",","),",(?:\s|)$",""),",(?=[^,]*$)"," and"),mixer:,))))","),"(\s+|\,)$",""),Producer,{font: Meiryo UI;Bold;8.25}Producer{font: default}),Engineer,{font: Meiryo UI;Bold;8.25}Engineer{font: default}),Mixer,{font: Meiryo UI;Bold;8.25}Mixer{font: default})$If($Contains(<STYLE>,Soundtrack),,))