← Selected Works
KIBISI / lyria-spatial-system
Spatial Loop Composition System

Google Deepmind Lyria API x Spatial Audio + Visual

ループ・ライブラリから、Ableton Live プロジェクト・空間オーディオ・3レイヤーのフィールド映像までを自動生成する。

ループ・ライブラリ → Ableton Live (.als) + 空間オーディオ + 歩ける3レイヤー・フィールド。すべてを単一のソースが駆動する。

View repository (private)
The idea

すべてのループが常に鳴っている。
近づいたものだけが聞こえる。

最大100本の常時ループするAI生成素材を、3D空間に散りばめる。リスナー(カメラ)が移動すると、近くに来たオブジェクトだけが立ち上がり、前後左右は空間オーディオが描く。

同じ1本の「近接ゲート」曲線が、Ableton のトラック音量・プレビュー音声・映像の発光を同時に駆動する。だから .als とプレビューが完全に一致する。

listener / camera far · silent near · audible
Demo

実際に生成した音+映像

KIBISI が生成した als → wav → mp4 の実出力。youtu.be/poJtbmOfIMI

How it works

単一ソースから3つの成果物へ

Loop library always-looping wav Analyze & detect beat / SE / drone Field plan 3 layers · 20/60/20 Spatial scene camera + proximity gate Ableton .als master project Spatial 2ch VST3 DSP twin Preview video 3-layer render in sync composition_score.json — the single source that ALS, spatial audio and the video all read.
1つのプランから ALS・空間オーディオ・映像へ。構造上、完全に一致する。
Generating the loops

音源生成のルール — 重み付きスタイル

ループは固定のスタイル・パレットから style_id を選び、重み(合計≈1)で配合して生成する。配合がライブラリの多様性を生み、後段の beat / SE / drone 仕分けへつながる。

ambientambient_technobass_musicbreakbeatscinematicdeconstructed_clubdeep_listeningdronedrum_and_bassdubstepelectronicaexperimental_popfootworkgarageglitchglitch_beatsglitch_pophalftimeidmjazzjungleleftfield_technomodular_synthneo_classicalnoisepiano_ambientsound_artsound_designtechno

drone   beat   SE / texture — 色は3レイヤーへの傾向(目安)。

{
  prompt: "experimental footwork with percussive fm synth",
  durationSeconds: 30,
  styles: [
    { id: "footwork",      weight: 0.6 },
    { id: "modular_synth", weight: 0.4 },
  ],
  anonymousAccessTokenSecret: "$ACCESS_TOKEN",
}
Loop library & detection

音響解析で beat / SE / drone に仕分ける

● BEAT

リズムの土台。強いダウンビート・反復・トランジェント。空間に散らばる「格子ノード」になる。

● SE

効果音的・ノイズ的・無調で明るい素材。空中をリサジュー/螺旋で高速に飛ぶ「フライヤー」に。

● DRONE

持続音。低crest(持続的)・調性・低反復で判定。光る「星雲」として描く。

発見: Lyria の「ドローン」は進化するグラニュラー・テクスチャで、オンセット密度では区別不可。crest(持続性)・調性・反復が効いた(本物36/36を検出)。

drone_score = (crest_db < 15) + (atonal < 0.45) + (repetition < 0.55) + (flatness < 0.0015)
The 3-layer field

3つのレイヤー、それぞれ別の配置と映像

drone beat lattice SE flyer
  • beat — 内殻に均等散布。カメラが巡回する歩ける格子。kNNで線を結ぶ。
  • SE — リサジュー/螺旋の軌道で高速移動。音に反応するトレイル。
  • drone — 外殻に少数・大きく配置。フィラメントと濃いコアを持つ光る星雲。
The core mechanism

近接ボリューム・ゲート

distance (camera → object) gain NEAR FAR 0 dB (audible) −70 dB (silent)

各オブジェクトとカメラの距離から毎フレーム算出した滑らかなゲイン曲線(smoothstep)。NEAR内は等倍、FARで無音まで落ちる。

Ableton track Volume automation
Ableton:各トラックの Volume オートメーション。このピンクの波形が、焼き込まれた近接ゲートそのもの。

同じ曲線を ALS のトラック音量・プレビュー音声・映像の発光に焼くから、Ableton で開いた音とプレビューが1フレーム精度で一致する。

Spatial audio

Stereo Spatializer(自作 VST3)

前後左右・距離は、カメラ幾何から焼いた azimuth / elevation / distance / spread を、自作の空間オーディオ・プラグインが2chへレンダリングする。10パラメータ凍結、DSPの numpy 移植でオフライン2chも同一結果。

Stereo Spatializer plugin GUI
Stereo Spatializer v1.1.0 — 10パラメータの自作 VST3。
Spatializer automation lanes
1トラックの azimuth / distance / elevation / spread オートメーション。

近接ゲートはトラック音量、方向はプラグイン — 役割を分離。

Tempo & polyrhythm

1つのテンポに強制ワープ、ポリリズムは許容

全ループをセッション・テンポへワープして連続再生。テンポが離れすぎる素材は除外し、ハーフ(×1/2)やポリリズム(例 3:4 = 120 against 160)は積極的に許容する。

プレビューは簡易ワープ、マスターは .als を Ableton で開いて本来のワープで書き出す。

session 160 BPM half 80 — ×1/2 poly 120 — 3:4
The Ableton output

生成物:編集可能な Ableton プロジェクト

.als は連続クリップ+ワープ+Stereo Spatializer デバイス+オートメーション(空間/近接ゲート)を焼き込んだ本物の Live プロジェクト。ロケータ=セクション、トラック=役割で、Live 12 でそのまま手編集できる。

continuous clipswarp + StartRelative Spatializer devicebaked automation
Ableton arrangement, continuous clips
p08_footwork(160 BPM)— 生成 → Live で手編集した実例。ロケータ=セクション、トラック=役割。
Ableton mixer, many tracks
ミキサー:常時鳴っているトラックの壁(field モード、別セッション)。
Rendering

映像の自動生成(自作レンダラ)

自作の点群レンダラ(numpy + ffmpeg)が3レイヤーを描画する。音声と同じベイク済みブレークポイントを読むので、リアルタイム解析なしに音と映像が1フレーム精度で一致する。

  • 各ループは自分の実スペクトル(STFT→8帯域)で駆動。テンポ一律ではなく音色ごとに動く。
  • ビートノード:低/中/高のアタック検出 → 異なるサイズのパーティクルがエッジを伝って隣ノードへ流れる。
  • 近接ゲートが発光も制御=聞こえる時だけ光る。可変速のローミングカメラ+サイバーブルーのグレード/ブルーム。
field render frame
field100 — ビート格子・SEフライヤー・星雲・3D十字グリッド。128小節フルを spatial_preview.wav と多重化。
The console

WebUI で選曲・設定 → 4つの出力を自動生成

scripts/webui.py のブラウザUIで楽曲(ベースループ)・コーパス・SE数・尺・BPM・カメラ・seed を選び Generate を押すと、plan → bake → als → mixdown → render が一括で走る(〜2-4分、session 名はユニークで上書きしない)。

  • Ableton .als — 編集可能なマスター・プロジェクト
  • spatial audio 2ch — Spatializer で空間化した 2ch wav
  • previs wireframe — 640×360 の高速プレビュー映像
  • metal render video — Metal(satin)エンジンの本番レンダ映像(上のデモがこれ)
KIBISI generator WebUI
KIBISI generator WebUI — 設定して Generate。
Config → script

設定はそのまま実行スクリプトになる

Generate を押すと WebUI の設定が kibisi コマンド列へ変換され、各ステップが順に実行される(ログはライブで流れる)。生成物は .als(マスター)・2ch 空間 wav・previs wireframe・Metal(satin) 本番レンダ。

WebUI config
この設定(webui_7cghzx / 160 BPM / 3min / SE 30…)が↓へ変換される。
$ kibisi plan <song> --preset warp30 --loops 120 --density-arc \
    --bpm 160 --target-sec 113 --finale-sec 24 --outro-sec 55 \
    --intro-bars 8 --se 30 --support 3 --downbeat-kick --seed 1 --name webui_7cghzx
$ kibisi spatial-bake     webui_7cghzx
$ kibisi generate-als     webui_7cghzx   →  webui_7cghzx.als    (Ableton master)
$ kibisi spatial-mixdown  webui_7cghzx   →  spatial_preview.wav (2ch spatial)
$ kibisi render-video     webui_7cghzx --wireframe     →  preview_wire.mp4  (previs)
$ kibisi render-video     webui_7cghzx --engine satin  →  preview_satin.mp4 (Metal)
Density versions

同じ曲を 10 / 30 / 50 / 100 ループで

同じベース・同じシードで密度だけを変えた4バージョン。ランク選定なので、小さい版は「最良N本」になる。

field010
10 · 2/2/6
field030
30 · 6/6/18
field050
50 · 10/10/30
field100
100 · 20/60/20

各図の下に drone / beat / SE の本数。レンダは完成次第、自動で差し込まれる。

Under the hood

技術スタック

ANALYSIS

Python · Polars · librosa · numpy/scipy。BPM・ダウンビート・帯域・調性・crest を解析し Parquet に。

COMPOSITION

相性グラフ+ルールベース役割分類+ランク選定。決定論的(seed固定)。

PLUGIN

JUCE 8 / VST3 の Stereo Spatializer と、その numpy 双子(オフライン2ch)。

ABLETON

.als を直接合成(gzip+XML)。クリップ・ワープ・デバイス・オートメーションを焼き込み。

RENDER

自作の点群レンダラ(numpy + ffmpeg)。星雲・フライヤー・格子・近接発光。

SYNC

同じベイク済みブレークポイントを映像・音声が共有 → レイテンシゼロの一致。

Summary

ループから、空間で鳴る音と映像へ

github.com/daitomanabe/lyria-spatial-system
AI Reference Surface

関連する参照ページ

FAQ、用語集、外部参照、計測、AI用索引へ移動できます。それぞれのリンク先で何を確認できるかを明記しました。