← PROJECTS

SYNTH CV AI

自然言語からモジュラーシンセサイザーの制御電圧(CV)を生成するAIシステム。8チャンネルのCV信号を48kHzでリアルタイム評価し、DCカップルドオーディオインターフェース経由で出力する。

Claude API PortAudio 48 kHz CV 8 Channel WebSocket Node.js v3.0

概要

Synth CV AI は、自然言語のプロンプト(例:「ユークリッドゲートパターン付き上昇アルペジオ」)をモジュラーシンセサイザー用のリアルタイムCV信号に変換する。Claude API が音楽的な記述を解釈し、数学関数を生成。48kHzで評価された信号は、DCカップルドオーディオインターフェース(Expert Sleepers ES-8/ES-9等)を経由してアナログ制御電圧として出力される。

言語から電圧へ。テキストで記述された音楽的意図が、V/Oct ピッチ、ゲートパターン、フィルタモジュレーション、エンベロープとして物理的なシンセサイザーを駆動する。

アーキテクチャ

User Prompt (Natural Language) | v +-------------+ WebSocket +--------------------+ | index.html |<--------------->| server.js | | (CV Scope) | | Express + WS | +-------------+ +--------+-----------+ | +---------------+---------------+ v v v claude-api.js cv-system-prompt.js cv-engine.js (Claude API) (CV domain prompt) (48kHz eval) | v audio-output.js (naudiodon2 / PortAudio) | v DC-coupled Audio IF (ES-8, ES-9, MOTU) | v Modular Synth

ブラウザからのプロンプトはWebSocket経由でサーバーに送られ、Claude APIが数学関数のJSONを返す。CVエンジンがサンプル単位(48kHz)で評価し、PortAudioを通じてDCカップルド出力からモジュラーシンセへ直結する。

CV チャンネル

CH 1
V/Oct
±5V
ピッチ CV — 1V/オクターブ規格
CH 2
Gate
0 – 5V
ノートオン/オフ トリガー
CH 3
Filter
±5V
フィルタカットオフ変調
CH 4
VCA
0 – 5V
振幅 / VCA レベル
CH 5
Mod 1
±5V
汎用モジュレーション 1
CH 6
Mod 2
±5V
汎用モジュレーション 2
CH 7
Clock
0 – 5V
BPM 同期クロック
CH 8
Envelope
0 – 5V
エンベロープ CV

使い方

テキストで音楽的なアイデアを記述するだけで、AIが適切なCV関数を生成する。以下はプロンプトの例:

セットアップ

  1. DCカップルドオーディオインターフェース(ES-8, ES-9, MOTU等)を接続
  2. アプリを起動し、ブラウザで http://localhost:4400 を開く
  3. Audio タブでデバイスをスキャン・選択・接続
  4. プロンプトを入力してCV生成を開始

JSON 出力フォーマット

Claude APIはプロンプトに対して以下の構造のJSONを返す。各チャンネルに数学関数が割り当てられ、ビート単位でループする。

{
  "mathFunctions": [
    {"channel": "voct",   "equation": "quantize(noise(floor(beat*2))*0.4, 12)",  "startTime": 0, "endTime": 16},
    {"channel": "gate",   "equation": "if(fmod(beat*2,1)<0.4, 1, 0)",            "startTime": 0, "endTime": 16},
    {"channel": "filter", "equation": "0.3 + 0.3*sin(twopi*beat/8)",             "startTime": 0, "endTime": 16},
    {"channel": "vca",    "equation": "max(0, 1 - fmod(beat*2,1)*3)",            "startTime": 0, "endTime": 16},
    {"channel": "clock",  "equation": "if(fmod(beat,1)<0.05, 1, 0)",             "startTime": 0, "endTime": 16}
  ],
  "bpm": 120,
  "channelMap": {"voct":1,"gate":2,"filter":3,"vca":4,"mod1":5,"mod2":6,"clock":7,"env":8},
  "loopStartTime": 0,  "loopEndTime": 16,  "repeatCount": -1
}

CV 関数

CV 専用関数

quantize(v, semi)セミトーン量子化
voct(midiNote)MIDI → V/Oct 変換
gate(v)二値化 (0 / 1)
seq(beat, v1, v2, ...)ステップシーケンサー
euclidean(steps, pulses, rot, beat)ユークリッドリズム
env(trig, a, d, s, r)ADSR エンベロープ
clock(div)BPM 同期クロック
lfo(shape, freq)LFO (sin / saw / sq / tri)
sh(trig, value)サンプル & ホールド
slew(value, rate)スルーレートリミッター
scale(v, type)スケール量子化
noise(x) / random(seed)ノイズ / 擬似乱数

標準関数

sin · cos · tan · abs · sqrt · floor · ceil · exp · log · pow · min · max · fmod · smoothstep · if · atan2 · clamp

変数

t · beat · beatPhase · bar · bpm · channelIndex · sampleRate · pi · twopi · halfpi · e

技術仕様

48 kHz
サンプルレート
8 ch
CV 出力チャンネル
384K
評価 / 秒
5.33 ms
レイテンシ (256 samples)
JIT
new Function() コンパイル
±5V
出力電圧範囲

技術スタック

Node.js + Express (HTTP/WebSocket) / naudiodon2 (PortAudio) / Claude API (Anthropic) / JITコンパイル数式パーサー / DCカップルドオーディオIF (Expert Sleepers ES-8/ES-9, MOTU等)