了解です。
ここでは 「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)」を追加する

どれに進めたいか、あなたのリズムで決めてください。