Skip to content

Adding Custom Piano Songs

MTR-Static edited this page May 28, 2020 · 2 revisions

0.8.4版增加了对迷你钢琴游戏中自定义钢琴歌曲的支持。

目录

  1. JSON格式
    1. JSON格式说明
    2. 钢琴音符键图
  2. JSON位置
  3. JSON疑难解答
  4. 已知的问题
  5. 提交钢琴歌曲

格式

所有钢琴歌曲都以JSON格式存储在文本文件中。 这是一个如何用JSON标记(很短的)钢琴歌曲的示例:

{
    "name": "Song name",
    "verse_list": [0, 5, 10, 23],
    "pnm_list": [
        {
            "text": "This is a song lyric",
            "style": "monika_credits_text",
            "notes": [
                "D5",
                "C5SH",
                "B4",
                "F4SH",
                "B4",
                "C5SH",
                "D5",
                "E5",
                "D5",
                "C5SH",
                "B4",
                "A4",
                "G4",
                "D5",
                "E5"
            ],
            "express": "1eub",
            "postexpress": "1eua",
            "vis_timeout": 2.0,
            "verse": 0,
            "posttext": true
        },
        {
            "text": "This is the another song lyric",
            "style": "monika_credits_text",
            "notes": [
                "D5",
                "A4",
                "D5",
                "A4",
                "D5",
                "A4",
                "D5",
                "E5",
                "C5SH"
            ],
            "postnotes": [
                "D5",
                "C5SH"
            ],
            "express": "1eub",
            "postexpress": "1eua",
            "ev_timeout": 1.0
        }
    ]
}

对象说明:

主要名称/值对:

  • name: (string) 歌曲名称
    • 必须是唯一的
    • 这也会在钢琴歌曲菜单中显示给玩家
  • verse_list: (list) 索引清单 (int) 诗句的开头
    • 诗句就像检查点。这就是为什么您在犯错时不必从头开始的原因。
    • 索引应该是 "pnm_list"中代表诗句开头的注音组的位置。
    • 这使用0索引
  • pnm_list: (list) 音符组列表 (object)
    • 每个音符组是一个对象,名称/值对如下所述
  • _comment: 被忽略的字段,用于添加音符

name, verse_list, 和 pnm_list 都是 必须的。 还有其他一些参数,仅供内部使用或尚未准备好发布。有关这些的更多信息,请参见zz_pianokeys的顶部。

注意组名称/值对:

  • text: (string) 在这组笔记中,莫妮卡会说的
  • style: (string) 应用于文本的样式
    • monika_credits_text 是库存歌曲中使用的一种。你可以使用其他风格,但这可能是最好的风格。(没看懂
  • notes: (list) 此组的音符列表
    • 请参阅下面的音符信息
  • postnotes: (list) 可以在notes之后播放的可选音符列表
    • 这些用于确保从一个音符组到另一个音符组的平稳过渡
    • 请参阅下面的音符信息
  • express: (string) 在此音符组中显示的精灵代码     -仅在当 那个音符被演奏时 显示
  • postexpress: (string) 当成功播放音符组时显示的精灵代码
    • 在演奏音符后显示
    • 播放后记时也会显示
  • ev_timeout: (float) 超时输入之前等待的秒数(假设缺少音符)/重置韵律
    • 主要用于设置更大的计时窗口,以供用户输入此音符组
    • 如果未提供,则使用默认超时(1.0(无歌曲)或3.0(歌曲期间))
  • vis_timeout: (float) 重置莫妮卡的表情/删除视觉歌词之前要等待的秒数
    • 主要用于在视觉重置之前将Monika的表达或视觉歌词扩展一段时间
    • 如果玩家开始输入下一个组,这不会扩展到下一个音符组
    • 如果未提供,则使用默认超时值2.5(无歌曲)或4.0(歌曲期间)
  • verse: (int) 该音符组所属的诗句索引
    • 这个必须匹配verse_list中的一个数字
  • posttext: (bool) true表示音符组完成后,视觉歌词仍然可见
    • 默认行为(false)是在音符组完成后立即隐藏歌词。
    • 尊重vis_timeout设置
  • _comment: 被忽略的字段,用于添加注 释

text, style, 和notes都是必填项。 还有其他一些参数,仅供内部使用或尚未准备好发布。有关这些的更多信息,请参见zz_pianokeys的顶部。

音符配对表

音符只是字符串。以下是可用的音符:(它们对应于实际的钢琴音符)

音符String 默认键
F4 q
F4SH 2
G4 w
G4SH 3
A4 e
A4SH 4
B4 r
C5 t
C5SH 6
D5 y
D5SH 7
E5 u
F5 i
F5SH 9
G5 o
G5SH 0
A5 p
A5SH -
B5 [
C6 ]

位置

自定义钢琴歌曲应以“songname.json”命名并存储在“piano_songs /”中。

检查正确性

钢琴JSON中的警告和错误记录到文件“pnm.txt”中。日志记录是描述性的,应该足以解决问题。不保证在游戏过程中记录日志。检查文件的最佳方法是先启动然后退出。

即使您的钢琴JSON无效,MAS(和迷你钢琴游戏)仍将运行。

无法正确加载的歌曲将被忽略。

已知的问题

有关Win/Pass/Fail的歌曲数据在内部存储,并按歌曲名称组织。一旦您传递了具有特定名称的歌曲,该歌曲将始终出现在播放歌曲中,即使**基础JSON不相同。**我们不打算修复此问题,因为它可能需要重写存储数据的方式。

提交钢琴歌曲

演唱了Monika演唱时用的歌吗?

请按照以下说明进行提交。请注意,我们很可能不会正式添加歌曲,但我们将编译JSON并将其发布在钢琴包中。 (类似于spritepacks)。

提交钢琴曲:

  1. 发表Issues
  2. 将JSON附加到问题。如果文件太大,请将其链接到问题。
  3. 在Issues提到Issue#3765

您也可以只提交音符,但这会延迟将其包含在钢琴音符包中。

Clone this wiki locally