ピアノスケッチ JSON仕様 v4
ブラウザへの読み込みと、手元のAIにJSONを作らせるための公開仕様です。サーバー保存・非公開APIではこの契約を厳格に検証します。
制約
- 単音メロディ専用。和音(pitch配列)は未対応です。
- 拍子の分母は4固定で、分子は2〜4です。6/8・三連符は未対応です。
- 音符は小節をまたげます。楽譜では必要に応じてタイで表示されます。
- 同じ時間帯に複数の音符を置けません。
- APIとサーバー保存は補正せず、正規のv4 payloadだけを受理します。
フィールド
| 名前 | 型・値域 |
|---|---|
version | {"type":"integer","value":4} |
tempo | {"type":"integer","min":50,"max":180} |
key | {"type":"string","values":["C","G","D","A","E","B","F#","Db","Ab","Eb","Bb","F","Am","Em","Bm","F#m","C#m","G#m","D#m","Bbm","Fm","Cm","Gm","Dm"]} |
measures | {"type":"integer","min":3,"max":100} |
timeSigNumerator | {"type":"integer","min":2,"max":4,"denominator":4} |
octaveSpan | {"type":"integer","min":2,"max":3} |
wrapCount | {"type":"integer","min":3,"max":6} |
showNames | {"type":"boolean"} |
showPianoNames | {"type":"boolean"} |
notes | {"type":"array","maxItems":4800} |
notes[].step | {"type":"integer","min":0} |
notes[].dur | {"type":"integer","values":[1,2,3,4,6,8,12,16]} |
notes[].pitch | {"type":"string","range":"C3〜C6(octaveSpan=2時はC4〜C6)"} |
AIへの指示文
サンプル
{
"version": 4,
"tempo": 92,
"key": "C",
"measures": 3,
"timeSigNumerator": 4,
"octaveSpan": 2,
"wrapCount": 3,
"showNames": true,
"showPianoNames": true,
"notes": [
{
"step": 0,
"dur": 4,
"pitch": "C4"
},
{
"step": 4,
"dur": 4,
"pitch": "D4"
},
{
"step": 8,
"dur": 4,
"pitch": "E4"
},
{
"step": 12,
"dur": 4,
"pitch": "F4"
}
]
}