← PROJECTS

CUDA
VJ

NVIDIA DGX Spark向けGPUカーネル・フレームバッファVJエンジン。
42種のビジュアルエフェクト + 18種のポストプロセッシング、1ピクセル1スレッドで描画。
マクロパラメータルーティングによるオーディオリアクティブ。サブマイクロ秒の制御レイテンシ。
DGX Spark — Grace Blackwell GB10 sm_121 — Unified Memory CUDA C 7,587行 MITライセンス
GitHubで見る

概要

42
ビジュアルエフェクト
18
ポストプロセッシングFX
<1μs
制御レイテンシ(SHM)
105ns
共有メモリ往復時間
8
オーディオソースタイプ
7
ブレンドモード

すべてのビジュアルエフェクトは純粋なCUDAカーネル — ピクセル座標、時間、オーディオデータ、8つのパラメータを入力とし、色を出力する数学関数です。テクスチャなし、事前計算アセットなし。毎フレームGPU上でゼロから計算されます。

NVIDIA DGX Sparkでのライブパフォーマンス向けに設計。Grace Blackwellの統合メモリアーキテクチャを活用し、CPUとGPUが同じ物理メモリを共有します。外部プロセスは共有メモリにパラメータを<1μsのレイテンシで書き込み — ネットワークベースの制御プロトコルより2桁高速です。

42種のエフェクト

リアルタイムグラフィックスの歴史を5カテゴリで網羅 — 1980年代デモシーンからモダンなSDFレイマーチングまで。

Classic

00
PLASMA
sin wave interference
01
TUNNEL
polar coordinate
02
FIRE
FBM noise flame
03
MOIRÉ
concentric circles
04
ROTOZOOM
rotating zoom
05
STARFIELD
z-axis star flight

Organic

06
JULIA
julia set fractal
07
MANDELBROT
auto-zooming fractal
08
CELLULAR
voronoi noise
09
FBM FLOW
domain warping
10
METABALLS
organic blobs
11
LISSAJOUS
curve trails

Geometric

12
KALEIDOSCOPE
mirror symmetry
13
GRID WARP
warping grid
14
CONCENTRIC
concentric waves
15
SIERPINSKI
fractal folding
16
SPHERE
raymarched 3D
17
STROBE
strobe / flash

Demoscene

18
COPPER BARS
amiga copper
19
RASTER BARS
scanline bars
20
TWISTER
rotating ribbon
21
WATER
water ripples
22
DOT TUNNEL
point tunnel
23
SHADEBOBS
additive trails
24
SINE SCROLL
sin wave scroll
25
CHECK DEFORM
checker deform
26
VOXEL LAND
pseudo-voxel
27
KEFREN BARS
kefren bars
28
LENS
lens distortion
29
INTERFERENCE
beat interference

Modern

30
TRUCHET
random tile pipes
31
HEXAGONAL
hexagonal grid
32
ATTRACTOR
lorenz attractor
33
FLOW FIELD
curl noise flow
34
CAUSTICS
underwater caustics
35
SPIRAL
spiral / vortex
36
IFS
iterated function
37
GYROID
gyroid surface
38
MATRIX RAIN
digital rain
39
OSCILLOSCOPE
waveform display
40
DIAMOND
diamond plasma
41
REACT-DIFF
reaction diffusion

18種のポストプロセッシング

メインエフェクトパイプラインの後に適用。各ポストエフェクトはマクロシステムを通じてオーディオにより自動駆動されるインテンシティパラメータを持ちます。複数のポストエフェクトは順次チェイン — 1つの出力が次の入力になります。

シグナルチェイン

エフェクト A/B
ブレンド
フィードバック
BLOOM
CHROMATIC
GLITCH
THRESHOLD
ブラックアウト
HUD
HDMI
00
BLOOM
gaussian glow
01
CHROMATIC
RGB separation
02
GLITCH
line shift + block noise
03
SCANLINES
CRT scan lines
04
PIXELATE
mosaic
05
EDGE
sobel contour
06
BARREL
barrel distortion
07
POSTERIZE
tone reduction
08
INVERT
color inversion
09
SOLARIZE
solarization
10
HALFTONE
dot screen
11
GRAIN
film grain
12
VHS
VHS tracking
13
MIRROR
kaleidoscope post
14
HUE ROTATE
hue shift
15
SHAKE
screen shake
16
ZOOM BLUR
radial blur
17
THRESHOLD
binarize

マクロルーティング

マクロシステムはオーディオ解析をリアルタイムでポストエフェクトパラメータにマッピングします。各マクロはオーディオソースをレスポンスカーブを通してポストエフェクトターゲットにルーティング。DJが音楽を流せば、ビジュアルが自動的に反応します。

デフォルトルーティング

ソース
カーブ
ターゲット
bass_attack
√x
BLOOM 80%
bass_attack
linear
SHAKE 50%
bass
BARREL 40%
mid
linear
CHROMATIC 60%
high
gate
GLITCH 70%
volume
smooth
ZOOM BLUR 30%
beat_phase
pulse
SCANLINES 30%
bass_attack
√x
GRAIN 40%

8種のオーディオソース

周波数帯域
bass / mid / high / volume

低域(<200Hz)、中域(200–4kHz)、高域(>4kHz)のRMSエネルギーと全体音量。GPU FFTで毎フレーム計算。

トランジェント検出
bass_attack / beat

低域エネルギーの急激な増加からのオンセット検出。キックドラムやベースドロップで発火。ゲートスタイルエフェクト用のバイナリビートトリガー。

テンポラル
beat_phase / bpm_norm

現在のビート内のフェーズ位置(0→1)と、0–1範囲に正規化されたBPM(60–180 BPM)。テンポ同期モジュレーションを実現。

8種のレスポンスカーブ

linear

直接1:1マッピング。比例応答。

square (x²)

緩やかな立ち上がり、高レベルで強力。大音量まで繊細。

sqrt (√x)

静かな信号に高速応答。高感度。

exp

指数関数。信号がピークするまでほぼ無反応。

gate

バイナリ。閾値以上でオン、以下でオフ。ハードカット。

invert (1-x)

無音時に最大効果、音量に応じてフェードアウト。

pulse

信号を通じたサイン波。リズミカルなモジュレーション。

smooth (smoothstep)

S字カーブ。穏やかな立ち上がりと減衰。オーガニックな質感。

アーキテクチャ

Any Process (Python / SuperCollider / C / Rust / OSC) │ │ shared memory write (~105ns round-trip) ▼ ┌─ /dev/shm/cuda_vj ──────────────────────────┐ │ Header (64B) + Params (1024B) │ │ Audio (4096B) + Spectrum (2048B) │ │ = 8192 bytes total │ └──────────────────────┬───────────────────────┘ │ unified memory │ (Grace Blackwell NVLink-C2C) ▼ ┌─ GPU Kernels ────────────────────────────────┐ │ │ │ Layer A (any of 42 FX) ─┐ │ │ ├→ Blend (7 modes)│ │ Layer B (any of 42 FX) ─┘ │ │ │ Feedback Loop │ │ │ │ │ Post Chain │ │ (18 FX, chained) │ │ │ │ │ Audio → GPU FFT → bass/mid/high │ │ │ Macro Router → Post Intensities │ │ │ ▼ │ │ Framebuffer │ └──────────────────────────────────────────────┘ │ ▼ SDL2 → HDMI Display / Projector

制御インターフェース

共有メモリ
105nsレイテンシ — /dev/shm/cuda_vj

256個のfloatパラメータをPOSIX共有メモリに直接書き込み。あらゆる言語、あらゆるプロセスから。シリアライズオーバーヘッドゼロ。

OSC
UDPポート9000

標準Open Sound Control。TouchOSC、Max/MSP、Ableton、SuperColliderと互換。約10msレイテンシ。

キーボード
テンキーバンクで42エフェクト

フルライブコントロール — エフェクト選択、パラメータ調整、クロスフェード、プリセット、ブラックアウト、ディスプレイ切替。設定不要。

技術仕様

エフェクトカーネルパターン

__global__ void fx_plasma(uint32_t* fb, VJParams prm) {
    int x, y;
    if (!pixel_setup(prm, x, y)) return;

    float u = (float)x / prm.width;
    float v = (float)y / prm.height;
    float t = prm.time * (0.5f + prm.p[1]);

    float val = sinf(u * 10.0f * prm.p[0] + t)
              + sinf(v * 8.0f + t * 1.3f)
              + sinf((u + v) * 6.0f + t * 0.7f)
              + prm.bass * 2.0f;

    float3 col = hsv2rgb(val * 0.1f + prm.p[2], 0.8f, 0.9f);
    output_pixel(fb, x, y, prm, col);
}

GPU互換性

DGX Spark GB10
sm_121 — メインターゲット

統合メモリ。CPUとGPU間のゼロコピー。NVLink-C2Cコヒーレントインターコネクト。

RTX 5090
sm_120

cudaMemcpyによるディスクリートGPUモード。全機能対応。

RTX 4090 / A100
sm_89 / sm_80

MakefileのSMオーバーライドでサポート。ディスクリートメモリパス。