自然言語からILDAレーザーパターンを生成するAIシステム。Claude APIがテキストプロンプトを数学関数に変換し、Helios DAC経由でレーザー出力またはブラウザ上でリアルタイムシミュレーションを行う。
LaserSpatは、自然言語のプロンプトをILDA規格のレーザーパターンに変換するシステムである。ユーザーが「8本のビームが回転するファン」「リサジュー曲線を描く」などテキストで指示すると、Claude APIが数学的アニメーション関数を含むJSONを生成し、リアルタイムでレーザー出力を制御する。
ビームショーモード(空間演出)とグラフィックスキャンモード(描画)の2つの表現形式に対応。Helios Laser DAC経由でUSB接続されたレーザープロジェクターに直接出力するほか、ブラウザ上のソフトウェアシミュレーターでリアルタイムプレビューが可能。
Claude APIがテキスト記述を数学的アニメーション関数に変換。pointIndex / segIndex変数によるパラメトリック制御で複雑なパターンを表現する。
ビームモードでは複数のレーザービーム端点を空間的に配置。スキャンモードでは円・星・リサジュー等の形状パスをレーザーで描画する。
@laser-dac/helios経由でUSB接続のHelios Laser DACに直接出力。30kpps / 30fps。ブランキング・ドウェル・パス最適化を自動実行。
4パスの加算合成レンダリングによるリアルなレーザー可視化。残像(パーシステンス)エフェクト付き。10種のビルトインプリセット搭載。
複数のレーザービームの端点を数式で制御。各ビームは原点(下中央)から端点へのラインとして描画される。pointIndex 変数でビームごとの位相差を表現し、回転ファン・カーテン・スパイラル等のパターンを生成する。
{
"mode": "beam",
"beamCount": 8,
"mathFunctions": [
{ "parameter": "x",
"equation": "0.85 * cos(twopi * t/4 + pointIndex * twopi/8)" },
{ "parameter": "y",
"equation": "0.85 * sin(twopi * t/4 + pointIndex * twopi/8)" },
{ "parameter": "red",
"equation": "0.5 + 0.5 * sin(pointIndex/8 + t)" }
]
}
形状ベースのレーザー描画。各シェイプは segIndex(セグメントインデックス)でパス上の点を定義し、回転・スケール・移動のトランスフォームをアニメーションする。ブランキングはシステムが自動挿入。
{
"mode": "scan",
"shapes": [{
"name": "circle",
"segments": 200,
"closed": true,
"x": "0.6 * cos(twopi * segIndex/200)",
"y": "0.6 * sin(twopi * segIndex/200)"
}],
"animation": { "transforms": [
{ "target": "circle",
"property": "rotation",
"equation": "twopi * t / 6" }
]}
}
自然言語プロンプトからレーザー出力までのフレーム生成パイプライン。
| ステージ | モジュール | 処理内容 |
|---|---|---|
| 1 | beam-engine.js / scan-engine.js |
数式を評価し、正規化座標 (-1.0〜1.0) のポイント列を生成 |
| 2 | frame-generator.js |
正規化座標をILDA 16ビット座標に変換 (x * 32767) |
| 3 | point-optimizer.js |
ブランキングポイント挿入、ドウェルポイント、パス最適化(最近傍法) |
| 4 | helios-sender.js |
@laser-dac/helios 経由で USB 送信 (30kpps) |
| 4' | simulator-sender.js |
WebSocket経由でブラウザにフレームデータを配信 |
| ファイル | 役割 |
|---|---|
server.js | Express HTTP + WebSocketサーバー、モード切替、フレームパイプライン |
src/claude-api.js | Anthropic APIクライアント(プロンプトキャッシュ付き) |
src/beam-engine.js | ビームショーエンジン(pointIndex変数、Float32Array状態管理) |
src/scan-engine.js | グラフィックスキャンエンジン(shapes + segIndex + transforms) |
src/system-prompt-beam.js | ビームモード用Claude APIシステムプロンプト |
src/system-prompt-scan.js | スキャンモード用Claude APIシステムプロンプト |
src/math-parser.js | 再帰下降型数式パーサー(sin, cos, noise, random, if, smoothstep等) |
src/frame-generator.js | 正規化座標 → ILDA 16ビットポイント列変換 |
src/point-optimizer.js | ブランキング挿入・ドウェル・パス最適化・ポイントバジェット制御 |
src/helios-sender.js | Helios DAC USB出力ラッパー(@laser-dac/helios) |
src/simulator-sender.js | ブラウザ向けWebSocketフレーム配信 |
public/index.html | レーザーシミュレーターUI(2キャンバス + プリセット + トランスポート) |
ハードウェアなしでレーザーパターンをプレビューできるブラウザベースのシミュレーター。加算合成レンダリングによるリアルなレーザー表現。
ワイドグロー → ミディアムグロー → ブライトコア → ホワイトセンターの4層レンダリング。globalCompositeOperation: 'lighter' による加算合成でリアルなレーザー光を再現。
2キャンバスシステム: persistCanvas(残像)+ laserCanvas(現在フレーム)。0〜98%の残像スライダーでレーザートレイルを調整可能。
ビーム5種(Rotating Fan, Beam Curtain, Spiral Tunnel, Converge Pulse, Wave Sweep)+ スキャン5種(Circle, Multi Shape, Lissajous, Star, Spiral)を搭載。
ポイント数、FPS、現在モード、API接続状態をリアルタイム表示。トランスポートバーで再生・一時停止・巻き戻し・速度制御。
# Install dependencies
npm install
# Set API key
export ANTHROPIC_API_KEY="sk-ant-..."
# Start development server
npm run dev
# Open browser at http://localhost:3000
| パッケージ | 用途 |
|---|---|
express | HTTP + 静的ファイルサーバー |
ws | WebSocket(リアルタイムフレーム配信) |
@laser-dac/core | レーザーDAC抽象レイヤー(optional) |
@laser-dac/helios | Helios DAC USB通信(optional) |
| 項目 | 仕様 |
|---|---|
| DAC | Helios Laser DAC (USB) |
| スキャンレート | 30,000 kpps |
| フレームレート | 30 fps |
| ブランキング | 5ポイント(形状間) |
| ドウェル | 3ポイント(コーナー安定化) |
| ポイントバジェット | 1,000 点/フレーム(上限) |