了解です。
ここでは 「Loveダンスの1段IRテンプレート」 を、
AI Service Web Server(Python Flask + MySQL)で実際に扱える“現実的な JSON 仕様”として提示します。
つまり:
- 抽象的すぎない
- 多段 IR を捨てる
- Gemini → JSON(ノート列) → サーバー保存 → クライアント再生
- 高校生Loveダンスでも扱える“薄い IR”
という、昆虫ゲームと同じ構造に落とし込んだテンプレートです。
🎯 Loveダンスの「1段IRテンプレート」(AI Service Web Server 用)
Gemini に渡すプロンプトはこれだけで成立します。
🎵 LoveDance 1段IR(NoteList)テンプレート
高校生Loveダンス風のメロディを生成してください。
以下の条件を満たすノート列(NoteList)を JSON 形式で返してください。
【条件】
- BPM = {BPM}
- Key = {Key}
- 長さ = {Bars} 小節
- 雰囲気 = {Mood}
- 高校生のダンス動画に合う、明るく跳ねる感じ
- 出力は NoteList のみ
【出力形式】
NoteList = [
{
"pitch": <MIDIノート番号>,
"start": <小節内の開始位置(0.0〜)>,
"length": <音価(小節単位)>,
"velocity": <1〜127>
},
...
]
【制約】
- JSON 以外のテキストは出力しない
- pitch は 48〜84 の範囲
- start は 0.0〜{Bars} の範囲
- length は 0.25, 0.5, 1.0 のいずれか
🧩 これが「1段IR」になっている理由
Loveダンスの OS を極限まで薄くすると、
必要なのは ノート列(NoteList)だけ。
つまり:
Gemini → NoteList(JSON) → サーバー保存 → 再生
これだけで曲が成立する。
- 構造レイヤー
- トラックレイヤー
- メロディレイヤー
などの多段 IR を 全部捨てている。
昆虫ゲームでいう:
外部 → JSON(部品) → Roblox(組み立て)
と完全に同じ構造。
🧪 生成される JSON の例(実際に扱いやすい)
[
{"pitch": 60, "start": 0.0, "length": 0.5, "velocity": 100},
{"pitch": 62, "start": 0.5, "length": 0.5, "velocity": 100},
{"pitch": 64, "start": 1.0, "length": 1.0, "velocity": 110},
{"pitch": 67, "start": 2.0, "length": 0.5, "velocity": 100},
{"pitch": 69, "start": 2.5, "length": 0.5, "velocity": 100},
{"pitch": 72, "start": 3.0, "length": 1.0, "velocity": 120}
]
これをそのまま MySQL に保存すればよい。
🧱 Python Flask 側の処理イメージ
Gemini から受け取った JSON を保存するだけ。
@app.route("/lovedance/save", methods=["POST"])
def save_lovedance():
data = request.json # NoteList
track_id = save_to_mysql(data)
return {"status": "ok", "track_id": track_id}
🎧 クライアント(Delphi or Roblox)側の再生
- pitch → MIDI ノート番号
- start → 再生位置
- length → 音価
- velocity → 音量
これだけで再生できる。
🌱 なぜこれなら「実現できる」と言えるのか
理由は明確で:
- IR が 1段だけ
- JSON が単純
- サーバー側は保存するだけ
- クライアント側は再生するだけ
- Gemini の得意領域(自然言語 → 構造化データ)に完全一致
つまり、昆虫ゲームと同じ構造に落とし込んだことで
Loveダンスも 現実的な技術で実現可能になった。
🔭 次に進める方向
あなたの OS 設計に合わせて、次のどれでも進められます。
- NoteList を MySQL に保存するテーブル設計
- NoteList → MIDI 変換コード(Delphi)
- NoteList → Roblox の Sound 再生(PitchShift + TimePosition)
- Loveダンスの「伴奏(ChordList)」を追加する
- Loveダンスの「リズム(DrumList)」を追加する
どれに進めたいか、あなたのリズムで決めてください。