iArt.ai
AI motion graphics software — the After Effects alternative anyone can use. Create animations and explainer videos from a text prompt in minutes.
翻訳待ち
No updates detected yet. GitHub releases will appear here.
ブラウザだけで動く音反応 VJ ビジュアルツール。seed から GLSL を合成する Semantic Synth、WebGL2 GPU シーン、OBS 向け透過オーバーレイ、別窓 Scene Deck
Loading the full README.
Read the full README ↗ブラウザだけで動く、音に反応するフルスクリーン・ビジュアルツールです。マイク / ライン入力 / ループバック(デスクトップ音声)を解析し、なめらかで音楽に反応するビジュアルを描画します。OBS のブラウザソースや、プロジェクター用のフルスクリーンブラウザに常駐させて使う前提で設計しています。
pnpm install
pnpm dev
ブラウザで表示された URL(通常 http://localhost:5173)を開きます。初回はマイク(音声入力)の許可を求められます。許可するとビジュアルが音に反応し始めます。
入力欄にフォーカスがあるときは無効になります。
| キー | 動作 |
|---|---|
H | コントロールパネルの表示 / 非表示 |
F | フルスクリーン切り替え |
B | 背景(黒 / 透過)の切り替え |
R | シード(look gacha)を引き直す(ガチャ) |
D | Semantic Synth の Generator 構成はそのまま、細部だけ引き直す(reroll details) |
S | Scene Deck 窓を開く(?deck=1。BroadcastChannel、bridge 不要) |
T | タップテンポ(手動 BPM 入力) |
パネルはマウスを止めると約 3 秒で自動的にフェードアウトし、カーソルも隠れます。マウスを動かすと再表示されます。
パネル上部の Look にシード文字列を入力すると、その文字列から決定論的にビジュアル全体の「個性」が生成されます。色だけでなく、配色モード・要素数・サイズ・モーション速度・対称数・回転方向・ゆらぎ、そして Generator の組み合わせまで一括で変化するので、シードを引き直すたびにガチャを引くように見た目が大きく変わります。
R)を押すと、neon-tiger-042 のような読みやすいランダムシードが生成され、即座に反映されます。本ツールが描画するのは、seed から GLSL シェーダそのものを合成する「Semantic Synth」です。
R)と、ハード切替ではなくクロスフェードで新しい Look へ滑らかに遷移します。D)を使ってください。同じ Generator 構成のまま細部だけ新しいシードで引き直されます(vj-tweak.mjs --reroll でも同じことができます)。構成そのものは変わらないので、後述のオーディオ・リアクション(拍で起きるグリッチの種類)も変わりません。旧シーン(Bars / Radial / Waveform / Lissajous / Rings / Particles / Fluid / Smoke / Aurora)の見た目は、Semantic Synth の Generator としてガチャの候補に残っています: spectrumBars(スペクトラム・バー、ピークホールド付き)、spectrumRadial(円形スペクトラム)、oscilloscope(オシロスコープ)、lissajousScope(X-Y リサージュ)、beatRings(拍で広がる多角形リング)、particleField(上昇 / 軌道 / 雨 / 星空のパーティクル)、inkMarble(墨流しマーブル)、smokeFog(煙)、auroraCurtain(オーロラ)。Lava は既存の lavaBlobs がそのまま担当します。
スペクトラム系とオシロ系は新しい「オーディオ・テクスチャ」を読みます。Generator が audio: ['spectrum' | 'wave'] を宣言すると、その Patch にだけ uSpectrum(128 バンドの対数スペクトラム。アタック / リリースの平滑化とピークホールド付き)と uWave(256 サンプルの波形 + リサージュ用の X/Y ペア)が毎フレーム GPU に送られます。宣言しない Patch のシェーダは従来と 1 バイトも変わりません。無音時はスペクトラムが 0、波形はフラットになります。テストやカバレッジ計測、Deck のサムネイルでは、時間に依存しない固定の合成信号を使います。
vj:gen では「スペクトラム」「オシロ」「リサージュ」「オーロラ」「煙」「パーティクル」「リング」「マーブル」で呼び出せます。
Generator の大半は音の uniform を読まないので、画面全体に効く音の反応は Patch 共通の層が担っています。以前はここが「軽いズームイン+明るさの持ち上げ」の 1 種類しか無く、どのシードを引いても拍で起きることは同じでした。今はこの層がカタログになっていて、Patch ごとに座標系の反応 1〜2 種類+色の反応 1 種類が決定的に選ばれます。
| 座標に効く | 色に効く |
|---|---|
punchZoom 拍の頭で画面が寄る | rgbSplit 拍で R/B が横にずれる(色収差グリッチ) |
sliceShift 横帯ごとに水平にずれる(テープが飛ぶようなグリッチ) | echoGhost 拍で少し縮んだ残像が背後に重なる |
blockCrush 拍でマクロブロックに潰れる | hueSlam 拍で色相が飛ぶ |
jitter 拍で画が飛び、高域で細かく震える | posterCrush 拍で階調が段々に潰れる(ビットクラッシュ) |
spinKick 拍で回転が蹴られる | invertFlash 強い拍だけ一瞬ネガになる |
waveTear 走査線が横に裂けて流れる | scanGlow 走査バンドが流れ、拍で光る |
mirrorSnap 拍で鏡像に畳まれる | channelRoll 強い拍で RGB が入れ替わる |
rgbSplit / echoGhost は拍の瞬間だけシェーダを追加で評価します。重い Patch(heavy な Generator 入り、または厚いスタック)には載りません。Semantic Synth の時間は、音が無くても一定の速さで進み続けるのではなく、音の大きさで進む速さが変わります。
composition.speed)も効きます。上限は 1 倍なので、引きによって従来より速くなる Patch はありません。大音量が続く環境(クラブなど)で画面が真っ暗になり続ける、という事故を構造的に防いでいます。
threshold / gate / dropout のような、上げると絵が消えるパラメータは自動では選ばれません(手で組んだ Patch には制限はかかりません)。画面右側の Timeline パネルでは、数秒〜数小節先の演出イベント(シード変更やトランジションなど)をあらかじめ予約でき、演出の流れを JSON として記録・再生できます。詳細は Issue #3 の RFC を参照してください。
Resolume のシーン一覧のように、別窓で 8 スロットのバリエーションをポン出しできます。メイン窓(semantic-synth)のいまの Patch をベースに、同じ Generator 構成のままパラメータ違いを 8 面自動生成し、キーボードで即遷移させます。通信は同一オリジンの BroadcastChannel(seedshade-deck-v1)だけで、pnpm bridge も ?bridge=1 も不要です。
デッキ窓では AudioEngine / Renderer は起動しません(マイク許可プロンプトも、常時の GPU 負荷も無し)。メイン窓をプロジェクター出力、Deck を手元の操作卓にする運用を想定しています。
This is the beginning of the README. Read the rest at the original. Read the full README ↗