← PROJECTS

LaserSpat

自然言語からILDAレーザーパターンを生成するAIシステム。Claude APIがテキストプロンプトを数学関数に変換し、Helios DAC経由でレーザー出力またはブラウザ上でリアルタイムシミュレーションを行う。

Natural Language → ILDA Helios DAC Claude API Node.js + Express 2026
View on GitHub

概要

LaserSpatは、自然言語のプロンプトをILDA規格のレーザーパターンに変換するシステムである。ユーザーが「8本のビームが回転するファン」「リサジュー曲線を描く」などテキストで指示すると、Claude APIが数学的アニメーション関数を含むJSONを生成し、リアルタイムでレーザー出力を制御する。

ビームショーモード(空間演出)とグラフィックスキャンモード(描画)の2つの表現形式に対応。Helios Laser DAC経由でUSB接続されたレーザープロジェクターに直接出力するほか、ブラウザ上のソフトウェアシミュレーターでリアルタイムプレビューが可能。

BEAM SHOW GRAPHICS SCAN
AI GENERATION

自然言語からレーザーパターン生成

Claude APIがテキスト記述を数学的アニメーション関数に変換。pointIndex / segIndex変数によるパラメトリック制御で複雑なパターンを表現する。

DUAL MODE

ビームショー + グラフィックスキャン

ビームモードでは複数のレーザービーム端点を空間的に配置。スキャンモードでは円・星・リサジュー等の形状パスをレーザーで描画する。

HARDWARE

Helios DAC ハードウェア出力

@laser-dac/helios経由でUSB接続のHelios Laser DACに直接出力。30kpps / 30fps。ブランキング・ドウェル・パス最適化を自動実行。

SIMULATOR

ブラウザ上リアルタイムシミュレーター

4パスの加算合成レンダリングによるリアルなレーザー可視化。残像(パーシステンス)エフェクト付き。10種のビルトインプリセット搭載。

モード

Beam Show

複数のレーザービームの端点を数式で制御。各ビームは原点(下中央)から端点へのラインとして描画される。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)" }
  ]
}

Graphics Scan

形状ベースのレーザー描画。各シェイプは 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" }
  ]}
}

アーキテクチャ

自然言語プロンプトからレーザー出力までのフレーム生成パイプライン。

自然言語プロンプト Claude API JSON (数学関数) Beam / Scan Engine Frame Generator Point Optimizer Helios DAC

フレーム生成パイプライン

ステージ モジュール 処理内容
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.jsExpress HTTP + WebSocketサーバー、モード切替、フレームパイプライン
src/claude-api.jsAnthropic 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.jsHelios DAC USB出力ラッパー(@laser-dac/helios)
src/simulator-sender.jsブラウザ向けWebSocketフレーム配信
public/index.htmlレーザーシミュレーターUI(2キャンバス + プリセット + トランスポート)

シミュレーター

ハードウェアなしでレーザーパターンをプレビューできるブラウザベースのシミュレーター。加算合成レンダリングによるリアルなレーザー表現。

RENDERING

4パス加算合成

ワイドグロー → ミディアムグロー → ブライトコア → ホワイトセンターの4層レンダリング。globalCompositeOperation: 'lighter' による加算合成でリアルなレーザー光を再現。

PERSISTENCE

残像エフェクト

2キャンバスシステム: persistCanvas(残像)+ laserCanvas(現在フレーム)。0〜98%の残像スライダーでレーザートレイルを調整可能。

PRESETS

10種のビルトインプリセット

ビーム5種(Rotating Fan, Beam Curtain, Spiral Tunnel, Converge Pulse, Wave Sweep)+ スキャン5種(Circle, Multi Shape, Lissajous, Star, Spiral)を搭載。

OVERLAY

シミュレーション情報

ポイント数、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

依存パッケージ

パッケージ 用途
expressHTTP + 静的ファイルサーバー
wsWebSocket(リアルタイムフレーム配信)
@laser-dac/coreレーザーDAC抽象レイヤー(optional)
@laser-dac/heliosHelios DAC USB通信(optional)

ハードウェア(任意)

項目 仕様
DACHelios Laser DAC (USB)
スキャンレート30,000 kpps
フレームレート30 fps
ブランキング5ポイント(形状間)
ドウェル3ポイント(コーナー安定化)
ポイントバジェット1,000 点/フレーム(上限)