ここはまさにあなたの“構造OS”の本領が発揮されるところだね。
AI作曲サーバの JSON 仕様は、Roblox 側の「演奏エンジン」と完全に責務分離するための“儀式的インターフェース”になる。
あなたの Love ダンスモード、英国ミステリー、北欧夕暮れモードなど、
どんなジャンルでも共通で扱える汎用フォーマットをまず定義し、
その上に「高校生Loveダンス」専用のプリセットを載せる構造が最も美しい。
以下に、あなたの OS 設計思想に合わせた 正式な JSON 仕様(v1.0) を提示するね。
🎼 AI 作曲サーバ JSON 仕様(v1.0)
Roblox 側は MIDI を扱わないため、
“音の意味”だけを送る抽象レイヤーとして設計してある。
🧩 トップレベル構造
{
"version": "1.0",
"mode": "HighschoolLoveDance",
"bpm": 128,
"sections": [...],
"tracks": [...],
"metadata": {...}
}
🎬 1. sections(曲の構造)
Aメロ・Bメロ・サビなど、ダンス同期の基準になる。
"sections": [
{
"name": "A",
"startBeat": 0,
"lengthBeats": 16
},
{
"name": "B",
"startBeat": 16,
"lengthBeats": 16
},
{
"name": "Chorus",
"startBeat": 32,
"lengthBeats": 32
}
]
Roblox 側は
「今どのセクションか」→「どのダンスを再生するか」
を決めるだけでいい。
🎹 2. tracks(音のレイヤー)
Love ダンスなら:
- Piano
- SynthLead
- Bass
- Drums
- Pad
など複数のトラックがある。
"tracks": [
{
"instrument": "SynthLead",
"notes": [...]
},
{
"instrument": "Piano",
"notes": [...]
}
]
🎵 3. notes(Roblox で鳴らすための最小単位)
Roblox 側は Sound を複製して PlaybackSpeed を変えるだけなので、
必要なのは 音階・強さ・長さ・開始位置 の4つ。
"notes": [
{
"note": 64, // MIDIノート番号
"velocity": 90, // 0〜127
"startBeat": 0.0, // BPM基準
"durationBeats": 1.0 // 長さ
}
]
Roblox 側では:
- note → PlaybackSpeed に変換
- velocity → Volume に変換
- startBeat → RunService でスケジューリング
- durationBeats → Stop タイミング
という儀式で再生する。
🎧 4. metadata(ジャンル固有の情報)
Love ダンスモードなら:
"metadata": {
"genre": "HighschoolLoveDance",
"emotion": "BrightCute",
"recommendedDance": {
"A": "StepSide",
"B": "HandWave",
"Chorus": "JumpSpin"
}
}
Roblox 側は
「サビに入ったら JumpSpin」
のように自動でダンスを切り替えられる。
🌟 高校生Loveダンスモードのプリセット例
{
"version": "1.0",
"mode": "HighschoolLoveDance",
"bpm": 128,
"sections": [
{"name": "A", "startBeat": 0, "lengthBeats": 16},
{"name": "B", "startBeat": 16, "lengthBeats": 16},
{"name": "Chorus", "startBeat": 32, "lengthBeats": 32}
],
"tracks": [
{
"instrument": "SynthLead",
"notes": [
{"note": 67, "velocity": 100, "startBeat": 0, "durationBeats": 1},
{"note": 69, "velocity": 100, "startBeat": 1, "durationBeats": 1}
]
}
],
"metadata": {
"genre": "HighschoolLoveDance",
"emotion": "BrightCute",
"recommendedDance": {
"A": "StepSide",
"B": "HandWave",
"Chorus": "JumpSpin"
}
}
}
🧭 あなたのプロジェクトにおけるレイヤー分離
あなたの OS 設計思想に合わせるとこうなる。
端末(AI作曲OS)
- 曲構造生成
- コード進行
- メロディ
- リズム
- Loveダンスモードの文法
- JSON 生成
Webサーバ(中継)
- JSON を Roblox 用に整形
- Plugin からのリクエストを受ける
Roblox(演奏エンジン)
- Sound 再生
- PlaybackSpeed 変換
- ダンス同期
- 世界観(Lighting)との統合
この責務分離はあなたの“儀式的 OS 設計”と完全に一致している。
次に深めるならどれにする?
- 🎼 Loveダンス専用コード進行プリセットの定義
- 🕺 ダンス同期エンジンの Lua 実装案
- 🎧 Roblox 側の Sound 再生エンジンの設計
- 🧠 AIサーバ側の作曲アルゴリズム(構造→メロディ→リズム)
どれでも一緒に設計できるよ。