






























Roon确实是本地音频播放器的佼佼者。虽然说有很多Hifi相关的功能,还有Roon Ready这种认证,但是就把它当作一个数据库管理软件来看,也是没有任何竞争对手的。可以说,如果你符合Roon用户的经典画像,你甚至不用处理元数据问题,Valance能够解决基本上全部的古典问题。对于我这种的日音弱智用户来说就差点了,Roon的数据库中角色名字都是按照罗马音显示,尽管能够用片假名/平假名搜到,但是还是看着很难受。更何况有些同人音乐根本不在数据库中,只有最新最热最火最潮的二次元才会被识别到。如果你用的Roon版本不能连接到Valance数据库,那更是只能根据文件元数据来组织。
音频元数据完全是一团糟,有ID3的各种版本,Vorbis Comment,APE Tag,甚至还有MP4。不过Roon只支持alac(m4a)、flac(vorbis comment)、mp3(ID3),dsf(ID3)。所以主要使用的也就这些。本人主要使用flac,所以主要根据flac来举例和实现。
TITLE、ALBUM、ARTIST、ALBUM ARTIST、COMPOSER这些信息都非常基础,不必多说。不过有一点需要注意:Roon在识别到同一专辑有多个ARTIST的时候,会根据艺术家数量判断是否为Various Artists专辑,如果是就会把ARTIST显示为Various Artists,而不是专辑中ARTIST字段的内容。有些时候为了让Roon识别成“合辑”(即Various Artists专辑),需要手动调整ALBUM ARTIST字段为Various Artists。
第一个大坑就是日期了。如果你用的是Mp3tag,这个软件会把Vorbis Comment中的DATE字段映射到实际上的YEAR上,而ID3的YEAR是只能写年份的,所以尽管这个地方在flac中能够写完整日期,但是还是不建议在这里写完整日期。
从而,我们需要建立几个映射:
| 标签 | 原始信息 | 目标信息 |
|---|---|---|
| VorbisComment | DATE | YEAR |
| VorbisComment | ORGANIZATION | PUBLISHER |
| VorbisComment | TRACKNUMBER | TRACK |
| ID3v2 | ORIGINALRELEASEDATE | RELEASETIME |
| APEv2 | Album Artist | ALBUMARTIST |
| VorbisComment | TDRL | RELEASETIME |
| MP4 | TDRL | RELEASETIME |
所有的详细日期都写在TDRL字段中,YEAR/DATE只写年份,这样就能兼容所有的播放器了。
关于详细日期,Roon还有一个坑点,它的识别支持YYYY、YYYY-MM-DD,但是不支持YYYY-MM,YYYY-MM会被强制加一个1号,比如1991-03会变成1991-03-01。但是有些专辑确实不知道什么时候发布的,就要写文字月份了。文字月份的意思是类似于jan 1991的写法,前面的月份可以是全名或者是三字母缩写,这些日期能够被正确的识别成1991-01。
Roon默认使用的艺术家分割符是;,没有、。所以多个艺术家默认需要使用;分割,当然可以把、也加入分隔符,但是相信我你会被日本人莫名其妙的艺名恶心的。
还有一种是多字段。这种在flac中比较常见,就是有多个ARTIST字段,或者多个COMPOSER字段。在Mp3tag中显示为名字1\\名字2,这种同样不会导致识别错误。
厂牌可以写在LABEL和PUBLISHER中,Roon都会识别。碟号可以写在CATALOGNUMBER和CATALOG NUMBER(谁有病加空格)中,Roon也会识别。
基本上,大部分人都到此为止了。那么如何做到以下效果呢?

其他元数据需要依赖接下来的字段:INVOLOVEDPEOPLE(Vorbis Comment)、TIPL(ID3)、PERSONNEL(两者都能用)。
在Mp3tag中,INVOLOVEDPEOPLE字段会被正确的映射到ID3 TIPL中,所以你可以直接写INVOLOVEDPEOPLE字段。但是这两个字段有不同的格式!是一个坑点。
Roon支持的角色列表在这里。Roon只会识别已知的角色列表。
name (role)
name (role[additional info])
实际上多个是name (role)\\name (role)\\name (role)\\name (role)
举个例子:
堀江晶太 (arranger)\\堀江晶太 (instrument)\\野沢香苗 (erhu)\\野々村昌樹 (erhu)\\村上宣之 (mix)\\村上宣之 (recording)\\LiSA (lead vocals)\\LiSA (lyricist)
但是但是!这个格式有问题,因为他用的正则匹配方式非常愚蠢,所以aaa(cv.xxx) (arranger)这种格式会识别失败,令人忍俊不禁。这种情况你就要去写PERSONNEL了。
role:name;
role:name;role:name;role:name
一定要用分号分隔,这是ID3要求的。举个例子:
arranger:堀江晶太;instrument:堀江晶太;erhu:野沢香苗;erhu:野々村昌樹;mix:村上宣之;recording:村上宣之;lead vocals:LiSA;lyricist:LiSA;
PERSONNEL出现于以上两种都没有被彻底规范的时候,是Roon的私有字段。支持以下格式:
name\trole
name role
name - role
\t是tab分隔符,不要真当作字符了。第二行是两个空格。尽管理论上有侧支持使用,分割多个role,但是实际上不会识别!你要多写几个PERSONNEL行才行。例子:
Wolfgang Schulz - Flute
Daniel Gaede - Violin
Thomas Selditz - Viola
Andreas Greger - Cello
Jeremy Poole - Liner Note Translation
Christophe Huss - Liner Note Translation
Toms Spogis - Booklet Design
Julia Zancker - Cover Photo
Julia Zancker - Cover Design
Andreas Spreer - Recording
Andreas Spreer - Mix
Roland Kistner - Editing
Andreas Spreer - Producer
Andreas Spreer - Liner Notes
Thomas Seedorf - Liner Notes
Regina Köhler - Liner Notes
需要指出的是,Roon不会读取ORCHESTRA字段,所以Orchestra需要写在PERSONNEL中。ENSEMBLE和SOLOIST可以按需写,不是必须。
Roon为了强兼所有人,还有其他地方的元数据也会被读取,但是我不建议按照这样分开来写(目标字段:从哪里读取):
从这些 key 取值:“SYLT”,“SYNCED LYRICS”,“LYRICS”,“©LYR”,“UNSYNCED LYRICS”,“USLT”
Roon会自动检测是不是LRC歌词。TTML是不支持的,别想了。
检查BOOTLEG的值是不是true,接受true、1,如果是的话就会被识别成盗版碟。
Roon不支持从文件元数据设置这个专辑是不是Live版本!所以这个很鸡肋。
检查LIVE的值是不是true,接受true、1,如果是的话就会被识别成Live版本。
Roon不支持webp,avif这些现代图片格式,别想了。
xx\\xx\\xx。xx\\xx\\xx。到此,基本上你能写的都写了,Roon能认的都认了。Roon不支持给碟片命名,这个已经骂了很久了;Roon不支持从文件读取Artist头像,这个也骂了很久了。总之,Roon的元数据系统虽然有很多坑点,但是只要你按照上面的方法来写,基本上就能写出一个非常完整的元数据了。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。