专辑信息
对专辑信息的描述存放于元数据仓库下指定的专辑存放目录,以专辑的品番作文件名。
专辑信息通过 toml
格式描述。
艺术家
专辑信息中有 artist
和 artists
字段用于填写艺术家信息。其中 artist
字段较为简单,而 artists
字段则可以表示更加精确的艺术家信息。
artist
字段
专辑、唱片和音轨都拥有 artist
字段,用于表示主要的艺术家信息。主艺术家的选取规则如下:
- 当该曲目的类型为
Normal
时,主艺术家为Vocal
。特别地,对于VOCALOID
或其他歌声合成软件制作的歌曲,Vocal
由P主和歌姬共同构成。 - 当该曲目的类型为
Instrumental
时,主艺术家为对应非Instrumental
版本的Vocal
或Composer
。特别地,当该曲目对应非Instrumental
曲目为某曲目的Rearrange
时,主艺术家为对应非Instrumental
版本的Vocal
或该曲目的Arranger
。 - 当该曲目的类型为
Absolute
时,主艺术家为Composer
。特别地,当该曲目为某曲目的Remix/Rearrange
时,主艺术家为Arranger
。
示例如下:
- 《Track A》为
Artist A
个人单曲中的某一音轨,曲目类型为Normal
。此时主艺术家为Vocal
,即Artist A
。 - 《Track B》为
Artist A
个人单曲中的某一音轨,曲目类型为Instrumental
。此时主艺术家可以为Vocal
(即Artist A
),或作曲(Composer
)。 - 《Track C》为
Artist A
个人单曲中的某一音轨,曲目类型为Instrumental
,且该音轨为 《Track B》 的Rearrange
。此时主艺术家可以为Vocal
(即Artist A
),或《Track C》的Arranger
。 - 《Track D》为
Artist A
个人单曲中的某一音轨,曲目类型为Absolute
。此时主艺术家为该曲目的作曲(Composer
)。 - 《Track E》为
Artist A
个人单曲中的某一音轨,曲目类型为Absolute
,且该音轨为 《Track D》 的Rearrange
。此时主艺术家为《Track E》的Arranger
。
artists
字段
artists
字段用于描述更加精确的艺术家信息。该字段的继承方式与 artist
相同,但其中字段不继承。如下所示:
# ...
[[discs.tracks]]
title = "夏凪ぎ(Episode 9 Ver.)"
artists.vocal = "やなぎなぎ"
artists.composer = "麻枝准"
artists.lyricist = "麻枝准"
artists.arranger = "MANYO"
artists.piano = "kidlit"
artists.violin = "須原杏、沖増菜摘"
artists.viola = "梶谷裕子"
artists.cello = "渡邉雅弦"
artists.irish-harp = "梅田千晶"
使用 TypeScript
描述的类型表示如下,其中 []
中的内容表示存在时向 FLAC
文件写入的 Tag
名:
type Artists = ExtendedArtists & Record<string, string>;
interface ExtendedArtists {
// 歌手
vocal?: string;
// 作曲 [COMPOSER]
composer?: string;
// 作词 [LYRICIST]
lyricist?: string;
// 编曲 [ARRANGER]
arranger?: string;
}
标签
专辑、光盘和音轨上都可以存在标签。标签可以用于描述专辑、光盘和音轨的性质,语义为「属于」。各个标签相互独立,不存在继承关系。如:
(音轨)夏凪ぎ 属于 OP
(音轨)宝物になった日 属于 ED
(专辑)夏凪ぎ/宝物になった日 属于 神様になった日
当用于检索时,标签使用「向上合并」的语义。即:专辑的合并标签定义为专辑内所有专辑标签、光盘标签和音轨标签的并集。此时标签的语义为「包含」。如:
(专辑)夏凪ぎ/宝物になった日 包含 神様になった日、OP、ED
对于标签的使用方式,作如下约定:
- 对单曲碟片中的曲目,同一曲目在其各版本收录单曲中标签应保持一致。
- 对专辑碟片中的曲目,如同一曲目在此前发售的单曲碟片中已经存在,则专辑中不需要包括该标签。
音乐类型
对明显有歌、曲的音轨,定义其类型为 Normal
;对于此类歌曲的伴奏版本,定义类型为 Instrumental
;对于不为上述情况的无人声音轨,或 Vocal & Chorus
音轨,定义其类型为 Absoulte
。
对于以角色身份进行故事演绎的音轨,定义其类型为 Drama
。
对于以真人身份进行的,明确以广播形式发行的音轨或广播节目,定义其类型为 Radio
。
对于以真人身份进行的,但不属于广播的音轨(如 Bonus Track 中的对话),或以角色身份演绎的,仅包含单句或多句语音的短音轨,定义其类型为 Vocal
。
示例
######################################################
# 专辑信息
[album]
#
# 专辑 ID [必填项]
#
# 表示为随机生成的 UUID
album_id = "572c5c19-0080-404b-9d8b-2eb864aea75d"
#
# 专辑名称 [必填项][ALBUM]
#
# 专辑的标题,盘片类型信息需要填写到专辑类型下。
title = "夏凪ぎ/宝物になった日"
#
# 专辑类型 [可选项][ALBUM]
#
# 当该项非空时,写入 ALBUM 中的专辑名为 "{title}【{edition}】"。
edition = ""
#
# 专辑品番 [必填项]
#
# 当存在多张时用 ~ 隔开,如:
# catalog = "ALBUM-01~50"
catalog = "KSLA-0178"
#
# 专辑艺术家 [必填项]
#
# 使用「Anni 艺术家别名嵌套」格式表示具体的艺术家。
artist = "やなぎなぎ"
#
# 专辑的发行日期 [必填项][DATE]
#
# 日期有两种表示方法:
# date = 2021-06-22
# date = "2021-06"
#
# 日期表达形式更加精确,当没有精确日期时则可以使用字符串表达模糊的年月。
# 在字符串表达格式通过 `-` 分隔年月日,月和日都可以省略。
# 尽量精确到日,如果无法确定则精确到月或年。
date = 2020-12-16
#
# 专辑的标签 [可选项]
#
# 会和光盘/音轨的标签取并集,共同描述专辑中所含内容的分类。
tags = [
# 使用标签的 type 指定重名 Tag 的具体指代对象
# 标签名称前后的空格会被自动剔除
"group:4U",
# 当没有指定标签类型时,如果仓库内存在类型不同的同名标签,则会抛出错误
# 当该标签名称唯一时,则不会报错
"神様になった日",
]
#
# 音乐类型 [必填项]
#
# 可选项如下所示:
# normal(默认):有人声的歌曲。
# instrumental:无人声的伴奏。
# absolute:纯音乐。
# drama:以人声为主的单元剧。
# radio:以人声为主的广播节目。
# vocal:纯人声,如音乐现场的 MC 等。
type = "normal"
######################################################
# 光盘信息
[[discs]]
# 光盘名称 [可选项]
title = "夏凪ぎ/宝物になった日"
# 光盘艺术家 [可选项]
artist = "やなぎなぎ"
#
# 光盘品番 [必填项]
#
# 只允许表示一张光盘,不得出现 ~ 连接符。
catalog = "KSLA-0178"
#
# 光盘标签 [可选项]
#
# 会和专辑的标签取并集,共同描述专辑中所含内容的分类。
tags = []
#
# 音乐类型 [可选项]
#
# 用于覆盖专辑的音乐类型。
type = "normal"
######################################################
# 音轨信息
[[discs.tracks]]
# 音轨标题 [必填项][TITLE]
title = "夏凪ぎ"
#
# 音轨标签 [可选项]
#
# 会和专辑的标签取并集,共同描述专辑中所含内容的分类。
tags = ["OP"]
[[discs.tracks]]
title = "宝物になった日"
tags = ["ED"]
[[discs.tracks]]
title = "夏凪ぎ(Episode 9 Ver.)"
#
# 音轨详细艺术家 [可选项]
#
artists.vocal = "やなぎなぎ"
artists.composer = "麻枝准"
artists.lyricist = "麻枝准"
artists.arranger = "MANYO"
artists.piano = "kidlit"
artists.violin = "須原杏、沖増菜摘"
artists.viola = "梶谷裕子"
artists.cello = "渡邉雅弦"
artists.irish-harp = "梅田千晶"
[[discs.tracks]]
title = "宝物になった日(Episode 5 Ver.)"
[[discs.tracks]]
title = "夏凪ぎ(Instrumental)"
#
# 艺术家 [可选项][ARTIST]
#
# 省略时,默认以光盘艺术家 -> 专辑艺术家的顺序寻找存在项。
artist = "麻枝准"
#
# 音乐类型 [可选项]
#
# 用于覆盖唱片的音乐类型,最终形成每个音轨的音乐类型。
type = "instrumental"
[[discs.tracks]]
title = "宝物になった日(Instrumental)"
artist = "麻枝准"
type = "instrumental"
品番冲突
当出现品番冲突时,原本以单一品番命名的文件需要升级为以品番命名的目录。
目录中的专辑信息以 {catalog}.{index}.toml
命名,索引从 0 开始。
如:专辑 TEST-001
发生品番冲突,则目录结构如下:
├── album
│ └── TEST-001
│ ├── TEST-001.0.toml
│ └── TEST-001.1.toml