# SynapseRack Documentation (llms-full.txt)
> SynapseRack is a node-based VJ / realtime visual performance application for Windows and macOS. This file contains the full official documentation followed by the complete node reference. Documentation body text is Japanese (canonical). Node ids, port ids and types are exact and stable — they are also the keys used by the Synapse Apps scripting API (synapse.modules).
# Part 1: Guides
## Hapコーデックとは
URL: https://synapserack.com/ja/docs/about-hap-codec
# Hapコーデックとは
Hapコーデックとは低負荷で高速に再生できる映像の形式です。
再生時の負荷が減るというメリット、映像ファイルの容量が増えるというデメリットがあります。
基本的にSynapseRackではHapコーデックの使用を推奨します。
## 変換方法
[Adobe Media Encoder](https://www.adobe.com/jp/products/media-encoder.html)や[ffmpeg](https://ffmpeg.org/)を利用することでHapコーデックに変換できます。
細かな設定が必要無い場合は、SynapseRack向けのHapエンコーダー[SynapseMediaEncoder](https://sainakey.booth.pm/items/4524404)がおすすめです。
---
## Apps SDK(プラグイン開発)
URL: https://synapserack.com/ja/docs/apps-sdk
Description: JavaScriptでSynapseRackを操作する自作アプリ(プラグイン)を書く仕組み。AppHubからの作り方、アプリフォルダの場所、APIの概観、実行・リロード・コンソール、MCPサーバーまでを実装に沿って解説します。
SynapseRack の中で動く**自分専用のツールを、HTML と JavaScript で作れる**仕組みです。
アプリは SynapseRack のウィンドウとして開き、そこから**ノードの生成・接続・パラメータ操作**や、
Layer の操作、映像の出力(MediaOut / Spout / Syphon)などを行えます。
ビルド手順はありません。フォルダに `index.html` を置いて、保存したら勝手に読み直されます。
そして**アプリの雛形には、AIエージェント向けのAPIリファレンスがそのまま同梱されます**。
「フォルダごとAIに渡して相談する」ことを前提にした作りになっています。
## アプリとは何か
1つのアプリ=**1つのフォルダ**です。中に次の2つがあれば、それはアプリです。
| ファイル | 役割 |
|---|---|
| `synapse-app.json` | マニフェスト。`id` / `name` / `version` / `entry` / `apiVersion` / `capabilities` / `multiInstance` |
| `index.html`(= `entry`) | 入口。ここから読み込んだJSが `window.synapse` 越しに SynapseRack を操作します |
`entry` を書き換えれば入口のファイル名は変えられます(既定は `index.html`)。
## アプリの置き場所
インストール済みアプリの置き場所は、**Source Directory と同じ根っこの下にある `Apps` フォルダ**です。
```
/SainaWorks/SynapseRack/Apps/
```
既定では Windows が `C:/SainaWorks/SynapseRack/Apps`、macOS が `~/SainaWorks/SynapseRack/Apps` になります
(親パスの変え方は [VJ素材を読み込むパス(Source Directory)を指定する](./source-directory) と同じ `Settings.json` です)。
> **このフォルダの「直下」だけが見られます。**
> `Apps` の直下のフォルダのうち、`synapse-app.json` を持つものがライブラリに載ります。
> 起動時とAppHubを開いたときに走査され、さらにフォルダの追加・削除・リネームは監視されているので、
> **アプリフォルダを放り込めばその場で一覧に出ます**(Ableton の .ablx を放り込む感覚です)。
配布されたアプリを入れるときも、このフォルダにフォルダごとコピーするだけです。
## 始め方
### Apps メニュー
メニューバーの **Apps** に、次の内容が並びます。
| 項目 | 動き |
|---|---|
| **App Hub…** | AppHub ウィンドウを開きます |
| (アプリ名の一覧) | クリックで起動。**すでに動いているアプリは頭に ● が付き**、クリックすると窓が前に出ます |
| **Open Apps Folder** | 上記の `Apps` フォルダを OS のファイラで開きます |
### AppHub
アプリの管理はすべてこのウィンドウで行います。上部のツールバーは3つです。
| ボタン | 動き |
|---|---|
| **New** | 名前欄が開きます。**Create** で `Apps` フォルダの中に新規アプリを作成。**Elsewhere…** を選ぶと置き場所を自分で指定できます |
| **Add** | 既存のフォルダをアプリとして登録します(`Apps` フォルダの外でもOK。`dev` タグが付き、次回起動以降も残ります) |
| **Folder** | `Apps` フォルダを OS のファイラで開きます |
名前欄の下には「どこに作られるか」が常に表示されます。
作成したフォルダ名は入力した名前から作られ(使えない文字は `-` に置換)、同名がある場合は日時が付きます。
各アプリの行は、左端の**状態ドット**(緑=実行中/黄=起動中・リロード中/赤=失敗/灰=停止)と名前と **Open** ボタン。
`⋯` を押すと二次操作が開きます。
| 項目 | 動き |
|---|---|
| **Stop** / **Reload** | 停止/再読み込み |
| **Console** | そのアプリ専用のコンソールウィンドウを開きます |
| **Folder** | そのアプリのフォルダを OS のファイラで開きます |
| **Info** | マニフェストの内容(id / name / version / apiVersion とホスト側の版 / capabilities)と、実行中なら所有リソースの内訳・診断情報 |
| **Reveal** | そのアプリが内部に持っている隠しノードグラフに潜ります(戻るのはノードエディタの Back) |
| **Unlink** | Add で登録したものだけに出ます。**フォルダは消えません**。一覧から外すだけです |
| **Hot Reload** | ファイル変更で自動リロードするか(既定ON。インスタンスごとの設定で、Stop すると既定に戻ります) |
## 新規アプリの中身と、AIに相談する進め方
New で作ったフォルダには、`synapse-app.json` に加えて次の10ファイルがコピーされます。
| ファイル | 中身 |
|---|---|
| `index.html` / `main.js` / `style.css` | 動く雛形。Webウィンドウに色を描いて MediaOut に出し、Hueコントロールを1本生やすところまで実装済み |
| `synapse-sdk.js` | 便利レイヤー(`window.SynapseSDK`)。使わなくてもアプリは書けます |
| `synapse.d.ts` | 全APIの型定義 |
| `SYNAPSE_API.md` | APIリファレンス全文 |
| `NODE_CATALOG.md` | 全ノードの id・ポート・設定可能メンバの一覧 |
| `SHADER_EFFECTS.md` | シェーダーエフェクト(Preview機能)の解説 |
| `SAMPLES.md` | 公式サンプルアプリ集への案内 |
| `DESIGN.md` | 「SynapseRackの中に居るように見える」UIの作法 |
> **この同梱物一式が、そのままAIエージェントへの入力です。**
> `SYNAPSE_API.md` は冒頭に「このファイルだけを読んだAIアシスタントが、一発で動く `index.html` を書けるように書いてある」と明記された、
> AI向けの文書です。AppHub の **Folder** でフォルダを開き、そのフォルダを Claude Code / ChatGPT などのエージェントに渡して
> 「このフォルダの `SYNAPSE_API.md` と `NODE_CATALOG.md` を読んで、〜するアプリにして」と頼むのが標準的な進め方になります。
公式のサンプルアプリ(A/Bデッキミキサー、背景ルーパー、コントロールサーフェス、MIDIギャラリー等)は
[SynapseRack-Apps-SDK](https://github.com/SainaKey/SynapseRack-Apps-SDK) の `samples/` にあります。
フォルダごとコピーすれば動く形なので、パターンを真似したいときはこちらを読ませるのが早いです。
## APIの概観
すべての呼び出しは `window.synapse.<グループ>.<メソッド>()` で、Promise を返します。
`synapse-sdk.js` を読み込むと、同じことをハンドルオブジェクト経由で短く書けます。
### 1. 接続して「準備完了」を伝える
```js
const app = await SynapseSDK.connect(); // window.synapse を待って ping する
// ...ここでアプリが使うものを全部作る...
await app.ready(); // 作り終えたら1回だけ呼ぶ
```
`app.ready()` は必須です。リロード時、前回作ったリソースは「まだ請求されていない」状態で生かされ、
新しい `boot()` が**同じ `id`** で作り直すか、`ready()` が来るか、タイムアウトするまで待ってから片付けられます。
これが「編集して保存 → 作り直されるが、ユーザーが引いた配線は切れない」を成立させています。
### 2. ノードを作る・値を書く・つなぐ
`NODE_CATALOG.md` の表に載っている **id** をそのまま `type` に渡します。
```js
// 作る(返り値の id がそのノードのmoduleId)
const lfo = await synapse.modules.create({ type: 'LFO' });
const blend = await synapse.modules.create({ type: 'BlendRT' });
// 設定可能メンバに値を書く(パスはカタログの settable 列の名前。ドット区切り不可)
await synapse.modules.set(blend.id, 'mixInput', 0.5);
// つなぐ(位置引数。ポート名はカタログの in/out の id。省略時は 'Out' / 'In')
await synapse.modules.connect(lfo.id, 'Value', blend.id, 'Mix');
```
同じカタログは実行時にも引けます: `const types = await synapse.modules.types();`
> **`modules.create` は「同じ id で呼び直すと同じもの」にはなりません。**
> 2回呼べばノードが2つできます。冪等にしたいなら返ってきた `moduleId` を自分で覚えておくか、
> 後述の `render` / `web` / `output` / `layers` 側(`id` を渡すと get-or-create)を使ってください。
### 3. Layer を触る/Layer の絵をテクスチャとして取り出す
```js
const selected = await synapse.layers.selected();
await synapse.layers.setOpacity(selected.id, 0.5);
// そのLayerの出力を textureId として取り出す(id を渡すのでリロードしても同じもの)
const deckA = await synapse.layers.createTextureSource(selected.id, { id: 'deck-a' });
```
`textureId` は**映像の共通通貨**です。Layerの出力も、Webウィンドウの描画結果も、ミキサーの結果も同じ文字列で表され、
ミキサーの入力にも `output.publish` にも、アプリ内プレビューにもそのまま渡せます。
### 4. 自分の絵を SynapseRack の映像ソースとして出す
```js
const canvas = await app.webWindow('canvas', {
title: 'Canvas',
html: '',
width: 960, height: 540
});
await app.publishMedia('main-out', { source: canvas, name: 'My Output' });
```
`publishMedia`(= `output.publish`)は MediaOut ノードを立てます。
**安定した `id` を渡しておけば**、アプリをリロードしても、プロジェクトを開き直しても同じノードが再利用され、
ユーザーがそこから引いた配線も繋ぎ直されます。
### 5. 連続的な変化はホスト側に任せる
```js
const mixer = await app.mixer('mix', { type: 'crossfade', inputs: [deckA, canvas], value: 0.5 });
const fader = await app.control('fade', { label: 'Fade', min: 0, max: 1, value: 0.5, midi: true });
fader.onChange((v) => mixer.value.set(v));
await mixer.value.lfo({ rate: '1', shape: 'sine', min: 0, max: 1 }); // 1小節で1周
await mixer.value.follow({ source: 'audio.bass', min: 0, max: 1, smooth: 0.5 });
```
`rate` は小節単位の音楽的分割(`'1/4'` `'1/2'` `'1'` `'2'` `'4'`。`{ hz: n }` でフリーラン)、
`shape` は `sine` / `triangle` / `saw` / `square`、`follow` の `source` は
`audio.level` / `audio.bass` / `audio.mid` / `audio.high` です。
`controls.register`(SDKでは `app.control`)に `midi: true` を付け、対応するDOM要素を
`data-synapse-control=""` か `anchor` で結び付けると、**SynapseRack のMIDIラーンモードで、
あなたのページ上のUIがそのまま学習対象**になります。専用の「MIDI待受」ボタンを自作する必要はありません。
## ノードの id とポート名を調べる
`modules.create` / `modules.connect` は**正確な id とポートid**を要求します。調べ方は4つあります。
| 手段 | 使いどころ |
|---|---|
| アプリフォルダの `NODE_CATALOG.md` | オフラインで完結。AIに読ませる前提の一覧(id / タイトル / 入力 / 出力 / settable) |
| `await synapse.modules.types()` | 実行時に同じ内容を取得。手元のバージョンの実物と必ず一致します |
| [ノードリファレンス](./nodes) (`/ja/docs/nodes/`) | 人間が読む用。ポート表と解説 |
| `https://synapserack.com/mcp` / `https://synapserack.com/llms-full.txt` | AIエージェント用。MCPサーバーとして繋ぐか、全文をまとめて読ませる |
MCPサーバーには `search_docs` / `get_doc` / `list_nodes` / `get_node` があり、
ドキュメントとノードリファレンスをそのまま引けます。
## 実行・リロード・デバッグ
### ホットリロード
`.html` / `.js` / `.css` / `.json` を**保存するだけで、実行中のアプリが約1秒で自動リロード**されます(`node_modules` と `.git` は対象外)。VS CodeでもAIコーディングツールでも、保存の仕方を気にする必要はありません。
> 止めたいときは AppHub の **Hot Reload** をOFFにします(そのインスタンスの間だけ有効)。
### コンソール
アプリの `console.log` / エラー、ブリッジのログ、ホットリロードの通知は、すべて1つのコンソールに集まります。見る場所は2か所です。
- **アプリのウィンドウ下部の「Console」ボタン** — その場で開閉できます
- **AppHub の `⋯` → Console** — 独立したウィンドウ(アプリを停止しても「App stopped.」表示になって残ります)
どちらにも **Copy** があり、表示中のログをそのままクリップボードに入れます(AIに貼って渡すための導線です)。
**Clear** は表示を消すだけで、内部のバッファは残ります。
アプリウィンドウ側にはさらに **Debug** トグルがあり、ONにするとブリッジの通信そのものもログに流れます。
エラーは構造化されています。失敗した呼び出しは `Error` を投げ、`err.synapse` に
`{ code, message, method, hint }` が入ります(`code` は `unknown_method` / `invalid_params` / `not_found` / `internal`)。
原因を聞くときは、この中身ごと渡すのが最短です。
### MCPサーバー(開発ツール)
AppHub の一番下の **Developer** を開くと、**MCP Server** のトグルとポート欄があります。
ONにすると `http://127.0.0.1:8765/`(既定ポート)で MCP サーバーが立ち、
AIコーディングアシスタントが**動いている SynapseRack に対して直接**次の操作をできるようになります。
| ツール | 内容 |
|---|---|
| `list_apps` | 実行中のアプリインスタンス一覧 |
| `invoke` | 実行中のアプリに対して、ドキュメントにある任意のメソッドを呼ぶ |
| `read_console` | そのアプリのコンソールを読む(severityで絞れます) |
| `reload_app` | リロード |
| `graph_state` / `graph_node_types` / `graph_create_node` / `graph_delete_node` / `graph_connect` / `graph_disconnect` | **ユーザーの見えているノードグラフ**を読む・編集する |
「編集 → `reload_app` → `read_console` でエラー確認 → `invoke` で結果を検証」というループが回せるので、
AIに書かせたコードを目視で確かめ続ける必要がなくなります。
> **セキュリティ上、既定はOFFです。毎回の起動でOFFに戻ります。**
> ループバック(127.0.0.1)にのみバインドされますが、**認証はありません**。
> ポート番号だけは次回のために保存されますが、有効/無効は保存しません(開けるのは毎回の明示的な選択であるべき、という設計です)。
> 使い終わったらOFFにし、ポートフォワード等で外に出さないでください。
## 保存のされ方
アプリは**プロジェクト(`.synapse`)と一緒に保存**されます。プロジェクトを開き直すと、
SynapseRack がフォルダからアプリを自動的に起動し直します(Max for Live のデバイスがセットと一緒に保存されるのと同じ感覚です)。
保存に絡む仕組みは3つです。
| 仕組み | 何が残るか |
|---|---|
| `app.setState(obj)` / `app.onRestore(fn)` | アプリのUI状態。**プロジェクトと一緒に**保存され、`app.ready()` の直後に返ってきます |
| `output.publish` などの**安定した `id`** | 出力ノードの同一性。ユーザーがそこから引いた配線ごと復元されます |
| `synapse.storage`(get/set/delete/list) | **プロジェクトに依存しない**アプリ単位の保存領域。プリセットやキャッシュ、最後に使った設定向け |
## 制約・注意点(実装から)
> **毎フレームJSから値を書かないでください。**
> `requestAnimationFrame` で `setValue` を回すのは、この仕組みが避けようとしている往復コストそのものです。
> 連続変調はホスト側のバインディング(`.value.lfo()` / `.value.follow()` / `.value.bindMidi()`)に任せ、
> JSからはスライダーやボタンの操作といった離散的なイベントだけを送ってください。
> **App* の低レイヤーノードは、ノード追加UIに既定で出ません。**
> `AppMediaPlayer` / `AppTextureSource` / `AppOffscreenLayer` / `AppStackMixer` / `AppTextRender` / `AppFxChain` の6種は、
> 右クリックのノード追加メニューとサイドパネルから隠されています(非開発者にとっては一覧が煩雑になるだけのため)。
> 出したい場合は **グローバル設定 → Library → App SDK Modules → Show App SDK modules** をONにしてください。
> この設定はプロジェクトには保存されません。**アプリ側の `modules.create` / `render.*` / `modules.types()` は、この設定に一切影響されません**
> (設定がOFFでもアプリからは作れます)。
> **ウィンドウ同士の直接のやりとりはできません。**
> メインウィンドウと `web.createWindow` で開いた子ウィンドウは、それぞれ独立したブリッジを持ちます。
> 取り込んだアセットのidや登録したコントロールは**ウィンドウをまたいで参照できません**。
> 共有したい値は `synapse.storage` を経由してください(`textureId` とキー付きリソースはインスタンス全体で共通なので、そのまま渡せます)。
> **`controls.register` だけは厳密な get-or-create ではありません。**
> 同じ `id` で登録し直すと、前のコントロールのメタデータを上書きします(`boot()` の再実行では問題になりません)。
> **ミキサーは `crossfade`(入力2つ)のみです。** `render.createSession` は互換のための空実装なので、新しいコードでは呼ばないでください。
> **オフスクリーンのプレイヤーは既定でミュートです。**
> 音を出すのは明示的なオプトインで、そもそも音声を扱えるのは Unity 標準の動画再生バックエンドだけです。
> **SDKは必須ではありません。** `synapse-sdk.js` は定型文を減らすだけの薄い層で、
> できることはすべて `window.synapse` から直接呼べます。
## 複数起動(multiInstance)
既定ではアプリは**1つだけ**動きます(2回起動しても窓が前に出るだけ)。
`synapse-app.json` に `"multiInstance": true` を足すと、**同じアプリを何個も並べて**動かせるようになり、
AppHub の行が「New Slot」+スロットごとの行に変わります。
スロットごとに独立するのは、内部グラフ・公開した出力(表示名に ` (2)` が付きます)・MIDIのスコープ・
ウィンドウ・`app.setState` / `app.onRestore` です。`synapse.storage` だけは全スロットで共有されます。
自分が何番目かは `app.ping()` の `slot` で分かります(Layerごとに1つ起動する、といった使い方向けです)。
## 関連
- [ノードリファレンス](./nodes) — `modules.create` に渡す id とポート名の一覧
- [MIDIマッピング](./midi-mapping) — アプリのコントロールもこのラーンモードの対象になります
- [VJ素材を読み込むパス(Source Directory)を指定する](./source-directory) — `Apps` フォルダの場所を決めている設定
---
## 音楽に合わせる(Beat Sync)
URL: https://synapserack.com/ja/docs/beat-sync
Description: SynapseRack で映像を曲に合わせる方法の入口。全体のBPMを決める Global Tempo、レイヤーの Beat Sync、拍に乗るノード、Ableton Link や MIDI Clock などの外部同期を、実装に沿って整理します。
SynapseRack で曲に合わせる方法は、**BPM を決める → それを使う**の2段構えです。
テンポの数字は全体で1つだけあり、レイヤーもノードもそこを見ています。

## 1. まず BPM を合わせる
[Global Tempo](./window/global-tempo) ウィンドウが、SynapseRack 全体のテンポです。
決め方は3通りあります。
| やり方 | 手順 |
|---|---|
| **数字を入れる** | BPM の数字をクリックして直接入力(1〜500、初期値128) |
| **叩いて合わせる** | **TAP** を曲に合わせて叩く。直近15回の平均で追従します |
| **外から受け取る** | Ableton Link / OSC / Tap Tempo ノードから流し込む(後述) |
数字が合っていても**拍の頭がズレている**ことがあります。
そのときは曲の頭で **RST** を押してください。拍が1拍目に戻り、
Beat Sync 中のレイヤーは同時に映像の先頭へ飛びます。
ボタンの詳細は [Global Tempo](./window/global-tempo) を参照してください。
## 2. 映像を BPM に合わせる(Layer の Beat Sync)
[Layer](./window/layer) ウィンドウの一番下の列、**右端のメトロノームのトグル**です。
ONにすると、**クリップ全体がちょうど指定した拍数で1周する速度**に自動調整されます。
拍数は隣の **−** / **+** / **/2** / **\*2** で変えます(1〜64、初期値は4拍)。
速度は次の式で決まります。
```
再生速度 = クリップの長さ ÷ ( 60 ÷ BPM × 拍数 )
```
BPMを動かせば速度も追従するので、TAPで合わせ込んでいる最中も映像は付いてきます。
> **速度は 5 倍が上限です。**
> 長いクリップに少ない拍数を指定すると、必要な速度が上限を超えて**同期しきれません**。
> 例えば128BPMで4拍=1.875秒なので、**約9.4秒より長いクリップは4拍で回せません**。
> 「同期させたのにズレる」ときは拍数を増やしてください(8拍、16拍…)。
> **新しいクリップを再生すると Beat Sync は OFF に戻ります。**
> 拍数はクリップごとに記憶されますが、同期のON/OFF自体は引き継がれません。
> 素材を差し替えたらメトロノームを押し直してください。
> **速度ボタンやスライダーを触ると同期は解除されます。**
> `/2`・`↻`・`*2` はどれも手動操作なので、押した時点で同期から抜けます。
> スライダーは、現在の速度に0.5以内まで近づけたところで操作を引き取ります(急に速度が飛ばないための仕掛けです)。
ループの継ぎ目が気になる場合は、同じ列の[クロスフェードループ](./crossfade-loop)も一緒にONにしてください。
## 3. ノードを BPM に合わせる
ノードには、**つながなくても拍に乗るもの**と、**つないで初めて乗るもの**があります。
### つながなくても拍に乗るノード
| ノード | 拍との関わり |
|---|---|
| [LFO](/ja/docs/nodes/signal/LFO/) | `Clock Source` の既定が **GlobalTempo**。`1/4拍`〜`4小節` の分割で波を打ちます |
| [Buffer Shuffle](/ja/docs/nodes/record/BufferShuffle/) | `Chunk Beats`(1〜16、初期1)拍ごとに刻み、`Chaos` の確率で飛びます |
| [Adaptive Mosaic](/ja/docs/nodes/profx/AdaptiveMosaic/) | `Auto BPM` が既定ONで、N拍(1〜16、初期4)ごとに主役のタイルが入れ替わります |
### つないで拍に乗せるノード
まず [GlobalTempo](/ja/docs/nodes/tempo/GlobalTempo/) ノードを置きます。
このノードは全体のテンポを**信号として取り出す蛇口**で、BPM・拍位置・
拍のトリガー・小節のトリガーなどを出力します。ここから配線してください。
| ノード | つなぎ方 |
|---|---|
| [Clock](/ja/docs/nodes/tempo/Clock/) | GlobalTempo の `BPM` か `Beat Position` を挿す。`1/4拍`〜`4小節` に分周したトリガーを作れます |
| [Step Sequencer](/ja/docs/nodes/tempo/StepSequencer/) | GlobalTempo の `BPM` を挿す。ステップ数2〜32、トラック1〜16 |
| [Content Player](/ja/docs/nodes/source/ContentPlayer/) | `BPMSync` と `Beat` で、Layer と同じビート同期をノード側でも使えます |
> **Clock と Step Sequencer は、置いただけでは全体のテンポに乗りません。**
> どちらも自前のBPM(初期値120)で走ります。**わざとそうなっています**——
> 全体と違う速さで回したいことがあるからです。
> 全体に合わせたいときは GlobalTempo ノードから `BPM` を配線してください。
> **LFO の「1小節」は4拍固定です。**
> Global Tempo の拍子(Beats / Bar)を変えても、LFO の小節分割は 4 / 8 / 16 拍のままです。
> 拍子に追従させたい場合は [Clock](/ja/docs/nodes/tempo/Clock/) を使ってください。
## 4. 外部と同期する
| 相手 | できること |
|---|---|
| [AbletonLink](/ja/docs/nodes/tempo/AbletonLink/) | 同じネットワークの Ableton Link 対応アプリとテンポ・拍を共有します。`Tempo` 出力を GlobalTempo ノードの `BPM` 入力へ挿すと、全体がLinkに追従します(LFO は `Clock Source` で直接 AbletonLink を選べます) |
| [MIDI Clock](/ja/docs/nodes/io/midi_clock_out/) | 全体のBPMを MIDI クロックとして**外へ送ります**。Start / Stop / Continue も送れます |
| [Tap Tempo](/ja/docs/nodes/tempo/TapTempo/) | タップでBPMを作るノード。`BPM` 出力を GlobalTempo ノードの `BPM` 入力へ挿します。MIDIパッドで叩けます |
| OSC | [OSC入出力](./osc-input-output)から GlobalTempo ノードの `BPM` を書き換えられます |
> **MIDI クロックは送信だけです。**
> 外部機材の MIDI クロックを受けてテンポを合わせることはできません。
> DAWと合わせたいときは Ableton Link を使ってください。
## 5. 「拍」ではなく「音」に反応させる
BPM同期とは別に、**入ってきた音の大きさに反応させる**やり方もあります。
[AudioReactive](/ja/docs/nodes/audio/AudioReactive/) ノードは、音量・低域・中域・高域と、
音の立ち上がり(`Onset` / `Hit`)をトリガーとして出します。
> **音からBPMを自動検出する機能はありません。**
> 音に反応するノードは「今どれくらい鳴っているか」しか見ていません。
> テンポは Global Tempo 側で決めるものだと考えてください。
両者は組み合わせられます。例えば `Onset` を [Clock](/ja/docs/nodes/tempo/Clock/) の `Sync` へ、
あるいは [Buffer Shuffle](/ja/docs/nodes/record/BufferShuffle/) の `Chop` へ挿すと、
実際に鳴った瞬間で刻み直せます。
## 動画
## 関連
- [Global Tempo](./window/global-tempo) — テンポを持つウィンドウのリファレンス
- [Layer](./window/layer) — Beat Sync のトグルがある場所
- [クロスフェードループ](./crossfade-loop) — ループの継ぎ目を隠す
- [MIDIマッピング](./midi-mapping) — TAP や RST をパッドに割り当てる
---
## お問い合わせ
URL: https://synapserack.com/ja/docs/contact
# お問い合わせ
バグレポート、質問、ユーザー同士の交流は以下のDiscordサーバーへご参加ください。
https://discord.com/invite/JqNfhubJe4
Discordを使用していない方は[Twitter(@SainaKey)](https://twitter.com/SainaKey)のDMにてお問い合わせください。
---
## クロスフェードループ
URL: https://synapserack.com/ja/docs/crossfade-loop
Description: ループの継ぎ目のカット割れを、クリップの終わりと始まりを重ねて隠す機能。Layer ウィンドウ下段のトグル1つで効きます。重なる長さ・効く素材・素材ごとの記憶を、実装に沿って解説します。
ループのつなぎ目で「パツン」と切り替わるのを隠す機能です。
クリップの**終わりと始まりを重ねて**、切り替わりを連続した映像で覆います。
ループ前提で作られていない素材でも、そのままVJで回せるようになります。
## 使い方
[Layer](./window/layer) ウィンドウの**一番下の列、左端のトグル**です。

映像を再生した状態で押すだけで、以後そのクリップのループが滑らかになります。
設定項目はこのトグル1つで、重なり方や長さを調整するパラメータはありません。
## 重なる長さは「クリップ長の10%」固定です
10秒のクリップなら**前後1秒ずつ**が重なります。20秒なら2秒です。
末尾の10%で徐々に切り替わり、折り返した直後の10%で徐々に戻る、という山なりの動きになります。
> **短いクリップほど重なりも短くなります。**
> 割合で決まるので、1秒のループ素材では0.1秒しか重なりません。
> 「効いていないように見える」ときは、まず素材の尺を疑ってください。
## 再生速度を変えても付いてきます
重ねているコピーは、本編の再生速度をそのまま追いかけます。
[Beat Sync](./beat-sync) で速度が自動調整されている間も、速度ボタンで倍速・半速にした場合も、
継ぎ目の隠し方は変わりません。
なお、重ねているコピー側の音声は**常に無音**です。二重に鳴ることはありません。
## 効くのは動画だけです
トグルが働くのは、レイヤーが**動画を再生しているとき**だけです。
画像・Spout / Syphon・NDI・ノードの出力を入れたレイヤーでは、押しても何も起きません
(そもそもループの継ぎ目という概念がないためです)。
## ON / OFF は素材ごとに覚えます
このトグルの状態は、**クリップごとにライブラリへ記録されます**。
一度ONにしたクリップは、次に呼び出したときも、別のレイヤーに入れたときもONで始まります。
レイヤー側ではなく素材側の設定だと考えてください。
[Beat Sync](./beat-sync) の拍数も同じくクリップごとに記録されます(初期値は4拍)。
> **ONにしたのに効かないときは、クリップを呼び直してください。**
> 映像の読み込みが終わる前にトグルを押すと、重ねるコピーの準備が始まらないことがあります。
> もう一度そのクリップを [Media Browser](./window/contents-browser) から割り当て直せば、
> 記録済みのON状態のまま作り直されます。
## MIDI
このトグルは MIDI に割り当てられます。やり方は [MIDIマッピング](./midi-mapping) と同じで、
メニューバーの **Setting → MidiMapping** からアサインモードに入ります。
## 動画
### クロスフェードループ オンのとき
### クロスフェードループ オフのとき
## 関連
- [Layer](./window/layer) — トグルの置き場所と、そのほかの再生操作
- [ビートに同期させる](./beat-sync) — 同じ列にある Beat Sync
- [映像・画像ファイルを読み込む](./load-video) — 素材の取り込みと対応コーデック
---
## よくある質問(FAQ)
URL: https://synapserack.com/ja/docs/faq
Description: 対応OS・使える動画フォーマット・素材の保存場所・表示言語・無料版の制限・ライセンス認証・レガシー表記の意味など、SynapseRackでよく聞かれることをまとめました。
## 動作環境・ファイル
### 対応OSは?
**Windows(64bit)**と **macOS 11.0 以降**です。
プロジェクトファイル(`.synapse`)は両OSで共通なので、Windowsで作ったセットをMacで開けます。
ただし一部の機能にはOS差があります。
| 機能 | OS差 |
|---|---|
| 映像の受け渡し | Windows は **Spout**、macOS は **Syphon**(ノードは同じもので、名前だけ切り替わります) |
| 再生できるコーデック | [対応フォーマットの表](./load-video)を参照 |
| `.hlsl` シェーダー素材 | **Windowsのみ** |
### どの動画フォーマットが使えますか?
`.mp4` `.mov` `.avi` `.mkv` `.webm` `.flv` `.wmv` `.m4v` `.mpg` `.mpeg` `.hap` を取り込めます。
画像は `.png` `.jpg` `.jpeg` `.gif` `.bmp` `.tga` `.tiff` です。
**ただし、拡張子より中身のコーデックが重要です。**再生できるかどうかはコーデックとOSで決まります。
詳しい対応表は[映像・画像ファイルを読み込む](./load-video)にあります。
### サムネイルに ✕ や ⚠ が付いて再生できません
そのコーデックが**このOSでは再生できない**(✕)か、**条件つきでしか再生できない**(⚠)という印です。
サムネイルにマウスを乗せると理由が出ます。
いちばん確実な解決は **HAPコーデックへの変換**です。[Hapコーデックとは](./about-hap-codec)を参照してください。
### 素材やキャッシュはどこに保存されますか?
```
/SainaWorks/SynapseRack/
```
Windowsの既定では `C:/SainaWorks/SynapseRack/`、macOSではユーザーフォルダ直下(`~/SainaWorks/SynapseRack/`)です。
この下に `Source`(素材)、`Cache`(サムネイル・解析結果)、`CustomFx`(自作エフェクト)、`Templates`、`Recordings` などが作られます。
場所を変える方法は [VJ素材を読み込むパス(Source Directory)を指定する](./source-directory) を参照してください。
> **元の映像ファイルはここへコピーされません。**
> 取り込みで作られるのはサムネイルと解析結果だけで、映像は元の場所のまま参照されます。
> 素材を移動・削除すると「見つからない」状態になります。
### 動作が重いです
まず画面右上の表示を見てください。`FPS` / `CPU` / `RAM` が常に出ています。
重さの主な原因は**同時に動かしている映像の枚数と解像度**です。
FullHDを超える素材を何枚も同時再生すると、どのマシンでも厳しくなります。
- 素材を **HAP** に変換する(再生時の負荷がいちばん軽い形式です)→ [Hapコーデックとは](./about-hap-codec)
- 使っていないレイヤーの映像を外す
- 出力解像度を下げる(**Setting → GlobalSettings → 出力**)
## 設定
### 表示言語を変えたい
**Setting → GlobalSettings → 一般**(General)の `言語` で `システム` / `English` / `日本語` を選びます。
> **変更を反映するには再起動が必要です。**(欄の下にも「再起動後に反映されます」と出ます)
### 起動時に前回のプロジェクトを開きたい
**Setting → GlobalSettings → 一般**(General)の `Startup` で指定します。
> **この設定はプロジェクトには保存されません(PCごとの設定です)。**
### 設定はプロジェクトに保存されますか? PCごとですか?
**出力解像度だけがプロジェクト(`.synapse`)に保存されます。**
それ以外(言語・起動時の動作・OSC・MIDI・MediaBrowser・ノードライブラリ)は**PCごと**の設定です。
Settings ダイアログの左側でも、`プロジェクト` と `システム` の見出しで分かれています。
## ライセンス
### 無料版(Demo)の制限は?
**Layer は4枚、Group Layer は2枚まで**です。
これを超えるとレイヤーが自動的に削除され、
「The free version of SynapseRack is limited to 4 Layers and 2 Group Layers.」という案内が出ます。
それ以外の機能に制限はありません。
### ライセンス認証のやり方は?
**Setting → Verify License** を選ぶと、ブラウザが開いて Discord のログインに進みます。
**FANBOX / Patreon と連携済みのDiscordアカウント**で認証してください。
認証状態は画面右上に `Pro` / `Standard` / `Demo` などとして表示されます。
解除したいときは **Setting → Logout** です。
> **旧来のPixiv ID方式は 2026年9月30日までです。**
> それ以降はDiscord認証のみになります。ライセンスダイアログにも
> 「— Legacy method (until Sep 30, 2026) —」として区切って表示されています。
### アップデートの確認は?
**Setting → Check for Updates**。新着のお知らせは **Setting → Get Notify** から確認できます。
## ノード・エフェクト
### 「レガシー」と書かれたエフェクトは何ですか?
**世代交代した古いエフェクト**です。削除すると昔のプロジェクトが開けなくなるため登録は残していますが、
ノードを追加するときの候補からは既定で隠れています。
見えるようにするには **Setting → GlobalSettings → ノードライブラリ**(Node Library)の
**`レガシーエフェクトを表示`** をONにしてください。
> **レガシーを使っている保存済みプロジェクトは、このトグルに関係なく常に読み込めます。**
> トグルが効くのは「新しく追加するときの一覧に出すかどうか」だけです。
### メニューの `Legacy` にある ControlPanel は?
旧世代の操作パネルです。現在の後継は [Widget Panel](./widget-panel)(**Create → WidgetPanel**)で、
ウィジェットを自分で並べて好きな形の操作画面を組めます。
### エフェクトを自作したい
ブラウザで書ける **[Fx Editor](./fxeditor)** を使ってください。GLSLで書いて `.srfx` を書き出し、
`CustomFx` フォルダに入れると自作のエフェクトノードになります。Windows・Mac の両方で動きます。
`.hlsl` を直接置く従来方式については [Shader(.hlsl)ファイルを読み込む](./load-shader) を参照してください。
## その他
### バグ報告・質問はどこへ?
Discordサーバーへどうぞ。[お問い合わせ](./contact)にリンクがあります。
### 他のソフトと映像をやりとりしたい
- 送る: [OBSに出力する](./obs) / [プロジェクターに出力する](./projector)
- 受け取る: [Spoutを読み込む、出力する](./load-spout)
---
## Fx Editor(カスタムエフェクト .srfx)
URL: https://synapserack.com/ja/docs/fxeditor
Description: ブラウザでGLSLシェーダーを書き、.srfx として書き出して SynapseRack の CustomFx フォルダに入れると、自分だけのエフェクトノードになります。Webエディタの使い方から、アプリ側の読み込み・ホットリロード・制約までを実装に沿って解説します。
GLSLのシェーダーを書いて、SynapseRackのエフェクトノードを自作できます。
流れは3手です。
1. Webエディタ **[Fx Editor](https://fx-editor.synapserack.com/)** でシェーダーを書く
2. **Export** して `.srfx` ファイルをダウンロードする
3. `.srfx` を **CustomFx フォルダ**に入れる → ノード一覧の **Custom FX** カテゴリに出てくる
## Fx Editor(Webエディタ)
をブラウザで開くだけで使えます。インストールもログインも要りません。
編集画面は3枚のパネルで構成されています。
| パネル | 中身 |
|---|---|
| **コードエディタ** | Shadertoy方言のGLSL(`mainImage`)を書きます。コンパイルエラーは自分の書いた行番号に合わせて表示されます |
| **ライブプレビュー** | WebGL2でその場で実行。**テストパターン/動画ファイル(ドラッグ&ドロップまたは選択)/Webカメラ**を入力に切り替えられます |
| **ノードプレビュー** | そのシェーダーがSynapseRackでどんなノードになるかを表示します。ここのスライダーを動かすとプレビューにも反映されます |
トップページには**サンプル**が並んでいて、クリックするとその場で開けます。
編集した作品はブラウザ内(localStorage)に自動保存され、トップページの「あなたの作品」に残ります(最大100件、古いものから落ちます)。
その他のボタン:
| ボタン | 動き |
|---|---|
| **共有** | シェーダーをURLに埋め込んだリンクをコピーします。開くとその場で復元されます |
| **ISF読み込み** | ISF(Interactive Shader Format)の `.fs` を読み込んでこのエディタの形式に変換します。トップページからは**一括変換ページ**(`.fs` をまとめてドロップ→`.srfx` が返る)にも行けます |
| **Export** | 変換サービス(fxconv)に送って `.srfx` をダウンロードします |
> **Export だけはネット接続と変換サービスが必要です。**
> プレビューとノードプレビューは完全にブラウザ内で動きますが、書き出しは HLSL(Windows用)と Metal(Mac用)へのクロスコンパイルを伴うため、変換サービスに送信されます。
> 変換サービスには**1分あたり10リクエスト**のレート制限があり、超えるとその旨が表示されます。
書き出した `.srfx` は **WindowsでもMacでもそのまま動きます**。1ファイルで配布でき、Fx Editor で開き直して編集を続けることもできます。
## シェーダーの書き方
Shadertoy方言の `mainImage` を書きます。
```glsl
uniform float uIntensity; // 0 1 0.5
void mainImage(out vec4 fragColor, in vec2 fragCoord) {
vec2 uv = fragCoord / iResolution.xy;
vec3 col = texture(iChannel0, uv).rgb;
fragColor = vec4(col * uIntensity, 1.0);
}
```
### 提供されるuniform(宣言しない)
`iResolution` / `iTime` / `iTimeDelta` / `iFrame` / `iMouse` / `iChannel0` はランタイムが渡します。
`iChannel0` が**FXチェーンから流れてきた映像**です。
アプリ側がこれらに入れている値は次の通りです。
| uniform | 中身 |
|---|---|
| `iResolution` | 描画先の幅・高さ |
| `iTime` | 経過時間 |
| `iTimeDelta` | 前フレームからの経過秒 |
| `iFrame` | フレーム番号 |
| `iMouse` | マウス座標(`zw` は左ボタンを押している間だけ座標が入ります) |
### パラメータ = uniform宣言
`uniform` を1行足すと、それがノードの入力ポートになります。
```glsl
uniform float uZoom; // レンジ 0〜1、初期値 0
uniform float uZoom; // 1 4 2 // レンジ 1〜4、初期値 2
```
末尾のコメント `// min max default` はレンジのヒントです(`default` は省略可)。
| 宣言 | ノード側 |
|---|---|
| `uniform float` / `uniform int` | **スライダー付きの入力ポート**(ヒントのmin/maxがそのままレンジになります) |
| `uniform bool` | **トグル付きの入力ポート** |
| `uniform vec2` / `vec3` / `vec4` | **ポートは作られません**(値はシェーダー内の既定値のまま) |
> **ノードのポートになるのは float / int / bool だけです。**
> vec2/vec3/vec4 のパラメータは、宣言した既定値のまま固定になり、ノード上に行が出ないので操作できません。色や座標を触りたい場合は、いまのところ float を複数本に分けて宣言するのが確実です。
> **入力テクスチャは `iChannel0` の1枚だけです。**
> アプリ側のランタイムがシェーダーに渡すテクスチャは、FXチェーンから来た映像1枚だけです。追加の `sampler2D`(マスク画像など)を宣言しても、アプリ側にそれを配線する経路はありません。
> **min と max が同じ値だとスライダーが死んでしまうので、アプリ側が自動的に `max = min + 1` に広げます。**
## .srfx をアプリに読み込ませる
### 置き場所
```
/SainaWorks/SynapseRack/CustomFx/
```
- **Windows 既定**: `C:/SainaWorks/SynapseRack/CustomFx`
- **Mac 既定**: `~/SainaWorks/SynapseRack/CustomFx`(ユーザーフォルダ直下)
このフォルダは**起動時に自動で作られます**。親フォルダの位置は Settings.json の `parentPath` で変えられます([VJ素材を読み込むパス(Source Directory)を指定する](./source-directory) と同じ設定です)。
**サブフォルダを作って整理して構いません。** CustomFx フォルダは再帰的に走査されるので、`CustomFx/自作/glitch.srfx` のように入れ子にしても読み込まれます。
### ファイルの扱い
`.srfx` を**上書きすればエフェクトが更新**され、**消せばアンインストール**です。ファイル1つの出し入れだけで完結します。
## ノードとして使う
Node Editor でノードを追加すると、**Custom FX** カテゴリに自作エフェクトが並びます。
ノードの表示名は Fx Editor で付けたエフェクト名です。
ポートの構成は組み込みのFxShaderノードと同じ形です。
| ポート | 役割 |
|---|---|
| **In**(`FxIn`) | チェーンの入力 |
| **Enable** | エフェクトのON/OFF |
| **Out**(`FxOut`) | チェーンの出力 |
| パラメータごとの入力 | `uniform` から生えた float/int/bool の行 |
**組み込みのFxShaderノードと同じチェーンに混ぜられます。** `FxIn` / `FxOut` を数珠つなぎにして、順番も自由です。チェーンの組み方は[エフェクトの使い方](./module/fxshader)を参照してください。
ノードの中央には**プレビュー**が出ます。テスト画像にエフェクトをかけたもので、約15fpsで更新されます。FxShaderノードのプレビュー表示トグルと共通なので、まとめて消せます。
> **Enable を OFF にすると、自分だけでなくチェーンの先のFxスロットごと無効になります。**
> 「自分だけ素通し」ではなく、FxShaderノードと同じスロット単位の意味論です。
> **同じ名前のエフェクトが複数あるときは、表示名にサブフォルダ名が付きます。**
> 例: `自作/Glitch.srfx` と `もらい物/Glitch.srfx` を入れると `Glitch` と `Glitch (もらい物)` のように区別されます。それでも衝突する場合は末尾に連番が付きます。
## ホットリロード(書きながら直す)
アプリはCustomFxフォルダを監視しているので、多くの場合**再起動なしで**反映されます。
| したこと | 起きること |
|---|---|
| 新しい `.srfx` を入れる | ノード一覧に追加されます(再起動不要) |
| 既に置いてあるノードのバンドルを**上書き**する | 約0.4秒待ってから、その場でコンパイルし直します。**配線とパラメータの値は保たれます** |
| `.srfx` を消す | 展開キャッシュも消え、置いてあるノードは素通しになります。**ノード一覧から消えるのは次回起動時**です |
> **パラメータの構成(本数・名前)を変えた場合は、ノードを置き直してください。**
> ポートは1つのノードにつき1回だけ作られるので、上書きリロードでは既存のポートがそのまま使われます。中身だけを直した場合(式の調整など)は置き直し不要です。
> **保存されたパラメータの値は「名前」で復元されます。**
> `uniform` の並び順を入れ替えても、値が別のパラメータに移ってしまうことはありません。
## エラーの見え方
読み込みやコンパイルに失敗したノードは、映像を**素通し**しつつ壊れていることを表示します。真っ黒にはなりません。
- ノードのタイトルに **⚠** が付く
- ノード内に1行の要約が出る(例: `shader compile failed`)
- その行にマウスを乗せると、**コンパイラのメッセージ全文**がツールチップで出る
直したバンドルを保存し直すと、ホットリロードが走って⚠が消えます。
## 制約・注意点
> **Windows は Direct3D11 のみです。**
> Direct3D12 では読み込みが明示的に拒否され、ノードは⚠付きの素通しになります。Mac は Metal で動きます。
> **パラメータの総量には上限があります。**
> uniform は float 換算で**32個分**まで。超えると読み込み時に拒否されます。
> **プロジェクトは `.srfx` の場所を絶対パスで覚えます。**
> 別のPCやドライブ構成が違う環境でプロジェクトを開くと、CustomFx フォルダの位置が違えばエフェクトが見つからず⚠になります。
> ただし**保存済みのパラメータ値と配線はそのまま残る**ので、同じ構成で `.srfx` を入れ直せば復帰します。プロジェクトを人に渡すときは `.srfx` も一緒に渡してください。
## 関連
- [エフェクトの使い方(FxShader)](./module/fxshader) — FxIn / FxOut チェーンの組み方
- [VJ素材を読み込むパス(Source Directory)を指定する](./source-directory) — CustomFx フォルダの親を変える
- [Shader(.hlsl)ファイルを読み込む](./load-shader) — HLSLを直接置く旧来の仕組み(別機能です)
---
## ドキュメント
URL: https://synapserack.com/ja/docs/intro
# ドキュメント
SynapseRackの様々な機能を紹介しています。
## はじめに
### チュートリアル
- [4Layer構成でVJをしよう!](/ja/docs/tutorial/4layer) - 基本的な使い方を学ぶ
- [Monotone 2Layer構成](/ja/docs/tutorial/monotone-2layer) - シンプルな2レイヤー構成
### 基本操作
- [動画の読み込み](/ja/docs/load-video) - 動画ファイルの読み込み方法
- [ソースディレクトリ](/ja/docs/source-directory) - ファイル管理の基本
- ⌨[キーボードマッピング](/ja/docs/keyboard-mapping) - キーをUIに割り当てる
- [ショートカット一覧](/ja/docs/shortcuts) - F10や右ドラッグなど暗黙の操作の全リスト
- [MIDIマッピング](/ja/docs/midi-mapping) - MIDIコントローラーの設定
## モジュール
### ノードリファレンス
- [全ノード図鑑](/ja/docs/?tag=ノード) - 全ノードをタグで一覧(カテゴリページは各ノードから辿れます)
### 基本モジュール
- [Layerノード](/ja/docs/nodes/layer/) - レイヤー制御ノードの図鑑
- [Sourceノード](/ja/docs/nodes/source/) - 映像・画像・カメラなど入力ソースの図鑑
- ✨ [FxShaderノード](/ja/docs/nodes/fxshader/) - エフェクトの図鑑
- [演算](/ja/docs/module/math) - 数値演算モジュール
- [UI](/ja/docs/module/ui) - UIコントロールモジュール
- [変数](/ja/docs/module/variable) - 変数の管理
- ⚙[オペレーション](/ja/docs/module/operation) - 操作モジュール
## ウィンドウ
### メインウィンドウ
- [レイヤー](/ja/docs/window/layer) - レイヤーウィンドウ
- [プレビュー](/ja/docs/window/preview) - プレビューウィンドウ
- [レイヤー階層](/ja/docs/window/layer-hierarchy) - レイヤーの階層管理
- [レイヤープロパティエディタ](/ja/docs/window/layer-property-editor) - プロパティの編集
### 拡張ウィンドウ
- [ノードエディタ](/ja/docs/window/node-editor) - ノードベースの編集
- [コンテンツブラウザ](/ja/docs/window/contents-browser) - ファイルの閲覧
- [グローバルテンポ](/ja/docs/window/global-tempo) - テンポ同期設定
- [グループレイヤー](/ja/docs/window/group-layer) - レイヤーのグループ化
- [OSCモニター](/ja/docs/window/osc-monitor) - OSC通信の監視
## 高度な機能
### 連携機能
- [Spoutの読み込み](/ja/docs/load-spout) - Spout経由での映像入力
- [OSC入出力](/ja/docs/osc-input-output) - OSC通信の設定
- [OBSとの連携](/ja/docs/obs) - OBS Studioとの連携方法
- [プロジェクター設定](/ja/docs/projector) - 出力設定
### 特殊機能
- [クロスフェードループ](/ja/docs/crossfade-loop) - ループ再生の設定
- [ビート同期](/ja/docs/beat-sync) - 音楽との同期
- [HAPコーデックについて](/ja/docs/about-hap-codec) - HAPコーデックの説明
- [シェーダーの読み込み](/ja/docs/load-shader) - カスタムシェーダー
## その他
- ❓ [よくある質問](/ja/docs/faq) - FAQ
- [お問い合わせ](/ja/docs/contact) - サポート情報
- [利用規約](/ja/docs/terms-of-use) - 利用条件
## English Tutorial
There are articles translated by volunteers.
You can access it from the following link:
[https://vjun.io/t/synapserack](https://vjun.io/t/synapserack)
---
## キーボードマッピング
URL: https://synapserack.com/ja/docs/keyboard-mapping
Description: パソコンのキーを画面のUIに割り当てる機能。MIDIと同じアサインモード(Setting → MidiMapping)の中で、青いUIをクリックして赤にし、そのままキーを叩けば紐付きます。押している間だけ効く挙動と、割り当てられないキーについて。
MIDIコントローラーが無くても、**パソコンのキーボード**を同じ仕組みで割り当てられます。
専用のモードはありません。[MIDIマッピング](./midi-mapping) と**まったく同じアサインモード**の中で、
コントローラーを動かす代わりにキーを叩くだけです。
## 手順
メニューバーの **Setting → MidiMapping** でアサインモードに入ります。

1. 割り当てられるUIが**青**くなります
2. 目的のUIを**クリック**して**赤**にします
3. その状態で**キーを1つ押す**と割り当てられます

MIDI Inspector の `Mappings:` に **`Key Space`** のような行が増えれば完了です。
行の右端の **×** で解除できます。
もう一度 **Setting → MidiMapping** を選ぶか、MIDI Inspector の **Assign Mode** ボタンでモードを抜けます。
## キーの効き方
キーは **押した瞬間に 1、離した瞬間に 0** を送ります。つまり**押している間だけON**です。
| 割り当て先 | 押したとき | 離したとき |
|---|---|---|
| ボタン・トグル | 1回発火する | 何も起きない |
| スライダー・フェーダー | 最大まで振り切る | 0 に戻る |
> **スライダーに割り当てると、押している間だけ最大値になります。**
> キーには途中の値がないので、レイヤーのOpacityに割り当てると「押している間だけ全開」という挙動になります。
> フラッシュ的な使い方には向きますが、なめらかに動かしたいならMIDIのつまみかOSCを使ってください。
## 割り当てられないキー
次のキーは対象外で、押しても割り当てられません。
- **マウスのボタン**
- **Ctrl**(左右とも)
- **Shift**(左右とも)
- **Tab**
> **修飾キーとの組み合わせ(Ctrl+1 のような形)は登録できません。**
> 記録されるのは**単一のキー1つ**だけです。
## 割り当てられるUI
MIDIとまったく同じです。レイヤーのOpacityや再生ボタン、[Global Tempo](./window/global-tempo) の各ボタン、
[Media Browser](./window/contents-browser) のサムネイル、[Node Editor](./window/node-editor) のノードのUI、
[Widget Panel](./widget-panel) のウィジェットが対象になります。
詳しい一覧は [MIDIマッピング](./midi-mapping) を参照してください。
同じUIにMIDIとキーを**両方**割り当てても構いません。どちらからでも動きます。
> **キー入力は、画面のどこを触っていても拾われます。**
> テキスト入力欄に文字を打っている最中でも、割り当てたキーは同時に反応します。
> 名前の入力などで誤爆しやすいキー(Space、数字、よく使うアルファベット)を割り当てるときは、
> この点を頭に入れておいてください。
> **[Media Browser](./window/contents-browser) のグリッド一括割り当ては、キーボードでは使えません。**
> 4隅から自動で埋める仕組みはMIDIのパッド専用です。キーは1マスずつ割り当ててください。
## 保存のされ方
キーの割り当ても、MIDIと同じ場所に**プロジェクト(`.synapse`)と一緒に**保存されます。
プロジェクトを開き直せばそのまま復活します。
## 関連
- [MIDIマッピング](./midi-mapping) — アサインモードの詳しい説明はこちら
- [OSCの入出力](./osc-input-output) — 外部アプリから操作する
---
## Shader(.hlsl)ファイルを読み込む
URL: https://synapserack.com/ja/docs/load-shader
Description: レイヤーで直接再生できる .hlsl シェーダー素材の仕組み。置き場所・書き方・渡される値をまとめます。現在エフェクトを自作するなら Fx Editor(.srfx)が推奨経路で、.hlsl 直置きは初期からある従来方式です。
> **これから自作エフェクトを作るなら、[Fx Editor(.srfx)](./fxeditor) を使ってください。**
> ブラウザでGLSLを書いて `.srfx` を書き出すと、Windows・Mac の両方で動く**エフェクトノード**になります。
> このページで説明する `.hlsl` 直置きは、それより前からある別の仕組みです。
`.hlsl` ファイルは**映像素材のひとつ**として扱われます。ノードではなく、動画や画像と同じように
MediaBrowser に並び、レイヤーに置いて再生します。
## 2つの仕組みの違い
| | `.hlsl`(このページ) | `.srfx`([Fx Editor](./fxeditor)) |
|---|---|---|
| 何になるか | **レイヤーで再生する素材** | **エフェクトノード**(映像を受けて加工する) |
| 書く言語 | HLSL | GLSL(Shadertoy方言) |
| 動くOS | **Windowsのみ** | Windows / Mac |
| 置き場所 | `Source/Shader` | `CustomFx` |
| パラメータ | 増やせない | `uniform` を書くとノードのポートになる |
> **`.hlsl` はWindows版でのみ動きます。**
> 実行中にHLSLをコンパイルする仕組みがWindows専用のため、macOS版では `.hlsl` 素材は再生できません。
## 置き場所
```
/SainaWorks/SynapseRack/Source/Shader/<任意のフォルダ名>/○○.hlsl
```
Windowsの既定では `C:/SainaWorks/SynapseRack/Source/Shader/` です。
親フォルダの位置は [VJ素材を読み込むパス(Source Directory)を指定する](./source-directory) で変えられます。
> **フォルダを1つ挟んでください。**
> `Source/Shader/○○.hlsl` のように直下に置いたファイルは対象外です。
> `Source/Shader/MyShaders/○○.hlsl` のように、必ずフォルダの中に入れます。
> 挟んだフォルダの中はさらに入れ子にしても構いません。
> **新しい `.hlsl` を取り込む手段は、現行バージョンには用意されていません。**
> かつてメニューにあった一括読み込み(`Source → Load Source Files`)は無くなっており、
> MediaBrowser へのドラッグ&ドロップも `.hlsl` については取り込めません。
> 以前のバージョンで取り込み済みの `.hlsl` は、そのまま MediaBrowser に残って再生できます。
> **新しく書くなら `.srfx` を使ってください。**
## 書き方
ファイルの中身は**フラグメントシェーダーの関数1つ**です。全体を囲むシェーダー宣言は書きません。
```hlsl
cbuffer Params : register(b0)
{
float2 resolution; // 描画先の幅・高さ(ピクセル)
float time; // アプリ起動からの経過秒
float globalBPM; // Global Tempo のBPM
float param0;
float param1;
float param2;
float param3;
};
float4 Frag(VsOutput input) : SV_TARGET
{
float2 uv = input.uv;
float v = sin(uv.x * 20.0 + time * 3.0) * 0.5 + 0.5;
return float4(v, uv.y, 1.0 - v, 1.0);
}
```
### 決まりごと
| 項目 | 内容 |
|---|---|
| 関数名 | **`Frag`**、戻り値 `float4`、セマンティクス `SV_TARGET` |
| 引数の型 | **`VsOutput`**(自分で定義しません。`pos`(`SV_POSITION`)と `uv`(`TEXCOORD0`)を持ちます) |
| UV | `input.uv` が 0〜1 |
| 定数バッファ | `register(b0)` に上表の並びで渡ってきます。**順番を変えると値がずれます** |
| `#include` | `StreamingAssets` フォルダを基準に展開されます |
> **`param0`〜`param3` は予約枠です。**
> 現行のUIには、この4つを操作する場所がありません。並びを合わせるために宣言はしておいてください。
> **入力テクスチャはありません。**
> `.hlsl` 素材は「自分で絵を作る」側です。映像を受け取って加工したい場合は
> [Fx Editor(.srfx)](./fxeditor) のエフェクトノードを使ってください。
### コンパイルに失敗したとき
**画面がマゼンタ(ピンク)の単色**になります。真っ黒ではなくマゼンタなら、シェーダーの文法エラーです。
## 使う
MediaBrowser に、動画や画像と同じサムネイル付きのクリップとして並びます。
レイヤーへドラッグするか、レイヤーを選んでクリックすれば再生が始まります。
`resolution` にはそのレイヤーの解像度が入るので、出力解像度を変えるとシェーダー側の描画サイズも追従します。
`globalBPM` は [Global Tempo](./window/global-tempo) の値がそのまま入るので、拍に同期した動きを書けます。
## 関連
- [Fx Editor(カスタムエフェクト .srfx)](./fxeditor) — 現在の推奨経路。両OSで動くエフェクトノードを自作する
- [VJ素材を読み込むパス(Source Directory)を指定する](./source-directory) — `Source/Shader` の親フォルダを変える
- [映像・画像ファイルを読み込む](./load-video) — 動画・画像素材の取り込み
- [Global Tempo](./window/global-tempo) — `globalBPM` に入る値
---
## Spout / Syphon / NDI を読み込む、出力する
URL: https://synapserack.com/ja/docs/load-spout
Description: 他のアプリとリアルタイムに映像をやり取りする方法。Media Browser の Spout | Syphon / NDI 行からの受信、受信ノードと送信ノード、常時出ている本体の出力(SynapseRackMain)までを、実装に沿って解説します。
他のアプリとリアルタイムに映像をやり取りするための規格です。ファイル書き出しを挟まずに、
映像がそのまま行き来します。
| 規格 | 使えるOS | 相手 |
|---|---|---|
| **Spout** | Windows | 同じPCの中 |
| **Syphon** | macOS | 同じMacの中 |
| **NDI** | Windows / macOS | 同じネットワーク上の別マシンでも可 |
Spout と Syphon は同じもののOS違いです。SynapseRack では同じ操作・同じノードで扱い、
**表示される名前だけがOSによって切り替わります**。プロジェクトファイルもそのまま行き来します。
## 受け取る(レイヤーで再生する)
[Media Browser](./window/contents-browser) の左のフォルダ一覧に、
**`Spout`**(macOSでは **`Syphon`**)と **`NDI`** の行があります。
行をクリックすると、いま送出されているソースが並びます。
あとは動画ファイルと同じで、**クリックまたはドラッグでレイヤーへ送る**だけです。
[映像・画像ファイルを読み込む](./load-video)の割り当て方がそのまま使えます。
> **一覧は常に自動更新されます。リロードボタンはありません。**
> 他のアプリで送出を始めれば、そのまま一覧に増えます。
> ただし更新が目に見えるのは**その行を開いているとき**だけなので、
> 出てこないときは行をクリックし直してください。
> **検索欄では見つかりません。**
> 検索はライブラリに取り込んだファイルだけが対象です。
> Spout / Syphon / NDI は必ずフォルダ行から選んでください。
これらのタイルにはサムネイルが出ず、`SPOUT` / `SYPHON` / `NDI` と書かれた色付きの四角が並びます。
実体のあるファイルではないので、タグ付け・削除・サムネイル更新のメニューも出ません。
> **送出が止まると、レイヤーは最後のフレームで固まります。**
> 黒くはならず、警告も出ません。一覧からタイルが消えることが唯一の合図です。
> 同じ名前で送出が再開すれば、自動的につながり直します。
> **プロジェクトに保存されるのは「ソースの名前」だけです。**
> プロジェクトを開いたとき、その名前の送出が動いていなければレイヤーは空のままです。
> 本番前は、送り出す側のアプリを先に立ち上げてからプロジェクトを開いてください。
## 受け取る(ノードで扱う)
映像をノードグラフに引き込みたい場合は、受信ノードを使います。
| ノード | 説明 |
|---|---|
| [SpoutReceiver](/ja/docs/nodes/source/SpoutReceiver/) | macOS では **SyphonReceiver** と表示されます |
| [NDIReceiver](/ja/docs/nodes/source/NDIReceiver/) | 両OS共通 |
どちらも **`Source`** ドロップダウンで送出元を選び、`Out` から映像が出ます。
ノードの上には小さなプレビューが出るので、つながっているかその場で確認できます。
> **選ばないと何も来ません。自動でつながることはありません。**
> 初期状態は `None` です。また、一度選んだソースは**消えても選ばれたまま**残ります
> (復帰したときに勝手に別のソースへ移らないための挙動です)。
> `None` に戻すと、下流には黒が流れます。
NDIReceiver には **`Refresh`** ボタンがあります。SpoutReceiver / SyphonReceiver にはありませんが、
どちらも一覧は自動更新されます。
受け取った映像の解像度は、**送り出し側の解像度がそのまま**使われます。
## 送り出す
### 何もしなくても、本体の映像は出ています
SynapseRack は起動している間、最終出力を **`SynapseRackMain`** という名前で
Spout(Windows)/Syphon(macOS)に送り続けています。
OBS などで画面を拾いたいだけなら、受け取り側でこの名前を選ぶだけで済みます。
設定項目もON/OFFもありません。
> **`SynapseRackMain` は SynapseRack 自身の一覧には出てきません。**
> 自分の出力を自分で受け取ると映像がループするので、意図的に隠されています。
### 名前を決めて送る、絵を選んで送る
Node Editor で送信ノードを置きます。
| ノード | 説明 |
|---|---|
| [SpoutSender](/ja/docs/nodes/output/SpoutSender/) | macOS では **SyphonSender** と表示されます |
| [NDISender](/ja/docs/nodes/output/NDISender/) | 両OS共通。ネットワーク越しに送れます |
`In` に送りたい映像をつなぎ、**`Name`** に送出名を入れます(初期値は `OutputName`)。
ノードの上に `Sending: <名前>` と出れば送出中です。
**全体の映像を自分の名前で送りたい**場合は、
[MasterOutput](/ja/docs/nodes/output/MasterOutput/) ノードの `Out` を送信ノードの `In` につないでください。
MasterOutput は最終出力を取り出すだけの読み取り専用ノードです。
送出の解像度は、つないだ映像の解像度です。MasterOutput の場合は
メニューバーの **Setting → GlobalSettings → Project** の `Resolution`(初期値 1920 × 1080)になります。
この数字は [MasterResolution](/ja/docs/nodes/output/MasterResolution/) ノードからも取り出せます。
> **透明度(アルファ)が残るのは NDI だけです。**
> NDISender はアルファを保ったまま送りますが、Spout / Syphon 送出(`SynapseRackMain` を含む)は
> **不透明**になります。切り替える設定はありません。
> 抜きの映像を他アプリへ渡したいときは NDI を使ってください。
## 注意点
> **Spout は Windows 専用、Syphon は macOS 専用です。**
> ノードとしては同じもので、保存されるデータも同じなので、
> **プロジェクトファイルは両OS間でそのまま持ち運べます**。表示名だけが切り替わります。
> **つながるまで数秒かかることがあります。**
> 受信側は最初の1枚が届くまで最長5秒ほど待ちます。
> それでも届かない場合は諦めて、映像は出ません。選び直すか、送出側を確認してください。
## 関連
- [Media Browser](./window/contents-browser) — 受け取ったソースが並ぶ場所
- [Layer](./window/layer) — 受け取った映像を再生するウィンドウ
- [映像・画像ファイルを読み込む](./load-video) — レイヤーへの割り当て方は共通です
- [OBSで配信する](./obs) — 配信ソフトへ渡す
---
## 映像・画像ファイルを読み込む
URL: https://synapserack.com/ja/docs/load-video
Description: 映像・画像をSynapseRackに取り込む方法。OSからのドラッグ&ドロップ(落とす場所で挙動が変わる)、MediaBrowserでの整理・検索・自然言語検索、対応フォーマットと再生可否バッジを、実装に沿って解説します。
素材の取り込みは**ファイルやフォルダをアプリの上に落とすだけ**です。
落とした先によって「ライブラリに入るだけ」なのか「そのままレイヤーで再生が始まる」のかが変わります。
取り込んだ素材は **MediaBrowser** ウィンドウで整理・検索します。
## ドラッグ&ドロップで取り込む
OS のファイラ(Finder / エクスプローラー)から、ファイルでもフォルダでも直接落とせます。
受け付けられる場所の上にドラッグすると、カーソルが「コピー」になり、落とし先が青くハイライトされます。
### 落とす場所で挙動が変わります
| 落とす場所 | 起きること |
|---|---|
| **MediaBrowser のサムネイル領域** | 表示中のフォルダへ取り込みます |
| **MediaBrowser 左のフォルダ行** | **その行のフォルダ**へ取り込みます(`All` / `Random` / 外部ソースの行は対象外) |
| **Layer Hierarchy のレイヤー行** | `Temp` フォルダへ取り込んだうえで、**先頭の1件をそのレイヤーへ割り当てます**(=落としただけで再生が始まる) |
| **Layer ウィンドウのプレビュー領域** | 同上 |
| **ContentPlayer ノードのプレビュー領域** | 同上 |
> **レイヤーへ直接落としたときは、複数落としても割り当ては先頭の1件だけです。**
> 残りは取り込まれて `Temp` フォルダに入るので、MediaBrowser から呼び出せます。
> `Temp` フォルダは必要になった時点で自動的に作られます。
> **グループの行に落とすと、取り込みだけが行われます。**
> グループは映像を持たないため割り当ては起きません。素材はライブラリ(`Temp`)に入ります。
> **All 表示中にサムネイル領域へ落とすと、フォルダは自動で作られます。**
> 投入先フォルダが決まっていないため、**各ファイルの親ディレクトリ名**のフォルダへ振り分けられます
> (親ディレクトリ名が取れない場合は `Uncategorized`)。
> どのフォルダに入れたいかが決まっているなら、そのフォルダを選んでから落とすか、左のフォルダ行へ直接落としてください。
### フォルダごと落とせます
ディレクトリを落とすと**サブフォルダまで再帰的に**走査して、対応する拡張子のファイルだけを拾います。
対応していないファイルは黙って無視されるので、素材と資料が混ざったフォルダをそのまま落として構いません。
### 取り込み中の表示
取り込みが始まると、**画面右上のFPS表示の左隣**に `◐ 12/40` のようなスピナー付きのカウンタが出ます。
マウスを乗せると、種別ごとの内訳(`Video: 8/30` / `Image: 4/10`)と処理中のファイル名が確認できます。
レイヤーへ直接落とした場合は、そのレイヤー行が取り込み中だけ青く塗られます。
ドロップでの取り込みには**完了ダイアログはありません**。カウンタが消えたら終わりです。
終わったコンテンツは**そのまま MediaBrowser に現れます**。再起動も再スキャンも要りません。
> **同じファイルを2回落としても解析はやり直しません。**
> 解析済みのファイルはスキップされますが、**投入先のフォルダには入ります**。
> 「他のフォルダにも同じクリップを置きたい」というときは、もう一度落とすのが最短です。
> **切り離した(外部)ウィンドウにも落とせます。**
> メインウィンドウから独立させたウィンドウでも、ドロップ先の判定は同じように働きます。
> **画像のサムネイルは、取り込み時には作られません。**
> 動画とシェーダーは取り込みと同時にサムネイルができますが、画像は絵が出ないまま並びます。
> メニューバーの **MediaBrowserCache → RegenerateMissingThumbnails** を実行すると生成されます。
## 元のファイルはコピーされません
取り込みで作られるのは**サムネイルと解析結果のキャッシュだけ**で、映像ファイル本体は元の場所に置かれたままです。
ライブラリには元ファイルの絶対パスが記録されます。
- **元ファイルを移動・削除すると、そのクリップはサムネイルが `⚠ MISSING` になります**
- MediaBrowser の右クリック → `Delete from Library` で消えるのは**ライブラリ上の登録だけ**です(元ファイルは残ります。確認ダイアログにも `(The original file will not be deleted)` と出ます)
サムネイルやキャッシュの置き場所(=SynapseRack の作業フォルダ)は変更できます。
[VJ素材を読み込むパス(Source Directory)を指定する](./source-directory)を参照してください。
## MediaBrowser
取り込んだ素材を並べて、レイヤーへ送り出すウィンドウです。
メニューバーの **Create → MediaBrowser** で開きます。**何枚でも開けます**。

左がフォルダ一覧、右がサムネイルのグリッド、上が検索・並べ替え・ズーム、下が現在のフォルダ名と選択バーです。
### クリックでレイヤーへ送る
サムネイルを**クリックすると、その場でレイヤーへ割り当てられます**。送り先の決まり方は2通りです。
| 送り先 | 決め方 |
|---|---|
| **固定** | ウィンドウ上部の `Layer` ドロップダウンで対象を選ぶ。以後クリックは必ずそこへ行きます |
| **その都度** | ドロップダウンが `None` のときは、**Preview トグルが立っているレイヤーすべて**へ割り当てます |
> **ドロップダウンで固定していると、Preview トグルより固定先が優先されます。**
> 「Preview を入れたのに違うレイヤーに出る」ときは、たいていドロップダウンが `None` 以外になっています。
割り当てが済むと Preview トグルは既定で戻ります。立てたままにしたい場合は
**Setting → GlobalSettings → System → インターフェイス** の
**「割り当て後もレイヤー選択を保持」**をONにしてください。
サムネイルは**ドラッグしてレイヤー行やプレビューへ落とす**こともできます(複数選択していても割り当ては先頭1件)。
ドラッグ中は最大3枚のサムネが重なったゴーストが付いてきて、複数選択のときは件数のバッジが出ます。
> **アプリ内のドラッグは、切り離したウィンドウをまたげません。**
> MediaBrowser を独立したウィンドウに切り離すと、別ウィンドウのレイヤーへはドラッグできなくなります
> (クリックによる割り当てや、OSからのドロップは問題なく使えます)。
### 選択と一括操作
| 操作 | 動き |
|---|---|
| クリック | 選択+レイヤーへ割り当て |
| **Ctrl/Cmd + クリック** | 選択のオン・オフ(割り当てはしない) |
| **Shift + クリック** | 範囲選択(割り当てはしない) |
2件以上選ぶと下部に選択バーが出て、`Move`(フォルダへ移動)/ `Tag` / `Regen`(サムネ再生成)/ `Delete` / `Clear` が使えます。
右クリックでも同じ一括メニューが出ます。
### フォルダで整理する
フォルダ一覧の**空白または通常フォルダを右クリック**すると `New Folder` が出ます。
既存フォルダの右クリックでは `Rename` / `Delete` と、並び順のモードも選べます。
| メニュー | 動き |
|---|---|
| **Sort: Manual** | 自分で並べた順を保持します |
| **Sort: File Name** | ファイル名の自然順(`item2` → `item10` の順)で並べます |
`Sort: File Name` のフォルダでサムネをドラッグして並べ替えると、**確認なしで `Sort: Manual` に切り替わります**
(そのときの見た目の順序をそのまま引き継ぐので、画面は動きません)。名前順に戻したいときは `Sort: File Name` を選び直してください。
サムネイルをフォルダ行へドラッグして落とすと、**既定は参照コピー**(元のフォルダにも残したまま、落とした先にも出す)です。
**Alt(macOSはOption)を押しながら**落とすと移動になります(移動元がはっきりしている=特定フォルダを表示中のときだけ)。
> **同じクリップは複数のフォルダに置けます。実体は1つです。**
> 参照が増えるだけなのでライブラリは重複しません。片方だけ外したいときは、そのフォルダを表示した状態で
> 右クリック → `Remove from this folder` を使ってください(最後の1つの参照を外すと `Uncategorized` へ退避します)。
### サムネイルの見かた
| 見た目 | 意味 |
|---|---|
| **赤い枠** | どこかのレイヤーで使用中(フォルダ行も赤くなります) |
| **青い枠** | 選択中 |
| **`⚠ MISSING`** | 元ファイルが見つからない |
| **右上の ⚠ / ✕** | 再生可否のバッジ(後述) |
マウスを乗せると、ファイル名・コーデック表示名・`1920x1080 · 30fps · 1:23`・注意書きがツールチップに出ます。
グリッドは **1ページ64件**で、上部の `Page` で送ります。`Zoom` でサムネの大きさ、`Sort` で `Name` / `Date` / `Type` の並べ替えができます。
サムネイルの絵が気に入らないときは、右クリック → `Update Thumbnail` で別のフレームに切り替わります。
### そのほかの右クリックメニュー
| メニュー | 動き |
|---|---|
| **Move to...** | フォルダを選んで移動 |
| **Edit Tag** | タグの付け外し(後述の自動タグの承認もここ) |
| **Delete from Library** | ライブラリから削除(元ファイルは消えません)。使用中の場合は「再生を止めて消すか」を聞かれます |
| **Open File Location** | OS のファイラで元ファイルの場所を開きます |
## 検索する
上部の `Search` に文字を打つと、**入力が止まってから約0.3秒後**に絞り込みが走ります。
検索を始めた時点でフォルダの選択は解除され、**全フォルダ横断**の検索になります。
対象は**ファイル名・自分で付けたタグ・自動タグ**の部分一致(大文字小文字は区別しません)です。
### 自然言語で探す
同じ検索ボックスに**言葉で書いても探せます**。モードの切り替えもプレフィックスも要りません。
部分一致の結果がまず出て、そのうしろに**意味の近い順**で候補が足されます。
- **日本語でも英語でも通ります**(多言語対応のモデルをそのまま使っていて、翻訳は挟んでいません)
- 判定の材料は**サムネイル画像1枚**です。映像全体の流れや音は見ていません
- ツールチップの `sim: 0.13` が類似スコアです。このモデルでは **0.10〜0.15 あたりが「よく合っている」** 側の値です
ウィンドウ下部に、索引づくりの状態が出ます。
| 表示 | 意味 |
|---|---|
| `Semantic ready` | 索引ができていて、いつでも探せます |
| `Indexing 120/2000` | 索引づくりの途中(残りは通常の部分一致で探せます) |
| `Semantic: models not found` | 自然言語検索が使えない状態(下の設定を確認してください) |
索引は**バックグラウンドで少しずつ**作られます。既定では60秒ごとに新しい素材を拾い、
フレームが重いときは自動的に手を止めるので、本番中に取り込んでも演奏の邪魔をしません。
> **索引はサムネイルから作られます。**
> サムネイルが無いクリップは索引に入りません。`⚠ MISSING` になっている素材や、
> サムネイル生成に失敗した素材が引っかからないときは、後述の `RegenerateMissingThumbnails` を試してください。
### おすすめフォルダ
自然言語検索が有効なとき、フォルダ一覧に**3つのおすすめ**が並びます。
| フォルダ | 中身 |
|---|---|
| **★ For You** | よく使っているクリップに似ているもの |
| **◎ Discover** | 最近の流れには合うのに、あまり使っていないもの |
| **▶ Match Live** | **今出している映像**に似ているもの(既定4秒ごとに更新) |
### 自動タグ
索引づくりと同時に、クリップごとにタグの候補が付きます。
右クリック → `Edit Tag` の中に `✨ Suggested` として出るので、クリックすると正式なタグになります(候補が2つ以上あるときは `✨ Approve all` も出ます)。
承認していない候補も検索には引っかかります。
### 設定
**Setting → GlobalSettings → System → MediaBrowser** にまとまっています。
| 項目 | 内容 |
|---|---|
| **セマンティック機能を有効にする** | 自然言語検索・自動タグ・推薦のオン/オフ。**変更は再起動後に反映されます** |
| **インデックス更新間隔(秒)** | 索引を作り直す間隔(10〜3600秒、既定60) |
| **インデックスを再構築** | 索引を捨てて作り直します(バックグラウンドで自動的に再構築されます) |
| `For You` / `Discover` / `Match Live` | おすすめフォルダの表示 |
| **Match Live 更新間隔(秒)** | Match Live の更新間隔(1〜60秒、既定4) |
> **おすすめフォルダを消しても、開いているブラウザからは消えません。**
> フォルダ自体の増減は**次に開いた MediaBrowser から**反映されます(中身の変化は即時です)。
> **ブラウザ側の表示は英語のままです。**
> `Semantic ready` / `Indexing n/m` / `★ For You` / `✨ Suggested` などは日本語化されていません。
## フォルダをまとめて取り込む
ドラッグ&ドロップを使わずに取り込むこともできます。
メニューバーの **MediaBrowserCache → ImportFromDirectory** でフォルダを選ぶと、
**選んだフォルダの名前でひとつのフォルダが作られ**、中身がすべてそこへ入ります(サブフォルダも再帰的に拾います)。
終わると結果がダイアログで出ます。
```
Import completed from:
/Users/you/Movies/VJ
12 imported (2 with warnings, 1 unsupported)
3 already cached (skipped)
```
- `with warnings` … ⚠ が付いたクリップ(未検証のコーデックなど)
- `unsupported` … このOSでは再生できないクリップ
- `already cached` … 解析済みでスキップした分
## 対応フォーマット
### 取り込める拡張子
取り込み処理が受け付けるのは次の拡張子です。ここに無いものは落としても無視されます。
| 種類 | 拡張子 |
|---|---|
| 動画 | `.mp4` `.mov` `.avi` `.mkv` `.webm` `.flv` `.wmv` `.m4v` `.mpg` `.mpeg` |
| 画像 | `.png` `.jpg` `.jpeg` |
| シェーダー | `.hlsl` |
> **HAP素材は `.mov`(または `.mp4`)のまま入れてください。**
> 拡張子が `.hap` のファイルは取り込み対象に含まれていません。中身が HAP かどうかは、
> 拡張子ではなく**取り込み時のコーデック解析**で判定されます。
> **取り込めることと再生できることは別です。**
> 例えば `.mkv` は取り込めますが、中身がどのコーデックでも再生できません(✕ が付きます)。
### 再生可否のバッジ
取り込み時に中身のコーデックを調べているので、サムネイルの右上に結果が出ます。
| バッジ | 意味 |
|---|---|
| (なし) | 実測で問題なし |
| **⚠** | 条件付き、または未検証のコーデック |
| **✕** | **このOSでは再生できません**。HAPへの変換をおすすめします |
理由はサムネイルにマウスを乗せると出ます。バッジが出ないのが普通の状態です。
### コーデック
- **映像(macOS / Windows 共通)**: HAP / HAP Alpha / HAP Q(推奨)、H.264、Apple ProRes(Proxy / LT / 422 / HQ / 4444)、Motion JPEG (4:2:0)、AV1、MPEG-1 / MPEG-2
- **映像(macOSのみ)**: HEVC (H.265)、VP8
- **映像(Windowsのみ)**: MPEG-4 (DivX/Xvid)、WMV / VC-1、FLV、DNxHD / DNxHR、CineForm
- **コンテナ**: mp4 / mov / m4v / avi / webm / flv / wmv / mpg / mpeg(**mkvは非対応**)
- **画像**: png / jpg
- **クリップ内音声**: AAC / MP3 / PCM / Vorbis / Opus / FLAC / AC-3 ほか
> **リアルタイム再生の安定性・パフォーマンスは HAP系 / H.264 を推奨します。**
> アルファチャンネル付きの素材は **HAP Alpha** をご利用ください。
> 変換方法は[Hapコーデックとは](./about-hap-codec)を参照してください。
> **Windows の HEVC / VP8 / VP9 は現在再生できません。**
> 再生エンジンの既知の問題によるもので、✕ バッジが付きます。HAPへの変換をご利用ください。
## 同梱のサンプルクリップ
初回起動時に、同梱のサンプル映像が自動的に配置・取り込みされ、MediaBrowser に
`Narishige H2KGRAPHICS` フォルダとして現れます(フォルダ名は提供アーティスト名です)。
消してしまった場合は、メニューバーの **Template** の一番下にある
**「サンプル素材を再インストール」**で戻せます(自動では戻りません)。
## 困ったときのメニュー
メニューバーの **MediaBrowserCache** に、ライブラリの保守用メニューがあります。
| メニュー | 動き |
|---|---|
| **CheckMissingFile** | 元ファイルが見つからないクリップを一覧します(最大20件まで表示) |
| **RegenerateMissingThumbnails** | サムネイルが欠けているクリップの分だけ作り直します |
| **ClearAllCache** | 取り込み結果・サムネイル・検索の索引をすべて消します(確認あり。**元の映像ファイルは消えません**) |
> **`ClearAllCache` のあとは再起動してください。**
> 実行後に「再起動して読み込み直してください」というメッセージが出ます。
> 元ファイルは無事なので、取り込み直せば元の状態に戻せます。
## 関連
- [Media Browser](./window/contents-browser) — ウィンドウ側のリファレンス(MIDI割り当てなど)
- [VJ素材を読み込むパス(Source Directory)を指定する](./source-directory) — サムネイル・キャッシュの置き場所を変える
- [Hapコーデックとは](./about-hap-codec) — 推奨コーデックと変換方法
- [Spoutを読み込む、出力する](./load-spout) — ファイル以外の映像入力
- [Shader(.hlsl)ファイルを読み込む](./load-shader) — シェーダー素材の扱い
---
## MIDIマッピング
URL: https://synapserack.com/ja/docs/midi-mapping
Description: MIDIコントローラーのつまみやパッドを、画面のUIへ直接割り当てる機能。Setting → MidiMapping でアサインモードに入り、青くなったUIをクリックして赤にし、動かしたいコントローラーを触るだけで紐付きます。使うデバイスの選択、MIDI Inspector の読み方、解除の仕方まで。
MIDIコントローラーのつまみ・フェーダー・パッドを、**画面に出ているUIそのもの**に割り当てる機能です。
専用のマッピング表を書くのではなく、「アサインモードに入る → 動かしたいUIをクリックする → コントローラーを触る」
の3手で紐付きます。

## アサインモードに入る
メニューバーの **Setting → MidiMapping**。

これがモードのON/OFFトグルです。ONにすると、
- 割り当てられるUIが**青いカバー**で覆われます
- **MIDI Inspector** ウィンドウが開きます
青くなっていない部分は、そもそも割り当ての対象ではありません。
## 割り当てる
1. 青いUIを**クリック**します。**赤**に変われば選択できています
2. その状態で、割り当てたい**つまみを回す/パッドを叩く**
3. MIDI Inspector の `Mappings:` に行が増えれば完了です

赤くなったUIをもう一度クリックすると選択が外れます。別のUIをクリックすれば選択はそちらへ移ります。
> **1つのUIに複数の割り当てを重ねられます。**
> 選択したまま別のつまみを動かせば、2本目・3本目として追加されます(上書きではありません)。
> 逆に、同じつまみを複数のUIに割り当てて一斉に動かすこともできます。
> **割り当ての識別はチャンネルと番号だけで、デバイス名は見ていません。**
> 2台のコントローラーが同じチャンネルの同じCC番号を送っていると、どちらを動かしても同じUIが動きます。
> 使わないデバイスは後述の**デバイス選択**でOFFにしておくのが確実です。
## MIDI Inspector の読み方
アサインモード中に開くウィンドウです。上から順に、
| 表示 | 内容 |
|---|---|
| **Assign Mode**(ボタン) | 押すとアサインモードを抜けます(このウィンドウも閉じます) |
| **Selected:** | いま選択中のUIの識別子。何も選んでいないときは `No selection` |
| **Mappings:** | 選択中のUIに割り当て済みの一覧。無ければ `No mappings` |
| **OSC sources (click to assign):** | 受信中のOSCアドレス一覧([OSCの入出力](./osc-input-output) 参照) |
`Mappings:` の各行の書式は信号の種類で変わります。
| 行の表示 | 意味 |
|---|---|
| `CC 7 @ Ch1` | コントロールチェンジ7番、MIDIチャンネル1 |
| `Note 36 @ Ch1` | ノート36番、MIDIチャンネル1 |
| `Key Space` | キーボードのSpace([キーボードマッピング](./keyboard-mapping)) |
| `OSC /fader [0]` | OSCアドレス `/fader` の1つ目の引数 |
**チャンネルは1始まり**で表示されます。
### 解除する
行の右端の **×** を押すと、その割り当てだけが消えます。まとめて消すボタンはありません。
## アサインモードを抜ける
もう一度 **Setting → MidiMapping** を選ぶか、MIDI Inspector の **Assign Mode** ボタンを押します。
青いカバーが消え、通常どおりマウスで触れる状態に戻ります。
> **MIDI Inspector を × で閉じても、アサインモードは終わりません。**
> 画面が青いままになるので、その場合は Setting → MidiMapping をもう一度選んでください。
## 割り当てられるもの
| 場所 | 例 |
|---|---|
| [Layer](./window/layer) | Opacity、ブレンドモード、再生/停止、シーク、速度の ÷2・リセット・×2、Beat の増減、Sync、Preview・Stretch・FadeLoop の各トグル |
| [Global Tempo](./window/global-tempo) | TAP / −1 / +1 / ÷2 / ×2 / RST |
| [Media Browser](./window/contents-browser) | サムネイル1枚ずつ(8×8)と、フォルダの前後・ページの前後 |
| [Node Editor](./window/node-editor) のノード | Slider、Toggle、Button、Float、Step Sequencer のマス目や再生ボタンなど |
| ControlPanel / Node View に出したノードUI | 上と同じノードでも**別枠**(下の注意参照) |
| [Widget Panel](./widget-panel) | 置いたウィジェット |
> **同じノードでも、Node Editor 上のUIと ControlPanel 上のUIは別の割り当て先です。**
> 動かす値は同じなので、**普段触るほうのUIに割り当てれば十分**です。両方に割り当てても構いません。
## 値の効き方
つまみ・フェーダー(CC)とパッド(ノート)は、どちらも **0〜1** に直されてUIへ届きます。
| 送られるもの | UI側に届く値 |
|---|---|
| CC 0〜127 | 0.0〜1.0 |
| ノートオン(強さ0〜127) | 0.0〜1.0 |
| ノートオフ | 0.0 |
スライダー系はこの値がそのまま位置になります。
ボタン・トグル系は **0.5 を下から上へ超えた瞬間(押し込み)に1回だけ**発火します。
> **弱く叩くとパッドが反応しないことがあります。**
> ノートの強さも0〜1に直してから 0.5 と比べているので、ベロシティが低いと押し込みと見なされません。
> ベロシティ固定(フルベロシティ)に設定できるコントローラーなら、そちらのほうが安定します。
> **トグルにつまみを割り当てると、回す途中で1回だけ切り替わります。**
> 0.5をまたいだ瞬間だけを見ているので、0.5以上の範囲で回し続けても連打にはなりません。
## 使うMIDIデバイスを選ぶ
メニューバーの **Setting → GlobalSettings → MIDI**。
接続中の入力デバイスが1行ずつ並び、チェックを外したデバイスは**完全に無視されます**。
DAWの入力ON/OFFと同じ感覚のものです。
| 項目 | 動き |
|---|---|
| デバイス名のチェックボックス | ON=そのデバイスからの信号を受け取る/OFF=無視する |
| **Rescan Devices** | デバイス一覧を今すぐ取り直します |
| **No MIDI input devices** | 入力デバイスが1つも見つかっていない状態の表示 |
デバイスの抜き差しは**自動でも定期的に拾われます**。挿したのに出てこないときに Rescan Devices を押してください。
> **同じ機種を2台つなぐと、2台目以降の名前に `#2` が付きます。**
> 名前が完全に同じだと区別できないための措置です。抜き差しで並びが変わることがあるので、
> 2台構成のときは片方だけを挿した状態で確認すると分かりやすいです。
> **このデバイスのON/OFFはプロジェクトではなくマシン側に保存されます。**
> デバイス名は環境ごとに違うので、`.synapse` を他人に渡してもこの設定は付いていきません。
## パッドのグリッドをまとめて割り当てる
[Media Browser](./window/contents-browser) のサムネイルは **8×8のマス**として扱われていて、
パッドコントローラーの盤面をそのまま重ねられます。
1. アサインモードに入ると、サムネイルが無いマスにも `[行,列]` と書かれた**枠**が出ます
2. 左上のマス **`[0,0]`** を選んで、パッドの**左上**を叩きます
3. グリッドサイズを聞くダイアログが出るので、**4×4 / 4×8 / 8×4 / 8×8** から選びます
4. 指示に従って **右上 → 左下 → 右下** の3つを叩きます
5. 4隅の並びから残りのマスが計算され、**まとめて割り当てられます**
途中の **Cancel** で抜けると、最初に叩いた `[0,0]` の1つだけが残ります。
> **4隅は同じチャンネル・同じ種類で叩いてください。**
> 違うチャンネルやCC/ノートの取り違えは無視され、次の隅として記録されません。
> **この一括割り当てはMIDIのパッド専用です。**
> キーボードやOSCで `[0,0]` を割り当ててもグリッドのダイアログは出ません。
## 保存のされ方
割り当ては**プロジェクト(`.synapse`)と一緒に**保存されます。
レイヤーの割り当てはレイヤーに、ノードの割り当てはそのノードに、MediaBrowser のグリッドは
MediaBrowser に、という形でそれぞれの持ち物として保存されるので、
プロジェクトを開き直せばそのまま復活します。
マシン側(`settings.json`)に残るのは、**無効にしたMIDI入力デバイスの一覧**だけです。
## 関連
- [キーボードマッピング](./keyboard-mapping) — 同じアサインモードでキーを割り当てる
- [OSCの入出力](./osc-input-output) — 同じ MIDI Inspector からOSCを割り当てる
- [Widget Panel](./widget-panel) — 自分で並べた操作画面にMIDIを割り当てる
---
## Group(グループ)
URL: https://synapserack.com/ja/docs/module/group
Description: SynapseRackのGroupノード3種のリファレンス。ノードグラフを入れ子のサブグラフとして畳み、Group In / Group Out で境界の出入口を作る方法を説明します。
複数のノードをひとつに畳んで、中へ潜れるようにするノードです。全3種。
大きくなったグラフを整理し、作った仕組みを部品として使い回すためのものです。
## ノード一覧
| ノード | 置く場所 | 役割 |
|---|---|---|
| **Group** | 外側のグラフ | 入れ子のサブグラフ本体。ノード上の「▶ Enter」ボタンかズームで寄ると中へ潜り、ズームアウトで戻れます |
| **Group In** | グループの中 | グループの入口。外から来た値を中のグラフへ供給します |
| **Group Out** | グループの中 | グループの出口。中の結果を外のグラフへ返します |
## 境界のポートは中から生やします
Group ノード自体には、最初はポートがありません。
**中に Group In / Group Out を置くと、外側の Group ノードに対応するポートが生えます。**
- グループの中に Group In を置く → 外側の Group に入力ポートが1つ増える
- グループの中に Group Out を置く → 外側の Group に出力ポートが1つ増える
Group In / Out はどちらも `label` を持っていて、これが外側に出るポート名になります。
分かる名前を付けておくと、畳んだあとでも何の口か分かります。
## 型の決まり方は In と Out で違います
- **Group In**: ノード上の **Type ドロップダウンで明示的に選びます**(Any / Texture / Float / Int / Bool / Color / String / Rect / Trigger / Material)。既定は Any(何でも通る)
- **Group Out**: 中で最初の接続が繋がった時点でその型を自動で纏い、接続が無くなると Any に戻ります
float でも RenderTexture でも同じ Group In / Out で受けられるので、
グループごとに専用のノードを用意する必要はありません。
## Ctrl+Shift+G で解除
グループを選んで `Ctrl+Shift+G` を押すと、中のノードが外側のグラフへ展開されます。
## 関連
- ノードエディタの操作は [Node Editor](../window/node-editor) を参照してください
---
## Math(計算)
URL: https://synapserack.com/ja/docs/module/math
Description: SynapseRackのMathノード全16種のリファレンス。四則演算・丸め・補間の一覧に加えて、Triggerが再送信であること、Divideのゼロ除算、Lerpのクランプなど実装からしか分からない挙動をまとめています。
数値を計算するノードです。全16種。float を受けて float を返す形なので、
**ツマミの値を別の値に変換する中継**として使います。
## 3つの構造
ポート構成はノード自身ではなく、継承している基底クラスが決めています。
| 構造 | ポート | 該当ノード |
|---|---|---|
| 二項演算 | `A` / `B` → `Result` | Add / Minus / Multiply / Divide / Modulo / Pow / Max / Min / Average / Abs |
| 単項演算 | `A` / `Trigger` → `Result` | Ceil / Floor / Round / Trunc / Fract |
| 独自 | `A` / `B` / `T` / `Trigger` → `Out` | Lerp |
## ノード一覧
| ノード | 説明 |
|---|---|
| **Add** | A + B |
| **Minus** | A − B |
| **Multiply** | A × B |
| **Divide** | A ÷ B。**B が 0 のときは出力を更新しません**(下記の注記) |
| **Modulo** | A を B で割った余り。ループするカウンタを作るときに使います |
| **Pow** | A の B 乗 |
| **Max** | A と B の大きいほう。値の下限止めに使えます |
| **Min** | A と B の小さいほう。値の頭打ちに使えます |
| **Average** | A と B の平均 |
| **Abs** | A の絶対値。**B ポートは使われません**(下記の注記) |
| **Ceil** | A を切り上げ |
| **Floor** | A を切り捨て |
| **Round** | A を四捨五入 |
| **Trunc** | A を 0 方向へ切り捨て |
| **Fract** | A の小数部分だけを取り出します。0〜1 を繰り返す信号を作れます |
| **Lerp** | A と B を T で線形補間します |
## 知っておくと引っかからないこと
### Trigger は「サンプル&ホールド」ではありません
Ceil / Floor / Round / Trunc / Fract にある `Trigger` は、**入力を止めて値を保持するものではありません。**
A は常に流れていて、値が変わるたび Result が出ます。Trigger がするのは
**今の計算結果をもう一度下流へ押し出す**ことだけです。
```csharp
triggerInput.OnTriggerChanged.Subscribe(_ => { OutResult(); }).AddTo(this);
```
拍に合わせて下流を再発火させたいときに使ってください。A を止める用途には使えません。
### Divide のゼロ除算は「無視」されます
B が 0 のとき、Divide は出力そのものを更新しません。
```csharp
if (currentValueB.Value == 0) return;
```
NaN や 0 が出るのではなく、**直前の値が残り続けます**。落ちないので安全ではありますが、
下流から見ると「値が固まった」ようにしか見えません。動きが止まったら B を疑ってください。
### Lerp の T は 0〜1 にクランプされます
`Mathf.Lerp` を使っているため、T に範囲外の値を入れても A と B の外側へは出ません。端で止まります。
A→B を飛び出させたいときは Lerp ではなく Multiply と Add を組み合わせてください。
### Abs の B ポートは何にも繋がっていません
Abs は二項演算の基底クラスを継承しているため A / B 両方のポートが生えますが、
実装は `Mathf.Abs(A)` だけで **B を一切参照していません**。B に挿しても何も起きません。
### 二項演算は A / B どちらが動いても再計算します
Add や Multiply などの二項演算は、A と B のどちらか一方が変わった時点で結果を出し直します。
片方を「設定値」、もう片方を「動く信号」として使う組み方で問題ありません。
## 関連
- 論理演算(And / Or / Xor / Not)や Random / Counter は [Operation](../module/operation) にあります
- 数値を保持・配列化するノードは [Variable](../module/variable) にあります
---
## Operation(判定と制御)
URL: https://synapserack.com/ja/docs/module/operation
Description: SynapseRackのOperationノード全11種のリファレンス。論理演算・IFFilter・Counter・Switch・Randomの一覧と、真偽の境界が1.0であることやCounterがLoop OFFではクランプされないことなど、実装からしか分からない挙動をまとめています。
値を判定して流れを分けたり、数え上げたり、選んだりするノードです。全11種。
Math が「値を変える」のに対して、**Operation は「どちらへ流すか」を決めます。**
## 論理演算(4種)
すべて float を受け、**1 か 0 を返します**。
| ノード | 結果が 1 になる条件 |
|---|---|
| **And** | A と B が**両方とも 1.0 以上** |
| **Or** | A と B の**どちらかが 1.0 以上** |
| **Xor** | A と B の**片方だけが 1.0 以上** |
| **Not** | A が **1.0 未満** |
> **真偽の境界は 0 ではなく 1.0 です。**
> `A >= 1.0f` で判定しているため、**0.5 は「偽」になります**。
> 0〜1 の連続値(Slider や LFO の出力)をそのまま挿すと、1.0 に到達した瞬間しか真になりません。
> 手前に [Math](../module/math) の Ceil や Round を挟むか、IFFilter でしきい値を明示してください。
**Not の B ポートも使われません。** 二項演算の基底クラスを継承しているため生えているだけで、
実装は A しか見ていません([Math の Abs](../module/math) と同じ事情です)。
## 判定と分岐
### IFFilter
A と B を比べて、結果によって出力先を切り替えます。
比較の種類はノード上のドロップダウンで選びます: `>` `<` `==` `!=` `>=` `<=`。
| ポート | 中身 |
|---|---|
| `True Output` / `False Output` | 判定結果に応じて、**どちらも A の値**が出ます |
| `True Trigger` / `False Trigger` | 同じタイミングでトリガーが出ます |
> **出るのは常に A です。B は比較にしか使われません。**
> 「条件を満たしたら B を流す」という動きにはならないので、値そのものを切り替えたいときは
> Switch を使ってください。
> `==` / `!=` は浮動小数の比較なので `Mathf.Approximately`(近似一致)で判定しています。
判定は A・B の変化、Trigger、条件の変更のいずれでも走ります。
### Switch
`Index` で A / B / C / D の4入力から1つを選び、`Selected` へ流します。
Index は `Mathf.Clamp(Mathf.FloorToInt(Index), 0, 3)` で処理されるため、
**小数は切り捨て、範囲外は端に丸められます**(-5 なら A、99 なら D)。
Counter の出力をそのまま挿しても事故になりません。
## 数え上げとタイミング
### Counter
`Count Trigger` が来るたびに数え、`Count Output` へ整数を出します。
`Reset Trigger` で **Min Value に戻ります**(0 ではありません)。
**Max が Min より小さいと減っていきます。** カウントの向きは Max と Min の大小関係で決まります。
> **Loop が OFF のとき、値は止まりません。**
> 範囲外に出たときの処理はループ時にしか実装されていないため、Loop OFF では
> Max を超えて増え続けます。上限で止めたい場合は、後ろに
> [Math の Min / Max](../module/math) を置いて挟んでください。
### Init Trigger
プロジェクトのロード/ノード生成から **Delay 秒後に1回だけ**発火します。
初期値の流し込みや状態のリセットの入口として使います。
Delay はロード直後の数フレームのゴタつきを避けるためのもので、負の値は 0 に丸められます。
### Random
`Trigger` が来たときに、A 〜 B の範囲から乱数を1つ出します。
> **A や B を動かしても振り直されます。**
> 二項演算の基底クラスを継承しているため、入力が変化した時点でも出力が更新されます。
> Trigger のタイミングだけで振りたい場合は、A / B は動かさない値にしておいてください。
## 文字列とメディア
### Combine
2つの文字列を `Separator` で繋ぎ、末尾に `Suffix` を足して出します。
**B が空のときは Separator も付きません**(A と Suffix だけになります)。
ファイルパスの組み立てに使えます。
### MediaBrowserIndex
ドロップダウンで選んだ MediaBrowser のフォルダに対し、`Index` 番目の
**ファイルパス**と、そのフォルダの**アイテム数**を出します。
Counter と組み合わせると、拍ごとに素材を切り替える流れが作れます。
## 関連
- 四則演算・丸め・補間は [Math](../module/math) にあります
- StepSequencer は Tempo、Easing / Curve / ADSR / LFO は Signal カテゴリへ移動しました
---
## Output(出力)
URL: https://synapserack.com/ja/docs/module/output
Description: SynapseRackのOutputノード5種のリファレンス。MasterOutput / MasterResolution でマスター映像と解像度をグラフへ引き込み、MediaOut / SpoutSender / NDISender で外へ出す方法を説明します。
グラフの終端で映像を外へ出すノードと、マスター出力の状態をグラフへ引き込むノードです。全5種。
## マスターを読む(2種)
どちらも**読み取り専用**で、入力ポートを持ちません。
### MasterOutput
全レイヤーを合成した最終的なプログラム映像を、RenderTexture としてグラフへ引き込みます。
これがあることで、**マスター映像そのものを Spout / NDI / MediaOut / Fx へ流せます**。
以前は掴む手段がありませんでした。
### MasterResolution
マスター出力の解像度を `Resolution X` / `Resolution Y` として整数で出します。
加工ノードの解像度を出力に追従させたり、解像度に応じて処理を切り替えたりする元ネタに使います。
## 外へ出す(3種)
| ノード | 出す先 | 設定 |
|---|---|---|
| **SpoutSender** | Spout(同一PC内の他アプリ) | 送信名 |
| **NDISender** | NDI(ネットワーク経由) | 送信名 |
| **MediaOut** | MediaBrowser の「Node」ライブソース | メディア名 |
3つとも `Render Texture` の入力を1つ持ち、出力ポートはありません。
### MediaOut
グラフの出力を **MediaBrowser の中のライブ素材として登録します**。
外部アプリへ出すのではなく、SynapseRack の中で使い回すためのものです。
名前を付けておくと、MediaBrowser からレイヤーへ普通のクリップと同じように置けます。
サムネイル用のプレビューは約10fpsで更新されます。
## 関連
- Spout / NDI / ウィンドウキャプチャの**受け取り**側は Source カテゴリにあります
- 外部出力の設定は [Output Window](../window/preview) と Global Settings を参照してください
---
## UI(操作子)
URL: https://synapserack.com/ja/docs/module/ui
Description: SynapseRackのUIノード全3種のリファレンス。Slider / Button / Toggle の使い方と、入力ポートが操作子そのものを動かす双方向の作りになっていることを説明します。
グラフの中に置く操作子です。全3種。手で触って値を作る入口であり、
MIDI や OSC からの値をグラフへ引き込む窓口でもあります。
## ノード一覧
| ノード | ポート | 出るもの |
|---|---|---|
| **Slider** | `Min` / `Max` / `Value` → `Out` | つまみの位置(float) |
| **Button** | `In` → `Bool Output` | 押している間だけ true |
| **Toggle** | `In` → `Bool Output` | 押すたびに true / false が入れ替わる |
Slider は縦・横を切り替えられます。
## このカテゴリの最重要事項
**入力ポートは「値の素通し」ではなく、操作子そのものを動かします。**
```csharp
// 外部信号で操作子の状態を駆動する
valueInput.OnFloatChanged.Subscribe(value => { sliderValue.Value = value; }).AddTo(this);
```
3つとも同じ作りで、入力ポートに値を挿すと**画面上のつまみやボタンが実際に動き**、
その結果が出力へ流れます。つまり:
- **OSC や MIDI の値をそのまま挿せます。** 別ウィンドウやWidget Panelに出した操作子が、
外部機材と連動して動きます
- **手で動かしても、外から動かしても、下流から見た挙動は同じです**
- 出力は「入力のエコー」ではなく**操作子の現在値**です。手で触った変化もそのまま出ます
[Layer](/ja/docs/nodes/layer/) 系ノードと同じ双方向の考え方です。
## Slider の Min / Max
`Min` と `Max` もポートです。演奏中に可動範囲そのものを別のノードから動かせます。
つまみの現在値は `Value` ポート(または `sliderValue`)で、こちらも外から差し込めます。
## 関連
- OSC の入出力ノードは I/O カテゴリ、Tap Tempo は Tempo カテゴリへ移動しました
- 値の保持と再送信は [Variable](../module/variable)、判定は [Operation](../module/operation) にあります
---
## Variable(変数)
URL: https://synapserack.com/ja/docs/module/variable
Description: SynapseRackのVariableノード全6種のリファレンス。Float / Int / String と、それぞれの配列版の使い方。Triggerによる再送信と、Index が剰余でラップする挙動をまとめています。
値を保持して流すノードです。全6種。単体の値を持つものが3つ、リストを持つものが3つ。
グラフの中で**同じ値を何度も使い回す起点**として、あるいは
**拍に合わせて値を流し直す出口**として使います。
## 単体の値(3種)
| ノード | 型 | ポート |
|---|---|---|
| **Float** | 小数 | `In` / `Trigger` → `Out` |
| **Int** | 整数 | `In` / `Trigger` → `Out` |
| **String** | 文字列 | `In` / `Trigger` → `Out` |
3つとも構造は同じです。
- `In` に値が来ると、保持している値が更新され、そのまま `Out` へ流れます
- `In` を繋がずにノード上の入力欄へ直接打ち込んでも同じです
- **`Trigger` は今持っている値をもう一度 `Out` へ押し出します**
> **Trigger は値を止めるものではありません。**
> `In` が動けば Trigger を叩かなくても `Out` は動きます。Trigger は
> 「今の値を、このタイミングでもう一度下流へ送る」ためのものです。
> [Math](../module/math) の Trigger と同じ考え方です。
## 配列(3種)
| ノード | 型 | ポート |
|---|---|---|
| **FloatArray** | 小数のリスト | `Index` → `Value` |
| **IntArray** | 整数のリスト | `Index` → `Value` |
| **StringArray** | 文字列のリスト | `Index` → `Value` |
リストの中身はノード上で編集します(`+ Add` で追加、各行の入力欄で編集・削除)。
`Index` 番目の要素が `Value` から出ます。
### Index はラップします(クランプではありません)
要素数を超えた Index は、剰余で先頭へ回り込みます。
```csharp
int m = indexInput.Value % n;
return m < 0 ? m + n : m; // 負の Index も末尾側へ回り込む
```
つまり要素が3つのとき、Index が 3 なら 0番目、4 なら 1番目、-1 なら 2番目です。
[Operation の Counter](../module/operation) をそのまま挿せば、
**上限を気にせず巡回するシーケンサ**になります。
リストが空のときは、下流に古い値が残らないよう既定値(Float なら `0`)を明示的に流します。
## 関連
- 色は Color、BPM(Global Tempo)は Tempo カテゴリへ移動しました
- 値を加工するノードは [Math](../module/math)、判定・分岐は [Operation](../module/operation) にあります
---
## OBSに出力する
URL: https://synapserack.com/ja/docs/obs
Description: SynapseRackの映像をOBSへ取り込む方法。マスター出力は常に Spout(Windows)/ Syphon(macOS)で SynapseRackMain という名前で流れているので、OBS側にプラグインを入れて選ぶだけです。SpoutSenderノードで途中の絵を別名で送る方法も説明します。
SynapseRackは、起動している間ずっと**マスター出力を同一PC内へ配信しています**。
OBS側に受信用のプラグインを入れて、ソースを選ぶだけで取り込めます。
| OS | 使う規格 | ソース名 |
|---|---|---|
| **Windows** | Spout | `SynapseRackMain` |
| **macOS** | Syphon | `SynapseRackMain` |
> **送信名は `SynapseRackMain` で固定です。**
> アプリ側に名前を変える設定も、送信を止める設定もありません。常に出ているので、OBS側で選ぶだけです。
## SynapseRack側でやること
**ありません。**アプリを起動していれば、その時点でマスター出力が流れています。
映るのは Preview に出ているのと**同じ絵**です。合成後のプログラム映像だけが送られるので、
メニューバー・ノードエディタ・MediaBrowser といった操作画面は映り込みません。
出力解像度は **Setting → GlobalSettings → 出力** の `Resolution` で決まります(初期値 1920 × 1080)。
OBS側のキャンバスサイズはこれに合わせておくと、余計なスケーリングが挟まりません。
> **アルファ(透明度)は付きません。**
> マスター出力は不透明な絵として送られます。背景を抜いてOBSで重ねたい場合は、
> 後述の SpoutSender ノードではなく、OBS側でクロマキー等を使ってください。
## OBS側の設定
OBSは標準ではSpout / Syphonを受け取れないので、プラグインを入れます。
### Windows
1. Spout用のOBSプラグインを導入します(例: [obs-spout2-plugin](https://github.com/Off-World-Live/obs-spout2-plugin))
2. OBSを再起動します
3. ソースの **+** から **Spout2 Capture** を追加します
4. プロパティの `Spout Sender` 一覧から **`SynapseRackMain`** を選びます
### macOS
1. Syphon用のOBSプラグインを導入します(例: [obs-syphon](https://github.com/Palakis/obs-syphon))
2. OBSを再起動します
3. ソースの **+** から **Syphon Client** を追加します
4. サーバー一覧から **`SynapseRackMain`** を選びます
> **OBS側の手順とプラグインはSynapseRackの管轄外です。**
> OBSやプラグインのバージョンによってメニュー名は変わります。要点は「Spout / Syphon を受け取れる状態にして
> `SynapseRackMain` を選ぶ」ことだけです。
## 別の絵を、別の名前で送りたいとき
マスター出力とは別に、**グラフの途中の絵**を送ることもできます。
Node Editor に [SpoutSender](/ja/docs/nodes/output/SpoutSender/) ノードを置いて、送りたい映像を `In` に繋いでください。
- ノード上の `Name` 欄が**そのままOBSに出るソース名**になります(初期値は `OutputName`)
- macOSではノード名が `SyphonSender` と表示されます。中身は同じノードで、プロジェクトファイルは両OSで共通です
- 名前を書き換えると、OBS側のソースはいったん消えて新しい名前で出てきます
> **SpoutSender ノードを複数置くときは、名前を必ず別々にしてください。**
> 同じ名前で2本送ると、OSレベルで衝突します。アプリ側は重複を止めてくれません。
> 初期値がどれも `OutputName` なので、置いたらまず名前を変えるのが安全です。
> **`Name` を空にすると何も送られません。**
> 送信状態はノード上の `Sending: 名前` という表示で確認できます。
配信PCとVJ用PCが別、という構成なら、Spoutではなく
[NDISender](/ja/docs/nodes/output/NDISender/) ノードを使ってください。ネットワーク越しに届きます。
## 逆に、OBSや他ソフトの映像を取り込みたいとき
SynapseRack側でも Spout / Syphon を**受け取れます**。
[Spoutを読み込む、出力する](./load-spout) を参照してください。
> **一覧に `SynapseRackMain` は出てきません。**
> 自分自身の出力を自分で受け取ると映像がループしてしまうため、SynapseRackの受信側の候補からは
> 常に除外されています。
## 関連
- [Spoutを読み込む、出力する](./load-spout) — 受け取る側
- [プロジェクターに出力する](./projector) — 出力ウィンドウ・NDI・解像度設定
- [Output(出力)ノード](./module/output) — SpoutSender / NDISender のリファレンス
---
## OSCの入出力
URL: https://synapserack.com/ja/docs/osc-input-output
Description: スマホやTouchDesigner等からSynapseRackを操作し、逆にSynapseRackから値を送るための設定。受信したアドレスを一覧から選んで画面のUIに割り当てる手順と、OSCノードで自由に配線する方法。
OSC は、スマホのコントローラーアプリや TouchDesigner などの外部ソフトから
SynapseRack を操作するための仕組みです。逆に、SynapseRack から外へ値を送ることもできます。
やり方は2通りあります。
| やり方 | 向いている場面 |
|---|---|
| **画面のUIに直接割り当てる** | レイヤーのOpacityや再生ボタンなど、既にあるUIをそのまま外から動かしたい |
| **OSCノードを置く** | 受け取った値をノードで加工したい/SynapseRackから値を送り出したい |
## まず有効にする
メニューバーの **Setting → GlobalSettings → OSC**。
| 項目 | 内容 | 初期値 |
|---|---|---|
| **OSC Input** | 受信のON/OFF | OFF |
| **Input Port** | 受信ポート | 3170 |
| **OSC Output** | 送信のON/OFF | OFF |
| (ラベルのないドロップダウン) | `Localhost` / `Custom` の切り替え | Localhost |
| **Output Address** | 送信先アドレス(`Custom` のときだけ表示) | 127.0.0.1 |
| **Output Port** | 送信ポート | 3171 |
> **入出力はどちらも初期状態ではOFFです。**
> 「送っているのに何も起きない」ときは、まず **OSC Input** がONになっているかを確認してください。
送信側のアプリには、SynapseRack を動かしているマシンのIPアドレスと **Input Port** の値を入れます。
> **`Localhost` に戻しても、入れた送信先アドレスは残ります。**
> 隠れるのは入力欄だけです。手元に送り直したいときは `Custom` のまま `127.0.0.1` を入れ直してください。
この設定は **プロジェクトではなくマシン側**に保存されます(設定画面の下にも
`Saved on this machine, not in the project file` と出ます)。
会場ごとにネットワークが変わっても、`.synapse` を持ち歩けば設定はそのマシンのものが使われます。
## 届いているか確かめる
[OSC Monitor](./window/osc-monitor) に受信したメッセージがそのまま並びます。
アドレスも型もここで確認できるので、うまく動かないときは最初にここを見てください。
## 画面のUIに割り当てる
MIDI と同じアサインモードの中で割り当てます。
1. **OSC Input** をONにして、送信側から実際に信号を送っておきます
2. メニューバーの **Setting → MidiMapping** でアサインモードに入ります
3. 割り当てたいUIを**クリック**して**赤**にします
4. MIDI Inspector の **`OSC sources (click to assign):`** に、受信したアドレスが並びます
5. **その行をクリック**すると割り当てられます

行の書式は `アドレス [引数の番号] (現在の値)` です。
1つのメッセージに値が複数入っている場合は、値ごとに別々の行として並びます。
まだ何も受信していないときは `Move an OSC control to detect its address...` と出ます。
**送信側のフェーダーを動かせば**そのアドレスが出てくる、という探し方をします。
> **OSCは「動かしたら自動で割り当て」にはなりません。**
> MIDIはつまみを動かした瞬間に紐付きますが、OSCは常時大量の信号が流れうるので、
> **一覧から選ぶ**方式になっています。
> **一覧は選択を変えるたびにリセットされます。**
> 別のUIをクリックしたり、アサインモードを出入りすると空になります。
> 目的のアドレスが消えたら、送信側をもう一度動かせば出てきます。
> **一覧に出るのは数値として読める引数だけです。**
> 小数・整数・真偽値は拾いますが、文字列やバイナリの引数は候補になりません。
> 溜まる候補は最大64件までです。
割り当てを消すときは、`Mappings:` の行の右端の **×** です。
詳しくは [MIDIマッピング](./midi-mapping) を参照してください。
### 値の効き方
送られてきた値は**そのまま**UIへ渡されます。0〜1で送ればスライダーがそのまま動き、
ボタン・トグル系は **0.5 を下から上へ超えた瞬間**に1回発火します。
## OSCノードで配線する
[Node Editor](./window/node-editor) の **I/O** カテゴリに、入出力それぞれ3種類ずつ用意されています。
| ノード | 役割 |
|---|---|
| OSCFloatInput | 受け取った小数を出力する |
| OSCIntInput | 受け取った整数を出力する |
| OSCBoolInput | 受け取った真偽値を出力する |
| OSCFloatOutput | 小数を送る |
| OSCIntOutput | 整数を送る |
| OSCBoolOutput | 真偽値を送る |
どのノードにもアドレスを書き込む入力欄があります。
入力側は**アドレスが完全に一致したメッセージの1つ目の値**を読み、
出力側は入力された値が変わったとき(および Trigger が来たとき)に送信します。
型が合わないメッセージは無視されるので、小数を送っているつもりで
整数が届いている、というときは [OSC Monitor](./window/osc-monitor) の `type:` を確認してください。
各ノードの詳しい仕様はノードリファレンスを参照してください。
## 関連
- [OSC Monitor](./window/osc-monitor) — 受信したメッセージを確認する
- [MIDIマッピング](./midi-mapping) — アサインモードの詳しい説明
- [Widget Panel](./widget-panel) — 自分で並べた操作画面にOSCを割り当てる
---
## プロジェクターに出力する
URL: https://synapserack.com/ja/docs/projector
Description: SynapseRackの映像をプロジェクターや外部ディスプレイへ出す方法。同梱の出力ウィンドウ、ウィンドウの切り離し(F10)、Spout / Syphon / NDI での他アプリ連携という3つの出口を、実装に沿って整理します。
SynapseRackの本体ウィンドウは**操作画面**です。プロジェクターに出すのは、そこから**マスター出力の絵だけ**を取り出した別の窓になります。
出口は3つあります。
| 出口 | 向いている場面 |
|---|---|
| **出力ウィンドウ**(同梱) | いちばん手軽。SynapseRack単体でプロジェクターに出す |
| **ウィンドウの切り離し(F10)** | サブモニタで手元の確認画面を増やしたいとき |
| **Spout / Syphon / NDI** | Resolume・MadMapper・OBSなど他のソフトに渡すとき |
どれを使う場合も、映るのは**全レイヤーを合成したマスター出力**だけです。メニューバーやノードエディタは映りません。
## まず解像度を決める
メニューバーの **Setting → GlobalSettings** を開き、左の **出力**(Output)を選びます。
`Resolution` の `Width` / `Height` に数値を入れて、下の **Apply** を押すと確定します。初期値は 1920 × 1080 です。
> **この解像度はプロジェクトに保存されます。**
> Settings ダイアログの他の項目(言語・OSC・MIDIなど)はPCごとの設定ですが、出力解像度だけは
> `.synapse` と一緒に保存されるので、プロジェクトを開き直しても同じ解像度に戻ります。
Apply を押すと、マスター出力と全レイヤーの解像度がまとめて作り直されます。Preview の縦横比もその場で追従します。
## 方法1: 出力ウィンドウを出す(同梱)
メニューバーの **Output → Create Output Window**。
マスター出力だけを映す**専用の窓**が別に立ち上がります。中身は映像1枚だけで、枠も操作系もありません。
縦横比は保たれるので、窓の形が出力解像度と合わなくても絵が歪むことはありません。
この窓をプロジェクター側の画面へドラッグしてから、フルスクリーンにします。
| OS | フルスクリーンにする操作 |
|---|---|
| **Windows** | 出力ウィンドウを選んだ状態で **Alt + Enter** |
| **macOS** | タイトルバー左の**緑ボタン**(標準のフルスクリーン) |
フルスクリーンにすると、そのディスプレイの解像度いっぱいに表示されます。
初期サイズは 1920 × 1080 で、手でリサイズすることもできます。
> **本体を操作している間も、出力ウィンドウは描画を続けます。**
> 出力ウィンドウは背面に回っても止まらない設定でビルドされているので、
> 本体側でノードを組んだりMediaBrowserを触ったりしても、プロジェクター側の絵は流れ続けます。
> **出力ウィンドウは、本体からマスター出力を受け取って表示しているだけです。**
> 受け渡しには Spout(Windows)/ Syphon(macOS)を使っています。つまり出力ウィンドウで見えているものは、
> 後述の「他のソフトに渡す」で他のソフトが受け取れるものと同じです。
## 方法2: ウィンドウを切り離して第2画面に置く(F10)
SynapseRackのウィンドウは、**OSのウィンドウとして本体の外に取り出せます**。
1. 取り出したいウィンドウを**クリック**します
2. **F10** を押します
対象になるのは「最後にクリックしたウィンドウ」です。見た目には印が出ないので、
F10の直前にそのウィンドウを1回クリックしておくのが確実です。
ウィンドウがOSの窓になり、モニタをまたいで自由に動かせるようになります。
**戻すときは、その窓を閉じます**(本体の中の元の位置に戻ります)。
Preview ウィンドウを切り離して第2画面に置けば、手元でマスター出力を大きく確認できます。

> **切り離した窓をフルスクリーンにする機能はありません。**
> 本番の出力面として使うなら方法1の出力ウィンドウを使ってください。
> Preview は映像のまわりに余白と枠が残るので、プロジェクターへ直接出す用途には向きません。
### 常に手前に出しておく
切り離した窓は「常に最前面」にできます。
| OS | 操作 |
|---|---|
| **Windows** | タイトルバーを右クリック(または Alt + Space)→ **Always on Top** |
| **macOS** | タイトルバー右の **📌** ボタン |
### 切り離しはプロジェクトに保存されます
どのウィンドウを切り離していたか、その窓がどこにどの大きさで置かれていたか、最前面だったかは
`.synapse` と一緒に保存されます。次に同じプロジェクトを開くと、同じ配置で切り離された状態で復元されます。
> **別のプロジェクトを開くと、切り離した窓はいったん全部本体に戻ります。**
> そのうえで、読み込んだプロジェクトが持っている切り離し情報だけが再現されます。
> 前のセッションの窓が居残ることはありません。
## 方法3: 他のソフトに渡す(Spout / Syphon / NDI)
SynapseRackは、起動している間ずっとマスター出力を同一PC内へ配信しています。
| OS | 規格 | 送信名 |
|---|---|---|
| **Windows** | Spout | `SynapseRackMain` |
| **macOS** | Syphon | `SynapseRackMain` |
Resolume Arena、MadMapper、OBS などの受信側で `SynapseRackMain` を選べば、そのままマスター出力が届きます。
プロジェクションマッピングのワープ・マスクを他ソフトでやりたい場合は、この経路が確実です。
> **この送信名は変えられません。ON/OFFの切り替えもありません。**
> 常に出ているものなので、受け取る側で選ぶだけです。
マスター出力ではなく**グラフの途中の絵**を出したい場合は、ノードを使います。
| ノード | 出す先 |
|---|---|
| [SpoutSender](/ja/docs/nodes/output/SpoutSender/) | Spout(Windows)/ Syphon(macOS) |
| [NDISender](/ja/docs/nodes/output/NDISender/) | NDI(ネットワーク経由なので別PCにも届きます) |
[MasterOutput](/ja/docs/nodes/output/MasterOutput/) ノードを繋げば、マスター出力そのものを
これらのノードから出し直すこともできます(別名で出したい、加工してから出したい、といった場合)。
## 位置合わせ用のテストパターン
メニューバーの **Setting → TestPattern** を押すと、**マスター出力にテストパターンが重なります**。
もう一度押すと消えます。
重なる先はマスター出力なので、**プロジェクター側にもそのまま出ます**。
フォーカス・台形補正・画面のはみ出しを合わせるときに使ってください。
## 関連
- [Preview](./window/preview) — マスター出力を手元で確認するウィンドウ
- [OBSに出力する](./obs) — 配信ソフトへ渡す場合の手順
- [Spoutを読み込む、出力する](./load-spout) — 他ソフトから**受け取る**側
- [Output(出力)ノード](./module/output) — SpoutSender / NDISender / MasterOutput のリファレンス
---
## ショートカット一覧
URL: https://synapserack.com/ja/docs/shortcuts
Description: F10のウィンドウ切り離しや、数値フィールドの右ドラッグスクラブのような「知らないと気づけない操作」を1ページに集めました。キーボードショートカットと、暗黙のマウス操作を実装に沿ってまとめています。
SynapseRack には、メニューやボタンに出てこない操作がいくつかあります。
このページはそれを1か所に集めたものです。
表記について:
- **`Ctrl/Cmd`** … Windows は Ctrl、macOS は Cmd。どちらでも同じように効きます
- **`Ctrl`** … Windows でも macOS でも **Ctrl キー**です(macOS で Cmd に読み替えると効きません)
## ウィンドウ共通
SynapseRack の中に並んでいるウィンドウ(Preview / Node Editor / Layer / Media Browser など)は、
すべて同じ扱い方をします。
| 操作 | 動き | 補足 |
|---|---|---|
| `F10` | 選択中のウィンドウを **OS の独立ウィンドウとして切り離す** | 戻すのは**その窓を閉じる**操作。もう一度 `F10` を押しても戻りません |
| `Ctrl + F` | 選択中のウィンドウを画面中央へ | **Mac でも Cmd ではなく Ctrl**。実装が見ているのは**左 Ctrl** だけで、右 Ctrl では効きません |
| **Shift + タイトルバードラッグ** | 20px グリッドにスナップして移動 | |
| **Shift + 右下ドラッグ** | 20px グリッドにスナップしてリサイズ | 最小サイズは 100 × 100 |
| **タイトルバーをダブルクリック** | 名前を変更(対応しているウィンドウのみ) | `Enter` で確定、`Esc` で取り消し |
> **「選択中のウィンドウ」は、最後にクリックしたウィンドウです。**
> 画面上に印は出ません。`F10` や `Ctrl + F` を押す直前に、対象のウィンドウを1回クリックしておくのが確実です。
切り離し(`F10`)の詳しい話は [プロジェクターに出力する](./projector) にあります。
## Node Editor
ポインタが **Node Editor の上にあるとき**だけ効きます。
| キー | 動き |
|---|---|
| `Delete` | 選択中のノードとエッジを削除 |
| `Ctrl/Cmd + C` / `V` | コピー/貼り付け(元の位置から 30px ずらして置かれます) |
| `Ctrl/Cmd + D` | 複製 |
| `Ctrl/Cmd + G` | 選択をグループ化 |
| `Ctrl/Cmd + Shift + G` | グループを解除 |
| `Ctrl/Cmd + Z` | Undo |
| `Ctrl/Cmd + Shift + Z` / `Ctrl/Cmd + Y` | Redo |
次の2つだけは**ポインタの位置に関係なく**、どこにいても効きます。
| キー | 動き |
|---|---|
| `Ctrl/Cmd + A` | ノードを全選択。**グループの中も含めた全ノード**が対象です |
| `Esc` | ノードの選択を解除 |
> **`Ctrl/Cmd + A` は Node Editor の外で押しても効きます。**
> しかも選択されるのは今表示しているグラフの中だけではなく、グループの中まで含めた全ノードです。
> そのまま `Delete` を押すとポインタが Node Editor 上にある限り全部消えるので、
> 「とりあえず全選択」の癖には注意してください(`Ctrl/Cmd + Z` で戻せます)。
`Delete` / `Ctrl/Cmd + Z` の詳しい挙動は [Node Editor](./window/node-editor) を参照してください。
### ノード作成ポップアップ(キャンバスを右クリック)
| キー | 動き |
|---|---|
| `↑` / `↓` | 項目を移動 |
| `←` / `→` | カテゴリ側と一覧側を行き来 |
| `Enter` | 決定して作成 |
| `Esc` | 閉じる |
ポップアップが開いている間は**どこをタイプしても検索欄に入ります**(検索欄は開いた直後に自動でフォーカスされます)。
またこの間は**ホイールがズームではなくリストの送り**になります。
## Widget Panel
ポインタが**そのパネルの上にあり、かつ Freeze していないとき**だけ効きます。
| キー | 動き |
|---|---|
| `Ctrl/Cmd + C` / `V` | 選択中のウィジェットをコピー/貼り付け(別のパネルにも貼れます) |
| `Ctrl/Cmd + D` | 複製 |
| `Delete` | 削除 |
| `Ctrl/Cmd + Z` | Undo |
| `Ctrl/Cmd + Shift + Z` / `Ctrl/Cmd + Y` | Redo |
詳しくは [Widget Panel](./widget-panel) を参照してください。
## Undo は、ポインタの位置で対象が変わります
`Ctrl/Cmd + Z` は1つのキーですが、押した瞬間のポインタ位置で**何を取り消すか**が変わります。
| ポインタの位置 | 取り消される対象 |
|---|---|
| **Node Editor の上** | ノードグラフ(作成・削除・移動・接続・パラメータ変更) |
| **Widget Panel の上** | そのパネルのレイアウト・バインド・見た目 |
| **Node Editor の外** | レイヤーの構成([Layer Hierarchy](./window/layer-hierarchy) のツリー) |
> **Widget Panel の上では、パネルの Undo とレイヤー構成の Undo が両方走ります。**
> 「Node Editor の外なら常にレイヤー構成も対象」という作りなので、レイヤーを並べ替えたあとに
> パネルの上で `Ctrl/Cmd + Z` を連打すると、レイヤー側も一緒に巻き戻ります。
> **どれも「値の操作」は履歴に積まれません。**
> フェーダーを動かした、といったライブ操作は演奏そのものなので取り消しの対象外です
> (Node Editor のパラメータ変更だけは、グラフの履歴として記録されます)。
## 出力・外部ウィンドウ
ここだけは SynapseRack のショートカットではなく、**OS 側の操作**です。
| OS | 操作 | 動き |
|---|---|---|
| **Windows** | `Alt + Enter` | 出力ウィンドウをフルスクリーンにする |
| **macOS** | タイトルバー左の**緑ボタン** | 同上 |
| **Windows** | `Alt + Space`(またはタイトルバーを右クリック)→ **Always on Top** | 切り離した窓を最前面に固定 |
| **macOS** | タイトルバー右の **📌** ボタン | 同上 |
Always on Top は `F10` で切り離した窓が対象です。状態は `.synapse` と一緒に保存されます。
## その他
| 場面 | キー | 動き |
|---|---|---|
| 名前・数値の入力欄 | `Enter` | 確定 |
| 名前・数値の入力欄 | `Esc` | 取り消して元の値に戻す |
| Widget Panel のアサイン中 | `Esc`(または右クリック) | アサインを中止 |
| WebView 系ノード | `F5` / `Ctrl/Cmd + R` | ページをリロード |
> **WebView 系ノードにフォーカスがある間、キーはブラウザ側に渡ります。**
> `Ctrl/Cmd + C` / `V` / `A` などはページの中で働き、SynapseRack のショートカットは発火しません。
キーボードの1キーを**ノードやレイヤーの操作に割り当てる**機能は、これとは別のものです。
使い方は [キーボードマッピング](./keyboard-mapping) を参照してください
(割り当てられるのは単一キーだけで、`Ctrl + 1` のような修飾キーとの組み合わせは登録できません)。
## 暗黙のマウス操作
### Node Editor
| 操作 | 動き |
|---|---|
| **中ボタンドラッグ** または **Ctrl + 左ドラッグ** | パン(移動)。**Mac でも Cmd ではなく Ctrl** |
| **ホイール** | ズーム(カーソル位置を中心に 0.05 倍〜30 倍) |
| **Shift + ノードをクリック** | 選択に追加 |
| **矩形選択して、Ctrl を押しながら離す** | 既存の選択に追加。`Ctrl + 左ドラッグ`はパンなので、**矩形選択の開始には使えません** |
| **空白を右クリック** | その位置にノード作成ポップアップ |
| **ノード本体を右クリック** | 上と同じ(ノードに専用の右クリックメニューはありません) |
| **ポートを右クリック** | ポートのメニュー(`Move all edges` など) |
| **線の真ん中の三角をクリック** | その接続をミュート/解除 |
| **ノードのタイトルをダブルクリック** | ノードの名前を変更 |
| **ミニマップの中を左ドラッグ** | その位置へ移動 |
### 数値の入力欄(ノードのパラメータ全般)
いちばん見つけにくい操作がこれです。
| 操作 | 動き |
|---|---|
| **右ボタンでドラッグ** | 値をスクラブ(横方向)。左ボタンは従来どおりクリックで編集 |
| **Shift + 右ボタンドラッグ** | 1/10 の細かさで微調整 |
変化量は今の値の大きさに合わせて変わります(値が大きいほど大きく動き、0 付近でも動くよう下限があります)。
2px 以上動かして初めてスクラブが始まるので、押してすぐ離した場合は値が変わりません。
> **数値欄の上で右クリックしても、ノード作成メニューは出ません。**
> スクラブに譲るようになっているためです。メニューを出したいときは、ノードの外の空白で右クリックしてください。
### Media Browser
| 操作 | 動き |
|---|---|
| **サムネイルをクリック** | 選択し、同時にレイヤーへ割り当て |
| **Ctrl/Cmd + クリック** | 選択のオン・オフだけ(割り当てはしない) |
| **Shift + クリック** | 範囲選択(割り当てはしない) |
| **サムネイルを右クリック** | コンテキストメニュー |
| **Ctrl + 右クリック** | メニューを出さずに、**そのサムネイルだけ作り直す**。**Mac でも Cmd ではなく Ctrl** |
| **Alt(Option)を押しながらフォルダへドロップ** | コピーではなく移動 |
詳しくは [Media Browser](./window/contents-browser) を参照してください。
### Layer
| 操作 | 動き |
|---|---|
| **[Layer](./window/layer) のプレビュー領域を右クリック** | 直近に触った Media Browser で、そのレイヤーが今使っている素材のフォルダを開いて選択します(Media Browser が開いていて、そのレイヤーに素材が入っているときだけ) |
| **[Waveform](/ja/docs/nodes/layer/LayerWaveform/) の波形をクリック** | クリックした位置へシーク |
| **Waveform のホットキュー(A〜H)を左クリック** | 未設定なら現在位置をセット、設定済みならそこへジャンプ |
| **ホットキューを右クリック** | そのキューを消去 |
## 効かないときは
> **テキストを入力している間、ショートカットは発火しません。**
> ノード名やレイヤー名、数値欄を編集している最中は、`Ctrl/Cmd + Z` などがすべて入力欄側に譲られます。
> 一度 `Enter` か `Esc` で入力を終えてから押してください。
> **ほとんどのショートカットは、ポインタの位置で対象が決まります。**
> 「消えない」「貼れない」「Undo が別のものを戻す」ときは、たいていポインタが別のウィンドウの上にあります。
> 例外は `Ctrl/Cmd + A` と `Esc`(どこでも Node Editor の選択に効く)、
> `F10` と `Ctrl + F`(最後にクリックしたウィンドウが対象)です。
> **プロジェクトの保存にショートカットはありません。**
> `Ctrl/Cmd + S` は割り当てられていません。保存はメニューバーから行ってください。
## 関連
- [Node Editor](./window/node-editor) — ノードの操作の全体像
- [Widget Panel](./widget-panel) — パネル側のショートカットと Freeze
- [プロジェクターに出力する](./projector) — `F10` の切り離しと出力ウィンドウ
- [キーボードマッピング](./keyboard-mapping) — キーを演奏用に割り当てる
---
## VJ素材を読み込むパス(Source Directory)を指定する
URL: https://synapserack.com/ja/docs/source-directory
Description: SynapseRack が作業データを置くフォルダ(SainaWorks/SynapseRack)の場所と中身。Settings.json の parentPath を書き換えて、別ドライブや外付けSSDへ移す手順を、実装に沿って解説します。
SynapseRack は、サムネイルやプラグインなど**自分の作業データを1つのフォルダにまとめて**置きます。
このフォルダの場所が Source Directory で、設定ファイルを書き換えると別のドライブへ移せます。
## 場所
作業フォルダは、必ず次の形になります。
```
<親フォルダ>/SainaWorks/SynapseRack/
```
`<親フォルダ>` の初期値は OS で違います。
| OS | 初期値 | 実際の場所 |
|---|---|---|
| **Windows** | `C:` | `C:\SainaWorks\SynapseRack\` |
| **macOS** | ユーザーのホーム | `~/SainaWorks/SynapseRack/` |
## 中身
初回起動時に、次のフォルダが自動的に作られます。
| フォルダ | 中身 |
|---|---|
| `Source/Video` `Source/Hap` `Source/Image` `Source/Shader` | アプリ側が配置する素材の置き場所。同梱のサンプル映像はここへ入ります |
| `Cache/` | サムネイル・解析結果・意味検索の索引。[Media Browser](./window/contents-browser) が使うデータです |
| `Plugins/` | ノードプラグイン |
| `Apps/` | インストールした Synapse App |
| `CustomFx/` | `.srfx` のカスタムFX |
| `Recordings/` | 録画の出力先 |
| `Templates/` | 書き出したプロジェクトテンプレート |
> **取り込んだ映像ファイルは、ここにはコピーされません。**
> ライブラリに記録されるのは元ファイルの場所だけで、実体は置いた場所に残ります。
> ここに増えていくのは**サムネイルと解析結果**です。詳しくは
> [映像・画像ファイルを読み込む](./load-video)を参照してください。
## 場所を変える
`parentPath` を書いた設定ファイルを編集し、**SynapseRack を再起動**します。
アプリ内に変更用の画面はありません。
設定ファイルの場所は次のとおりです。
| OS | パス |
|---|---|
| **Windows** | `C:\Users\<ユーザー名>\AppData\LocalLow\SainaWorks\SynapseRack\Settings\Settings.json` |
| **macOS** | `~/Library/Application Support/SainaWorks/SynapseRack/Settings/Settings.json` |
中身は1行だけです。
```json
{"parentPath":"C:"}
```
D ドライブの `Test` フォルダの下に置きたい場合はこう書き換えます。
```json
{"parentPath":"D:/Test"}
```
この場合、作業フォルダは `D:/Test/SainaWorks/SynapseRack/` になります。
> **存在しないパスを書くと、黙って初期値に戻ります。**
> 起動時にフォルダの有無が確認され、無ければ設定ファイルごと初期値で上書きされます。
> エラーは出ないので、「書き換えたのに変わっていない」ときは**綴りとドライブの接続**を疑ってください。
> 外付けSSDを指定する場合は、SynapseRack を起動する前につないでおく必要があります。
> **設定ファイルが無ければ、起動時に初期値で作られます。**
> 消してしまっても壊れません。
> **同じ場所にある `settings.json`(小文字・`Settings` フォルダの外)は別物です。**
> こちらは UIスケール・OSC・MIDIデバイスなどマシンごとの設定で、Source Directory とは関係ありません。
### 引っ越しても、キャッシュは付いてきません
`parentPath` を変えると、SynapseRack は**新しい場所を空の状態から使い始めます**。
古い場所のサムネイルや解析結果は自動では移動しません。
引っ越し後にライブラリを元に戻すには、次のどちらかです。
- 古い `SainaWorks/SynapseRack` フォルダを、そのまま新しい親フォルダの下へ手でコピーする
- 素材フォルダをもう一度取り込み直す(元の映像ファイルは無事なので作り直せます)
## 関連
- [映像・画像ファイルを読み込む](./load-video) — 取り込みの流れと「元ファイルはコピーされない」原則
- [Media Browser](./window/contents-browser) — キャッシュを使う側のウィンドウ
---
## 利用規約(Terms of Use)
URL: https://synapserack.com/ja/docs/terms-of-use
# 利用規約(Terms of Use)
このソフトウェアの著作権はSainaKeyにあります。以下SainaKeyを作者と表記します。
このソフトウェアはテストしてありますが、作者の環境と異なる場合には正しく実行できない場合もあります。個人の責任において実行してください。
このソフトウェアを実行したことによって発生したいかなる損害についても、いっさい補償できませんのでご了承ください。
このソフトウェアの再配布、再販売、改造、を作者の許可無く行うことを禁じます。
このソフトウェアを利用した公序良俗に反する行為を禁じます。
個人・法人問わず商用利用を許可します。
---
## 4Layer構成でVJをしよう!
URL: https://synapserack.com/ja/docs/tutorial/4layer
Description: 起動した瞬間から素材が入っていて、再生ボタンひとつでVJが始まるチュートリアル。素材の入れ替え、テンポ同期、エフェクト、MIDI、保存まで一通り体験します。
SynapseRackは、**起動した瞬間からVJ素材が入っていて、すぐ動かせます**。
このチュートリアルでは、同梱のテンプレートを使って「再生する→自分の素材に入れ替える→音に合わせる→エフェクトをかける→手で操る→保存する」を一通り体験します。終わる頃には、VJソフトとして必要なことが全部この中にあることが分かるはずです。
## 起動する
起動すると4Layer構成のテンプレートプロジェクトとVJ素材が読み込まれており、すぐVJを楽しむことができます(読み込まれていない場合はメニューの **Template → 4Layer Template**)。

画面の主役はこの6つです。
| 場所 | 役割 |
|---|---|
| **Preview** | 最終出力(お客さんに見える絵) |
| **Layer_0〜3** | 4枚のレイヤー。ここに映像を入れて重ねます |
| **MediaBrowser** | 素材のライブラリ。テンプレート用のVJ素材が最初から入っています |
| **ControlPanel** | 演奏用のパネル。Step Sequencerと「On」ボタンが置いてあります |
| **Global Tempo** | 曲のBPMを合わせる場所 |
| **NodeEditor** | この構成の中身(あとで覗きます) |
まず **ControlPanelの「On」** を押してください。
**4つのレイヤーが拍に合わせて切り替わり始め、エフェクトも同時に動き出します。**
このOnはレイヤー切り替えとエフェクト、両方のStep Sequencerをまとめて起動するトグルで、これがこの構成の心臓部です。
## 自分の素材に入れ替える
入れ方は2通りあります。
**① レイヤーに直接落とす** — 動画ファイルをLayerのプレビュー面にドラッグ&ドロップすると、**その場で再生が始まります**(素材はMediaBrowserの `Temp` フォルダに自動で取り込まれます)。「とりあえずこの動画を出したい」ときはこれが最速です。
**② MediaBrowserに落とす** — フォルダごとMediaBrowserにドラッグ&ドロップすると、ライブラリとして整理されます。サムネイルをクリックすれば選択中のレイヤーに割り当てられます。
> 素材はコピーされず、元のファイルへの参照だけが登録されます。ファイルを移動するとMISSINGになるので、詳しくは[映像・画像ファイルを読み込む](/ja/docs/load-video)を見てください。検索ボックスに「赤」「トンネル」のような言葉を入れて探せる自然言語検索も使えます。
## 音に合わせる
**Global Tempo** の **TAP** を曲に合わせて4回叩いてください。BPMが合うと、Step Sequencerの切り替えも、テンポ同期しているエフェクトも、全部その速さに追従します。微調整は **-1 / +1**、拍の頭がズレたら **RST** で合わせ直せます。
テンポの仕組みは[Global Tempo](/ja/docs/window/global-tempo)、切り替えパターンを変えたいときはControlPanel上のStep Sequencerのマス目をクリックして書き換えられます。
## エフェクトをかける
さっき押したOnで、すでに**拍に合わせてエフェクトが発火**しています(FxSequencer側のStep Sequencerが叩いています)。
かかり方を変えたいときは、ControlPanel上の各Step Sequencerのマス目をクリックしてパターンを書き換えてください。
このエフェクトの正体はNodeEditorの中にあります。

GlobalTempoがStep Sequencerを駆動し、その出力がレイヤーの不透明度(LayerOpacity)とエフェクト(LayerFx)に繋がっている——それだけの構成です。
ここが**SynapseRackの本体**で、この配線は全部自分で組み替えられます。エフェクトを差し替えたり、[LFO](/ja/docs/nodes/signal/LFO/)で揺らしたり、[AudioReactive](/ja/docs/nodes/audio/AudioReactive/)で音に反応させたり。ノードは全種類[図鑑](/ja/docs/?tag=ノード)に載っています。
## 手で操る
レイヤーの縦フェーダー(Opacity)をドラッグすると、そのレイヤーの見え方を手で操れます。
MIDIコントローラーがあるなら、ほぼ全ての操作子に割り当てられます。
1. メニューの **Setting → MidiMapping** を選ぶと、割り当て可能なUIが**青く**なります
2. 割り当てたいUI(例: レイヤーのOpacity)をクリックすると**赤く**なります
3. その状態でコントローラーのノブやフェーダーを動かすと、紐付きます


詳しくは[MIDIマッピング](/ja/docs/midi-mapping)へ。コントローラーが無い場合は、[Widget Panel](/ja/docs/widget-panel)で画面上に自分専用の操作パネルを組めます。
## お客さんに見せる画面を出す
メニューの **Output → Create Output Window** で、最終出力だけの独立ウィンドウが出ます。
これをプロジェクターや2枚目のディスプレイへ持っていき、フルスクリーンにします。
- **Windows**: フルスクリーンにしたい場所にウィンドウを置いて **Alt + Enter**
- **Mac**: ウィンドウ左上の**緑のフルスクリーンボタン**をクリック
詳しくは[プロジェクターに出力する](/ja/docs/projector)へ。
## 保存する
メニューの **Project → SaveProject** で、レイヤー構成もノードも丸ごと保存されます。次回はこのファイルを読み込めば今日の続きから始められます。

> **SaveWithoutNode** はノード以外(レイヤー構成など)だけを保存する別枠です。ノードの仕組みだけを人と共有したいときは、ノードをグループ化してグループ単位でexportできます([Group](/ja/docs/nodes/group/Group/))。
## ここから先にあるもの
今日触ったのは入口です。この先には:
- **[ノード図鑑](/ja/docs/?tag=ノード)** — 273種のノード。全部この画面から繋げます
- **[Fx Editor](/ja/docs/fxeditor)** — GLSLでエフェクトを自作してノードにできます
- **[Record系ノード](/ja/docs/nodes/record/FrameBuffer/)** — 映像を録って、スクラッチして、壊せます
- **[3D](/ja/docs/nodes/3d/PointGrid/)** — 点群ベースの3Dシーンをノードで組めます
- **[Spout/NDI・OSC・DMX](/ja/docs/load-spout)** — 他のソフトや照明との連携
- **[Apps SDK](/ja/docs/apps-sdk)** — AIと一緒に自分だけの機能を作れます
まずは今日の構成のまま、好きな素材と好きな曲で一晩遊んでみてください。
---
## Widget Panel
URL: https://synapserack.com/ja/docs/widget-panel
Description: 自分だけの操作画面を組むウィンドウ。空白を右クリックしてウィジェットを置き、Assign でノードのパラメータを指して紐付け、Freeze して演奏する——という一連の操作を、実装に沿って解説します。
ノードのパラメータを、自分の並べたい形・色・大きさで並べ直すためのウィンドウです。
ノード側が用意したUIを並べるのではなく、**置いたウィジェットからノードのパラメータを指しに行く**作りになっているので、
同じパラメータをフェーダーにしてもボタンにしてもよく、ON/OFFの色もウィジェットごとに決められます。
パネルは何枚でも開けます。
## 開き方
メニューバーの **Create → WidgetPanel**。
空のパネルには「右クリックでウィジェットを追加」と透かしが出ます。
タイトルバーをダブルクリックすると、パネルに名前を付けられます(名前も保存されます)。
## ウィジェットを追加する
**パネルの空白を右クリック**すると、ウィジェットのパレットが出ます。
カテゴリ(Value / Choice / Display / Layout)にマウスを乗せると、右側に一覧が開きます。
選んだウィジェットは**右クリックした位置**に置かれます(グリッドにスナップし、はみ出す場合はパネル内に収まる位置へ寄せられます)。
同じメニューの下側には次の2つがあります。
| 項目 | 動き |
|---|---|
| **Browse all…** | 全ウィジェットの一覧をダイアログで表示。`From Node...` からノード→パラメータの順に辿って、**バインド済みのウィジェットを直接作る**こともできます |
| **Freeze Layout** | レイアウトを凍結して演奏状態にします(後述) |
置いたばかりのウィジェットは「Unbound」と表示されます。形だけ先に並べて、あとからパラメータを割り当てる進め方で構いません。
### 移動・リサイズ・削除
Freeze していない間、各ウィジェットには編集用の枠が出ます。
- **上部のバー**をドラッグ → 移動
- **右下の四角**をドラッグ → リサイズ
- **ウィジェットを右クリック** → メニュー(Assign / Appearance… / Duplicate / Delete / Freeze Layout)
移動・リサイズはどちらも20pxのグリッドにスナップします。
## ウィジェットの種類
パレットに並ぶのは以下の18種です。カッコ内は挿せるパラメータの型(メニューの右側に小さく表示されます)。
### Value(値を作る)
| ウィジェット | 型 | 動き |
|---|---|---|
| **Fader** | Float / Int | 縦横はウィジェットの縦横比で自動切替(高さ≧幅なら縦)。押した位置へ値がジャンプします |
| **Knob** | Float / Int | 縦ドラッグで相対調整(上で増加)。押した位置にジャンプはしません |
| **Number** | Float / Int | 横ドラッグでスクラブ、動かさずに離すと直接入力。レンジが無い場合は上限なし |
| **XY Pad** | Float / Int ×2 | 主バインドがX軸、`Assign Y…` でY軸。上がMax側 |
| **Crossfader** | Float / Int ×2 | 位置に対して Left と Right へ逆向きの値を書きます |
| **Toggle** | Bool / Float / Int / Color / Options | 押すたびに切り替え |
| **Button** | Trigger / Bool / Float / Int / Color / Options | 押すと発火/値をセット |
| **Color Picker** | Color | 開く操作なしでそのまま触れるインラインのピッカー |
### Choice(選択肢)
| ウィジェット | 型 | 動き |
|---|---|---|
| **Dropdown** | Options | 押すとリストが開きます。選択肢は**開いた瞬間に取得**するので、レイヤーの増減やNDIソースの出現に自然に追従します |
| **Button Grid** | Options | 選択肢1個につきボタン1個。現在選ばれているボタンがON色で点灯します |
### Display(見るだけ)
| ウィジェット | 型 | 動き |
|---|---|---|
| **Label** | Text | 文字を表示するだけ(常に表示専用) |
| **Text Input** | Text | Enterまたはフォーカスを外すと確定、Escで戻します。読み取り専用のパラメータに挿した場合は表示だけになります |
| **Meter** | Float / Int | レベルメーター。ピークは0.8秒保持してから落ちます |
| **Preview** | Texture | 約30fpsで更新する映像モニター |
### Layout(飾り・バインドを持たない)
| ウィジェット | 動き |
|---|---|
| **Header** | セクション見出し。文字色は Appearance の On 色 |
| **Divider** | 区切り線。縦横比で縦線/横線が自動で切り替わります |
| **Frame** | グループ用の枠。**中身は素通し**なので、枠の上に重ねたウィジェットは普通に触れます |
### Node View
ノードのコントロールUIを、そのままパネルに埋め込みます。
ウィジェットで表現しにくい複雑なUI(ステップシーケンサ等)を手元に置きたいときの逃げ道です。
> **Node View は1ノードにつき1つだけです。**
> 追加・複製・貼り付けのどの入口でも、既に同じノードのビューがある場合は弾かれます(別のパネルにある場合も含む)。
> ウィジェットのUIはノード側が持つので、Node View には `Appearance…` が出ません。
## パラメータを割り当てる(Assign)
主な手順は次の3手です。
1. パネルの空白を右クリックして、欲しい**形**のウィジェットを置く
2. そのウィジェットを右クリックして **`Assign…`** を選ぶ
3. Node Editor 上で**ピンク色にハイライトされた実物のパラメータをクリック**する
アサイン中は画面上部に `Assigning ...: click a highlighted parameter (Esc / right-click to cancel)` と出ます。
**Esc または右クリックで中止**できます。
ハイライトされるのは、**置いた形に挿せる型のパラメータだけ**です。
ポート行を持たないパラメータ(ノード上のドロップダウン等)はノード本体がハイライトされ、
そのノードに候補が複数ある場合はクリック後にパラメータ名のメニューが出ます。
未バインドのウィジェットは、編集バーの **「Not assigned」の文字をクリック**しても同じアサインが始まります。
### 軸が2つあるウィジェット
XY Pad と Crossfader は右クリックメニューに2項目出ます。
| ウィジェット | メニュー |
|---|---|
| **XY Pad** | `Assign X…` / `Assign Y…` |
| **Crossfader** | `Assign Left…` / `Assign Right…` |
どちらも片側だけでも動きます(XY PadはX単独のパッド、CrossfaderはLeftを逆向きに動かすフェーダーになります)。
### 置いた形は、挿した型に合わせて変わります
Toggle と Button は「挿した先の型」で中身が決まります。
| 置いた形 | Trigger | Bool | Float / Int | Color | Options |
|---|---|---|---|---|---|
| **Toggle** | — | Toggle | 値トグル(On値⇄Off値) | 色トグル(On色⇄Off色) | Button Grid |
| **Button** | Button | Toggle | 値ボタン(押すとOn値をセット) | 色ボタン(押すとOn色をセット) | Button Grid |
> **Button を Bool に挿すと、Momentary が既定でONになります。**
> 「押している間だけtrue」がボタンの直感だからです。Toggle から挿した場合は従来通り交互トグルのままです。
> どちらも `Appearance…` でいつでも変えられます。
値ボタン/値トグルは、**現在値が設定値と一致していると点灯**します(どの値が選ばれているか面で分かります)。
色ボタンの場合は、ボタンの背景色がそのまま「送る色」になり、一致時は白い枠で示されます。
### バインドの確認・付け替え
| メニュー | 動き |
|---|---|
| **Reveal Source** | Node Editor をそのノードまで移動して選択し、対象パラメータを約1.2秒ハイライトします |
| **Clear Assignment** | 割り当てを外します(レイアウトと見た目の設定は残ります) |
| **Appearance… → Binding** | `Bind...` / `Change...` でダイアログから選ぶ、`Unbind` で外す |
編集中のウィジェットの上部バーには `ノード名 / パラメータ名` が出ます。マウスを乗せると内部アドレスも確認できます。
## 見た目と挙動を変える(Appearance…)
ウィジェットを右クリック → `Appearance…`。変更は即座に反映されます。
| 項目 | 内容 |
|---|---|
| **Label** | 表示名。**空にするとパラメータ名**に戻ります |
| **Colors** | On / Off の2色。タブで切り替えて編集します |
| **Font Size** | 0〜48。**0で自動** |
| **Display Only** | 表示専用にします(Freeze中もポインタを受け付けません) |
| **Momentary** | 押している間だけOn(XY Padでは「Spring Return」=離すと中心へ戻る) |
| **Values** | 値ボタン/値トグルの On Value / Off Value |
| **Range** | Fader / Knob / Meter / Number のMin/Max上書き |
| **Visible Options** | Dropdown / Button Grid に表示する選択肢を絞り込みます |
> **Range を空欄にすると、パラメータ側の既定レンジが使われます。**
> 既定レンジを持たないパラメータでは 0〜1(Numberは無制限)として扱われます。
> **Min > Max はそのまま反転フェーダーになります**(エラーではなく、上下が逆のフェーダーとして動きます)。
> **Momentary が出るウィジェットは限られます。**
> 値ボタンは常に、Toggle は **Bool に挿さっているときだけ**、XY Pad は Spring Return として出ます。
> それ以外のウィジェットには項目自体が現れません。
> **Visible Options は全部OFFにはできません。**
> 最後の1個は消せない仕様です。逆に**全部ONにすると「絞り込みなし」に正規化される**ので、
> 後からレイヤー等が増えたときに新しい選択肢が自動で表示されます。
## Freeze(レイアウトを凍結して演奏する)
パネルには2つの状態があります。切り替えは、空白またはウィジェットの右クリックメニューの
**`Freeze Layout` / `Unfreeze Layout`** です。
| | 非Freeze(編集) | Freeze(演奏) |
|---|---|---|
| グリッド | 表示 | 非表示 |
| 移動バー・リサイズ・バインド先名 | 表示 | 非表示 |
| 追加・複製・削除 | できる | できない(メニューがグレーアウト) |
| **フェーダーやボタンの操作** | **できない** | **できる** |
> **値を触りたいときは Freeze してください。**
> 配置作業中の誤操作を防ぐため、非Freeze中はウィジェットの値操作そのものが無効化されています。
> 「触っているのに動かない」ときは、たいてい Freeze し忘れです。
> **Freeze 中はウィンドウサイズに合わせて全体が拡大縮小します。**
> Freeze に入った瞬間のパネルサイズを基準に、縦横比を保ったままスケールします
> (本番でウィンドウを広げると手元のウィジェットも大きくなる)。Unfreeze すると必ず等倍に戻り、
> 座標そのものは変わりません。
`Assign…` と `Appearance…` は Freeze 中でも使えます。凍結されるのはレイアウト操作だけです。
## キーボード操作
ポインタがパネルの上にあり、かつ Freeze していないときだけ効きます。
| キー | 動き |
|---|---|
| `Ctrl/Cmd + C` / `V` | 選択中のウィジェットをコピー/貼り付け(**別のパネルにも貼れます**) |
| `Ctrl/Cmd + D` | 複製 |
| `Delete` | 削除 |
| `Ctrl/Cmd + Z` | Undo |
| `Ctrl/Cmd + Shift + Z` / `Ctrl/Cmd + Y` | Redo |
> **Undo はパネルごとに独立していて、履歴は50手までです。**
> Node Editor の Undo とは別物で、対象は**レイアウト・バインド・見た目の変更**だけです。
> フェーダーを動かした等の値の変更はライブ操作なので履歴に積まれません。
> **コピー・複製ではMIDIマッピングは引き継がれません。**
> 同じノブが2つのウィジェットを叩くのは大抵事故なので、意図的に空にしています。
## MIDI を割り当てる
ウィジェット自体がMIDIの受け手になります。マウスで触るのと同じウィジェットを、MIDIからも動かせます。
1. メニューバーの **Setting → MidiMapping** でアサインモードに入ります(MIDI Inspector ウィンドウが開きます)
2. 割り当て可能なウィジェットが**青く**なります
3. ウィジェットをクリックすると**赤く**なります(選択状態)
4. その状態でMIDIコントローラーを動かすと、そのウィジェットに割り当てられます
ウィジェットごとのMIDIの解釈は次の通りです。
| ウィジェット | MIDIの効き方 |
|---|---|
| Fader / Knob | 0〜1をレンジに写像 |
| Crossfader | 0〜1がそのまま位置 |
| Number | **Min/Maxが確定しているときだけ**有効(上限なしのフィールドには効きません) |
| Toggle | 通常は押した瞬間にトグル、Momentaryなら押している間だけON |
| Button(Trigger) | 押した瞬間に発火 |
| 値ボタン / 値トグル | 押した瞬間にセット/トグル |
| Dropdown | 押すたびに次の選択肢へ(末尾で先頭に戻る) |
> **Button Grid は、ウィジェット全体ではなくボタン1個ずつに割り当てます。**
> アサインモードでは各ボタンに個別の候補が出るので、パッドの各キーを各選択肢に割り当てられます。
> **次のウィジェットはMIDIの割り当て対象になりません。**
> Color Picker / XY Pad(1ノブでは2軸に割れないため)/Label・Meter・Preview・Text Input(表示専用系)/
> Header・Divider・Frame(装飾)/Node View(ノード側のUIが操作系を持つため)/
> **未バインド・Missing のウィジェット**。
> 未バインドのものは、保存済みのマッピング自体は消えず、バインドし直すと復活します。
## 保存のされ方
Widget Panel はプロジェクト(`.synapse`)と一緒に保存されます。パネル単体のファイルはありません。
保存されるもの:
- ウィンドウの位置・サイズ・タイトル
- Freeze しているかどうか(と、Freeze中スケールの基準サイズ)
- 各ウィジェットの種類・配置・サイズ
- バインド先(どのノードのどのパラメータか)
- 見た目(ラベル・On/Off色・フォントサイズ)と挙動(表示専用・Momentary・On/Off値・レンジ上書き・選択肢の絞り込み)
- ウィジェットに割り当てたMIDIマッピング
> **バインド先のノードを消しても、ウィジェットは消えません。**
> 「Missing」表示に縮退して、レイアウトもバインド情報も見た目の設定もそのまま残ります。
> 別のプロジェクトを開いたときや、まだノードを作っていない段階でも同じです。
> 先に画面だけ組んでおく作り方が壊れないようになっています。
## 実装から分かった注意点
> **Assign の候補になるのは、Node Editor に実際に表示されているノードだけです。**
> 画面に出ていないノードのパラメータはハイライトされません。互換パラメータが1つも見つからない場合、
> **アサインは何も起こらずに終了します**(ログに警告が出るだけです)。
> その場合は `Appearance… → Binding → Bind...` のダイアログから選んでください。
> **Binding ダイアログ(`Bind...` / `Browse all…` の `From Node...`)は、アクティブなプロジェクトのノードだけを一覧します。**
> 一方で保存済みバインドの解決は全プロジェクトを横断するので、**グループの中のノードにバインドしたウィジェットは、
> グループの外に出ても生き続けます**。
> **Frame の中に置いたウィジェットは「Frame の子」ではありません。**
> 装飾はあくまで見た目の枠で、Frame を動かしても中のウィジェットは付いてきません。
> **生きているノードを1つも参照していないパネル(空・未バインドのみ・装飾だけ)は、
> どのプロジェクトを保存しても一緒に保存されます。**
> 組みかけのレイアウトを黙って捨てないための挙動です。
> **Preview は約30fpsで貼り替え続けます。**
> 値の変化を待つのではなく一定間隔で描き直す作りなので、多数並べると相応の負荷になります。
## 関連
- [MIDIマッピング](./midi-mapping) — アサインモードの共通の使い方
- [Node Editor](./window/node-editor) — バインド先のパラメータを持つノードを組む場所
## 動画
---
## Media Browser
URL: https://synapserack.com/ja/docs/window/contents-browser
Description: 映像素材のライブラリ。フォルダ・タグ・検索で素材を探し、クリックやドラッグでレイヤーへ流し込みます。Spout / Syphon / NDI もここに並びます。
映像素材のライブラリです。
> **旧称は ContentsBrowser です。**現在の名前は **Media Browser**。
> 動画・画像だけでなく、Spout / Syphon・NDI・ノードの出力も同じ棚に並ぶようになったので、
> 「動画ファイル管理」から「素材の入口ぜんぶ」へ役割が広がっています。

## 開き方
メニューバーの **Create → MediaBrowser**。
**何枚でも開けます。**閉じるのはタイトルバー右の **×**、
名前はタイトルバーを**ダブルクリック**して変えられます。
## 画面の構成
上から2段のツールバー、左のフォルダ一覧、中央のサムネイル、下のステータスバーです。
| 場所 | 内容 |
|---|---|
| **Search** | 名前とタグの絞り込み |
| **Layer** | クリックした素材を送る先の固定(後述) |
| **Folder < >** | フォルダ送り。右の3つは左一覧の文字サイズ(拡大 / 縮小 / リセット) |
| **Sort** | `Name` / `Date` / `Type` |
| **Zoom** | サムネイルの大きさ(40%〜200%) |
| **Page < >** | ページ送り。**1ページ 8 × 8 = 64 件**です |
下のステータスバーには、左に現在のフォルダ名、右に意味検索の状態が出ます。
## 左のフォルダ一覧
上から順に、次のように並びます。
| 行 | 内容 |
|---|---|
| **All** | ライブラリ全体 |
| `Random` | シャッフル。**最大 64 件**まで、検索欄は無視されます |
| **Spout**(macOS では **Syphon**) | 現在検出されている Spout / Syphon ソース |
| **NDI** | 現在検出されている NDI ソース |
| **Node** | ノードグラフの MediaOut ノードが出している映像 |
| **★ For You** / **◎ Discover** / **▶ Match Live** | 意味検索によるおすすめ(利用可能なときだけ出ます) |
| それ以降 | 自分で作ったフォルダ |
`Spout` / `Syphon` / `NDI` / `Node` の中身は**常に自動更新**されます。
リロードボタンはありません。他のアプリで送出を開始すれば、そのまま一覧に増えます。
> **外部ソースのフォルダでは編集操作ができません。**
> `Spout` / `Syphon` / `NDI` / `Node` を開いている間は、移動・タグ・サムネイル更新・削除・
> 並べ替えがすべて無効になります。実体のあるファイルではないからです。
フォルダ行を**右クリック**すると次のメニューが出ます。
| 項目 | 動き |
|---|---|
| **New Folder** | 新しいフォルダを作る |
| **Rename** | 名前を変える |
| **Delete** | フォルダと、そこにしか入っていない素材をライブラリから消す(元ファイルは消えません) |
| **Sort: Manual** | 自分で並べた順を使う |
| **Sort: File Name** | ファイル名順を使う |
フォルダ行そのものもドラッグで並べ替えられます。
## サムネイルを触る
| 操作 | 動き |
|---|---|
| **クリック** | 選択し、同時に**レイヤーへ割り当て**ます |
| **Ctrl / Cmd + クリック** | 選択の追加・解除だけ(割り当てはしません) |
| **Shift + クリック** | 直前にクリックした位置からの範囲選択 |
| **ドラッグ** | レイヤーやフォルダへ持っていく |
| **右クリック** | メニュー |
サムネイルの枠の色には意味があります。
- **青枠** = 選択中
- **赤枠** = そのレイヤーで**再生中**
- **暗い赤に `⚠ MISSING`** = 元ファイルが見つからない
- 右上の **✕ / ⚠** = コーデックが非対応/注意が必要
マウスを乗せると、ファイル名・コーデック・解像度・fps・長さがツールチップに出ます。
### 右クリックメニュー
1件だけ選んでいるとき。
| 項目 | 動き |
|---|---|
| **Move to...** | 別のフォルダへ移す(末尾の `+ New Folder...` から新規作成もできます) |
| **Remove from this folder** | このフォルダから外す |
| **Update Thumbnail** | サムネイルを取り直す |
| **Edit Tag** | タグを編集 |
| **Delete from Library** | ライブラリから削除(**元ファイルは消えません**) |
| **Open File Location** | ファイルの場所を開く |
2件以上選んでいる状態で、選択中のものを右クリックすると一括メニューになります
(`Move ... items to...` / `Tag ... items...` / `Regenerate ... thumbnails` / `Delete ... items from Library`)。
下のステータスバーにも `Move` / `Tag` / `Regen` / `Delete` / `Clear` のボタンが出ます。
> **レイヤーで再生中の素材は一括削除できません。**
> 単体削除の場合は「再生を止めて削除する」確認が出ます。
## レイヤーへ送る
送り方は3通りあります。
### 1. レイヤー側で受け口を開いてからクリック
[Layer](./layer) ウィンドウの**プレビュー面をクリック**して「割り当て待ち」にし、
Media Browser のサムネイルをクリックします。割り当てが済むと待ち状態は自動で解除されます。
複数のレイヤーを待ち状態にしておけば、1回のクリックでまとめて同じ素材が入ります。
### 2. Layer ドロップダウンで送り先を固定する
上の **Layer** ドロップダウンで送り先を選ぶと、以後クリックした素材は**必ずそこへ**入ります。
`None` を選ぶと固定を解除します。
一覧には Layer だけでなく、映像を受け取れるノード(ContentPlayer など)も並びます。
この固定はプロジェクトに保存されます。
### 3. ドラッグする
サムネイルを掴んで、[Layer](./layer) のプレビュー面か
[Layer Hierarchy](./layer-hierarchy) の行に落とします。
> **複数まとめてドラッグしても、入るのは先頭の1件だけです。**
> **`F10` で切り離した OS ウィンドウには、ドラッグで渡せません。**
> パネルをまたぐドラッグは仕組み上できないためです。切り離したレイヤーへ送りたいときは、
> レイヤー側のプレビュークリックか、Layer ドロップダウンでの固定を使ってください。
## 素材を取り込む
ウィンドウに**ファイルやフォルダを直接ドロップ**します。
フォルダを落とした場合は中身を再帰的に探します。
取り込めるのは次の拡張子です。
| 種類 | 拡張子 |
|---|---|
| 動画 | `.mp4` `.mov` `.avi` `.mkv` `.webm` `.flv` `.wmv` `.m4v` `.mpg` `.mpeg` |
| 画像 | `.png` `.jpg` `.jpeg` |
| シェーダー | `.hlsl` |
落とした先によって入るフォルダが変わります。
- 左のフォルダ行の上 → **そのフォルダ**
- サムネイル領域 → **いま表示しているフォルダ**
- [Layer](./layer) のプレビューや [Layer Hierarchy](./layer-hierarchy) の行 → **`Temp` フォルダ**に入り、先頭1件がそのレイヤーへ
> **画像のサムネイルは取り込み時には作られません。**
> メニューバーの **MediaBrowserCache → RegenerateMissingThumbnails** を実行すると作られます。
### フォルダへドラッグしたときの既定は「コピー」
サムネイルを左のフォルダ行に落とすと、**元のフォルダに残したまま参照が増えます**。
**Alt(macOS では Option)を押しながら落とす**と移動になります。
### 並べ替え
特定のフォルダを開いているときだけ、サムネイルをドラッグして並べ替えられます。
`All` / `Random` / 検索中 / 外部ソースでは並べ替えできません。
> **ファイル名順のフォルダで並べ替えると、確認なしで手動順に切り替わります。**
> 戻したいときはフォルダを右クリックして `Sort: File Name` を選んでください。
## 検索
検索欄は**名前・タグ・自動タグ**の部分一致です。入力が止まってから 0.3 秒後に走ります。
意味検索が使える環境では、部分一致の結果の**後ろに**、
言葉の意味で近いものが順に足されます。
ツールチップに `sim: 0.42` のような近さのスコアが出ます。
ステータスバー右の表示で状態が分かります。
| 表示 | 意味 |
|---|---|
| `Semantic ready` | 使える状態 |
| `Indexing 120/500` | 索引を作っている最中 |
| `Semantic: models not found` | モデルが見つからない(部分一致のみ) |
> **検索とフォルダ選択は互いを打ち消します。**
> 検索欄に文字を入れるとフォルダの選択が外れ(検索は常にライブラリ全体が対象です)、
> フォルダを選ぶと検索欄が空になります。
## タグ
サムネイルの右クリック → **Edit Tag**。
ライブラリ内の全タグが並び、付いているものには `✓` が付きます。クリックで付け外しします。
自動タグの候補がある場合は `✨` 付きで下に並び、`✨ Approve all` でまとめて採用できます。
一番下の `+ Add New Tag...` から新しいタグを作れます。
## MIDI
Media Browser で MIDI に割り当てられるのは次の2種類です。
- **サムネイルの各マス(8 × 8 = 64個)** — 叩くとそのマスの素材が割り当てられます
- **フォルダ送り(前 / 次)とページ送り(前 / 次)**
アサインモードに入ると、空いているマスにもプレースホルダーが出るので、
素材がまだ無い位置にも先に割り当てられます。
> **マスに割り当てた MIDI は「レイヤーへ送る」動作だけを行います。**
> 選択状態は変わりません。送り先は上の Layer ドロップダウン、
> またはレイヤー側の割り当て待ち状態で決まります。
検索・ソート・ズーム・Layer ドロップダウン・タグ・削除は MIDI 対象外です。
## キャッシュの管理
メニューバーの **MediaBrowserCache** に、ライブラリ全体に対する操作がまとまっています。
| 項目 | 動き |
|---|---|
| **ClearAllCache** | コンテンツ情報とサムネイルをすべて削除(実行後は再起動が必要) |
| **CheckMissingFile** | 元ファイルが見つからない素材を洗い出す |
| **RegenerateMissingThumbnails** | サムネイルが無い素材のぶんだけ作り直す |
| **ImportFromDirectory** | フォルダを指定してまとめて取り込む |
素材の実体・サムネイル・タグはユーザーデータフォルダの `Cache` 以下に置かれます。
**ライブラリから削除しても、元のファイルは消えません。**
## 関連
- [Layer](./layer) — 素材の行き先
- [動画を読み込む](../load-video) / [Spoutを読み込む](../load-spout)
- [素材フォルダの構成](../source-directory)
---
## Global Tempo
URL: https://synapserack.com/ja/docs/window/global-tempo
Description: SynapseRack 全体が参照する BPM と拍を管理するウィンドウ。タップテンポ、±1/÷2/×2、拍頭へのリセットが並びます。
SynapseRack 全体が参照する **BPM と拍**を持っているウィンドウです。
[Layer](./layer) の Beat Sync も、テンポ系のノードも、すべてここの数字を見ています。

## 開き方
メニューバーの **Window → GlobalTempo**。
起動時から存在するウィンドウなので、これは画面中央への呼び戻しです。**閉じることはできません**。
## BPM
**BPM** の数字をクリックするとキーボードで直接入力できます。初期値は 128、範囲は **1〜500** です。
範囲外の値を入れても自動的に丸め込まれます。
| ボタン | 動き |
|---|---|
| **TAP** | タップテンポ。押した間隔から BPM を計算します |
| **−1** | BPM を 1 下げる |
| **+1** | BPM を 1 上げる |
| **÷2** | BPM を半分に |
| **×2** | BPM を倍に |
| **RST** | 拍を 1 拍目に戻す(Resync) |
> **TAP は 1.8 秒あけると計測がリセットされます。**
> 直近 15 回ぶんの平均を取り続ける方式なので、テンポを大きく変えたいときは
> 一度手を止めてから叩き直すのが早いです。
## BEAT インジケータ
**BEAT** の四角が、今どの拍かを示します。点灯している四角が現在の拍です。
**RST** を押すと拍位置が 0 に戻り、同時に Resync が全体へ通知されます。
Beat Sync を有効にしている [Layer](./layer) は、この通知で映像の頭に戻ります。
曲の頭で押して合わせ直すのが基本の使い方です。
> **拍子(1小節の拍数)はこのウィンドウでは変えられません。**
> インジケータの数は拍子に合わせて増減しますが、拍子そのものを設定するのは
> GlobalTempo ノードの `Beats / Bar` です(1〜32)。
> 拍子はプロジェクトに保存されます。
## MIDI で操作する
TAP / −1 / +1 / ÷2 / ×2 / RST の6つのボタンは、それぞれ MIDI に割り当てられます。
やり方は [MIDIマッピング](../midi-mapping) と同じで、
メニューバーの **Setting → MidiMapping** からアサインモードに入ります。
いずれも「値が 0.5 を超えた瞬間」に発火するので、ノブよりパッドやボタン向きです。
## 保存されるもの
BPM と拍子、ウィンドウの位置・サイズ・最小化状態、そして MIDI マッピングが
プロジェクト(`.synapse`)と一緒に保存されます。
## 関連
- [ビートに同期させる](../beat-sync) — Layer 側で拍に合わせる話
- [MIDIマッピング](../midi-mapping) — アサインモードの共通の使い方
---
## Group Layer
URL: https://synapserack.com/ja/docs/window/group-layer
Description: 複数のレイヤーをまとめて1枚として扱うためのレイヤー。中身を合成した結果に、さらに合成モードと不透明度をかけられます。
複数のレイヤーをまとめて**1枚のレイヤーとして扱う**ためのレイヤーです。
中身を先に合成してから、その結果に対してもう一度合成モードと不透明度をかけられます。

## 作り方・消し方
メニューバーの **Create → GroupLayer**。名前は `GroupLayer_0`, `GroupLayer_1`… と自動で付きます。
中にレイヤーを入れるのは [Layer Hierarchy](./layer-hierarchy) です。
入れたいレイヤーの行を掴んで、グループ行の**真ん中あたり**に落とします。
削除も Hierarchy の × から。**グループを消すと中のレイヤーもまとめて消えます。**
**タイトルバーをダブルクリック**すると名前を変えられます。
> **作った直後のグループは不透明度 0 です。**
> 中にレイヤーを入れても Preview には出ません。まず `Opacity` を上げてください。
## 使えるコントロール
グループレイヤーのウィンドウは [Layer](./layer) と同じ見た目をしていますが、
**実際に効くのは次の3つだけ**です。
| コントロール | 動き |
|---|---|
| **合成モードのドロップダウン** | グループの出力をマスターへ合成するときのモード。選択肢は Layer と同じ8つ |
| **`Opacity`(縦バー)** | グループ全体の不透明度 |
| **Property**(下端の帯) | 位置・回転・スケール・矩形マスク([Layer Property](./layer-property-editor)) |
真ん中の面には、グループの中身を合成した結果が映ります。
> **上段のストレッチ切り替えとコンテンツ解除は、グループでは何もしません。**
> グループレイヤーは映像を直接持てないため、これらのボタンはウィンドウに残っているだけで
> 配線されていません。プレビュー面をクリックしても「割り当て待ち」にはなりません。
> **グループにファイルを落としても割り当てられません。**
> [Media Browser](./contents-browser) からのドラッグも、OS からのドロップも同じです。
> ファイルはライブラリに取り込まれますが、どのレイヤーにも入りません。
> 映像は必ず中の [Layer](./layer) に入れてください。
## 中身の並び順
グループの中の並び順も、外と同じルールです。**上が奥、下が手前。**
グループ自身の位置(Hierarchy 上での上下)は、グループ全体が
他のレイヤーに対して奥に来るか手前に来るかを決めます。
## MIDI
グループレイヤーで MIDI に割り当てられるのは **`Opacity`** と **合成モード**の2つです。
合成モードは叩くたびに次のモードへ進む「送り」動作になります。
## 関連
- [Layer](./layer) — 映像1枚ぶんを扱うウィンドウ
- [Layer Hierarchy](./layer-hierarchy) — グループへの出し入れと並び順
- [Layer Property](./layer-property-editor) — 位置・回転・スケール・矩形マスク
---
## Layer
URL: https://synapserack.com/ja/docs/window/layer
Description: 映像1枚ぶんを扱うウィンドウ。合成モード、不透明度、再生トランスポート、速度、Beat Sync、クロスフェードループが1枚に収まっています。
映像1枚ぶんを扱うウィンドウです。動画・画像・Spout / Syphon・NDI・ノードの出力など、
何を入れてもこのウィンドウの操作系は同じです。

## 作り方・消し方
メニューバーの **Create → Layer**。名前は `Layer_0`, `Layer_1`… と自動で付きます。
**このウィンドウに × はありません。**消すときは
[Layer Hierarchy](./layer-hierarchy) の行の × を押してください(確認も取り消しもありません)。
最小化はタイトルバー右の **−** です。
**タイトルバーをダブルクリック**するとレイヤー名を変えられます。Enter で確定、Esc で取り消し。
ここで付けた名前が Hierarchy にもノード側のドロップダウンにも出ます。
> **作った直後のレイヤーは不透明度 0 です。**
> つまり映像を入れても Preview には何も出ません。まず `Opacity` を上げてください。
## 上段:ストレッチ・コンテンツ解除・合成モード
| 位置 | 動き |
|---|---|
| 左のアイコントグル | **ストレッチ切り替え**。ONで映像をレイヤー解像度いっぱいに引き伸ばし、OFFで元の解像度のまま表示します(新規レイヤーはON) |
| その右のアイコン | **コンテンツ解除**。再生を止めて、割り当てを外します |
| 右のドロップダウン | **合成モード** |
合成モードは次の8つです(この順番で並んでいます)。
`Add` / `AlphaAdd` / `AlphaBlend` / `Inversion` / `Multiply` / `Screen` / `Substract` / `Cutout`
新しいレイヤーの初期値は `Add` です。
> **コンテンツ解除に確認はありません。**
> 再生停止に加えて、Spout / NDI / ノード入力の選択状態もまとめてクリアされます。
## 中段:プレビューと Opacity
真ん中の大きな面が**プレビュー**、右の縦バーが `Opacity` です。
`Opacity` は 0〜1 の範囲で、バーは下から伸びます。
> **`Opacity` の数値表示は実際の値の 1/100 で出ます。**
> 全開(1.0)のとき `0.01`、それ以外はほぼ `0.00` と表示されます。
> **バーの伸び方と実際の映像は正しい**ので、数字ではなくバーを見てください。
### プレビュー面のクリックは「割り当て先の指定」
**プレビュー面を左クリックすると、そのレイヤーが「割り当て待ち」になります。**
その状態で [Media Browser](./contents-browser) のサムネイルをクリックすると、
このレイヤーに映像が入ります。割り当てが済むと待ち状態は自動的に解除されます
(Setting → GlobalSettings の `Keep layer selection after assigning` を ON にすると解除されません)。
**プレビュー面を右クリックすると**、Media Browser 側が、いま再生中のコンテンツが入っている
フォルダを開いて選択します。見た目のボタンが無いので気付きにくいですが、素材を探し直すときに便利です。
### プレビュー面にファイルを落とす
プレビュー面はドロップ先でもあります。
- **OS からファイルをドロップ** — `Temp` という名前のフォルダに取り込まれ、**先頭の1件だけ**が割り当てられます
- **Media Browser からドラッグ** — こちらも**先頭の1件だけ**です
複数ファイルを一度に落としても、割り当てられるのは1件です。残りはライブラリに取り込まれるだけです。
## 下段:再生トランスポート
| ボタン | 動き |
|---|---|
| **◁\|** | **先頭に戻る**(前のクリップではありません) |
| **⏸ / ▶** | 再生・一時停止のトグル |
| **\|▷** | **末尾へ飛ぶ**(次のクリップではありません) |
| 横のバー | シーク(スクラブ) |
シークバーの上に出る時間は**秒の小数点2桁**(例 `12.34`)です。分秒表記や総尺の表示はありません。
> **映像を入れていないときは、どのボタンも無反応です。**
> エラーも出ないので、「押しても何も起きない」ときはまずコンテンツが入っているか確認してください。
## 速度
| ボタン | 動き |
|---|---|
| **/2** | 速度を半分に |
| **↻** | 速度を 1.0 に戻す |
| **\*2** | 速度を倍に |
| 横のバー | 速度スライダー(−5 〜 5、初期値 1) |
> **速度ボタンを押すと Beat Sync は解除されます。**
> `/2`・`↻`・`*2` はどれも「手動で速度を決める」操作なので、同期モードから抜けます。
> **速度スライダーが効かないことがあります(仕様です)。**
> Beat Sync 中や速度ボタンを押した直後は**ソフトテイクオーバー**が働き、
> スライダーの位置が現在の速度に **0.5 以内まで近づくまで**操作を受け付けません。
> このときスライダーの上に細い黄色いバーが出て、現在の速度位置を示します。
> そこまでツマミを持っていけば、そこから普通に動かせます。
## Beat Sync とクロスフェードループ
一番下の列がループ関連です。
| 要素 | 動き |
|---|---|
| 左のトグル | **クロスフェードループ** |
| **−** / **+** | 拍数を 1 減らす/増やす |
| **/2** / **\*2** | 拍数を半分/倍に |
| 数字 | 現在の拍数(表示のみ。ここは編集できません) |
| メトロノームのトグル | **Beat Sync** の ON / OFF |
Beat Sync を ON にすると、**クリップ全体が指定した拍数で1周する速度**に自動調整されます。
テンポは [Global Tempo](./global-tempo) の BPM を見ています。
Global Tempo の **RST**(Resync)を押すと、同期中のレイヤーは映像の先頭に戻ります。
拍数は **1〜64** にクランプされます。
> **`/2` は整数の割り算です。**
> 拍数 5 で `/2` を押すと 2.5 ではなく **2** になります。
クロスフェードループは、クリップの終わりと始まりを重ねてつなぐ機能です。
重ねる長さは**クリップ長の 10%** で固定です。
この ON / OFF は素材ごとに記憶されるので、次に同じクリップを呼んだときも設定が残ります。
## MIDI
このウィンドウのほとんどのコントロールが MIDI に割り当てられます。
不透明度、合成モード、プレビュー選択、ストレッチ、コンテンツ解除、再生、先頭、シーク、末尾、
速度の3ボタンと速度スライダー、クロスフェード、拍数の4ボタン、Beat Sync トグル。
やり方は [MIDIマッピング](../midi-mapping) を参照してください。
> **合成モードの MIDI は「選択」ではなく「送り」です。**
> 叩くたびに次の合成モードへ進み、末尾まで行くと先頭に戻ります。
## 関連
- [Layer Hierarchy](./layer-hierarchy) — レイヤーの並び順と削除
- [Media Browser](./contents-browser) — 映像素材を探して割り当てる
- [動画を読み込む](../load-video) / [Spoutを読み込む](../load-spout)
- [クロスフェードループ](../crossfade-loop) / [ビートに同期させる](../beat-sync)
---
## Layer Hierarchy
URL: https://synapserack.com/ja/docs/window/layer-hierarchy
Description: レイヤーとグループの並び順・入れ子・削除を扱うウィンドウ。並びがそのまま合成順で、上が奥・下が手前です。
[Layer](./layer) と [Group Layer](./group-layer) の**並び順**を決めるウィンドウです。
ここでの並びがそのままマスター出力の合成順になります。

## 開き方
メニューバーの **Window → Hierarchy**。
Preview と同じく起動時から存在するウィンドウで、**閉じることはできません**。
メニューの Hierarchy は「開く」ではなく画面中央への呼び戻しです。最小化はタイトルバー右の **−**。
## 一番大事な話:上が奥、下が手前
**リストの一番上が最初に描かれ、一番下が最後に描かれます。**
つまり **上の行ほど奥、下の行ほど手前**です。
Photoshop や After Effects とは上下が逆なので、最初は必ず戸惑うところです。
新しく作ったレイヤーは**リストの一番下**に追加されます。
「作った直後のレイヤーが一番手前に来る」と覚えておくと分かりやすいはずです。
> **できたばかりのレイヤーは何も映りません。**
> 新規レイヤーの不透明度は 0 で作られます。Hierarchy に行が増えたのに Preview が変わらないときは、
> まず [Layer](./layer) ウィンドウの `Opacity` を上げてください。
## 行に並んでいるもの
各行は左から次の4つです。行の高さは 48px 固定です。
| 要素 | 内容 |
|---|---|
| **▼ / ▶** | グループの開閉。グループ以外の行では場所だけ取って表示されません |
| **サムネイル** | そのレイヤーの出力を映すライブサムネイル(40 × 40) |
| **名前** | レイヤー名。**ここでは編集できません**(後述) |
| **×** | 削除ボタン |
選択中の行はマゼンタ、マウスが乗った行はピンクに変わります。
選択は**常に1行だけ**で、Shift や Ctrl を足しても複数選択にはなりません。
表示・非表示のチェックボックス、ソロ、ロック、レイヤー種別のアイコンは**ありません**。
不透明度や合成モードは各 [Layer](./layer) ウィンドウ側で操作します。
> **名前を変えるのは Hierarchy ではなく Layer ウィンドウ側です。**
> [Layer](./layer) / [Group Layer](./group-layer) のウィンドウの**タイトルバーをダブルクリック**すると
> リネームできます。Hierarchy の名前テキストはクリックを受け付けない設定になっています。
## 並べ替えとグループ入れ
行を**左ドラッグ**して並べ替えます。ドラッグ中は他の行が薄くなり、
落ちる場所にシアンの線が出ます。
| 落とす場所 | 結果 |
|---|---|
| 通常の行の**上半分 / 下半分** | その行の上/下に挿入 |
| グループ行の**上端 20% / 下端 20%** | そのグループの上/下に挿入 |
| グループ行の**真ん中 60%** | **そのグループの中に入れる**(枠が水色に光ります) |
グループの中に入れると、そのグループは自動的に開きます。
> **落とせない組み合わせは、何も起きずに終わります。**
> 自分自身の上、自分の子孫の中、そしてグループ以外の行の「中」には入れられません。
> エラーも警告も出ないので、「掴んだのに入らない」ときはこのどれかです。
> **ドラッグは押した瞬間に始まります。**
> クリックして選択するだけのつもりでも、ボタンを押している間は他の行が半透明になります。
> そのまま離せば選択されるだけなので、動作としては問題ありません。
Hierarchy にキーボードショートカットはありません。
## 削除
行の右端の **×** で削除します。グループを消すと中のレイヤーもまとめて消えます。
> **削除に確認ダイアログはありません。**
> レイヤー構成の変更(追加・削除・並べ替え等)は、Node Editorの外で `Ctrl/Cmd + Z` を押すと取り消せます([ショートカット一覧](/ja/docs/shortcuts))。
> 押す前に一呼吸置いてください。
## 行にファイルを落とす
Hierarchy の行は**ドロップ先**にもなっています。
- **OS のファイルマネージャからのドロップ** — ファイルは `Temp` という名前のフォルダに取り込まれ、
**最初の1件だけ**がそのレイヤーに割り当てられます
- **[Media Browser](./contents-browser) からのドラッグ** — こちらも割り当てられるのは**先頭の1件だけ**です
ドロップ先の行は青い枠で光ります。取り込み中は枠の中が濃くなります。
> **グループ行に落としてもファイルは割り当てられません。**
> グループレイヤーは映像を直接持てないためです。取り込み自体は走るので、
> ファイルは `Temp` フォルダに入った状態で残ります。
## 関連
- [Layer](./layer) — 1枚ぶんの映像を扱うウィンドウ
- [Group Layer](./group-layer) — 複数レイヤーをまとめて1枚として扱う
- [Preview](./preview) — ここで決めた合成順の結果
---
## Layer Property
URL: https://synapserack.com/ja/docs/window/layer-property-editor
Description: Layer / Group Layer ウィンドウの下端「Property」を開くと出てくるパネル。位置・回転・スケールと矩形マスクを数値で指定します。
レイヤーの**位置・回転・スケール・矩形マスク**を数値で指定するパネルです。
> **これは独立したウィンドウではありません。**
> かつては Window メニューから開く「Layer Property Editor」ウィンドウでしたが、現在は
> [Layer](./layer) / [Group Layer](./group-layer) の各ウィンドウに1つずつ付いた**パネル**になっています。
> Window メニューに Property の項目はありません。

## 開き方
[Layer](./layer) / [Group Layer](./group-layer) ウィンドウの**下端にある「Property」の帯**、
その右の**矢印をクリック**します。
もう一度押すと閉じます。
パネルはウィンドウの**すぐ下にぶら下がる形**で開き、ウィンドウを動かすと付いてきます。
> **開いているか閉じているかは矢印の向きでは分かりません。**
> 開いた状態と閉じた状態で同じアイコンが使われているため、見分けはパネルが出ているかどうかだけです。
> **ウィンドウが画面の下寄りにあると、パネルが画面外に出ます。**
> 画面外に出ないよう自動で位置を調整する仕組みはありません。
> Property を使うときは、ウィンドウを少し上へ動かしてください。
## 項目
すべて数値入力欄です。**上限も下限もなく**、入れた値がそのまま反映されます。
### Position(X / Y / Z)
レイヤーの表示位置です。レイヤー自身のキャンバス内での移動量で、
キャンバスはレイヤー解像度と同じ大きさなので、1 = 1px と考えて構いません。
新規レイヤーの初期値は 0, 0, 0 です。
### Rotation(X / Y / Z)
回転角(度)です。平面的に回したいときは Z を動かします。
### Scale(X / Y / Z)
拡大率です。新規レイヤーの初期値は X = 1、Y = 1。
> **Z の欄は表示されているだけで、何も起きません。**
> スケールは内部的に2次元の値なので、Z に何を入れても無視されます。
### RectMask(L / R / T / B / SoftX / SoftY)
レイヤーを四角く切り抜くマスクです。
| 欄 | 意味 |
|---|---|
| **L** | 左から削る量 |
| **R** | 右から削る量 |
| **T** | 上から削る量 |
| **B** | 下から削る量 |
| **SoftX** | 左右のぼかし幅 |
| **SoftY** | 上下のぼかし幅 |
L / R / T / B は「その辺から内側へ何ピクセル削るか」です。すべて 0 が切り抜きなしの状態です。
> **SoftX / SoftY は整数です。**
> 小数を入れても四捨五入されます。
## 覚えておくこと
- **入力欄をダブルクリックしても右クリックしても、初期値には戻りません。**リセット操作はありません
- **値の変更は Undo できません。**戻したい値は自分でメモしておいてください
- ここで設定した値はプロジェクト(`.synapse`)に保存されます
- [Group Layer](./group-layer) にも同じパネルが付いていて、**グループ全体**に効きます
## 関連
- [Layer](./layer) — このパネルが付いているウィンドウ
- [Group Layer](./group-layer) — グループ側の Property も中身は同じ
---
## Node Editor
URL: https://synapserack.com/ja/docs/window/node-editor
Description: ノードを置いて繋ぐウィンドウ。パン・ズーム・選択・接続・グループ化のすべての操作を、実装のとおりにまとめました。
ノードを置いて繋ぐウィンドウです。SynapseRack の中身はほぼここで組み立てます。

## 開き方
**起動時から開いています。**メニューバーの **Window → NodeEditor** は、
画面中央への呼び戻しです。**閉じることはできません**。
## 画面の構成
| 場所 | 内容 |
|---|---|
| **上部のツールバー** | `Import Group` / ⌂ / ◀ ▲ ▼ ▶ / `Adjust Layout` / `Auto Layout`、右端に現在のノード数 |
| **右のサイドパネル** | ノードブラウザ。カテゴリタブ+検索+サムネイル一覧 |
| **右下** | ミニマップ |
| **中央** | キャンバス |
## 移動と拡大縮小
| 操作 | 動き |
|---|---|
| **中ボタンドラッグ** または **Ctrl + 左ドラッグ** | パン(移動) |
| **ホイール** | ズーム(**カーソル位置を中心に**拡大縮小) |
| ツールバーの **⌂** | 表示位置をリセット |
| ミニマップの **⌂** | 原点 (0, 0) へ |
ズームの範囲は **0.05 倍〜30 倍**です。ノードやエッジをドラッグしたまま画面端に近づけると、
自動でスクロールします。
> **ノード作成のポップアップが開いている間はズームできません。**
> ホイールはポップアップのリスト送りに使われます。
> **拡大しきる手前でグループに入ってしまうことがあります。**
> 画面中央にグループノードがある状態で **2.95 倍**を超えてズームすると、
> そのグループの中へ潜ります。逆にグループの中で **0.065 倍**まで引ききってから
> さらに3回ホイールを回すと、外へ出ます。
## 選択
| 操作 | 動き |
|---|---|
| ノードを左クリック | 単独選択 |
| **Shift + クリック** | 選択に追加 |
| 空白を左ドラッグ | 矩形選択(3px 以上動かすと枠が出ます) |
| **Ctrl + 矩形選択** | 既存の選択に追加 |
| 空白をクリック | 選択解除 |
| `Cmd/Ctrl + A` | 全選択 |
| `Esc` | 選択解除 |
矩形選択は**ノードだけでなくエッジも**掴みます。エッジは見た目の線の形で判定されるので、
四角い当たり判定に引っかかって余計な線が入る、ということは起きません。
> **「追加選択」の修飾キーが2種類あります。**
> ノードのクリックは **Shift**、矩形選択は **Ctrl** です。
> Ctrl + 左ドラッグはパンに割り当てられているので、矩形選択の開始には使えません。
## ノードを動かす
ノードは本体のどこを掴んでもドラッグできます(スライダーなどの操作部を除く)。
複数選択した状態でそのうち1つを掴むと、**まとめて動きます**。
**グリッドへのスナップはありません。**
タイトルを**ダブルクリック**するとノードの名前を変えられます。
きれいに並べたいときはツールバーの2つのボタンを使います。
| ボタン | 動き |
|---|---|
| **Adjust Layout** | 今の配置を活かしたまま、列を揃えて重なりを解消します |
| **Auto Layout** | 配置を無視して、左から右へ流れる形に全部組み直します |
## ノードを作る
### キャンバスを右クリック
**右クリックした場所にノードが作られます。**
左にカテゴリ、右に一覧が出て、上の検索欄は開いた 50ms 後に自動でフォーカスされます。
ポップアップが開いている間はどこをタイプしても検索欄に入ります。
| キー | 動き |
|---|---|
| `↑` / `↓` | 項目を移動 |
| `←` / `→` | カテゴリ側と一覧側を行き来 |
| `Enter` | 決定して作成 |
| `Esc` | 閉じる |
検索は名前と別名の部分一致です。日本語名や別名(Spout ⇄ Syphon など)でも引っかかります。
> **打ちすぎても最後まで消えません。**
> 1件もヒットしない語を打つと、ヒットする一番長い前置き部分まで自動で戻して結果を出し、
> **無視した末尾の文字が赤く**表示されます。
カテゴリは次の順で並びます。
`Source` / `Generator` / `Fx` / `Composite` / `Layer` / `Output` / `3D` / `Field` / `Record` /
`ProFx` / `FxShader` / `Audio` / `Tempo` / `Signal` / `Math` / `Operation` / `Color` / `Variable` /
`UI` / `I/O` / `Group`
### 右のサイドパネルから
サムネイル付きの常設パネルです。タイルを**クリックすると画面中央に**、
**ドラッグして落とすとその位置に**ノードが作られます。
キャンバスの外で離した場合は作られません。
パネル左上の **▶** で折りたたみ/展開できます。
> **`Tab` キーでノード一覧は出ません。**
> 出し方は右クリックか、右のサイドパネルの2通りです。
## 繋ぐ・外す
ポートを**左ボタンで押したまま**、繋ぎたいポートまで引いて離します。
ポートの丸から少し外れても、12px ほどの余裕の中なら繋がります。
**何もない場所で離すと**、繋げられる型のノードだけに絞ったノード作成ポップアップが開き、
選んだノードが自動で接続されます。
候補のポートが複数ある場合は、そのあとポートを選ぶメニューが出ます。
繋げられない組み合わせは次のとおりです。
- 自分自身、および同じノードのポート同士
- 出力どうし、入力どうし
- すでに同じ線が引かれている場合
- 型が合わない場合
- **一周して自分に戻ってくる形(ループ)**
> **ループは常に拒否されます。**
> フィードバックをかけたいときは Send / Receive 系のノードを経由してください。
### 線を消す・ミュートする・付け替える
| やりたいこと | 操作 |
|---|---|
| 線を消す | **線をクリックして選択 → `Delete`** |
| 線を一時的に切る | 線の**真ん中の三角**をクリック(塗りつぶし ▶ = 有効、白抜き ▷ = ミュート) |
| ポートの線をまとめて別ポートへ移す | **ポートを右クリック → `Move all edges (n)`** → 移動先のポートをクリック |
ミュートは MIDI や OSC からも操作できます。
> **1本しか繋げないポートに繋ぎ直すと、古い線は黙って外れます。**
> 一方で「2本まで」のように上限が2以上のポートが埋まっている場合は、新しい線のほうが拒否されます。
> 同じ「いっぱい」でも挙動が逆なので注意してください。
## キーボードショートカット
| キー | 動き |
|---|---|
| `Delete` | 選択中のノードとエッジを削除 |
| `Esc` | 選択解除 |
| `Cmd/Ctrl + A` | 全選択 |
| `Cmd/Ctrl + C` / `V` | コピー/貼り付け(元の位置から 30px ずらして置かれます) |
| `Cmd/Ctrl + D` | 複製 |
| `Cmd/Ctrl + G` | 選択をグループ化 |
| `Cmd/Ctrl + Shift + G` | グループを解除 |
| `Cmd/Ctrl + Z` | Undo |
| `Cmd/Ctrl + Shift + Z` / `Cmd/Ctrl + Y` | Redo |
> **ほとんどのショートカットは、マウスが Node Editor の上にあるときだけ効きます。**
> 「消えない」「貼れない」ときは、たいていポインタが別のウィンドウの上にあります。
> **Undo はスナップショット方式です。**
> 0.2 秒ごとにプロジェクトを見張り、**変化が 0.35 秒止まったところで1手**として記録します。
> ドラッグやスライダーの一振りは1手にまとまり、ノードの作成・削除・移動・接続・切断・
> パラメータ変更のすべてが対象になります。履歴は**プロジェクトごとに 50 手**まで。
> LFO などで常に動き続けている値は、履歴を埋め尽くさないよう自動的に対象から外れます。
## グループ
`Cmd/Ctrl + G` で選択をグループにまとめます。
グループの境界をまたいでいた線には、GroupInput / GroupOutput が自動で作られます。
| やりたいこと | 操作 |
|---|---|
| 中に入る | グループノードの **`▶ Enter`** ボタン、またはグループの上でズームイン |
| 外に出る | ツールバーの **`↑ Up`**(入れ子のときだけ出ます)、またはズームアウト |
| 書き出す | グループノードの **`Export`** ボタン(`.synapsegroup`) |
| 読み込む | ツールバーの **`Import Group`**(`.synapsegroup` / `.node`) |
## ミニマップ
右下の **Minimap** で全体の位置関係を確認できます。
マップの中を左ドラッグすると、その位置へ移動します。
> **ノード本体の右クリックには専用メニューがありません。**
> ノードの上で右クリックすると、その場所にノード作成のポップアップが出ます。
> 右クリックメニューが出るのは**ポート**と、ノード内のパラメータ操作部の一部だけです。
## 関連
- [Widget Panel](../widget-panel) — ここで組んだノードのパラメータを、演奏用の画面に並べる
- [Layer](./layer) — ノードから映像を送り込む先
---
## OSC Monitor
URL: https://synapserack.com/ja/docs/window/osc-monitor
Description: 受信した OSC メッセージを最新30件まで、アドレス・値・型で表示するウィンドウ。配線が届いているかを確かめる用途に使います。
**受信した** OSC メッセージをそのまま並べるウィンドウです。
外部から OSC が本当に届いているのか、アドレスと型が想定どおりかを、その場で確かめるために使います。

## 開き方
メニューバーの **Window → OSCMonitor**。
起動時から存在するウィンドウなので、これは画面中央への呼び戻しです。**閉じることはできません**。
## 表示のされ方
1行が1メッセージで、書式は次のとおりです。
```
/address: 値 type:型
```
型は `int` / `float` / `string` / `bool` / `byte[]` のいずれかが出ます。
1つのメッセージに複数の値が入っている場合は、同じ行に続けて並びます。
- **新しいメッセージが一番上**に来ます
- 保持されるのは**直近30件**で、それより古いものから消えていきます
- 何も受信していない間は `No Signal` と表示されます
> **表示されるのは受信(Input)だけです。**
> SynapseRack から送信した OSC はここには出ません。
> **ログを止める・消す・絞り込む操作はありません。**
> クリア、フィルタ、一時停止、コピーのいずれのボタンもなく、スクロールもしません。
> 30件を超えた分は自然に流れていきます。
## 受信ポートの設定
ポートはこのウィンドウではなく、メニューバーの **Setting → GlobalSettings → OSC** で設定します。
| 項目 | 初期値 |
|---|---|
| OSC Input | 無効(初回起動時はOFF) |
| Input Port | 3170 |
| OSC Output | 無効(初回起動時はOFF) |
| Output Address | 127.0.0.1 |
| Output Port | 3171 |
この設定は**プロジェクトではなくマシン側の設定**として保存されるので、
別のプロジェクトを開いてもポートは変わりません。
## 関連
- [OSCの入出力](../osc-input-output) — 実際に OSC でパラメータを動かす手順
---
## Preview
URL: https://synapserack.com/ja/docs/window/preview
Description: 全レイヤーを合成したマスター出力を、縦横比を保ったまま確認する表示専用ウィンドウ。解像度は Setting → GlobalSettings で決まります。
すべてのレイヤーを合成した**マスター出力**を映すウィンドウです。
出力ウィンドウやプロジェクターに送っているのと同じ絵が、ここに出ます。

## 開き方
メニューバーの **Window → Preview**。
このウィンドウは起動時から存在していて、**閉じることはできません**(タイトルバーに × はありません)。
メニューの Preview は「開く」ではなく**画面中央に呼び戻す**動作です。最小化したあとや、
ウィンドウを画面の外へ飛ばしてしまったときはここから戻せます。
最小化はタイトルバー右の **−** です。
## 何が映るか
映るのはマスター出力のレンダーテクスチャそのもの、つまり
[Layer Hierarchy](./layer-hierarchy) に並んだレイヤーを順に重ねた結果です。
- 解像度は **Setting → GlobalSettings → Resolution** の Width / Height(初期値 1920 × 1080)
- その縦横比を保ったまま、ウィンドウの内側 90% に収まるよう縮小表示されます
- 余白は黒。ウィンドウを縦長にしても絵が引き伸ばされることはありません
解像度を変えると、マスターの RenderTexture と各レイヤーの解像度がまとめて作り直されます。
> **Preview は表示専用です。**
> 描画面はポインタを受け付けない設定になっているので、クリック・ドラッグ・右クリックのいずれにも反応しません。
> 映像をここに落として再生する、といった操作はできません。ファイルは
> [Layer](./layer) のプレビュー面か [Layer Hierarchy](./layer-hierarchy) の行に落としてください。
## ウィンドウ共通の操作
Preview に限らず、SynapseRack のウィンドウは次のように扱えます。
| 操作 | 動き |
|---|---|
| タイトルバーをドラッグ | 移動 |
| **Shift を押しながらドラッグ** | 20px グリッドにスナップして移動 |
| 右下をドラッグ | リサイズ(最小 100 × 100) |
| **Shift を押しながらリサイズ** | 20px グリッドにスナップ |
| `Ctrl + F` | 選択中のウィンドウを画面中央へ |
| `F10` | 選択中のウィンドウを **OS の独立ウィンドウとして切り離す** |
「選択中のウィンドウ」は、最後にクリックしたウィンドウです。
`F10` で切り離したウィンドウは、OS 側のウィンドウを閉じると元の位置に戻ります。
切り離し状態と位置・サイズはプロジェクトに保存され、同じ OS で開き直すと復元されます。
Preview を別ディスプレイに常駐させておきたいときに使えます。
## 関連
- [Layer Hierarchy](./layer-hierarchy) — ここに映る合成順を決める場所
- [プロジェクターに映す](../projector) — 本番用の出力ウィンドウ
---
# Part 2: Node Reference
All 273 nodes. Port notation: id(type). Create nodes from scripts with `await synapse.modules.create({ type: "" })`.
## 3D (29 nodes)
ポイントクラウドベースの3Dシーン構築。点群の生成・変形からマテリアル・カメラ・レンダリングまで。
### AttributeMap `AttributeMap`
URL: https://synapserack.com/ja/docs/nodes/3d/AttributeMap/
Summary: Map float → point attribute (audio→size/color)
- Inputs: PointCloud(PointCloudInput), T(float), Min(float), Max(float), ColorA(Color), ColorB(Color)
- Outputs: PointCloud(PointCloudOutput)
- Settable: tInput(float), minInput(float), maxInput(float)
入力 `T` を Min〜Max に写像し、ドロップダウンで選んだ属性に適用した PointCloud を出力します。オーディオ解析やLFOの出力を刺して「音でサイズが膨らむ」を作るためのノードです。もう1つのドロップダウン(重みモード)で点ごとの効き方の分布を変えられ、実際に写像に使われるのは `T × 重み` です。
## 対象属性(ドロップダウン)
- **UniformScale**(既定)— 写像値を各点のスケールに乗算(下限0.001)
- **ColorGradient** — ColorA→ColorB を補間して色を上書き
- **RotationY** — `写像値 × 360` 度をY軸回転に加算
- **PositionY** — 写像値をYに加算
## 重みモード(ドロップダウン)
- **Uniform**(既定)— 全点1
- **IndexRamp** — 先頭0から末尾1への傾斜
- **DistanceFromOrigin** — 原点からの距離を、その点群の最大距離で正規化
- **Random** — インデックスから決まるハッシュ
## パラメータ
- **T** — 0〜1にクランプ(既定1)。未接続時の定数も保存されます
- **Min / Max**(既定 0.5 / 2)
- **ColorA / ColorB** — ColorGradient のみで使用
> ColorGradient だけは Min / Max を使わず、`T × 重み` をそのまま ColorA→ColorB の補間率にします。
> Random 重みには Seed 入力がなく、インデックスだけで決まる固定パターンです。
### BlendPoints `BlendPoints`
URL: https://synapserack.com/ja/docs/nodes/3d/BlendPoints/
Summary: Morph/mix two point clouds
- Inputs: Points A(PointCloudInput), Points B(PointCloudInput), Blend(float), Seed(int)
- Outputs: PointCloud(PointCloudOutput)
- Settable: tInput(float), seedInput(int)
点群 A と B を混ぜて1つの PointCloud を出力します。出力点数は多い方に合わせ、正規化インデックスで両者を対応付けるので、点数が違う点群どうしでもモーフできます。位置・回転・スケール・色のすべてが対象です。
- **Blend(T)** — 0〜1にクランプ(既定0.5)。Lerp では補間率、RandomPick では各点がBになる確率
- **Seed** — RandomPick の抽選に使用(既定1)
- モードドロップダウン: **Lerp**(既定・位置とスケールと色は線形補間、回転は最短方向の角度補間)/ **RandomPick**(点ごとに A か B の属性をまるごと採用)
> 片方の入力が未接続または点数0のときは、もう片方をそのまま素通しします(Tは無視されます)。両方空なら出力も点数0です。
### Camera `Camera3D`
URL: https://synapserack.com/ja/docs/nodes/3d/Camera3D/
Summary: Camera value source
- Inputs: PosX(float), PosY(float), PosZ(float), RotX(float), RotY(float), RotZ(float), Fov(float), Ortho Size(float)
- Outputs: Camera(CameraDataOutput)
- Settable: posXInput(float), posYInput(float), posZInput(float), rotXInput(float), rotYInput(float), rotZInput(float), fovInput(float), orthoSizeInput(float), orthographic(bool)
入力からカメラ値(CameraData)を組み立てて Camera 出力に流します。Render の Camera 入力に直接繋ぐか、CameraLerp / CameraShake などのカメラワークノードを経由させます。**Orthographic (2D)** トグルをオンにすると正射影になり、画角の代わりに `Ortho Size` が画面の高さの半分として使われます(Quad + ShapeMaterial による2Dモーショングラフィックス用)。
- **PosX / PosY / PosZ**(既定 0 / 0 / -30)
- **RotX / RotY / RotZ** — オイラー角・度(既定0)
- **Fov** — 垂直画角。1〜179度にクランプ(既定60)
- **Ortho Size**(既定10、下限0.01)— Orthographic のときのみ有効
- **Orthographic (2D)** トグル(既定オフ)
> ニアクリップ0.1 / ファークリップ1000は固定で、ポートもパラメータもありません。
### CameraLerp `CameraLerp`
URL: https://synapserack.com/ja/docs/nodes/3d/CameraLerp/
Summary: Blend cameras A/B by T
- Inputs: Camera A(CameraDataInput), Camera B(CameraDataInput), T(float)
- Outputs: Camera(CameraDataOutput)
- Settable: tInput(float)
Camera A と Camera B を `T` で補間したカメラ値を出力します。位置・FOV・ニア・ファー・Ortho Size は線形補間、回転は Slerp(球面線形補間)です。T に矩形波を刺せば瞬時のカット、なめらかな値を刺せばカメラが移動するモーフになります。
- **T** — 0〜1にクランプ(既定0)
> 正射影かどうかは連続量でないため補間できません。**T < 0.5 では A、0.5以上では B** の設定が採用されます(Ortho Size 自体は連続的に補間されます)。
> 未接続の Camera 入力は既定カメラ(位置 0,0,-10 / FOV60 / 透視投影)として扱われます。
### CameraShake `CameraShake`
URL: https://synapserack.com/ja/docs/nodes/3d/CameraShake/
Summary: Trauma-based camera shake
- Inputs: Camera In(CameraDataInput), Shake Trigger(trigger), Position Amount(float), Rotation Amount(float), Frequency(float), Decay(float)
- Outputs: Camera(CameraDataOutput)
- Settable: amountInput(float), rotAmountInput(float), frequencyInput(float), decayInput(float)
Camera In をそのまま通しつつ、Shake Trigger が発火した瞬間に内部の trauma を1にして揺れを起こします。trauma は毎フレーム `Decay × 経過時間` で線形に減りますが、実際の揺れ幅は **trauma の二乗**なので、最初にガツンと来てすっと収まる形になります。揺れは Perlin ノイズで、位置はカメラのローカル軸方向にオフセットし、回転はオイラー角で加算されます。オーディオのオンセットを Shake Trigger に刺すと、キックで揺れるカメラが1本で組めます。
- **Position Amount**(既定1)
- **Rotation Amount** — 度(既定3)
- **Frequency** — ノイズの進む速さ(既定12、下限0.01)
- **Decay** — trauma の減衰速度・毎秒(既定1.5、下限0.01)
> 揺れていない間は入力カメラをそのまま出力します(正射影などの設定も保たれます)。
> Camera In が未接続のときは既定カメラ(位置 0,0,-10 / FOV60)を揺らした値が出ます。
### ColorPalette `ColorPalette`
URL: https://synapserack.com/ja/docs/nodes/3d/ColorPalette/
Summary: Discrete palette coloring (mograph)
- Inputs: PointCloud(PointCloudInput), Color 1(Color), Color 2(Color), Color 3(Color), Color 4(Color), Active Colors(int), Seed(int)
- Outputs: PointCloud(PointCloudOutput)
- Settable: countInput(int), seedInput(int)
入力 PointCloud の色を、Color 1〜4 のうち `Active Colors` 色だけを使って塗り分けます。グラデーションではなく離散的な割り当てなので、決まった数色で構成するデザインに向きます。塗った色は下流の CopyToPoints でインスタンスカラーとしてマテリアルに渡ります。
- **Color 1 / 2 / 3 / 4** — 既定は赤系・青系・黄系・白
- **Active Colors** — 使う色数。1〜4にクランプ(既定3)
- **Seed** — Random モードでのみ使用(既定1)
- モードドロップダウン: **ByIndex**(既定・インデックスの剰余で順番に)/ **Random**(インデックスとSeedのハッシュで割り当て)
> 入力点群の色は必ず上書きされます。
### ConnectSequential `ConnectSequential`
URL: https://synapserack.com/ja/docs/nodes/3d/ConnectSequential/
Summary: Polyline with trim (draw-on)
- Inputs: PointCloud(PointCloudInput), Material(MaterialInput), Thickness(float), Trim Start(float), Trim End(float)
- Outputs: Scene(SceneDataOutput)
- Settable: thicknessInput(float), trimStartInput(float), trimEndInput(float), closed(bool)
入力 PointCloud を頂点順に線分で結び、各線分を細長く潰した Cube のインスタンスとして Scene に出力します。Trim Start / Trim End はセグメント番号空間 `[0, セグメント数]` の中の窓で、窓の端にかかったセグメントは途中まで描かれるため、Trim をアニメートすると線が自分を描き足していく表現になります。線分の色は両端の点の色の中間です。
- **Thickness** — 線の太さ(既定0.15、下限0.001)
- **Trim Start / Trim End** — 0〜1にクランプ(既定 0 / 1)
- **Closed (loop)** トグル — オンで末尾と先頭を結ぶ(既定オン)
> Trim Start が Trim End より大きい場合は自動で入れ替えて扱われるので、逆転しても線が消えたり反転したりはしません。
> 入力の点数が2未満のときは何も描かれません。
> Material 未接続時は SRLit の既定マテリアルが使われます。
### CopyToPoints `CopyToPoints`
URL: https://synapserack.com/ja/docs/nodes/3d/CopyToPoints/
Summary: Instance mesh on points → Scene
- Inputs: Mesh(MeshInput), PointCloud(PointCloudInput), Material(MaterialInput), Scale(float)
- Outputs: Scene(SceneDataOutput)
- Settable: scaleInput(float)
PointCloud の各点に Mesh を1個ずつ配置し、Scene(ドローリスト)として出力します。点群パイプラインと描画パイプラインの境目にあたるノードで、ここから先は SceneTransform / SceneRepeat を経由して Render に繋ぎます。各インスタンスの行列は点の Position / Rotation / Scale から作られ、Scale にはさらに `Scale` ポートの値が乗算されます。点の色はインスタンスカラーとしてマテリアルへ渡ります。
- **Scale** — 全インスタンス共通の倍率(既定0.3、下限0.0001)
> Mesh 未接続時は Cube、Material 未接続時は SRLit の既定マテリアルにフォールバックします。点群を繋ぐだけで絵が出る設計です。
> PointCloud が未接続、または点数0のときは何も描かれません。状態が変わったタイミングでコンソールに切り分け用のログが出ます。
### FieldEffector `FieldEffector`
URL: https://synapserack.com/ja/docs/nodes/3d/FieldEffector/
Summary: Spherical falloff effector (mograph)
- Inputs: PointCloud(PointCloudInput), Center X(float), Center Y(float), Center Z(float), Radius(float), Falloff Softness(float), Min(float), Max(float), ColorA(Color), ColorB(Color)
- Outputs: PointCloud(PointCloudOutput)
- Settable: centerXInput(float), centerYInput(float), centerZInput(float), radiusInput(float), softInput(float), minInput(float), maxInput(float), invert(bool)
中心から `Radius` の球の内側で1、縁に向かって0へ落ちる重みを作り、Min〜Max に写像して選んだ属性に適用した PointCloud を出力します。芯(重み1の領域)の半径は `Radius × (1 - Falloff Softness)` で、そこから Radius までがグラデーションになります。中心座標をLFOなどで動かすと、変化の波が群れを掃いていきます。
- **Center X / Y / Z** — フィールドの中心(既定0)
- **Radius**(既定8、下限0.001)
- **Falloff Softness** — 0〜1にクランプ(既定0.5)
- **Min / Max**(既定 1 / 2.5)
- **ColorA / ColorB** — ColorGradient のみで使用
- **Invert** トグル — 重みを `1 - w` に反転(既定オフ)
- 対象属性ドロップダウン: **UniformScale**(既定・スケールに乗算、下限0.001)/ **ColorGradient** / **RotationY**(写像値×360度をY回転に加算)/ **PositionY**(写像値をYに加算)
> Falloff Softness が0のときはグラデーションにならず、ハードエッジ(半径内=1、外=0)に切り替わります。
> ColorGradient は Min / Max を使わず、重みそのものを ColorA→ColorB の補間率にします。
### GlowMaterial `GlowMaterial`
URL: https://synapserack.com/ja/docs/nodes/3d/GlowMaterial/
Summary: Additive glow sprite material
- Inputs: GlowColor(Color), Intensity(float), Softness(float)
- Outputs: Material(MaterialOutput)
- Settable: intensityInput(float), softnessInput(float)
`SynapseRack/SRGlow` シェーダのマテリアルを Material 出力に流します。頂点をカメラの right / up 方向に展開するビルボードなので、どこから見ても正面を向いた光の粒になります。加算合成(`Blend One One`)・ZWrite Off・Transparent キューのため、Render では不透明パスのあとに描かれ、描画順に依存しません。点群の色は GlowColor に乗算されます。
- **GlowColor**(既定 白)
- **Intensity**(既定2、負値は0扱い)
- **Softness** — 0.1〜4にクランプ(既定1.5)
> `Softness` は名前と逆向きに効きます。減衰は `(1-距離)^Softness` なので、**値が小さいほど広がってふんわりし、大きいほど中心に締まります**。
> ビルボード展開はインスタンス行列のX/Yスケールしか見ないため、繋いだメッシュの形は結果に出ません(Quad が前提です)。
### Jitter `Jitter`
URL: https://synapserack.com/ja/docs/nodes/3d/Jitter/
Summary: Deterministic random offset per point
- Inputs: PointCloud(PointCloudInput), Position Jitter(float), Scale Jitter(float), Seed(int)
- Outputs: PointCloud(PointCloudOutput)
- Settable: amountInput(float), scaleJitterInput(float), seedInput(int)
入力 PointCloud の各点を、インデックスと Seed から決まるハッシュ値でずらして出力します。時間の項がないので勝手に揺れ続けることはなく、同じ Seed なら常に同じ散らばりになります。動かしたい場合は上流の値(Amount や上流ノードの位置)を変調してください。
- **Position Jitter** — 各軸に `-Amount 〜 +Amount` の範囲で加算(既定0.5)
- **Scale Jitter** — 0〜1にクランプ(既定0)。各点のスケールを `1 ± Scale Jitter` の範囲で乗算(結果は下限0.01)。0のときスケールには触りません
- **Seed**(既定1)
> 入力が未接続、または点数0のときは出力も点数0です。
### Light `Light3D`
URL: https://synapserack.com/ja/docs/nodes/3d/Light3D/
Summary: Light descriptor → Scene
- Inputs: PosX(float), PosY(float), PosZ(float), RotX(float), RotY(float), Color(Color), Intensity(float), Range(float), Spot Angle(float), Cookie(RenderTexture)
- Outputs: Scene(SceneDataOutput)
- Settable: posXInput(float), posYInput(float), posZInput(float), rotXInput(float), rotYInput(float), intensityInput(float), rangeInput(float), spotAngleInput(float)
Unity の Light コンポーネントは使わず、位置・向き・色などを記述子として Scene 出力に流します。Render がそれを uniform 配列に変換して SRLit の陰影計算に渡します。出力は Scene なので、描画アイテムを持つ Scene と一緒に Render の別スロットへ繋ぐか、SceneTransform を通します。向きは Pitch / Yaw の2軸から作られ、Roll はありません。
- 種類ドロップダウン: **Directional**(既定)/ **Point** / **Spot**
- **PosX / PosY / PosZ**(既定 0 / 5 / -5)— Directional では位置は使われません
- **RotX(Pitch)**(既定50)/ **RotY(Yaw)**(既定-30)
- **Color**(既定 白)/ **Intensity**(既定1.5、負値は0扱い)
- **Range**(既定20、下限0.01)— Point / Spot 用
- **Spot Angle**(既定45、1〜179度にクランプ)— Spot 用
- **Cookie** — RenderTexture入力。Spot ではプロジェクタ投影、Directional / Point では映像の平均色でライト色を変調します
> Render が扱えるライトは全 Scene スロット合計で **8灯まで**です。超えた分は無視されます。
> Cookie によるプロジェクタ投影は同時に**1灯**(最初に見つかった Spot)だけです。
> Directional / Point の平均色変調は3フレームに1回サンプリングされます。
> 種類を切り替えると、ライト色は一度 Color 入力の値に戻ります。
### LitMaterial `LitMaterial`
URL: https://synapserack.com/ja/docs/nodes/3d/LitMaterial/
Summary: SR-Lit material (custom lighting)
- Inputs: BaseColor(Color), EmissionColor(Color), EmissionIntensity(float), Smoothness(float), Rim Intensity(float)
- Outputs: Material(MaterialOutput)
- Settable: emissionIntensityInput(float), smoothnessInput(float), rimInput(float)
`SynapseRack/SRLit` シェーダのマテリアルを1つ作り、Material 出力に流します。CopyToPoints や ConnectSequential の Material に繋いで使う、3D系の標準マテリアルです。Light ノードが Scene に流したライトと Render の Ambient を受けて陰影が付き、点群の色はベースカラーに乗算されます(Emission にも乗算されます)。マテリアル参照は起動時に1回だけ流れ、以降は入力の変化がプロパティに直接書き込まれます。
- **BaseColor**(既定 白)
- **EmissionColor**(既定 白)
- **EmissionIntensity**(既定0、負値は0扱い)
- **Smoothness** — 0〜1にクランプ(既定0.5)。ハイライトの鋭さと強さを同時に決めます
- **Rim Intensity** — 0〜2にクランプ(既定0.35)。輪郭のフレネル発光の強さ
### NoiseDisplace `NoiseDisplace`
URL: https://synapserack.com/ja/docs/nodes/3d/NoiseDisplace/
Summary: Displace points by noise (per-frame)
- Inputs: PointCloud(PointCloudInput), Amount(float), Scale(float), Speed(float), ColorA(Color), ColorB(Color)
- Outputs: PointCloud(PointCloudOutput)
- Settable: amountInput(float), scaleInput(float), speedInput(float)
各点の座標に `Scale` を掛けた位置で Perlin ノイズを引き、軸ごとに位相をずらした擬似3Dベクトルとして位置に加算します。内部時間は `Speed × deltaTime` で進むので、Speed が0でなければ毎フレーム動き続けます。さらに変位量の大きさを 0〜Amount で正規化した値で ColorA→ColorB を補間し、各点の色として書き込みます。
- **Amount** — 変位の振幅(既定1)。色の正規化の基準にもなります
- **Scale** — ノイズ座標のスケール(既定0.15、下限0.0001)。大きいほど細かい模様になります
- **Speed** — 内部時間の進む速さ(既定1)。0で静止
- **ColorA / ColorB** — 変位が小さいほどA、Amount相当でB(既定は青系→ピンク系)
> このノードは入力点群の色を必ず上書きします。上流で ColorPalette などが付けた色は残りません。
### OrbitCamera `OrbitCamera`
URL: https://synapserack.com/ja/docs/nodes/3d/OrbitCamera/
Summary: Orbiting camera (tempo-syncable)
- Inputs: TargetX(float), TargetY(float), TargetZ(float), Radius(float), Height(float), Speed(float), Phase(float), FOV(float)
- Outputs: Camera(CameraDataOutput)
- Settable: targetXInput(float), targetYInput(float), targetZInput(float), radiusInput(float), heightInput(float), speedInput(float), phaseInput(float), fovInput(float)
ターゲット位置を中心に半径 `Radius`・高さ `Height` の円周上をカメラが回り、常にターゲットを向いたカメラ値を出力します。角度の決め方は2通りで、**Phase が接続されているとき**はその値をそのまま回転量(0→1で1周)として使い、未接続のときは `Speed`(度/秒)で自走します。Phase に Saw 波形のLFOを刺すと、1小節で1周のような拍で語れるカメラワークになります。
- **TargetX / TargetY / TargetZ** — 周回の中心(既定0)
- **Radius**(既定30、下限0.01)
- **Height** — ターゲットからの高さオフセット(既定8)
- **Speed** — Phase 未接続時の回転速度・度/秒(既定20)
- **Phase** — 接続時のみ有効。0→1で1周
- **FOV** — 1〜179度にクランプ(既定60)
> Phase を繋いだ時点で Speed は無視されます。
> このノードは常に透視投影のカメラ値を出します(正射影にはできません)。ニア0.1 / ファー1000も固定です。
### OrientPoints `OrientPoints`
URL: https://synapserack.com/ja/docs/nodes/3d/OrientPoints/
Summary: Per-point orientation control
- Inputs: PointCloud(PointCloudInput), Euler X / Center X(float), Euler Y / Center Y(float), Euler Z(float), Seed(int)
- Outputs: PointCloud(PointCloudOutput)
- Settable: xInput(float), yInput(float), zInput(float), seedInput(int)
入力 PointCloud の Rotation だけを書き換えて出力します。位置・スケール・色には一切触りません。下流の CopyToPoints で配置されるメッシュがどちらを向くかを配管で決めるためのノードで、`FaceCenter2D` 以降の3モードは Z軸回り(画面内)の回転のみを出します。
## モード(ドロップダウン)
- **Set**(既定)— 全点の回転を `(X, Y, Z)` のオイラー角に設定
- **Add** — 全点の回転に `(X, Y, Z)` を加算
- **FaceCenter2D** — X/Y を中心とみなし、中心から点へ向かう方向へ面内回転。Z は角度オフセット
- **AlongOrder2D** — 次の点へ向かう方向(末尾は先頭へラップ)へ面内回転。Z は角度オフセット
- **RandomZ** — Seed から決まる 0〜360度の面内ランダム回転。Z は角度オフセット
## ポートの補足
- **Euler X / Center X** — Set / Add ではオイラーX、FaceCenter2D ではフィールド中心のX
- **Euler Y / Center Y** — 同じくオイラーY / 中心のY
- **Euler Z** — Set / Add ではオイラーZ、他の3モードでは角度オフセット
- **Seed** — RandomZ でのみ使用(既定1)
### PointGrid `PointGrid`
URL: https://synapserack.com/ja/docs/nodes/3d/PointGrid/
Summary: Grid point cloud source
- Inputs: CountX(int), CountY(int), CountZ(int), Spacing(float)
- Outputs: PointCloud(PointCloudOutput)
- Settable: countXInput(int), countYInput(int), countZInput(int), spacingInput(float)
X/Y/Z の個数と間隔から、原点を中心とした直方体グリッドの点群を作って出力します。3Dカテゴリのデータフローでは最上流にあたり、ここで作った PointCloud を変形系ノードに通し、最後に CopyToPoints などで Scene に変えて Render に渡します。個数か間隔が変わったときだけ再構築され、毎フレームの計算はしません。生成される点の Rotation は 0、Scale は 1、Color は白です。
- **CountX / CountY / CountZ** — 各軸の点数(既定20、1〜256にクランプ)
- **Spacing** — 点の間隔(既定1.5)。グリッドの中心は常に原点
> 総点数の上限は65536です。超えた分は生成されず、コンソールに警告が出ます(例: 各軸256だと1677万点になるため、大半が切り捨てられます)。
### PointScatter `PointScatter`
URL: https://synapserack.com/ja/docs/nodes/3d/PointScatter/
Summary: Scatter points on mesh surface
- Inputs: Mesh(MeshInput), Count(int), Seed(int), Align to Normal(bool)
- Outputs: PointCloud(PointCloudOutput)
- Settable: countInput(int), seedInput(int), alignInput(bool)
Primitive などから受け取った Mesh の表面に点をばらまき、PointCloud として出力します。三角形は面積で重み付けして選ばれ、各三角形の中も一様にサンプルされるので、細かいポリゴンの多い場所に点が偏ることはありません。Seed が同じなら結果は毎回同じです。メッシュの解析(頂点・三角形・面積の累積)は Mesh の参照が変わったときだけ行います。
- **Count** — 散布する点数(既定2000、1〜65536にクランプ)
- **Seed**(既定1)
- **Align to Normal** — オンで各点の回転が面の法線方向を向く(既定オン)。オフのとき回転は0
> Read/Write が無効なメッシュは頂点を取得できず、点数0になります。このときコンソールに `isReadable=false` のログが出ます。
> Mesh 未接続時も点数0です。
### PointShape `PointShape`
URL: https://synapserack.com/ja/docs/nodes/3d/PointShape/
Summary: Ring/Sphere/Spiral/Line point cloud
- Inputs: Count(int), Radius / Length(float), ParamA(float), ParamB(float)
- Outputs: PointCloud(PointCloudOutput)
- Settable: countInput(int), radiusInput(float), paramAInput(float), paramBInput(float)
ドロップダウンで選んだ数式形状の点群を出力します。もう1つのドロップダウンで平面を選べ、**XZ** は床平面(3D向け・回転はY軸回り)、**XY** は画面平面(正射影カメラの2Dモーショングラフィックス向け・回転はZ軸回り)です。位置だけでなく各点の Rotation も形状に沿って設定されるので、そのまま CopyToPoints に流すと向きが揃います。出力先は他の点群ノードや CopyToPoints / ConnectSequential です。
## 形状(ドロップダウン)
- **Ring**(既定)— 半径 `Radius` の円周に等間隔。回転は接線向き。ParamA / ParamB は未使用
- **Sphere** — フィボナッチ球で球面に均等配置。回転は中心からの外向き。平面設定・ParamA / ParamB は未使用
- **Spiral** — XZでは半径一定で高さが `(t-0.5) × ParamB × Radius` の螺旋、XYでは半径が Radius の0.15倍から1倍へ伸びる渦巻き。巻数は ParamA
- **Line** — X軸上の直線。長さは `Radius × ParamB`(ParamBの下限0.01)。平面設定・ParamA は未使用
## パラメータ
- **Count** — 点数(既定64、1〜65536にクランプ)
- **Radius / Length**(既定5)
- **ParamA**(既定3)— Spiral の巻数のみに使用
- **ParamB**(既定2)— Spiral の高さ、Line の長さ倍率
### Primitive `Primitive3D`
URL: https://synapserack.com/ja/docs/nodes/3d/Primitive3D/
Summary: Primitive mesh source
- Outputs: Mesh(MeshOutput)
ドロップダウンで選んだ基本メッシュを Mesh 出力に流します。CopyToPoints の Mesh(点に配置する形)や PointScatter の Mesh(点を撒く対象)に繋ぐのが基本の使い方です。入力ポートもパラメータポートもなく、形状の選択だけのノードです。
- 選べる形状: **Cube**(既定)/ **Sphere** / **Cylinder** / **Capsule** / **Quad** / **Torus**
> Torus のみこのノードが内部で生成します(半径0.5・チューブ半径0.2・32×16分割)。他の5種は Unity 組み込みメッシュです。
### Render `Render3D`
URL: https://synapserack.com/ja/docs/nodes/3d/Render3D/
Summary: Draw-list renderer → HDR RT
- Inputs: Camera(CameraDataInput), Background(Color), BackgroundTop(Color), Ambient(Color), Fog Start(float), Fog End(float)
- Outputs: Render Texture(RenderTexture), Depth Texture(RenderTexture)
- Settable: fogStartInput(float), fogEndInput(float)
3Dカテゴリの終端ノードです。独自の軽量レンダラーでドローリストを描画し、HDR の RenderTexture を出力します。ここから先は通常の映像ノードに繋がります。Scene 入力ポートは動的で、繋ぐたびに新しい空きスロットが増えます(最大16スロット、Merge 相当の機能を内蔵)。描画は不透明 → 半透明の2パスで行われ、深度は別の RenderTexture として Depth Texture に出力されます。
- **Camera** — 未接続や無効な値のときは既定カメラ(位置 0,0,-10 / FOV60 / 透視投影)が使われます
- **Background / BackgroundTop** — 背景グラデーションの下側・上側の色
- **Ambient** — 環境光(既定は暗い青灰色)
- **Fog Start / Fog End** — 距離フォグの開始・終了距離(既定40 / 150)。フォグ色は Background と BackgroundTop の中間色
- 出力の **Render Texture** は 1920×1080(HDR対応)、**Depth Texture** は同解像度の深度出力です
> Scene にライトが1つも無いときは、カメラの正面方向を向いた白いディレクショナルライトが1灯だけ自動で入ります。繋いだだけで真っ暗にならないための仕様です。
> ライトは全 Scene スロット合計で8灯までです。
> Fog End は内部で `Fog Start + 1` 以上に補正されます。
> 描画インスタンス数が0と非0の間を行き来したタイミングで、切り分け用のログがコンソールに出ます。
### SceneRepeat `SceneRepeat`
URL: https://synapserack.com/ja/docs/nodes/3d/SceneRepeat/
Summary: Repeat scene N times with accumulated TRS
- Inputs: Scene(SceneDataInput), Repeat Count(int), Step X(float), Step Y(float), Step Z(float), Step Rot X(float), Step Rot Y(float), Step Rot Z(float), Step Scale(float), Fade per Repeat(float)
- Outputs: Scene(SceneDataOutput)
- Settable: countInput(int), txInput(float), tyInput(float), tzInput(float), rxInput(float), ryInput(float), rzInput(float), scaleInput(float), fadeInput(float)
入力 Scene を `Repeat Count` 回複製し、k番目の複製に Step の TRS を**k回累積**した変換を掛けて出力します。等差ではなく累積なので、少しずつ回して縮める設定にすると螺旋やフラクタル状の反復になります。`Fade per Repeat` を上げると後ろの複製ほど暗くなり(k番目の明るさは `(1-Fade)^k`)、トレイルのような見え方になります。
- **Repeat Count**(既定6、1〜64にクランプ)
- **Step X / Y / Z**(既定0)
- **Step Rot X / Y / Z**(既定 0 / 30 / 0)
- **Step Scale**(既定0.85、下限0.001)
- **Fade per Repeat** — 0〜1にクランプ(既定0.1)
> 元のインスタンス数 × Repeat Count が65536を超えると Repeat Count が自動的に切り下げられ、コンソールに警告が出ます。
> Fade は RGB のみに掛かり、アルファは変えません。
> ライトは複製されず、そのまま素通しします(Render のライト上限8灯を守るため)。
### SceneTransform `SceneTransform`
URL: https://synapserack.com/ja/docs/nodes/3d/SceneTransform/
Summary: TRS transform on whole scene
- Inputs: Scene(SceneDataInput), Translate X(float), Translate Y(float), Translate Z(float), Rotate X(float), Rotate Y(float), Rotate Z(float), Uniform Scale(float)
- Outputs: Scene(SceneDataOutput)
- Settable: txInput(float), tyInput(float), tzInput(float), rxInput(float), ryInput(float), rzInput(float), scaleInput(float)
入力 Scene のすべての描画アイテムの行列に TRS 行列を掛け、変換後の Scene を出力します。ライトも同じ変換で移動・回転し、Range は Uniform Scale 倍されます。点群ではなく描画結果の側を動かすので、CopyToPoints や ConnectSequential で作った Scene をまとめて動かしたいときに使います。上流のバッファは書き換えず、自前のプールにコピーしてから変換します。
- **Translate X / Y / Z**(既定0)
- **Rotate X / Y / Z** — オイラー角・度(既定0)
- **Uniform Scale**(既定1、下限0.0001)
> Scene が未接続のときは、出力の描画アイテムもライトも空になります。
### ShapeMaterial `ShapeMaterial`
URL: https://synapserack.com/ja/docs/nodes/3d/ShapeMaterial/
Summary: 2D SDF shape material (mograph)
- Inputs: Color(Color), Stroke(float), Softness(float)
- Outputs: Material(MaterialOutput)
- Settable: strokeInput(float), softInput(float)
`SynapseRack/SRShape2D` シェーダのマテリアルを Material 出力に流します。UV空間の距離関数でシェイプを描き、`fwidth` によるアンチエイリアスが効くので、Quad を大きく引き伸ばしてもエッジがぼけません。GlowMaterial と違ってビルボードではないため、点群の Rotation でシェイプ自体が回ります。アルファ合成(SrcAlpha / OneMinusSrcAlpha)・ZWrite Off の Transparent キューで、Render では不透明のあとに描かれます。点群の色は Color に乗算されます。
- 形状ドロップダウン: **Circle**(既定)/ **Box** / **Cross**
- **Color**(既定 白)
- **Stroke** — 0〜0.5にクランプ(既定0)。0で塗りつぶし、0より大きいと輪郭だけの線画になります
- **Softness** — 0〜0.5にクランプ(既定0)。アンチエイリアス幅に上乗せされるぼかし量
### SpringPoints `SpringPoints`
URL: https://synapserack.com/ja/docs/nodes/3d/SpringPoints/
Summary: Spring physics follow (behavior)
- Inputs: PointCloud(PointCloudInput), Stiffness(float), Damping(float), Kick Trigger(trigger), Kick Force(float), Velocity Stretch(float)
- Outputs: PointCloud(PointCloudOutput)
- Settable: stiffnessInput(float), dampingInput(float), kickForceInput(float), stretchInput(float)
各点が入力 PointCloud の位置を目標としてバネで追従する PointCloud を出力します。Stiffness が目標へ引き戻す強さ、Damping が速度の減衰で、Damping が小さいほど行き過ぎて震えます。Kick Trigger が発火したフレームは、全点に Kick Force の大きさの速度が一度だけ加わります(方向はインデックスから決まる疑似ランダムな単位ベクトル)。フレーム落ちで暴れないよう、1ステップの時間は0.05秒で頭打ちです。
- **Stiffness**(既定60、負値は0扱い)
- **Damping**(既定6、負値は0扱い)— 減衰は `exp(-Damping × dt)` の指数減衰
- **Kick Force**(既定3)
- **Velocity Stretch**(既定0)— 0より大きいと、速さが0.05を超えた点が進行方向を向き、Zスケールが `1 + 速さ × Stretch` 倍に伸びます
> 入力の点数が変わるとシミュレーション状態がリセットされ、全点が目標位置へ瞬間移動して速度が0に戻ります。上流で Count を動かすとバネの動きが途切れます。
### TextureToPoints `TextureToPoints`
URL: https://synapserack.com/ja/docs/nodes/3d/TextureToPoints/
Summary: Video pixels → point cloud (VIS→3D)
- Inputs: Render Texture(RenderTexture), Columns(int), World Width(float), Relief Height(float), Luma Threshold(float)
- Outputs: PointCloud(PointCloudOutput)
- Settable: columnsInput(int), sizeInput(float), heightInput(float), thresholdInput(float)
受け取った RenderTexture を低解像度に縮小して GPU から読み戻し、1ピクセルにつき1点の点群を出力します。各点の色はそのピクセルの色、Z は輝度に応じて -Z 方向(既定カメラから見て手前)へ隆起します。`Luma Threshold` より暗いピクセルは点そのものが作られないため、しきい値を上げると明るい部分だけが残る疎な点群になります。GPUからの読み戻しが非同期のため、映像に対して1〜2フレーム遅れます。
- **Columns** — 横方向の分割数(既定64、8〜160にクランプ)。縦の分割数は入力RTのアスペクト比から自動計算(最低2)
- **World Width** — 点群全体のワールド幅(既定20、下限0.1)。1セルの大きさはこれを Columns で割った値
- **Relief Height** — 輝度1のときの隆起量(既定4)
- **Luma Threshold** — 0〜1にクランプ(既定0)。輝度は `0.299R + 0.587G + 0.114B`
> 入力RTを切断すると点数0になります。
### TransformPoints `TransformPoints`
URL: https://synapserack.com/ja/docs/nodes/3d/TransformPoints/
Summary: TRS transform on point cloud
- Inputs: PointCloud(PointCloudInput), Translate X(float), Translate Y(float), Translate Z(float), Rotate X(float), Rotate Y(float), Rotate Z(float), Uniform Scale(float), Pivot X(float), Pivot Y(float), Pivot Z(float)
- Outputs: PointCloud(PointCloudOutput)
- Settable: txInput(float), tyInput(float), tzInput(float), rxInput(float), ryInput(float), rzInput(float), scaleInput(float), pxInput(float), pyInput(float), pzInput(float)
入力 PointCloud に TRS を適用して PointCloud を出力します。適用順は Houdini の Transform と同じで、Pivot を中心にスケール→回転してから平行移動です。位置だけでなく、各点の Rotation には回転量が加算され、Scale には Uniform Scale が乗算されるので、下流の CopyToPoints で配置されるメッシュの向きと大きさにも反映されます。
- **Translate X / Y / Z**(既定0)
- **Rotate X / Y / Z** — オイラー角・度(既定0)
- **Uniform Scale**(既定1、下限0.0001)
- **Pivot X / Y / Z** — 回転と拡縮の中心(既定0)
> 入力が未接続、または点数0のときは出力も点数0です。
### TravelOnPath `TravelOnPath`
URL: https://synapserack.com/ja/docs/nodes/3d/TravelOnPath/
Summary: Travelers moving along path
- Inputs: PointCloud(PointCloudInput), Phase(float), Travelers(int), Traveler Scale(float)
- Outputs: PointCloud(PointCloudOutput)
- Settable: phaseInput(float), travelersInput(int), scaleInput(float), closed(bool)
入力 PointCloud を頂点順にたどるパスとして扱い、`Travelers` 個の走者を等間隔に並べて Phase で巡回させます。出力は走者だけの PointCloud(入力の点は出てきません)なので、CopyToPoints に流して実体を与えます。走者の色はパス上の隣り合う2点の色を補間したものです。Phase に Saw 波形のLFOを刺すと、テンポ同期でパス上を1周します。
- **Phase**(既定0)— 0→1で1周。小数部のみ使用
- **Travelers** — 走者の数(既定3、1〜1024にクランプ)
- **Traveler Scale** — 走者のスケール(既定1、下限0.001)
- **Closed (loop)** トグル — オンで末尾と先頭を繋いだ閉パスとして扱う(既定オン)
- 向きドロップダウン: **None** / **Tangent2D**(既定・XY平面の進行方向をZ回転で)/ **Tangent3D**(進行方向を向く3D回転)
> 入力の点数が2未満のときは出力が点数0になります。
### WaveMap `WaveMap`
URL: https://synapserack.com/ja/docs/nodes/3d/WaveMap/
Summary: Index-domain wave/sweep effector (mograph)
- Inputs: PointCloud(PointCloudInput), Phase(float), Per-index offset(float), Sweep width(float), Min(float), Max(float), ColorA(Color), ColorB(Color)
- Outputs: PointCloud(PointCloudOutput)
- Settable: phaseInput(float), staggerInput(float), widthInput(float), minInput(float), maxInput(float)
点のインデックスを軸に0〜1の重みを作り、Min〜Max に写像して選んだ属性に適用した PointCloud を出力します。Phase に Saw 波形のLFOを刺すと、テンポ同期で波が群れを走ります。
## モード(ドロップダウン)
- **Wave**(既定)— 点ごとに位相をずらした余弦波。重みは `0.5 - 0.5cos((Phase - index × Stagger) × 2π)` で、LFOのSineと同じく位相の頭が谷になります
- **Sweep** — 正規化インデックス上を幅 `Sweep width` の窓が巡回します。窓との距離はラップするので、末尾と先頭が繋がって見えます
## 対象属性(ドロップダウン)
- **UniformScale**(既定)— 写像値をスケールに乗算(下限0.001)
- **ColorGradient** — ColorA→ColorB を補間して色を上書き
- **RotationY** — `写像値 × 360` 度をY軸回転に加算
- **PositionY** — 写像値をYに加算
## パラメータ
- **Phase**(既定0)— Sweep では小数部のみ使用し、0→1で1巡
- **Per-index offset(Stagger)**(既定0.05)— 隣り合う点の位相差。**Wave のみ**
- **Sweep width**(既定0.15、下限0.005)— 窓の幅。**Sweep のみ**
- **Min / Max**(既定 1 / 2.5)
- **ColorA / ColorB** — ColorGradient のみで使用
> ColorGradient は Min / Max を使わず、重みそのものを ColorA→ColorB の補間率にします。
## Audio (5 nodes)
マイク・オーディオファイルの音声解析。レベル・帯域・オンセットで映像を動かす。
### Audio File Player `AudioFilePlayer`
URL: https://synapserack.com/ja/docs/nodes/audio/AudioFilePlayer/
Summary: Plays an audio file and outputs FFT bands and onsets
- Inputs: Play(bool), Gain(float), Smoothing(float), OnsetSensitivity(float)
- Outputs: Level(float), Bass(float), Mid(float), Treble(float), Onset(trigger)
- Settable: playInput(bool), gainInput(float), smoothingInput(float), sensitivityInput(float), currentFilePath(string), currentPlaying(bool), currentLoop(bool)
音声ファイルを読み込んで再生し、そのスペクトラムから値を取り出すノードです。ファイルはノードへのドラッグ&ドロップ、「Choose Audio File」ボタン、パス入力欄のいずれからでも指定できます。対応形式は **WAV / MP3 / OGG / AIF・AIFF** で、それ以外の拡張子は読み込みません。ノード上には波形・シークバー・再生時間・Loopトグルが並びます(Loopは既定ON)。
## 解析
512ビンのスペクトラム(Blackman-Harris窓)から次を計算します。
- **Level** — 全ビンのピーク × Gain
- **Bass** — 20〜200Hz、**Mid** — 200〜2000Hz、**Treble** — 2000〜8000Hz の平均 × Gain
- **Onset** — スペクトラルフラックスが直近43フレームの平均 × (1 + OnsetSensitivity) + 0.01 を超えたら発火。**不応期0.1秒**
## パラメータ
- **Gain** — 負値は0扱い(既定1)
- **Smoothing** — 値の落ちる時定数(秒)。最小0.001でクランプ、既定0.25。上がりは即座、下がりだけがこの時定数で減衰します
- **OnsetSensitivity** — 負値は0扱い(既定1)
> 停止中・終端では Level / Bass / Mid / Treble を一度0へ戻します。これをしないと音を止めたあとも下流が最後の値で動き続けます。
> 読み込みに失敗したファイルを指定すると、前の音源は停止・破棄されます(UIとパスは新しいファイルを指すので、古い音が鳴り続けないようにするため)。波形表示はffmpegに依存する補助表示で、生成に失敗しても再生自体は続きます。
### AudioReactive `AudioReactive`
URL: https://synapserack.com/ja/docs/nodes/audio/AudioReactive/
Summary: Level + FFT bands + onset
- Inputs: Dynamic Range(float), Fall Speed(float), Auto Gain(bool), Gain(float), Onset Sensitivity(float)
- Outputs: Audio Level(float), Bass(float), Mid(float), Treble(float), Onset(trigger), Hit(trigger)
- Settable: dynamicRangeInput(float), fallSpeedInput(float), autoGainInput(bool), gainInput(float), sensitivityInput(float), dynamicRange(float), fallSpeed(float), autoGain(bool), gain(float), currentDeviceID(string), currentAudioLevel(float), peakLevel(float)
入力デバイス(マイク/ループバック)の音を解析して、映像を動かすための値を出すノードです。`Audio Level` と `Bass` / `Mid` / `Treble` は同じ音声ストリームを共有する4本のレベルトラッカーで、帯域はそれぞれ LowPass / BandPass / HighPass フィルタ違いです。ノード上のドロップダウンで入力デバイスと、`Audio Level` 側にかけるフィルタ(既定は Bypass)を選びます。
## パラメータ
- **Dynamic Range** — 正規化の窓幅(dB)。**0〜40にクランプ**、既定20
- **Fall Speed** — レベルの落ち方。**0〜1にクランプ**、既定0.5
- **Auto Gain** — 既定ON。ONのときGainは使われません
- **Gain** — Auto Gain OFF時のみ有効な線形倍率(既定0.5)。内部でdBに変換され、**1.0が±0dB、2.0が+6dB、0.5が-6dB**です
- **Onset Sensitivity** — 既定1。大きいほど鳴りにくくなります(しきい値が上がる方向)
## Onset と Hit の違い
- **Onset** — スペクトラルフラックス(512ビン)が直近43フレームの平均 × (1 + Sensitivity) + 0.01 を超えたら発火。音色の変化ベースの自動検出で、**不応期0.1秒**で連打を抑えます
- **Hit** — `Audio Level` がしきい値(ノード上のメーターで直接ドラッグして設定、既定0.6)を**上向きに跨いだ**瞬間だけ発火する決定論的なトリガーです。0.05のヒステリシスがあり、一度下回るまで再発火しません
ノードUIのメーターは、緑がLevel・赤がしきい値超過分・白ティックがピークホールド、右端のLEDがOnsetの発火です。折りたたみの「Tune」を開くと生の入力dB軸の上にAuto Gainの正規化窓が重ねて表示され、Dynamic Rangeがどこを動かしているか確認できます。
> 保存されたデバイスIDが見つからない場合や未選択の場合は、一覧の先頭デバイスが選ばれます。
### LipSync `LipSync`
URL: https://synapserack.com/ja/docs/nodes/audio/LipSync/
- Outputs: Track Path(string), Position(float), NormalizedPosition(float), Playback Speed(float), Confidence(float), Is Matched(bool), Profile ID(string)
- Settable: currentDeviceID(string), analyzeFolderPath(string), matchProfileId(string), isListening(bool), isAnalyzing(bool), isDbLoading(bool), analysisProgress(float), statusText(string), matchedTrackPath(string), matchedPosition(float), matchedSpeed(float), matchedConfidence(float), isMatched(bool), matchedProfileId(string)
会場で鳴っている音をマイクで拾い、あらかじめ解析しておいた楽曲の指紋DBと照合して「いま何の曲が、どこまで、どの速さで鳴っているか」を出すノードです。入力ポートはなく、すべてノードUIから操作します。
使う順番は **フォルダを選ぶ → Analyze → Listen** です。Analyzeは指定フォルダを**サブフォルダまで再帰的に**走査して指紋DBを作ります。DBが空のまま、あるいはDB読み込み中にListenを押しても始まりません(ステータス欄にその旨が出ます)。
## 出力
- **Track Path** — 一致した楽曲のファイルパス
- **Position** — 秒単位の再生位置
- **NormalizedPosition** — 0〜1。DBに長さが記録されている曲でのみ出ます
- **Playback Speed** — 位置の推移から推定した再生速度
- **Confidence** — 一致の確からしさ
- **Is Matched** / **Profile ID** — 一致中かどうかと、一致に使われたプロファイル
## 設定
- **Capture (s)** — 1回のマイク取り込み長。既定5秒、スライダーは2〜10
- **Interval (s)** — 照合を試す間隔。既定2秒、スライダーは0.5〜5
- **Profile** — 指紋抽出時の帯域の重み付け。`Auto`(全プロファイルを試す)と **Balanced**・**Male Vocal**・**Female Vocal**・**Vocaloid**・**High Pitch / Bright** の5つから選べます
> 指紋DBは数MBのJSONになり得るため、メインスレッド外で非同期に読み込まれます。読み込み中はListenを開始できません。
### Shazam `Shazam`
URL: https://synapserack.com/ja/docs/nodes/audio/Shazam/
- Outputs: Song Title(string), Artist Name(string), Full Result(string)
- Settable: currentTitle(string), currentArtist(string), status(string)
内部のWebViewで `https://www.shazam.com/` を開き、曲を識別した結果のページから曲名とアーティスト名を読み取って文字列出力するノードです。**識別ボタンを押すのは人間の仕事**で、コントロールUIに出るWebViewをクリックして操作します。
- 1秒ごとにページのURLを見て、`/song/` を含むページになったらタイトルとアーティストの要素をJavaScriptで拾います
- `Full Result` は「タイトル - アーティスト」の連結で、両方が空でないときだけ更新されます
- コントロールUIのHomeボタンでShazamのトップに戻り、結果もクリアされます
> 取得はShazamのDOM構造(`trackTitle` / `artistNameText` などのクラス名、無ければ `h1` / `h2`)に依存しています。ページ側の変更で拾えなくなることがあります。
> このノードは公式プラグイン **Web Modules** のライセンスが必要です。ライセンスが無い状態で追加すると購入ページを開くか尋ねるダイアログが出て、ノードは削除されます。
### SpectrumRT `SpectrumRT`
URL: https://synapserack.com/ja/docs/nodes/audio/SpectrumRT/
Summary: Audio spectrum → RT (for displace etc.)
- Inputs: Gain(float)
- Outputs: Spectrum RT(RenderTexture)
- Settable: gainInput(float), currentDeviceID(string)
入力デバイスのスペクトラムを、そのままテクスチャにして出すノードです。256バンドを横1pxのストリップに書き込み、256×256のRenderTextureへ引き伸ばします。**各列が周波数ビン**で、明るさがその帯域の強さ(グレースケール)です。Displace系の変位源に刺すと、音の形がそのまま絵の歪みになります。
- **Gain** — 各ビンに掛ける倍率。負値は0扱いで、掛けた結果は0〜1にクランプされます
- 解析は autoGain 有効・dynamicRange 40dB 固定で、ノードから変えられるのは入力デバイスとGainだけです
> 保存されたデバイスIDが現在の一覧に無い(デバイス構成が変わった)場合は、先頭のデバイスへフォールバックします。入力デバイスが1つも無いときは何も出力されません。
## Color (10 nodes)
色の生成・分解・合成・調整。
### Color `Color`
URL: https://synapserack.com/ja/docs/nodes/color/Color/
- Inputs: Color In(Color), Trigger(trigger)
- Outputs: Color Out(Color)
ノード上のカラーピッカーで選んだ色を `Color Out` から出力します。既定は白です。`Color In` に色が入ってくるとピッカーの表示ごとその色に上書きされ、以後はそちらが出力になります。`Trigger` が発火すると、そのとき保持している色をもう一度出力します(値は変わりません)。選んだ色はプロジェクトに保存されます。
- **Color In** — 入力があるとピッカーの色を上書き(インラインの色欄は持ちません)
- **Trigger** — 現在の色を再送出
- **Color Out** — 現在の色
> ノード上のピッカーはアルファを表示せず、スライダーもありません。アルファやRGB/HSVスライダーを触りたい場合はコントロールUI側のピッカーを使ってください(こちらはアルファ表示・スライダー・モード切替つき)。
### ColorAdd `ColorAdd`
URL: https://synapserack.com/ja/docs/nodes/color/ColorAdd/
Summary: A + B (per channel, clamped)
- Inputs: Color A(Color), Color B(Color)
- Outputs: Color(Color)
`Color A` と `Color B` をチャンネルごとに足し、それぞれ0〜1にクランプして出力します。明るさを足していく加算ブレンド的な使い方ができます。未接続のポートはノード上のインライン色欄の値を使い、その値はプロジェクトに保存されます。
- **Color A / Color B** — 既定はどちらも黒(つまり既定の出力は黒)
> 加算はRGBだけでなく**アルファにも適用**されます。A・Bのアルファがどちらも1なら、出力のアルファは2ではなく1にクランプされます。
### ColorAdjust `ColorAdjust`
URL: https://synapserack.com/ja/docs/nodes/color/ColorAdjust/
Summary: Shift Hue / scale Saturation·Brightness
- Inputs: Color(Color), Hue Shift(float), Saturation x(float), Brightness x(float)
- Outputs: Color(Color)
- Settable: inHue(float), inSat(float), inVal(float)
入力色をいったんHSVに変換して調整し、RGBに戻して出力します。**Hue Shift は加算**(0〜1が一周で、はみ出した分はラップ)、**Saturation x と Brightness x は乗算**で、結果はどちらも0〜1にクランプされます。アルファは調整されず入力のまま通ります。Hue Shift に LFO を挿すと色相が回り続けます。
- **Hue Shift** — 色相への加算量。既定0。1で一周(値が増え続けても回り続けます)
- **Saturation x** — 彩度の倍率。既定1。0で無彩色
- **Brightness x** — 明度(HSVのV)の倍率。既定1。0で黒
- **Color** — 未接続時はインライン色欄の値(既定は白)
> 彩度が0の色(白・黒・グレー)はHSVの色相を持たないため、Hue Shift をいくら動かしても見た目は変わりません。先に Saturation x で色を付けても、元がグレーなら彩度0のまま(0 × 倍率 = 0)です。
### ColorArray `ColorArray`
URL: https://synapserack.com/ja/docs/nodes/color/ColorArray/
Summary: Pick color by Index (wraps)
- Inputs: Index(int)
- Outputs: Color(Color)
- Settable: indexInput(int)
ノード上に色のリスト(パレット)を持ち、`Index` で指定した1色を出力します。インデックスは要素数での剰余でラップするので、範囲を超えても先頭に戻ります。負の値も要素数を足して正しい位置に回り込みます。ビートのトリガーを Counter に通して `Index` へ挿せば、拍ごとにパレットを回せます。
- **Index** — 選ぶ位置。剰余でラップ(既定0)
- 初期パレットは**白と黒の2色**
- ノード上の **+ Add** で末尾に白を追加、各行の **-** で削除。色の四角をクリックするとその行のピッカー(アルファ編集可)が開閉します
- ヘッダーには現在選ばれている位置が `[0]` のように表示されます
> パレットを全部消して空にすると、出力は完全に透明な色(RGBA すべて0)になり、ヘッダーは `(empty)` 表示になります。下流に古い色が残らないよう、空でも明示的に値を流す作りです。
### ColorCombine `ColorCombine`
URL: https://synapserack.com/ja/docs/nodes/color/ColorCombine/
Summary: R/G/B/A or H/S/V floats → Color
- Inputs: R or H(float), G or S(float), B or V(float), Alpha(float)
- Outputs: Color(Color)
- Settable: in0(float), in1(float), in2(float), in3(float)
4つのfloat入力から1つの色を組み立てます。ノード上のドロップダウンで **RGB**(既定)と **HSV** を切り替えられ、ポート名の `R or H` / `G or S` / `B or V` はそのまま各モードでの意味です。`Alpha` は両モード共通で、0〜1にクランプされます。各入力の既定値は1です。
- **RGB モード** — `R or H` / `G or S` / `B or V` をそのままR・G・Bに入れます。**この3つはクランプされません**(1を超える値・負の値もそのまま下流へ流れます)
- **HSV モード** — `R or H` を色相として小数部だけ取り出して使う(増え続ける値を挿してもぐるぐる回ります)。`G or S` と `B or V` は0〜1にクランプ
> 既定値(すべて1)のまま HSV に切り替えると、色相1は小数部0=赤になるため、白ではなく**赤**が出力されます。
### ColorInvert `ColorInvert`
URL: https://synapserack.com/ja/docs/nodes/color/ColorInvert/
Summary: Invert RGB (alpha kept)
- Inputs: Color(Color)
- Outputs: Color(Color)
入力色のR・G・Bをそれぞれ `1 − 値` に反転して出力します。**アルファは反転せず、入力のまま素通り**します。未接続時はノード上のインライン色欄の値(既定は白)を使います。
> 入力が0〜1の外にある場合もそのまま `1 − 値` を計算します(クランプはしません)。
### ColorMix `ColorMix`
URL: https://synapserack.com/ja/docs/nodes/color/ColorMix/
Summary: Lerp A→B by T (0-1)
- Inputs: Color A(Color), Color B(Color), Mix(float)
- Outputs: Color(Color)
- Settable: inT(float)
`Color A` と `Color B` を `Mix` の値で線形補間します。0でA、1でB、その間は各チャンネル(アルファ含む)を直線的に混ぜた色です。`Mix` は0〜1にクランプされるので、範囲外の値を入れても端で止まります。`Mix` に LFO や Easing を挿すと色が往復するクロスフェードになります。
- **Color A** — 既定は黒
- **Color B** — 既定は白
- **Mix** — 既定0.5(0〜1にクランプ)
### ColorMultiply `ColorMultiply`
URL: https://synapserack.com/ja/docs/nodes/color/ColorMultiply/
Summary: A * B (per channel)
- Inputs: Color A(Color), Color B(Color)
- Outputs: Color(Color)
`Color A` と `Color B` をチャンネルごとに掛け合わせ、0〜1にクランプして出力します。片方を色味、もう片方を明るさとして使う着色(tint)に向きます。未接続のポートはノード上のインライン色欄の値を使い、その値はプロジェクトに保存されます。
- **Color A / Color B** — 既定はどちらも白(つまり既定の出力は白)
> 乗算は**アルファにも適用**されます。片方のアルファが0なら出力のアルファも0になります。
### ColorSplit `ColorSplit`
URL: https://synapserack.com/ja/docs/nodes/color/ColorSplit/
Summary: Color → R/G/B/A or H/S/V floats
- Inputs: Color(Color)
- Outputs: R or H(float), G or S(float), B or V(float), Alpha(float)
入力色を4つのfloat出力に分解します。ノード上のドロップダウンで **RGB**(既定)と **HSV** を切り替えられ、出力ポート名の `R or H` / `G or S` / `B or V` はそのまま各モードでの意味です。`Alpha` はモードに関係なく常に入力のアルファをそのまま出します。[ColorCombine](/ja/docs/nodes/color/ColorCombine/) と対になるノードで、色を数値として取り出して他のパラメータの制御に流し込めます。
- **RGB モード** — R・G・Bをそのまま出力
- **HSV モード** — 色相・彩度・明度に変換して出力(いずれも0〜1)
> モードを切り替えた瞬間にも出力は再計算されます(色の入力が来るまで待ちません)。
### ColorSubtract `ColorSubtract`
URL: https://synapserack.com/ja/docs/nodes/color/ColorSubtract/
Summary: A - B (per channel, clamped)
- Inputs: Color A(Color), Color B(Color)
- Outputs: Color(Color)
`Color A` から `Color B` をチャンネルごとに引き、それぞれ0〜1にクランプして出力します。負に振れた成分は0で止まります。未接続のポートはノード上のインライン色欄の値を使い、その値はプロジェクトに保存されます。
- **Color A** — 既定は白
- **Color B** — 既定は黒
> 減算は**アルファにも適用**されます。既定値(Aが白・Bが黒、どちらもアルファ1)のままだと出力のアルファは 1 − 1 = 0 になります。色は白のまま出ているのに下流で透明扱いになる場合はここを疑ってください。
## Composite (5 nodes)
複数テクスチャのブレンド・クロスフェード・マスク合成・切り替え。
### BlendRT `BlendRT`
URL: https://synapserack.com/ja/docs/nodes/composite/BlendRT/
Summary: Blend two RTs (add/mul/screen/diff/sub)
- Inputs: A(RenderTexture), B(RenderTexture), Mix(float)
- Outputs: Render Texture(RenderTexture)
- Settable: mixInput(float)
**A** を下地に **B** を合成します。モードはドロップダウンで **Add**(既定)/ **Multiply** / **Screen** / **Difference** / **Subtract** の 5 種。**Mix** は A と合成結果のブレンド量で、0 なら A そのまま、1 なら合成結果そのままです。
- **Mix** 既定 1(0〜1 にクランプ)
- 出力の解像度は A 基準(HDR対応)。アルファは 1 で出力されます
- Subtract は `max(A - B, 0)`、Screen は saturate してから計算します
> **B が未接続のときは A をそのまま通します**(モードも Mix も効きません)。逆に **A が未接続のときは合成自体が走らず**、出力は A を外した時点で黒くクリアされたまま止まります。
### CrossFade `CrossFade`
URL: https://synapserack.com/ja/docs/nodes/composite/CrossFade/
- Inputs: Texture A(RenderTexture), Texture B(RenderTexture), Mix(float)
- Outputs: Out(RenderTexture)
- Settable: mixInput(float), mixValue(float)
`lerp(A, B, Mix)` を出力します。**Mix** が 0 で **Texture A**、1 で **Texture B** です。
- **Mix** 既定 0.5(0〜1 にクランプ)
- 出力の解像度は Texture A(無ければ Texture B)に追従します
- 起動時は、入力が繋がっていなくても下流に参照を渡せるようグローバル解像度のバッファを 1 枚確保します
> A・B の両方が未接続のときは合成が走らず、出力バッファは前の内容のまま止まります。
モードを選んで足し合わせたいときは [BlendRT](/ja/docs/nodes/composite/BlendRT/)、3 枚以上を重ねたいときは [AppStackMixer](/ja/docs/nodes/composite/AppStackMixer/) を使います。
### Mask Mix `MaskMix`
URL: https://synapserack.com/ja/docs/nodes/composite/MaskMix/
Summary: Mix A and B with a luminance mask
- Inputs: A(RenderTexture), B(RenderTexture), Mask(RenderTexture), Invert(bool)
- Outputs: Out(RenderTexture)
- Settable: invertInput(bool), currentInvert(bool)
**Mask** の輝度をそのまま混合比として `lerp(A, B, mask)` を出力します。マスクが黒いところは **A**、白いところは **B**、中間はその割合で混ざるので、グラデーションのマスクを入れれば境目のない移り変わりになります。
- 輝度は見た目の明るさ基準で計算され、0〜1 に収められます
- **Invert** でマスクを反転(`1 - mask`)します
- 未接続の入力は黒テクスチャとして扱われます
- 出力の解像度は A →(無ければ)B →(無ければ)Mask を基準に決まります。3 つとも未接続なら黒でクリアされます
### RTSwitch `RTSwitch`
URL: https://synapserack.com/ja/docs/nodes/composite/RTSwitch/
Summary: Cut between 4 RT sources by index
- Inputs: Index(float), A(RenderTexture), B(RenderTexture), C(RenderTexture), D(RenderTexture)
- Outputs: Render Texture(RenderTexture)
- Settable: indexInput(float)
**Index** を切り捨てて 0〜3 にクランプし、0 = **A** / 1 = **B** / 2 = **C** / 3 = **D** をそのまま出力します。補間は一切入らないので、拍に合わせて素材を切る用途に向きます。
- 出力バッファは選択中の入力の解像度・フォーマットに追従します
- 選択中の入力が未接続のときは黒を出します
### Stack Mixer `AppStackMixer`
URL: https://synapserack.com/ja/docs/nodes/composite/AppStackMixer/
Summary: Composite up to 8 textures with blend modes
- Inputs: Texture 1(RenderTexture), Texture 2(RenderTexture), Texture 3(RenderTexture), Texture 4(RenderTexture), Texture 5(RenderTexture), Texture 6(RenderTexture), Texture 7(RenderTexture), Texture 8(RenderTexture)
- Outputs: Out(RenderTexture)
- Settable: opacity1(float), opacity2(float), opacity3(float), opacity4(float), opacity5(float), opacity6(float), opacity7(float), opacity8(float), blend1(int), blend2(int), blend3(int), blend4(int), blend5(int), blend6(int), blend7(int), blend8(int)
**Texture 1** が最下段、**Texture 8** が最上段のレイヤースタックです。毎フレーム透明な状態からやり直し、接続済みかつ不透明度が 0 より大きいスロットだけを下から順に重ねていきます。
- **opacity1〜opacity8** — 0〜1 にクランプ、既定 1。素材自身のアルファに掛けてから合成するので、上のレイヤーの透明な部分が下を消してしまうことはありません
- **blend1〜blend8** — 0 = Normal(既定)/ 1 = Add / 2 = Multiply / 3 = Screen
- ノードUIに出ているのは **Op 1〜8 の不透明度だけ**です。ブレンドモードはスクリプトから設定します
- 出力は起動時のグローバル解像度で固定(入力の解像度には追従しません)
> 不透明度が 0 のスロットは合成自体をスキップします。有効なスロットが 1 つも無いフレームでは、出力は透明でクリアされます。
## Field (9 nodes)
オプティカルフローやノイズなど2Dベクトル場の生成と、それを使った映像の変形。
### Field Blend `FieldBlend`
URL: https://synapserack.com/ja/docs/nodes/field/FieldBlend/
Summary: Blends two flow fields (add or lerp)
- Inputs: A(FlowFieldInput), B(FlowFieldInput), Mix(float)
- Outputs: Out(FlowFieldOutput)
- Settable: mixInput(float), currentMix(float)
2つの流れ場を合成します。場は符号つきのベクトル(UV変位/秒)なので、色のBlendにあるMultiply/Screen/Differenceは意味を持たず、**重ね合わせ(Add)と乗り換え(Lerp)の2モードだけ**を持ちます。「方向(Field Constant)+ゆらぎ(Field Noise)」のように性格の違う場を重ねるのが主用途です。
- **Add**(初期値) — `A + B × Mix`。色と違って飽和しないので、クランプせずそのまま出力します
- **Lerp** — `lerp(A, B, saturate(Mix))`。Mixが1を超えてもLerp側では1として扱われます
- **Mix** — 0〜4にクランプ、初期値1(`Mix` 入力 / `mixInput` / `currentMix`)。上限が4なのはAddでBを強調するため
> 片側だけ接続されている場合は、繋がっているほうの場をそのまま通します(差し替え中に出力が消えて絵が飛ばないようにするため)。両方外れると出力はクリアされます。
>
> 出力解像度はA入力に合わせます。BはBilinearで伸縮されて読まれるので、解像度の違う場を混ぜてもかまいません。
### Field Constant `FieldConstant`
URL: https://synapserack.com/ja/docs/nodes/field/FieldConstant/
Summary: Uniform flow field from angle and strength
- Inputs: Angle(float), Strength(float)
- Outputs: Flow(FlowFieldOutput)
- Settable: angleInput(float), strengthInput(float), currentAngle(float), currentStrength(float)
角度と強さから**一様な流れ場**を作ります。全画素が同じベクトル `(cos(Angle), sin(Angle)) × Strength` になるので、画面全体が同じ方向に流れます。値(float)から場(FlowField)への最小の橋渡しで、Angleに [LFO](/ja/docs/nodes/signal/LFO/) を刺せば回る風になります。
- **Angle** — 度。UIスライダーは-180〜180ですが、入力ポート(`Angle` / `angleInput`)経由の値はクランプされません
- **Strength** — -2〜2にクランプ、初期値0.2。単位はUV変位/秒。負値で逆向き
> 出力テクスチャは8×8です。一様な場なので解像度は最小で足り、消費側はbilinearで読みます。
## 動画
### Field Noise `FieldNoise`
URL: https://synapserack.com/ja/docs/nodes/field/FieldNoise/
Summary: Generates an animated curl-noise flow field
- Inputs: Offset(float)
- Outputs: Flow(FlowFieldOutput)
- Settable: offsetInput(float), currentScale(float), currentSpeed(float), currentOffset(float), currentSeed(int)
カールノイズによる流れ場(FlowField)を生成します。ポテンシャル関数(valueNoiseのfbm 2オクターブ)のcurlを取っているので、湧き出しも吸い込みも無い**渦だけの流れ**になります。時間位相は `Speed × deltaTime` を毎フレーム積分したもので、そこに `Offset` 入力が加算されます。
- **Scale** — 空間スケール。0.25〜16にクランプ、初期値3。大きいほど渦が細かくなります。場の強さもScaleに比例します(出力は `curl × 0.02 × Scale`)
- **Speed** — 位相の進む速さ。-4〜4にクランプ、初期値0.5。負値で逆再生
- **Offset** — 位相に直接足される値(`Offset` 入力ポート / `offsetInput`)。クランプなし
- **Seed** — 整数。ノードを新規作成したときは実行時の値から自動で決まる乱数(保存された値はそのまま復元されます)
> 出力解像度はグローバル解像度の1/4です。場は低周波な信号なので、消費側がbilinearで読む前提で軽く作られています。フォーマットはRGHalf(符号付き、値は「UV空間の変位/秒」)。
強さを増減したい場合は [Field Scale](/ja/docs/nodes/field/FieldScale/) を後段に置きます。
## 動画
### Field Scale `FieldScale`
URL: https://synapserack.com/ja/docs/nodes/field/FieldScale/
Summary: Scales, rotates, or flips a flow field
- Inputs: Flow(FlowFieldInput), Gain(float)
- Outputs: Out(FlowFieldOutput)
- Settable: gainInput(float), currentGain(float), currentRotate(float), currentInvert(bool)
流れ場の各ベクトルを**回転してから倍率をかけます**。絵を回転させるのではなく、場が指している向きそのものを回します。Field Noise などのソースは強さが固定なので、強弱を付けたいときはこのノードを挟みます。
- **Gain** — -4〜4にクランプ、初期値1(`Gain` 入力 / `gainInput` / `currentGain`)
- **Rotate** — 度。-180〜180にクランプ、初期値0。ベクトルの向きを回します
- **Invert** — ONでGainの符号を反転(内部的には `Gain × -1`)。流れが逆向きになります
> 出力解像度と形式は入力の場をそのまま引き継ぎます。入力が外れると出力はクリアされます。
### Field Shapes `FieldShapes`
URL: https://synapserack.com/ja/docs/nodes/field/FieldShapes/
Summary: Moving shapes radiate suction or repulsion flow
- Inputs: Phase(float), Strength(float)
- Outputs: Flow(FlowFieldOutput)
- Settable: phaseInput(float), strengthInput(float), currentCount(int), currentSize(float), currentStrength(float), currentPhase(float), currentSeed(int)
図形を「絵」ではなく**「場の源」**として使うノードです。各図形のSDF(符号付き距離)の勾配、つまり表面から外向きの単位ベクトルを場として出力し、`exp(-|d| × 3)` で表面から離れるほど減衰させます。Strengthが正なら押し出し、負なら吸い込みになります。図形はそれぞれリサージュ軌道を描き、軌道の速度と初期位相はSeedから決まります。
- **Shape** — Circle(初期値)/ Heart / Star / Ring のドロップダウン。HeartとStarはInigo QuilezのSDF、Ringは太さ0.25の輪
- **Count** — 図形の数。1〜16にクランプ、初期値3(シェーダー側のループ上限も16)
- **Size** — 0.02〜1にクランプ、初期値0.25。UV基準の大きさ。画面のアスペクト比で補正されるので正円を保ちます
- **Strength** — -2〜2にクランプ、初期値0.5(`Strength` 入力 / `strengthInput` / `currentStrength`)
- **Phase** — 図形の運動位相(`Phase` 入力 / `phaseInput` / `currentPhase`)。クランプなし
- **Seed** — 整数。新規作成時は実行時の値から自動で決まる乱数
> **Phaseは内部で自動的に進みません。** Field Noise と違って時間を積分していないので、Phaseを動かさないかぎり図形は止まったままです。動かすには [LFO](/ja/docs/nodes/signal/LFO/) などをPhaseに繋いでください。
>
> 出力解像度はグローバル解像度の1/4、フォーマットはRGHalfです。
## 動画
### Field Visualize `FieldVisualize`
URL: https://synapserack.com/ja/docs/nodes/field/FieldVisualize/
Summary: Shows a flow field as hue (direction) and brightness (speed)
- Inputs: Flow(FlowFieldInput), Gain(float)
- Outputs: Out(RenderTexture)
- Settable: gainInput(float), currentGain(float)
目に見えない流れ場を映像に変換して確認するノードです。ベクトルの角度 `atan2(y, x)` を色相に、長さ `saturate(|v| × Gain)` を明度に割り当てます(彩度は常に1)。場を組んでいるときのデバッグ用にも、そのまま絵として使うこともできます。
- **Gain** — 明度スケール。0〜10にクランプ、初期値2(`Gain` 入力 / `gainInput` / `currentGain`)。場が弱くて真っ黒に見えるときは上げます
出力はRenderTextureで、解像度は入力の場と同じ(つまり多くの場合グローバル解像度の1/4〜1/8)です。ノードUIにはプレビューが表示されます。
> 入力が外れると出力は黒でクリアされます。
### Flow Smear `FlowSmear`
URL: https://synapserack.com/ja/docs/nodes/field/FlowSmear/
Summary: Advects the previous frame along a flow field (paint-smear feedback)
- Inputs: Source(RenderTexture), Flow(FlowFieldInput), Strength(float), Persistence(float), Reset(trigger)
- Outputs: Out(RenderTexture)
- Settable: strengthInput(float), persistenceInput(float), currentStrength(float), currentPersistence(float)
流れ場に沿って蓄積バッファを移流(advect)させるフィードバックノードです。毎フレーム `UV - flow × deltaTime × Strength` の位置から前フレームの蓄積を読み、それとライブのSourceを `lerp(Source, 蓄積, Persistence)` で混ぜます。Persistenceが高いほど絵の具のように尾を引き、0なら素通しになります。
- **Strength** — 移流の倍率。0〜8にクランプ、初期値1(`Strength` 入力 / `strengthInput` / `currentStrength`)
- **Persistence** — 蓄積の残存率。0〜1にクランプ、初期値0.92(`Persistence` 入力 / `persistenceInput` / `currentPersistence`)
- **Reset** — トリガー入力。蓄積バッファを現在のSourceで塗り直します(ノードUIのResetボタンも同じ動作)
> **Flow入力が未接続だと流れゼロ(黒)として扱われます。** 移流は起きず、その場に留まる時間フィードバックになります。
>
> Source入力を外すとリセットが予約され、出力は黒でクリアされます。プロジェクトのロード直後も同様にリセット状態から始まります。
>
> 蓄積と出力は高精度フォーマットです(8bitだと減衰の尾が縞になるため)。出力のアルファは常に1に固定されます。
## 動画
### Motion Amount `MotionAmount`
URL: https://synapserack.com/ja/docs/nodes/field/MotionAmount/
Summary: Average flow strength → value
- Inputs: Flow(FlowFieldInput)
- Outputs: Amount(float)
- Settable: currentGain(float)
流れ場を値に戻す「場→値」の橋です。場のベクトル長を `saturate(|v| × Gain)` でグレースケール化し、16×16に縮小したものの平均をAmountとして出力します。[Optical Flow](/ja/docs/nodes/field/OpticalFlow/) を繋げば画面全体の動き量、Field Noise などを繋げば場の強度メーターになります。
- **Gain** — 0〜10にクランプ、初期値3(`currentGain`)。saturateで頭打ちになるので、上げすぎると常に1に張り付きます
> 読み出しは**3フレームに1回**で、GPUからの読み戻しが非同期のため1〜2フレームの遅延があります。出力自体は毎フレーム更新されますが、値が変わるのはこのケイデンスに従います。
>
> 入力が外れるとAmountは0になります。
### Optical Flow `OpticalFlow`
URL: https://synapserack.com/ja/docs/nodes/field/OpticalFlow/
Summary: Estimates a motion flow field from video
- Inputs: In(RenderTexture)
- Outputs: Flow(FlowFieldOutput)
- Settable: currentScale(float)
入力映像の前フレームとの比較から動きを推定し、流れ場(FlowField)として出力します。ブロック単位で輝度(0.299/0.587/0.114の加重)の時間差と空間勾配を取り、法線フロー `-It・∇I / |∇I|²`(Lucas-Kanadeの1タップ版)で変位を求め、`1/deltaTime` を掛けて「UV変位/秒」に直しています。
- **Block Size** — Small8 / Medium16(初期値)/ Large32 のドロップダウン。ブロックが大きいほど大きな動きを拾い、結果は粗くなります
- **Scale** — 推定結果に掛ける倍率。0〜8にクランプ、初期値1(`currentScale`)
> **外れ値の抑制として、1フレームあたりの変位は1ブロック2個ぶんが上限**にクランプされます。速すぎる動きは頭打ちになります。
>
> 接続直後とプロジェクトのロード直後の1フレームは、比較の基準を作るだけで推定を行いません(出力はクリアされます)。
>
> 出力解像度は入力の1/8、フォーマットはRGHalfです。場は低周波なので、消費側がbilinearで読む前提で軽く作られています。
推定結果の確認には [Field Visualize](/ja/docs/nodes/field/FieldVisualize/) を、動き量を1つの値にしたいときは [Motion Amount](/ja/docs/nodes/field/MotionAmount/) を使います。
## 動画
## Fx (11 nodes)
テクスチャエフェクトの基盤ノード。Fxチェーンの適用・合成・グレーディング。
### App Fx Chain `AppFxChain`
URL: https://synapserack.com/ja/docs/nodes/fx/AppFxChain/
Summary: Apply a series of FxShader effects to a source texture
- Inputs: Source(RenderTexture)
- Outputs: Render Texture(RenderTexture)
**Render APIが所有するチェーンのホストノード**です。新しいレンダラーではなく、既存のエフェクトノード(FxShaderなど `IFxChainStepProvider` を実装したモジュール)をアプリ側が生成・接続し、その順序付きリストをこのノードに渡します。このノードが持っているのは Source → エフェクト列 → 出力 のBlitと出力RTだけで、シェーダーの処理そのものは各エフェクトノードが持っています。パラメータもエフェクトノード側にあります。
ノードエディタ上で手動でエフェクトを挿してチェーンを組みたい場合は [Fx Apply](/ja/docs/nodes/fx/FxApply/) を使ってください。
- **Source** — 入力テクスチャ
- **Render Texture** — チェーンの出力。他のノードと同じように合成・出力・サーフェスへの割り当てができる本物のRTです
> **出力RTはモジュールの生存中ずっと同じ参照のまま**で、解像度はグローバル解像度固定です(入力に追従しません)。
>
> エフェクトが0個のときは素通しです。描画可能でないエフェクトやEnableがOFFのShaderFxはステップがnullになるためスキップされ、**1つの不調なエフェクトでチェーン全体が黒くなることはありません**。
>
> Sourceが未接続(または途中で切断)になると、出力バッファは一度だけ透明にクリアされます。最後の絵が残り続けることはありません。
### Bloom `Bloom`
URL: https://synapserack.com/ja/docs/nodes/fx/Bloom/
Summary: HDR bloom (threshold + blur + add)
- Inputs: Render Texture(RenderTexture), Threshold(float), Intensity(float), Iterations(float)
- Outputs: Render Texture(RenderTexture)
- Settable: thresholdInput(float), intensityInput(float), radiusInput(float)
**閾値抽出 → セパラブルガウシアンぼかし → 加算合成**の3段でブルームをかけます。抽出は `max(色 - Threshold, 0)` のソフトニー無しの単純閾値で、HDR入力(Renderの出力など)を前提にした作りですが、LDRの映像でも動きます。ぼかしは半分の解像度で行われます。
- **Threshold** — 初期値1。負値は0として扱われます(`Threshold` 入力 / `thresholdInput`)
- **Intensity** — 加算する量。初期値0.8。負値は0として扱われます(`Intensity` 入力 / `intensityInput`)
- **Iterations** — ぼかしの往復回数。**1〜6にクランプ**され、floatは四捨五入で整数化されます。初期値3(`Iterations` 入力 / `radiusInput`)
> **Iterationsは回数を増やすだけでなく、ぼかしの広がりも増やします。** i回目の往復ではサンプル間隔が `1 + i` テクセルになるため、回数を上げるほど光が遠くまで伸びます。
>
> Threshold(既定1)はHDR前提の値です。LDR素材(最大1.0)に既定のまま掛けると、抽出結果がほぼ0になって何も光らないことがあります。その場合はThresholdを下げてください。
>
> 出力のアルファは常に1に固定されます。入力を外すと出力は黒でクリアされます。
出力はHDR対応で、解像度は入力と同じです。
### Canvas `Canvas`
URL: https://synapserack.com/ja/docs/nodes/fx/Canvas/
Summary: Fit RT onto output canvas (pos/scale/rot + aspect policy)
- Inputs: Render Texture(RenderTexture), Position X(float), Position Y(float), Scale X(float), Scale Y(float), Rotation X(float), Rotation Y(float), Rotation Z(float)
- Outputs: Render Texture(RenderTexture)
- Settable: posXInput(float), posYInput(float), scaleXInput(float), scaleYInput(float), rotXInput(float), rotYInput(float), rotZInput(float)
解像度もアスペクト比もばらばらな入力を、**出力解像度のキャンバスに載せ直す**整形ノードです。アスペクト政策で基本の収め方を決め、その上に位置・スケール・3軸回転を重ねます。実装はUV変換1パス(逆ホモグラフィ)なので、カメラもレイヤーも使いません。
## アスペクト政策(ドロップダウン)
- **Stretch** — 出力いっぱいに引き伸ばす(アスペクト比は崩れる)
- **Fit**(初期値) — 全体を収める。長辺を合わせるので短辺側に余白が出ます
- **Fill** — 全体を覆う。短辺を合わせるので長辺側がはみ出して切り取られます
## パラメータ
- **Position X / Position Y** — 出力の正規化座標でのオフセット。初期値0
- **Scale X / Scale Y** — アスペクト政策で決まった倍率にさらに掛かります。初期値1。負値で反転します
- **Rotation X / Rotation Y / Rotation Z** — 度。Zが面内回転、X・Yは奥行き方向の傾きで**透視投影がかかります**。初期値0
> **出力解像度はグローバル(マスター)解像度に追従します。** 入力の解像度ではありません。Master Outputの解像度を変えると出力RTも作り直されます。
>
> 変換後のUVが0〜1の外に出た画素は**透明(黒+α0)**になります。エッジオン付近で退化した場合も同様に透明です。
>
> Scaleがほぼゼロのときはゼロ除算を避けるため±1e-4でガードされます(符号は維持されるので負スケールの反転は活きます)。
>
> 入力が未接続でも出力RT自体は生き続けます(黒で初期化された状態)。
出力はHDR対応です。
## 動画
### ChannelIsolate `ChannelIsolate`
URL: https://synapserack.com/ja/docs/nodes/fx/ChannelIsolate/
Summary: Isolate R/G/B/A channel of RT
- Inputs: Render Texture(RenderTexture)
- Outputs: Render Texture(RenderTexture)
入力RTから1チャンネルだけを取り出し、**その値をRGBすべてに複製したグレースケール**として出力します。マスクの材料を作る、色ズレ系のグリッチを組む、といった用途の入口になります。
- **Channel** — R(初期値)/ G / B / A のドロップダウン
> 出力のアルファは常に1に固定されます。Aチャンネルを選んだ場合も、アルファの値はRGBに複製されて出てきます(出力自体は不透明のまま)。
>
> 入力を外すと出力は黒でクリアされます。
出力はHDR対応で、解像度は入力と同じです。
### DOF `DOF`
URL: https://synapserack.com/ja/docs/nodes/fx/DOF/
Summary: Depth of field (needs Render Depth)
- Inputs: Render Texture(RenderTexture), Depth Texture(RenderTexture), Camera(CameraDataInput), Focus Distance(float), Focus Range(float), Blur Strength(float)
- Outputs: Render Texture(RenderTexture)
- Settable: focusInput(float), rangeInput(float), blurInput(float)
深度テクスチャから錯乱円(CoC)を計算し、ボケた絵とシャープな絵を混ぜる被写界深度ノードです。CoCは `saturate(|線形深度 - Focus Distance| / Focus Range)` なので、**合焦面から離れるほどボケます**。処理はCoC付きの1/2解像度ダウンサンプル → セパラブルブラー往復1回 → 合成の3パスです。
- **Focus Distance** — 合焦距離。初期値30。最小0.01でガード(`Focus Distance` 入力 / `focusInput`)
- **Focus Range** — この距離だけ離れるとCoCが最大になります。初期値10。最小0.001でガード(`Focus Range` 入力 / `rangeInput`)
- **Blur Strength** — ぼかしのサンプル間隔倍率。初期値2。負値は0として扱われます(`Blur Strength` 入力 / `blurInput`)
- **Camera** — near/farを線形深度の復元に使います
> **Depth Textureが未接続だと素通しになります。** Renderノードの深度出力を繋いでください。
>
> **Camera入力が未接続(または無効)のときは既定カメラ値にフォールバック**します(near=0.1 / far=1000)。実際のカメラのnear/farがこれと違うと、Focus Distanceの数値と実際の合焦位置がずれます。
>
> 合成時は自分のCoCとぼかし側のCoCの大きいほうを採用するので、手前のボケが背景側へ滲み出します。
>
> 出力のアルファは常に1に固定されます。In入力を外すと出力は黒でクリアされます。
出力はHDR対応で、解像度は入力と同じです。
### Displace `Displace`
URL: https://synapserack.com/ja/docs/nodes/fx/Displace/
Summary: Displace RT by another RT (RG offset)
- Inputs: Render Texture(RenderTexture), Displacement RT(RenderTexture), Amount(float), Flow(FlowFieldInput)
- Outputs: Render Texture(RenderTexture)
- Settable: amountInput(float)
変位テクスチャを使って入力RTのUVをずらします。変位源は2系統あり、**Flowが接続されているときはそちらが優先**されます。エンコードが違うので専用パスに分かれています。
- **Displacement RT** — 通常のRT。`(RG - 0.5) × Amount` をUVに加算します。つまりRG=0.5がゼロ変位で、Noiseなどの0〜1テクスチャをそのまま刺せます
- **Flow** — FlowField(符号付き、UV変位/秒)。`RG × Amount` をそのまま加算します。deltaTimeは掛からないので、Amountが変位量そのものの倍率になります
- **Amount** — 初期値0.1(`Amount` 入力 / `amountInput`)。クランプなし
> **どちらの変位源も未接続なら素通し**(入力をそのままコピー)になります。In入力を外すと出力は黒でクリアされます。
出力はHDR対応で、解像度はIn入力と同じです。
## 動画
### Fx Apply `FxApply`
URL: https://synapserack.com/ja/docs/nodes/fx/FxApply/
Summary: Apply an FxShader chain to a texture (RT in / RT out)
- Inputs: In(RenderTexture), Enable(bool)
- Outputs: Out(RenderTexture)
- Settable: enableInput(bool), currentOn(bool)
FxShaderのチェーンをRenderTextureに対して適用します。LayerFxがレイヤーのカメラに対してやっていることを、RT入り・RT出しの境界でやるノードです。Effectスロットに挿すのはLayerFxと同じ操作で、行き先がRTになるだけなので、既存のISF/シェーダー資産をそのままノードグラフの素材にできます。
- **Effect 1, 2, 3...** — 動的に増えるFxShader用スロット。**最後のスロットが埋まると自動で次のスロットが生えます**。上限は16
- **Enable** — OFFにするとチェーンを飛ばして素通しになります。初期値ON(`Enable` 入力 / `enableInput` / `currentOn`)
> 出力RTの**サイズもフォーマットも入力に追従**します。入力が未接続の間はグローバル解像度で確保され、内容は透明にクリアされます。
>
> チェーンの1段目も後段と同じ端の扱い(wrapMode=Repeat)になるよう、入力は一度自前のバッファへコピーされてから流されます。端の個別指定はFxShader側のEdgeパラメータで行ってください。
>
> スロットの接続を外すと、そのスロットは1フレーム遅れて詰められます(エッジの差し替え中に消してしまわないため)。末尾の空きスロットは常に1つ残ります。
>
> 保存されるのはスロットの**PortID列**なので、途中のスロットを消して飛び番になってもロード時の接続は復元されます。
### Grade `Grade`
URL: https://synapserack.com/ja/docs/nodes/fx/Grade/
Summary: HDR color grade (pre-tonemap)
- Inputs: Render Texture(RenderTexture), Exposure(float), Contrast(float), Saturation(float), Tint(Color)
- Outputs: Render Texture(RenderTexture)
- Settable: exposureInput(float), contrastInput(float), saturationInput(float)
露出・コントラスト・彩度・ティントをまとめてかけるグレーディングノードです。処理は `色 × Exposure × Tint` → コントラスト → 彩度の順で、コントラストは**ミドルグレー0.18を軸**にした `max(0, (c - 0.18) × Contrast + 0.18)`、彩度は輝度(0.299/0.587/0.114)との `lerp` です。[Tonemap](/ja/docs/nodes/fx/Tonemap/) より**前**(HDRのまま)に置くのが想定位置です。
- **Exposure** — 初期値1。負値は0として扱われます(`Exposure` 入力 / `exposureInput`)
- **Contrast** — 初期値1。負値は0として扱われます(`Contrast` 入力 / `contrastInput`)
- **Saturation** — 初期値1。負値は0として扱われます。0でモノクロ、1超で彩度強調(`Saturation` 入力 / `saturationInput`)
- **Tint** — 乗算する色。初期値は白
> コントラスト適用後に `max(0, ...)` が入るため、負に沈んだ値は0に切り上げられます。上限側はクランプされないのでHDRの値はそのまま通ります。
>
> 出力のアルファは常に1に固定されます。入力を外すと出力は黒でクリアされます。
出力はHDR対応で、解像度は入力と同じです。
### Opacity `TextureOpacity`
URL: https://synapserack.com/ja/docs/nodes/fx/TextureOpacity/
Summary: Fade RT opacity (rgb & alpha multiply)
- Inputs: In(RenderTexture), Opacity(float)
- Outputs: Render Texture(RenderTexture)
- Settable: opacityInput(float)
入力RTの**RGBとアルファの両方**にOpacityを乗算します(premultiplied的なフェード)。アルファだけを下げる実装ではないので、Add合成では寄与そのものが減り、Normal合成やStack Mixerでは透明に抜けます。
- **Opacity** — 0〜1にクランプ、初期値1(`Opacity` 入力 / `opacityInput`)
> Opacityは毎フレーム `Clamp01` されるので、1を超える値を入れても増光にはなりません。
>
> 入力を外すと出力は黒でクリアされます。
出力はHDR対応で、解像度は入力と同じです。
### Ramp `Ramp`
URL: https://synapserack.com/ja/docs/nodes/fx/Ramp/
Summary: Luminance → 3-color gradient
- Inputs: Render Texture(RenderTexture), Color A(Color), Color B(Color), Color C(Color)
- Outputs: Render Texture(RenderTexture)
入力の輝度(`dot(rgb, (0.299, 0.587, 0.114))` を0〜1にsaturate)を、3色のグラデーションに置き換えます。**Color Aが輝度0、Color Bが輝度0.5、Color Cが輝度1**に対応し、その間は線形補間されます。ノイズやマスクなどモノクロの素材に色を与えるのが主用途です。
- **Color A** — 初期値は黒
- **Color B** — 初期値は `(0.8, 0.2, 0.5)` のマゼンタ寄り
- **Color C** — 初期値は `(1, 0.95, 0.7)` のクリーム色
各色は入力ポートからも差し込めるので、色そのものをアニメーションできます。
> 出力のアルファは常に1に固定されます(入力のアルファは参照されません)。入力を外すと出力は黒でクリアされます。
出力はHDR対応で、解像度は入力と同じです。ノードUIにはプレビューが表示されます。
### Tonemap `Tonemap`
URL: https://synapserack.com/ja/docs/nodes/fx/Tonemap/
Summary: ACES tonemap (HDR → LDR)
- Inputs: Render Texture(RenderTexture), Exposure(float)
- Outputs: Render Texture(RenderTexture)
- Settable: exposureInput(float)
入力にExposureを掛けてから、Narkowicz 2015のACES近似カーブでトーンマップし、0〜1に収めます。HDRのまま扱ってきた映像を出力用のLDRに落とす終端の素子です。
- **Exposure** — トーンマップ前の露出倍率。初期値1。負値は0として扱われます(`Exposure` 入力 / `exposureInput`)
> **出力は8bit(LDR)です。** このノードより後ろでHDRを前提にした処理(Bloomの閾値抽出など)を置いても、値が1で頭打ちになっているため期待どおりに効きません。順番は Render → [Grade](/ja/docs/nodes/fx/Grade/) → [Bloom](/ja/docs/nodes/fx/Bloom/) → Tonemap が想定です。
>
> 出力のアルファは常に1に固定されます。入力を外すと出力は黒でクリアされます。
解像度は入力と同じです。
## FxShader (76 nodes + 205 legacy)
シェーダーエフェクト集。FxIn/FxOutで数珠つなぎにしてエフェクトチェーンを組む。
### Barrel `fx.fx.barrel`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.barrel/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### BlockGlitch `fx.fx.fa.blockglitch`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.fa.blockglitch/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### BlockNoise `fx.fx.blocknoise`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.blocknoise/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### CRT `fx.fx.crt`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.crt/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### CellularNoise `fx.fx.cellularnoise`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.cellularnoise/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ChromaKey `fx.fx.chromakey`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.chromakey/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ChromaticAberration `fx.fx.fa.chromaticaberration`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.fa.chromaticaberration/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ColorFill `fx.fx.colorfill`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.colorfill/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ColorGradation `fx.fx.colorgradation`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.colorgradation/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ColorGrading `fx.fx.colorgrading`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.colorgrading/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ColorHalftone `fx.fx.fa.colorhalftone`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.fa.colorhalftone/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ColorKey `fx.fx.fa.colorkey`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.fa.colorkey/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ColorLerp `fx.fx.colorlerp`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.colorlerp/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ColorMulCut `fx.fx.colormulcut`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.colormulcut/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ColorMultiply `fx.fx.colormultiply`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.colormultiply/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ColorPassEffect `fx.fx.colorpasseffect`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.colorpasseffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ColorUnify `fx.fx.colorunify`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.colorunify/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### CornerPin `fx.fx.fa.cornerpin`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.fa.cornerpin/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### Datamosh `fx.fx.datamosh`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.datamosh/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### Dissolve `fx.fx.dissolve`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.dissolve/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### DistortionEffect `fx.fx.distortioneffect`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.distortioneffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### GaussianBlur `fx.fx.gaussianblur`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.gaussianblur/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### Glow `fx.fx.fa.glow`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.fa.glow/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### Grain `fx.fx.fa.grain`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.fa.grain/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### GrayScale `fx.fx.grayscale`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.grayscale/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### GridUVShift `fx.fx.griduvshift`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.griduvshift/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### HSVEffect `fx.fx.hsveffect`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.hsveffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### Halo `fx.fx.fa.halo`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.fa.halo/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### HardStrobe `fx.fx.hardstrobe`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.hardstrobe/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### HorizontalGlitch `fx.fx.horizontalglitch`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.horizontalglitch/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### Jitter `fx.fx.fa.jitter`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.fa.jitter/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### Lens `fx.fx.fa.lens`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.fa.lens/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### Levels `fx.fx.fa.levels`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.fa.levels/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### Lomo `fx.fx.fa.lomo`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.fa.lomo/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### MatryoshkaFeedback `fx.fx.matryoshkafeedback`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.matryoshkafeedback/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### Mirror `fx.fx.mirror`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.mirror/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### Mosaic `fx.fx.mosaic`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.mosaic/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### Motion `fx.fx.motion`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.motion/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### PatternEffect `fx.fx.patterneffect`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.patterneffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### PerlinNoise `fx.fx.perlinnoise`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.perlinnoise/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### PixelScramble `fx.fx.fa.pixelscramble`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.fa.pixelscramble/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### PixelSort `fx.fx.pixelsort`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.pixelsort/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### PolyLens `fx.fx.fa.polylens`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.fa.polylens/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### PulseNoise `fx.fx.pulsenoise`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.pulsenoise/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### QuadTreeTexture `fx.fx.quadtreetexture`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.quadtreetexture/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### RGBShift `fx.fx.rgbshift`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.rgbshift/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### RadialRays `fx.fx.fa.radialrays`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.fa.radialrays/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### RandomNoise `fx.fx.randomnoise`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.randomnoise/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### RectHollowOut `fx.fx.recthollowout`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.recthollowout/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### RecursiveFeedback `fx.fx.recursivefeedback`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.recursivefeedback/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### RecursiveTexture `fx.fx.recursivetexture`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.recursivetexture/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ReverseEffect `fx.fx.reverseeffect`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.reverseeffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### Ripple `fx.fx.fa.ripple`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.fa.ripple/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### Scanline `fx.fx.scanline`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.scanline/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### Sepia `fx.fx.fa.sepia`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.fa.sepia/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### Shake `fx.fx.shake`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.shake/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### Shockwave `fx.fx.fa.shockwave`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.fa.shockwave/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### SoftStrobe `fx.fx.softstrobe`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.softstrobe/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### SourceGrid `fx.fx.sourcegrid`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.sourcegrid/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### Sparkle `fx.fx.fa.sparkle`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.fa.sparkle/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### Streak `fx.fx.fa.streak`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.fa.streak/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### Swirl `fx.fx.fa.swirl`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.fa.swirl/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### TASMotionKey `fx.fx.tasmotionkey`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.tasmotionkey/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### TVNoise `fx.fx.fa.tvnoise`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.fa.tvnoise/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### TextureKaleidoscope `fx.fx.texturekaleidoscope`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.texturekaleidoscope/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### TextureMosaic `fx.fx.texturemosaic`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.texturemosaic/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### TextureSliceRearrange `fx.fx.textureslicerearrange`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.textureslicerearrange/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### TextureWaveDisplacement `fx.fx.texturewavedisplacement`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.texturewavedisplacement/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### Transform `fx.fx.fa.transform`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.fa.transform/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### Twirl `fx.fx.twirl`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.twirl/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### UV_XCutting `fx.fx.uv_xcutting`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.uv_xcutting/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### UV_YCutting `fx.fx.uv_ycutting`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.uv_ycutting/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### Vignette `fx.fx.vignette`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.vignette/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### VoronoiTextureFill `fx.fx.voronoitexturefill`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.voronoitexturefill/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### Zatu `fx.fx.zatu`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.zatu/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ZoomBlur `fx.fx.fa.zoomblur`
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.fa.zoomblur/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### AffineTransformEffect `fx.fx.affinetransformeffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.affinetransformeffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### AffineTransformEffect2 `fx.fx.affinetransformeffect2` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.affinetransformeffect2/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### AnamorphicLensFlare `fx.fx.anamorphiclensflare` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.anamorphiclensflare/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### Bloom `fx.fx.bloom` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.bloom/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
映像の明るい部分をさらに明るく(白側に)持ち上げるエフェクトです。
各ピクセルの輝度(見た目の明るさ)を計算し、`Threshold` から `Threshold + 0.1` にかけて滑らかに立ち上がるマスクを作り、`マスク × Intensity` をRGBにそのまま加算します。アルファは変化しません。
- **Threshold** — この輝度を超えたピクセルが対象になる(遷移幅は0.1固定、初期値0.5)
- **Intensity** — 加算量。上げるほど対象部分が白に近づく(初期値1.0)
> 単一パスの加算処理のため、**光が周囲ににじむ(ブラーで広がる)タイプのブルームではありません**。ピクセル単位で明部を持ち上げる効果です。
>
> FxShaderノードは `FxIn` / `FxOut` ポートで数珠つなぎにして使います。チェーンの組み方は[FxShaderカテゴリ](/ja/docs/nodes/fxshader/)を参照してください。
### BlurEffect `fx.fx.blureffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.blureffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### Brightness `fx.fx.brightness` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.brightness/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### BrightnessContrast `fx.fx.brightnesscontrast` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.brightnesscontrast/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### BrightnessContrastEffect `fx.fx.brightnesscontrasteffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.brightnesscontrasteffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ChannelClamping `fx.fx.channelclamping` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.channelclamping/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ChannelClamping2 `fx.fx.channelclamping2` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.channelclamping2/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ChannelClamping3 `fx.fx.channelclamping3` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.channelclamping3/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ChannelClamping4 `fx.fx.channelclamping4` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.channelclamping4/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ChannelClamping5 `fx.fx.channelclamping5` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.channelclamping5/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ChannelClampingEffect `fx.fx.channelclampingeffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.channelclampingeffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ChannelMixer `fx.fx.channelmixer` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.channelmixer/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ChannelMixerEffect `fx.fx.channelmixereffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.channelmixereffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ChannelOffset `fx.fx.channeloffset` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.channeloffset/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ChannelShift `fx.fx.channelshift` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.channelshift/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ChannelShift2 `fx.fx.channelshift2` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.channelshift2/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ChannelSwizzleEffect `fx.fx.channelswizzleeffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.channelswizzleeffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ChromaticAberration `fx.fx.chromaticaberration` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.chromaticaberration/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ChromaticAberration2 `fx.fx.chromaticaberration2` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.chromaticaberration2/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ChromaticAberration3 `fx.fx.chromaticaberration3` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.chromaticaberration3/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ChromaticAberration4 `fx.fx.chromaticaberration4` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.chromaticaberration4/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ChromaticAberration5 `fx.fx.chromaticaberration5` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.chromaticaberration5/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ColorBalance `fx.fx.colorbalance` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.colorbalance/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ColorBalanceEffect `fx.fx.colorbalanceeffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.colorbalanceeffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ColorBurnEffect `fx.fx.colorburneffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.colorburneffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ColorChannelShiftEffect `fx.fx.colorchannelshifteffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.colorchannelshifteffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ColorCurves `fx.fx.colorcurves` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.colorcurves/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ColorCycle `fx.fx.colorcycle` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.colorcycle/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ColorCycleEffect `fx.fx.colorcycleeffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.colorcycleeffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ColorDodgeEffect `fx.fx.colordodgeeffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.colordodgeeffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ColorHalftone `fx.fx.colorhalftone` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.colorhalftone/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ColorHalftone2 `fx.fx.colorhalftone2` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.colorhalftone2/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ColorHalftone3 `fx.fx.colorhalftone3` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.colorhalftone3/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ColorHalftone4 `fx.fx.colorhalftone4` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.colorhalftone4/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ColorHalftone5 `fx.fx.colorhalftone5` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.colorhalftone5/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ColorHalftoneEffect `fx.fx.colorhalftoneeffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.colorhalftoneeffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ColorInvert `fx.fx.colorinvert` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.colorinvert/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ColorInvert2 `fx.fx.colorinvert2` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.colorinvert2/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ColorMatrix `fx.fx.colormatrix` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.colormatrix/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ColorMatrix2 `fx.fx.colormatrix2` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.colormatrix2/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ColorMatrix3 `fx.fx.colormatrix3` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.colormatrix3/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ColorMatrix4 `fx.fx.colormatrix4` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.colormatrix4/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ColorMatrix5 `fx.fx.colormatrix5` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.colormatrix5/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ColorMatrixEffect `fx.fx.colormatrixeffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.colormatrixeffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ColorOffset `fx.fx.coloroffset` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.coloroffset/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ColorSplit `fx.fx.colorsplit` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.colorsplit/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ColorTemperature `fx.fx.colortemperature` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.colortemperature/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ColorThresholdEffect `fx.fx.colorthresholdeffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.colorthresholdeffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ColorTint `fx.fx.colortint` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.colortint/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### Contrast `fx.fx.contrast` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.contrast/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ContrastStretchEffect `fx.fx.contraststretcheffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.contraststretcheffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### CornerPinEffect `fx.fx.cornerpineffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.cornerpineffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### CrazyColor `fx.fx.crazycolor` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.crazycolor/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### CrazyDisplace `fx.fx.crazydisplace` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.crazydisplace/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### CrazyDistort `fx.fx.crazydistort` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.crazydistort/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### CrazyInvert `fx.fx.crazyinvert` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.crazyinvert/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### CrazySwap `fx.fx.crazyswap` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.crazyswap/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### CrazySwirl `fx.fx.crazyswirl` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.crazyswirl/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### CrazySwirlEffect `fx.fx.crazyswirleffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.crazyswirleffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### CrazyZoom `fx.fx.crazyzoom` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.crazyzoom/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### CylinderLensEffect `fx.fx.cylinderlenseffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.cylinderlenseffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### DataBender `fx.fx.databender` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.databender/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### DataBenderEffect `fx.fx.databendereffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.databendereffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### DataBendingEffect2 `fx.fx.databendingeffect2` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.databendingeffect2/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### DataCorruption `fx.fx.datacorruption` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.datacorruption/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### DataGlitch `fx.fx.dataglitch` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.dataglitch/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### DataJumble `fx.fx.datajumble` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.datajumble/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### Distortion `fx.fx.distortion` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.distortion/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### DreamyGlowEffect `fx.fx.dreamygloweffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.dreamygloweffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### EdgeDetect `fx.fx.edgedetect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.edgedetect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### EdgeDetect2 `fx.fx.edgedetect2` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.edgedetect2/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### EdgeDetect3 `fx.fx.edgedetect3` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.edgedetect3/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### EdgeDetectionEffect `fx.fx.edgedetectioneffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.edgedetectioneffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ExplosionEffect `fx.fx.explosioneffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.explosioneffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### Exposure `fx.fx.exposure` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.exposure/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### FilmGrain `fx.fx.filmgrain` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.filmgrain/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### Fisheye `fx.fx.fisheye` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.fisheye/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### FisheyeEffect `fx.fx.fisheyeeffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.fisheyeeffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### FloatValue `fx.fx.floatvalue` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.floatvalue/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### GammaCorrection `fx.fx.gammacorrection` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.gammacorrection/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### Ghost `fx.fx.ghost` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.ghost/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### GlitchEffect `fx.fx.glitcheffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.glitcheffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### GlitterEffect `fx.fx.glittereffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.glittereffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### GlitterHeartEffect `fx.fx.glitterhearteffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.glitterhearteffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### Glow `fx.fx.glow` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.glow/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### Grain `fx.fx.grain` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.grain/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### GrayscaleEffect `fx.fx.grayscaleeffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.grayscaleeffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### HalftoneEffect `fx.fx.halftoneeffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.halftoneeffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### Halo `fx.fx.halo` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.halo/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### Halo2 `fx.fx.halo2` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.halo2/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### Halo3 `fx.fx.halo3` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.halo3/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### HaloEffect `fx.fx.haloeffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.haloeffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### HeartBeatEffect `fx.fx.heartbeateffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.heartbeateffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### HeartBloomEffect `fx.fx.heartbloomeffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.heartbloomeffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### HeartChromaticAberrationEffect `fx.fx.heartchromaticaberrationeffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.heartchromaticaberrationeffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### HeartChromaticDisplaceEffect `fx.fx.heartchromaticdisplaceeffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.heartchromaticdisplaceeffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### HeartDataBendingEffect `fx.fx.heartdatabendingeffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.heartdatabendingeffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### HeartEdgeDetectEffect `fx.fx.heartedgedetecteffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.heartedgedetecteffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### HeartEffect `fx.fx.hearteffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.hearteffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### HeartGlitchEffect `fx.fx.heartglitcheffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.heartglitcheffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### HeartHaloEffect `fx.fx.hearthaloeffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.hearthaloeffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### HeartHaloPulseEffect `fx.fx.hearthalopulseeffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.hearthalopulseeffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### HeartInvertEffect `fx.fx.heartinverteffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.heartinverteffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### HeartJitterEffect `fx.fx.heartjittereffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.heartjittereffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### HeartKaleidoscopeEffect `fx.fx.heartkaleidoscopeeffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.heartkaleidoscopeeffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### HeartLensFlareEffect `fx.fx.heartlensflareeffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.heartlensflareeffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### HeartMosaicEffect `fx.fx.heartmosaiceffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.heartmosaiceffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### HeartMosaicPulseEffect `fx.fx.heartmosaicpulseeffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.heartmosaicpulseeffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### HeartOutlineEffect `fx.fx.heartoutlineeffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.heartoutlineeffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### HeartPixelateEffect `fx.fx.heartpixelateeffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.heartpixelateeffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### HeartPulseEffect `fx.fx.heartpulseeffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.heartpulseeffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### HeartRGBSplitEffect `fx.fx.heartrgbspliteffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.heartrgbspliteffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### HeartSwirlEffect `fx.fx.heartswirleffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.heartswirleffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### HeartTVNoiseEffect `fx.fx.hearttvnoiseeffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.hearttvnoiseeffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### HeartVortexEffect `fx.fx.heartvortexeffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.heartvortexeffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### HeartWarpEffect `fx.fx.heartwarpeffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.heartwarpeffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### HueRotation `fx.fx.huerotation` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.huerotation/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### HueSaturation `fx.fx.huesaturation` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.huesaturation/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### HueShift `fx.fx.hueshift` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.hueshift/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### HueShift2 `fx.fx.hueshift2` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.hueshift2/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### HueShiftEffect `fx.fx.hueshifteffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.hueshifteffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### InvertColors `fx.fx.invertcolors` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.invertcolors/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### InvertColors2 `fx.fx.invertcolors2` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.invertcolors2/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### InvertPulse `fx.fx.invertpulse` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.invertpulse/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### InvertPulseEffect `fx.fx.invertpulseeffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.invertpulseeffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### Jitter `fx.fx.jitter` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.jitter/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### Jitter2 `fx.fx.jitter2` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.jitter2/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### Jitter3 `fx.fx.jitter3` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.jitter3/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### Kaleidoscope `fx.fx.kaleidoscope` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.kaleidoscope/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### KaleidoscopeEffect `fx.fx.kaleidoscopeeffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.kaleidoscopeeffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### KeystoneCorrectionEffect `fx.fx.keystonecorrectioneffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.keystonecorrectioneffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### KuwaharaFilterEffect `fx.fx.kuwaharafiltereffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.kuwaharafiltereffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### LensCorrectionEffect `fx.fx.lenscorrectioneffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.lenscorrectioneffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### LensDirt `fx.fx.lensdirt` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.lensdirt/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### LensDistortion `fx.fx.lensdistortion` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.lensdistortion/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### LensFlare `fx.fx.lensflare` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.lensflare/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### LensFlare2 `fx.fx.lensflare2` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.lensflare2/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### LomoEffect `fx.fx.lomoeffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.lomoeffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### LumaKeyEffect `fx.fx.lumakeyeffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.lumakeyeffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### MirrorEffect `fx.fx.mirroreffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.mirroreffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### Mosaic2 `fx.fx.mosaic2` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.mosaic2/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### Mosaic3 `fx.fx.mosaic3` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.mosaic3/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### MosaicEffect `fx.fx.mosaiceffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.mosaiceffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### MultiStreak `fx.fx.multistreak` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.multistreak/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### MultiStreak2 `fx.fx.multistreak2` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.multistreak2/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### MultiStreak3 `fx.fx.multistreak3` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.multistreak3/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### MultiStreakEffect `fx.fx.multistreakeffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.multistreakeffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### Noise `fx.fx.noise` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.noise/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### NoiseEffect `fx.fx.noiseeffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.noiseeffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### OilPainting `fx.fx.oilpainting` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.oilpainting/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### OilPainting2 `fx.fx.oilpainting2` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.oilpainting2/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### OilPainting3 `fx.fx.oilpainting3` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.oilpainting3/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### PastelColorEffect `fx.fx.pastelcoloreffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.pastelcoloreffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### Pinch `fx.fx.pinch` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.pinch/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### PinchEffect `fx.fx.pincheffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.pincheffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### PixelGlitchEffect `fx.fx.pixelglitcheffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.pixelglitcheffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### PixelScrambleEffect `fx.fx.pixelscrambleeffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.pixelscrambleeffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### PixelSortEffect `fx.fx.pixelsorteffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.pixelsorteffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### Pixelate `fx.fx.pixelate` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.pixelate/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### PixelateEffect `fx.fx.pixelateeffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.pixelateeffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### Polygonal `fx.fx.polygonal` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.polygonal/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### Polygonal2 `fx.fx.polygonal2` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.polygonal2/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### Polygonal3 `fx.fx.polygonal3` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.polygonal3/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### PolygonalEffect `fx.fx.polygonaleffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.polygonaleffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### Posterization `fx.fx.posterization` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.posterization/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### PosterizeEffect `fx.fx.posterizeeffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.posterizeeffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### RGBSplit `fx.fx.rgbsplit` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.rgbsplit/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### RGBSplitEffect `fx.fx.rgbspliteffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.rgbspliteffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### RadialBlur `fx.fx.radialblur` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.radialblur/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### RadialBlurEffect `fx.fx.radialblureffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.radialblureffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### RainbowEffect `fx.fx.rainboweffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.rainboweffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### RandomDisplace `fx.fx.randomdisplace` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.randomdisplace/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### RandomDisplaceEffect `fx.fx.randomdisplaceeffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.randomdisplaceeffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### Ring `fx.fx.ring` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.ring/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### RingEffect `fx.fx.ringeffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.ringeffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### Ripple `fx.fx.ripple` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.ripple/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### RippleEffect `fx.fx.rippleeffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.rippleeffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### Saturation `fx.fx.saturation` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.saturation/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### SaturationEffect `fx.fx.saturationeffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.saturationeffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### Sepia `fx.fx.sepia` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.sepia/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### Sharpen `fx.fx.sharpen` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.sharpen/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### SoftGlowEffect `fx.fx.softgloweffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.softgloweffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### SparkleEffect `fx.fx.sparkleeffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.sparkleeffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### SphereLensEffect `fx.fx.spherelenseffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.spherelenseffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### StarEffect `fx.fx.stareffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.stareffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### Starburst `fx.fx.starburst` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.starburst/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### StarburstEffect `fx.fx.starbursteffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.starbursteffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### Swirl `fx.fx.swirl` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.swirl/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### SwirlEffect `fx.fx.swirleffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.swirleffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### TVNoise `fx.fx.tvnoise` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.tvnoise/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### TVNoise2 `fx.fx.tvnoise2` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.tvnoise2/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### TVNoiseEffect `fx.fx.tvnoiseeffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.tvnoiseeffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### TargetColor `fx.fx.targetcolor` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.targetcolor/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ThermalVision `fx.fx.thermalvision` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.thermalvision/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### TimeDisplace `fx.fx.timedisplace` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.timedisplace/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### TimeDisplaceEffect `fx.fx.timedisplaceeffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.timedisplaceeffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### TimeGlitch `fx.fx.timeglitch` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.timeglitch/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### TimeGlitchEffect `fx.fx.timeglitcheffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.timeglitcheffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### TimeStretch `fx.fx.timestretch` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.timestretch/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ToneMapping `fx.fx.tonemapping` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.tonemapping/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### VoronoiEffect `fx.fx.voronoieffect` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.voronoieffect/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
### ZoomBlur `fx.fx.zoomblur` **[LEGACY]**
Legacy (old-generation) node: hidden from the node-creation UI by default, kept for project compatibility. Do not recommend for new projects.
URL: https://synapserack.com/ja/docs/nodes/fxshader/fx.fx.zoomblur/
- Inputs: FxIn(FxChainChangedData), Enable(bool)
- Outputs: FxOut(FxChainChangedData)
- Settable: enableInput(bool)
## Generator (7 nodes)
グラデーション・ノイズ・SDF・テキストなど、映像をゼロから生成する。
### Color Texture `ColorTexture`
URL: https://synapserack.com/ja/docs/nodes/generator/ColorTexture/
- Inputs: Color(Color), Size X(float), Size Y(float), Position X(float), Position Y(float)
- Outputs: Render Texture(RenderTexture)
- Settable: sizeXInput(float), sizeYInput(float), posXInput(float), posYInput(float), sizeX(float), sizeY(float), posX(float), posY(float)
指定した色の矩形を1枚だけ置いたRenderTextureを出すノードです。出力RTはグローバル解像度(GlobalSettings)で、その中に矩形が描かれます。色はノード上のカラーピッカー、または `Color` ポートから指定します。
- **Size X / Size Y** — 矩形のサイズ(ピクセル)。既定は100×100。コントロールUIのスライダーは1〜1920 / 1〜1080
- **Position X / Position Y** — 中央からのオフセット(ピクセル)。既定は0,0。コントロールUIのスライダーは-960〜960 / -540〜540
> 矩形はキャンバス上のRawImageとして描かれ、その描画結果を毎フレーム出力バッファへコピーしています。出力ポートに最初のRTが流れるのは初期化から15フレーム後です。
### FlowNoise `gen.flownoise`
URL: https://synapserack.com/ja/docs/nodes/generator/gen.flownoise/
- Inputs: Speed(float), Phase(float), Seed(int)
- Outputs: Render Texture(RenderTexture)
- Settable: speedInput(float), phaseInput(float), seedInput(int)
fbm(4オクターブのバリューノイズ)にドメインワープをかけて、ゆっくり流れ続ける雲状のパターンを生成します。入力RTを持たない純ジェネレータで、結果は `ColorA`〜`ColorB` の2色補間で着色されます。
- **Scale** — ノイズの細かさ。0.5〜20、既定4
- **Warp** — ノイズでノイズの座標を歪ませる量。0〜2、既定0.6。0で素直なfbm、上げるほど渦を巻きます
- **Contrast** — 中間値0.5を軸としたコントラスト。0.3〜3、既定1
- **ColorA / ColorB** — 暗部と明部の色
- **Speed** — 内部時刻の進む速さ(負値で逆再生)。パターンの流れる速度そのものです
- **Seed** — ハッシュの種。変えるとまったく別の模様になります
出力解像度はノード上のドロップダウンで **FullHD (1920×1080) / HD (1280×720、既定) / SD (854×480)** から選びます。高精度フォーマットで、Displaceの変位源として使うことを想定しています。
> `Phase` ポートは**何かが接続されているときだけ**使われます。未接続のときは内部時刻の小数部(0→1の鋸波)が自動で入ります。ただしFlowNoiseのシェーダーはPhaseを参照しないため、このノードでの見た目には影響しません。
### Gradient `gen.gradient`
URL: https://synapserack.com/ja/docs/nodes/generator/gen.gradient/
- Inputs: Speed(float), Phase(float), Seed(int)
- Outputs: Render Texture(RenderTexture)
- Settable: speedInput(float), phaseInput(float), seedInput(int)
角度付きのグラデーションを生成する純ジェネレータです。グラデーションは三角波化されているので、バンドの境界で色が飛びません。
- **Angle** — グラデーションの向き(度)。0〜360、既定0
- **Bands** — 画面内に並ぶ縞の数。1〜16、既定1
- **Scroll** — 1周あたり何バンド進むか。0〜1、既定0(=止まる)
- **ColorA / ColorB** — 2色
- **Speed** — 1秒あたり何周するか
- **Seed** — このシェーダーでは使われません
出力解像度はノード上のドロップダウンで **FullHD / HD(既定)/ SD** から選びます。
> `Phase` は**接続されているときだけ**外部の値を使い、未接続なら内部時刻の小数部(0→1の鋸波)が入ります。Phaseは鋸波なので、1周あたりの進み量が整数バンドでないと折り返しで位置が飛びます。そのため `Scroll × Bands` は内部で四捨五入されて整数バンドに量子化され、1周ぴったりでループが閉じるようになっています(テンポ同期を想定した設計)。
## 動画
### Overlay `TextOverlay`
URL: https://synapserack.com/ja/docs/nodes/generator/TextOverlay/
- Inputs: Title Text(string), Artist Text(string)
- Outputs: Render Texture(RenderTexture)
- Settable: titleInput(string), artistInput(string), title(string), artist(string), customCSS(string)
`Title Text` と `Artist Text` の2つの文字列を、内部のWebViewでHTMLとしてレンダリングして映像に出すノードです。[Shazam](/ja/docs/nodes/audio/Shazam/) や [LipSync](/ja/docs/nodes/audio/LipSync/) の出力を繋いで、いま流れている曲名を出す用途を想定した構成になっています。
見た目はコントロールUIの **Custom CSS** で丸ごと差し替えられます。HTMLの構造は `.container` の中に `.title` と `.artist` の2つのdivが入るだけの固定形で、既定CSSは黒背景に白文字(タイトル72px太字、アーティスト48px)です。「Reset CSS to Default」で既定に戻せます。
- 出力はグローバル解像度のRenderTexture
- 文字列はHTMLエスケープされてから埋め込まれます
> このノードは公式プラグイン **Web Modules** のライセンスが必要です。ライセンスが無い状態で追加すると購入ページを開くか尋ねるダイアログが出て、ノードは削除されます。
> 背景は透過しません。既定CSSが黒背景なのに加え、描画用カメラも黒でクリアするためです。
### Reaction Diffusion `ReactionDiffusion`
URL: https://synapserack.com/ja/docs/nodes/generator/ReactionDiffusion/
Summary: Gray-Scott feedback (VIS spike)
- Inputs: Feed(float), Kill(float), Iterations/frame(float), Reseed(trigger)
- Outputs: Render Texture(RenderTexture)
- Settable: feedInput(float), killInput(float), speedInput(float), feed(float), kill(float), speed(float)
Gray-Scottモデルの反応拡散シミュレーションです。内部に512×512の状態バッファを2枚持ち、ping-pongで前フレームを食わせ続けます(フィードバック)。`Feed` と `Kill` の組み合わせで、斑点・迷路・分裂といった模様の系が変わります。
- **Feed** — 既定0.055。ノードのスライダーは0.01〜0.09
- **Kill** — 既定0.062。ノードのスライダーは0.04〜0.07
- **Iterations/frame** — 1フレームあたりのシミュレーション反復数。既定8、スライダーは0〜30ですが、実際には**四捨五入して0〜40にクランプ**されます。0にすると時間が止まります
- **Reseed** — 状態バッファをランダムな種で撒き直します(ノード上のReseedボタンと同じ)
出力はグローバル解像度のRenderTextureで、シミュレーション結果に3色のグラデーションを当てたものです。
> 拡散係数(DA=1.0 / DB=0.5)と時間刻み(Dt=1.0)、着色に使う3色は固定でノードから変更できません。
### SDFShape `gen.sdfshape`
URL: https://synapserack.com/ja/docs/nodes/generator/gen.sdfshape/
- Inputs: Speed(float), Phase(float), Seed(int)
- Outputs: Render Texture(RenderTexture)
- Settable: speedInput(float), phaseInput(float), seedInput(int)
SDF(符号付き距離関数)で単純な図形を1つ描く純ジェネレータです。本体に加えて距離に応じたグローが乗ります。
- **Shape** — 0〜2、既定0。**0=円 / 1=四角 / 2=三角**(0.5・1.5を境に切り替わる連続値)
- **Size** — 図形の大きさ。0.05〜0.8、既定0.3
- **Soft** — 縁のぼけ幅。0.001〜0.5、既定0.02
- **PulseAmt** — 位相に合わせたサイズの脈動量。0〜1、既定0.2
- **Rotate** — 回転(ラジアン)。0〜6.2832、既定0
- **Glow** — 発光色。**1を超える値(HDR)を許容**します
- **Speed** — 内部時刻の進む速さ。位相が一周する速さになります
- **Seed** — このシェーダーでは使われません
出力解像度はノード上のドロップダウンで **FullHD / HD(既定)/ SD** から選びます。
> パルスは正弦ではなく減衰形(`1 + PulseAmt × (1 - Phase)²`)です。位相の頭で最大まで膨らみ、そこから減衰します=拍頭でガツンと来る形です。
> `Phase` は**接続されているときだけ**外部の値を使い、未接続なら内部時刻の小数部(0→1の鋸波)が入ります。テンポ同期したLFO等を挿すと、拍に合わせてパルスさせられます。
## 動画
### Text Render `AppTextRender`
URL: https://synapserack.com/ja/docs/nodes/generator/AppTextRender/
Summary: Render a text string to a transparent RenderTexture
- Outputs: Render Texture(RenderTexture)
- Settable: fontSize(float), colorR(float), colorG(float), colorB(float), colorA(float), text(string), alignment(int)
Apps SDK用の低レイヤーノードです。**GUIのノード追加UIには既定で出ません**(グローバル設定で表示に切り替えられます)。
専用のオフスクリーンカメラで、文字列を1つだけ背景透過のRenderTextureに描きます。ノードUI上にあるのは解像度表示とフォントサイズのフィールドだけで、文字列や色はSDK側から設定します。
- **fontSize** — 既定96(1未満は1として扱われます)
- **colorR / colorG / colorB / colorA** — 各0〜1にクランプ。既定はすべて1(不透明の白)
- **alignment** — 0=左、1=中央(既定)、2=右
- 出力解像度は**生成時に固定**されます(既定はグローバル解像度)
> 描画は毎フレームではなく**ダーティフラグ駆動**です。text / fontSize / 色 / alignment のいずれかが変わったときにだけカメラを1回レンダリングするので、動かなければGPU負荷はかかりません。
> 日本語などのCJKは、OSにインストールされたフォントから実行時に1度だけ動的フォントを構築して描いています。候補フォントが見つからない環境ではTMP標準のLiberationSansにフォールバックし、**CJKは豆腐になります**。
## Group (3 nodes)
ノードをまとめて再利用するグループと、その入出力。
### Group `Group`
URL: https://synapserack.com/ja/docs/nodes/group/Group/
Summary: Nestable subgraph (dive in)
- Settable: groupName(string)
複数のノードをひとつに畳んで、中へ潜れるようにするノードです。大きくなったグラフを整理し、作った仕組みを部品として使い回すために使います。
## 中へ潜る・戻る
- ノード上の **▶ Enter** ボタンで入れます
- ズーム操作でも入れます。ノードエディタのズームを限界近くまで**寄せて**、ビュー中心にグループがあるとその中へ入ります
- 戻るときは、一番**引いた**状態からさらに3回スクロールします(ナビゲーションバーの戻るボタンでも戻れます)
## 境界のポートは中から生やします
Group ノード自体には、最初はポートがありません。**中に [Group In](/ja/docs/nodes/group/GroupInput/) / [Group Out](/ja/docs/nodes/group/GroupOutput/) を置くと、外側の Group ノードに対応するポートが生えます。** ポート名は Group In / Out の `label` がそのまま使われます。
> **外側の入力ポートは1本しか受けられません。** 切断・ミュートを確実に中へ伝えるための制限です(出力側は複数へ分岐できます)。
## ノード上の表示
`groupName` のテキストフィールドと、中身のサムネイルが出ます。サムネイルは約0.4秒ごとに更新され、**子グラフに [MediaOut](/ja/docs/nodes/output/MediaOut/) があればそのライブ映像**、無ければノード配置のミニマップになります。
**Export** ボタンでこのグループの中身だけをファイルに書き出せます(再利用・共有用)。
## ショートカット
選択したノードを `Ctrl+G` でグループ化、グループを選んで `Ctrl+Shift+G` で解除(中のノードが外側のグラフへ展開)します。
## 動画
### Group In `GroupInput`
URL: https://synapserack.com/ja/docs/nodes/group/GroupInput/
Summary: Group boundary input (any type)
- Outputs: Out(PassthroughWrapper)
- Settable: label(string)
グループの中に置く「入口」ノードです。中から見ると `Out` を持つソースで、外から見ると **Group ノードに対応する入力ポートが1つ生えます**。外側に来た値がそのまま中の `Out` へ注ぎ込まれます。
- ノード上のテキストフィールド(`label`、初期値 `In`)が、外側に出るポート名になります
- **型は Type ドロップダウンで明示的に選びます。** 選べるのは Any(初期値)/ Texture / Float / Int / Bool / Color / String / Rect / Trigger / Material の10種で、選んだ型が外側の入力ポートへ伝わります
> **外側の入力が切断・ミュートされると、中へ null が流れます。** 古い RenderTexture や値が中に残り続けないための仕組みです。
### Group Out `GroupOutput`
URL: https://synapserack.com/ja/docs/nodes/group/GroupOutput/
Summary: Group boundary output (any type)
- Inputs: In(PassthroughWrapper)
- Settable: label(string)
グループの中に置く「出口」ノードです。中から見ると `In` を持つシンクで、外から見ると **Group ノードに対応する出力ポートが1つ生えます**。中で繋いだ結果がそのまま外側へ返ります。
- ノード上のテキストフィールド(`label`、初期値 `Out`)が、外側に出るポート名になります
- **型は Group In と違って選びません。** `In` に何かを繋いだ時点でその相手の型を纏い、外側の出力ポートへ伝わります。繋いでいたものを外すと型は Any に戻ります
- `In` は1接続に制限されています(切断・ミュートを確実に外側へ伝えるため)
> **`In` が切断・ミュートされると、外側の出力へ null が流れます。** 親グラフの下流に古い RenderTexture が残らないようにするためです。
## I/O (17 nodes)
MIDI・OSC・DMX/ArtNetなど外部機器・他アプリとの入出力。
### ArtNet Output `artnet_output`
URL: https://synapserack.com/ja/docs/nodes/io/artnet_output/
- Inputs: DMX In(DMXFrame)
`DMX In` で受け取った512チャンネルを、Art-Netの **ArtDmx パケット(OpCode 0x5000 / プロトコルバージョン14)** としてUDPで送信します。送信はグラフの更新とは独立した固定レートで、**0.033秒間隔(約30fps)** で繰り返されます。宛先・ユニバース・送信元インターフェースはノードUIで設定します。
- **Target IP** — 既定 `192.168.1.200`。`255.255.255.255` を指定した場合のみブロードキャスト送信になります
- **Universe** — 0〜32767にクランプ。下位8bitがSubUni、上位7bitがNetとしてパケットに書かれます
- **Interface** — 送信元にバインドするネットワークインターフェース。`Auto`(既定)か、稼働中のIPv4アドレスから選択します
- **Enabled** — オフの間は入力の取り込みも送信も止まります
- 送信先ポートは **6454**(ノードUIに入力欄はありません)
> 入力が途切れても送信は止まりません。最後に受け取ったフレームの内容を保持したまま約30fpsで送り続けます。止めたいときは `Enabled` をオフにしてください。
> 入力されたDMXフレームの**マスクは無視され、512チャンネル全体で内部バッファが上書きされます**。複数のフィクスチャを1ユニバースに混ぜる場合は、このノードの手前で [Universe](/ja/docs/nodes/io/dmx_universe/) を通してマージしてください。
### Debug `artnet_test`
URL: https://synapserack.com/ja/docs/nodes/io/artnet_test/
Art-Netの配線とアドレス設定を確かめるためのデバッグ用ノードです。入出力ポートは持たず、ノード上の **ALL 255 / ALL 0** ボタンで内部の512チャンネル全体を一括で書き換え、その内容を **0.033秒間隔(約30fps)** でArtDmxパケットとして送り続けます。
- **Target IP** — 既定 `192.168.1.200`。`255.255.255.255` のときだけブロードキャスト送信になります
- **Interface** — 送信元にバインドするネットワークインターフェース(`Auto` か、稼働中のIPv4アドレス)
- **Enabled** — 既定オン。オフの間は送信しません
- 送信先ポートは **6454**、ユニバースは **0固定**(どちらもノードUIから変更できません)
> 送信時のエラーは画面にもログにも出ません(意図的に握りつぶしています)。届かないときはTarget IPとInterfaceの組み合わせを疑ってください。
### MIDI Bytes `sysex_output`
URL: https://synapserack.com/ja/docs/nodes/io/sysex_output/
Summary: Raw MIDI bytes out (hex, one message per line)
- Inputs: Trig(trigger)
- Settable: currentDeviceName(string), currentSysExHex(string), currentSendOnConnect(bool)
テキストで書いた**生のMIDIバイト列**をそのまま送るノードです。名前はSysExですが対象はSysExに限らず、CCでもプログラムチェンジでもリアルタイムメッセージでも、hexで書けば何でも送れます。コントローラのモード切り替えなど、専用ノードが無い初期化手順を書くのに使います。送信は `Trig` の発火時とノード上の **Send** ボタンです。
- **Device** — 出力先デバイス(名前で保持。フォーカスを当てると一覧を再スキャン)
- **SysEx** — 複数行のテキストフィールド。**1行が1メッセージ**として上から順に送られます。空行はスキップ、`#` 以降は行コメントとして無視されます
- 各行のhexは、スペース・カンマ・`0x` を取り除いてから2桁ずつバイトに変換します
- 既定値は APC40 mk2 を Mode 1 にするSysEx(`F0 47 7F 29 60 00 04 41 01 00 00 F7`)
- **Send on connect** — 送信先デバイスが「不在→出現」に変わった瞬間に自動送信します。起動直後の初期化にも、セット中のUSB抜き挿しからの復帰にも効きます
> **どこか1行でもhexが壊れていると、1つも送りません**(途中まで送って中途半端な状態にしないため)。桁数が奇数の行も無効です。送られないときはログの `[SysEx] Invalid hex string` を確認してください。
> `Send on connect` は「不在→出現」の**遷移**でしか発火しません。すでに接続済みの状態でトグルをオンにしても、その場では何も送られません(挿し直すか Send を押してください)。
### MIDI Clock `midi_clock_out`
URL: https://synapserack.com/ja/docs/nodes/io/midi_clock_out/
Summary: MIDI clock / transport out (sync hardware to BPM)
- Inputs: Clock(bool), Start(trigger), Stop(trigger), Continue(trigger)
- Settable: currentDeviceName(string), clockEnabled(bool)
外部のハードウェアをSynapseRack側のテンポに追従させるノードです。`Clock` がオンの間、[GlobalTempo](/ja/docs/nodes/tempo/GlobalTempo/) のBPMに合わせて **24PPQN のMIDIクロック(0xF8)** を送り続けます。走行の開始・停止は `Start` / `Stop` / `Continue` のトリガーで、それぞれ 0xFA / 0xFC / 0xFB を送ります。
- **Device** — 出力先デバイス(名前で保持。フォーカスを当てると一覧を再スキャン)。未選択の間はクロックを送りません
- **Clock** — 既定オフ。オフにすると内部のティック蓄積もリセットされます
- ティックは `Time.deltaTime × BPM × 24 / 60` で蓄積するため、平均レートはフレームレートに依存しません
- BPMが0以下のときは送信しません
> 長時間のフリーズ直後にティックが一気に吐き出されないよう、**1フレームで送る本数は24ティック(1拍分)が上限**です。超過分は捨てられます。
> クロックとトランスポートは併用できます(受信側は Start のあと次の 0xF8 から走り始めます)。
### MIDI LED `midi_led`
URL: https://synapserack.com/ja/docs/nodes/io/midi_led/
- Inputs: Color(Color), Note(float), Trig(trigger)
- Settable: noteInput(float), currentDeviceName(string), currentPresetName(string), currentChannel(int), currentNote(int)
RGBパッドを持つMIDIコントローラのLEDを、グラフから色で制御するノードです。`Color` に入った色をベロシティ値へ変換し、指定した Channel / Note へ **NoteOn** として送ります。送信は `Color` が変化したときと `Trig` の発火時です。
- **Device** — 出力先デバイス(名前で保持。フォーカスを当てると一覧を再スキャン)
- **Preset** — 機種ごとのカラーパレット定義。選ぶと、入力色とパレット各色のRGB距離を比べて**いちばん近い色のベロシティ番号**を送ります
- **Channel** — 0〜15にクランプ(既定0)
- **Note** — 0〜127にクランプ(既定36)
- **Learn** — 押してからパッドを叩くと、その NoteOn の Channel / Note を取り込みます
- ノード上のカラーピッカーで、接続していないときの色を直接決められます(既定は緑)
> **Preset を `(None)` のままにすると色は再現されません。** プリセット無しの場合は色の輝度(グレースケール)× 127 をそのままベロシティとして送るだけなので、機種のパレット番号とは無関係な色が点きます。
> プリセットは `StreamingAssets/MidiPresets/` 内のJSONを起動時に読むしくみで、同梱されているのは **APC40mkII** です。他機種はJSONを追加すれば増やせます。
> `Note` 入力に接続した値が変わっても、それだけでは送信されません(ノート番号を更新するだけ)。番号を変えたら `Trig` で送ってください。
### MIDI Note In `midi_note_in`
URL: https://synapserack.com/ja/docs/nodes/io/midi_note_in/
Summary: Pad / key note to velocity, gate and trigger (with Learn)
- Outputs: Velocity(float), Trigger(trigger)
- Settable: currentChannel(int), currentNumber(int)
パッドや鍵盤のノートを信号源としてグラフに引き込むノードです。設定した **Channel と Note の両方が一致した** NoteOn を受けると、`Velocity` にベロシティを **0〜1**(受信値÷127)で出力し、同時に `Trigger` を発火します。NoteOff を受けると `Velocity` は **0** に戻るので、ゲートとしてもそのまま使えます。
- **Channel** — 0〜15にクランプ(既定0)
- **Note** — 0〜127にクランプ(既定36)
- **Learn** — 押してからパッドを叩くと、その NoteOn の Channel / Note が取り込まれて自動で学習を終えます。もう一度押せばキャンセルできます
> デバイスの指定はありません。**有効なすべてのMIDI入力デバイス**の一致ノートを拾います。特定のコントローラだけに反応させたいときは、システム設定のMIDI入力デバイスのトグルで他を無効にしてください。
> ベロシティ0のNoteOnはNoteOff扱いです(`Velocity` は0になり、`Trigger` は発火しません)。
### MIDI Output `midi_output`
URL: https://synapserack.com/ja/docs/nodes/io/midi_output/
Summary: MIDI Out
- Inputs: Val(float), Trig(trigger), Number(float)
- Settable: valueInput(float), numberInput(float), currentDeviceName(string), currentChannel(int), currentNumber(int), currentRawValue(bool)
`Val` の値が変化したとき、または `Trig` が発火したときに、選択したMIDI出力デバイスへ1メッセージを送ります。送るメッセージの種類は `Type` ドロップダウンで選びます。既定では `Val` の 0〜1 が 0〜127 に正規化されます。
- **Device** — 出力先デバイス。名前で保持されるので、抜き挿しして戻せば選択が復帰します(フォーカスを当てると一覧を再スキャンします)
- **Type** — `NoteOn` / `NoteOff` / `ControlChange` / `ProgramChange` / `PitchBend` / `ChannelPressure` / `PolyPressure` の7種
- **Channel** — 0〜15にクランプ
- **Number** — 0〜127にクランプ。ノート番号・CC番号・プログラム番号として使われます
- **Raw value (0-127)** — オンにすると `Val` を正規化せず、丸めた整数をそのまま値として送ります(PitchBend時は0〜16383)。APC40のリング種類CCのような**離散値の直接指定**用です
- **Learn** — 押してからパッドを叩くかノブを回すと、その NoteOn / CC の Channel と Number が取り込まれます
## Typeごとの値の扱い
- **NoteOn / ControlChange / ChannelPressure / PolyPressure** — 値は0〜127(Rawオフなら `Val × 127`)
- **NoteOff** — 値は使いません(`Number` のノートをオフにするだけ)
- **ProgramChange** — 値は使わず、`Number` がプログラム番号になります
- **PitchBend** — 14bit。Rawオフなら `Val × 16383` なので、**0.5がベンドなしの中央** です。`Number` は使いません
> `Number` 入力に接続した値が変わっても、それだけでは送信されません(番号を更新するだけ)。番号を変えてから `Val` か `Trig` で送る流れになります。
### OFL Fixture `ofl_fixture`
URL: https://synapserack.com/ja/docs/nodes/io/ofl_fixture/
- Inputs: Pan(float), Tilt(float), Dimmer(float), Color(Color), Zoom(float), Strobe(float)
- Outputs: DMX Out(DMXFrame)
- Settable: panInput(float), tiltInput(float), dimmerInput(float), zoomInput(float), strobeInput(float)
Open Fixture Library(OFL)形式のフィクスチャJSONを読み込み、灯体1台分のDMXフレームを出力するノードです。`Load Fixture JSON...` でJSONを選ぶとモード一覧が読み込まれ、選択モードのチャンネル定義に従って、各入力の値が対応するチャンネルへ書き込まれます。入力はすべて0〜1にクランプされ、DMX値は `値 × 255` で求めます。
- **Address** — スタートアドレス。1〜512にクランプ(内部では0起点に変換)
- **Mode** — フィクスチャJSONが持つモードから選択。モードのチャンネル数が下のラベルに表示されます
- 出力フレームのマスクは **スタートアドレスから選択モードのチャンネル数分だけ** 有効になります。だから複数台を [Universe](/ja/docs/nodes/io/dmx_universe/) でマージしても互いのチャンネルを潰しません
- **3D Simulation**(折りたたみ)— シミュレータ上の Position / Rotation / Scale と、Pan Range(既定540)/ Tilt Range(既定180)/ Pan Offset / Tilt Offset / Invert Pan / Invert Tilt。ここの値は[3Dシミュレータ](/ja/docs/nodes/io/dmx_simulation_output/)の見た目にのみ影響し、DMX出力値は変えません
## チャンネル種別ごとの変換
- **Pan / Tilt / Dimmer / Zoom** — 対応する入力をそのまま0〜255へ
- **Red / Green / Blue** — Color入力のR/G/B成分
- **Cyan / Magenta / Yellow** — R/G/Bの反転(`1 - 成分`)
- **White** — R/G/Bの最小値
- **Color Wheel** — ホイールの各エントリの色とColor入力のRGB距離を比べ、いちばん近いエントリのDMX値
- **Strobe** — Strobe入力が0.01未満なら定義中の `Open` レンジの最小値、それ以上なら `Strobe` レンジの min〜max へ線形マッピング(該当レンジが無ければ入力値をそのまま0〜255へ)
> **Pan Fine / Tilt Fine / Amber / UV は常に0** を出力します(16bit細分と追加色は未実装)。16bit対応機は粗い方のチャンネルだけが動きます。
> 入力の既定値は Pan・Tilt・Zoom が0.5、Dimmer が1、Color が白です。フィクスチャJSONを読み込む前は**マスクが全て無効な空フレーム**を出力するので、下流には何も反映されません。
> 読み込んだフィクスチャJSONは**プロジェクトファイルの中に丸ごと保存**されます。別のマシンで開いても元のJSONファイルは不要です。
### OSCBoolInput `OSCBoolInput`
URL: https://synapserack.com/ja/docs/nodes/io/OSCBoolInput/
- Outputs: Bool Output(bool)
- Settable: currentOSCAddress(string)
受信したOSCメッセージのうち、**アドレスがノードの文字列と完全一致**したものだけを拾い、その **第1引数がbool型のときに限って** `Bool Output` へ出力します。
- ノードのテキストフィールドに監視するOSCアドレスを入力します(前方一致・ワイルドカードは効きません)
- 受信ポートはアプリ側のOSC設定で指定します(既定 **3170**)。OSC入力そのものをオフにしていると、このノードには何も届きません
- 第1引数がbool以外のメッセージは無視されます。1/0やtrue/falseを数値で送ってくる送信側の場合は [OSCIntInput](/ja/docs/nodes/io/OSCIntInput/) や [OSCFloatInput](/ja/docs/nodes/io/OSCFloatInput/) を使ってください
### OSCBoolOutput `OSCBoolOutput`
URL: https://synapserack.com/ja/docs/nodes/io/OSCBoolOutput/
- Inputs: In(bool), Trigger(trigger)
- Settable: currentOSCAddress(string)
`In` に入ってきたbool値を、ノードに書いたOSCアドレス宛に **引数1個のOSCメッセージ** として送信します。送信のきっかけは2つで、`In` の値が変化したときに即送信し、加えて `Trigger` が発火したときにも**その時点の最新値**をもう一度送ります(同じ値を再送できます)。
- ノードのテキストフィールドに送信先OSCアドレスを入力します
- 送信先IPとポートはアプリ側のOSC設定で指定します(既定 **127.0.0.1:3171**)。OSC出力をオフにしていると送信されません
> `Trigger` だけで送る使い方では、`In` が一度も変化していない間は初期値の `false` が送られます。
### OSCFloatInput `OSCFloatInput`
URL: https://synapserack.com/ja/docs/nodes/io/OSCFloatInput/
- Outputs: Float Output(float)
- Settable: currentOSCAddress(string)
受信したOSCメッセージのうち、**アドレスがノードの文字列と完全一致**したものだけを拾い、その **第1引数がfloat型のときに限って** `Float Output` へ出力します。値のスケーリングやスムージングは一切かかりません(受け取った数値がそのまま出ます)。
- ノードのテキストフィールドに監視するOSCアドレスを入力します(前方一致・ワイルドカードは効きません)
- 受信ポートはアプリ側のOSC設定で指定します(既定 **3170**)。OSC入力そのものをオフにしていると、このノードには何も届きません
- 第1引数の型が違うメッセージ(intなど)は無視されます。int値を受けたい場合は [OSCIntInput](/ja/docs/nodes/io/OSCIntInput/) を使ってください
### OSCFloatOutput `OSCFloatOutput`
URL: https://synapserack.com/ja/docs/nodes/io/OSCFloatOutput/
- Inputs: In(float), Trigger(trigger)
- Settable: currentOSCAddress(string)
`In` に入ってきたfloat値を、ノードに書いたOSCアドレス宛に **引数1個のOSCメッセージ** として送信します。送信のきっかけは2つで、`In` の値が変化したときに即送信し、加えて `Trigger` が発火したときにも**その時点の最新値**をもう一度送ります(値が変わっていなくても送れます)。
- ノードのテキストフィールドに送信先OSCアドレスを入力します
- 送信先IPとポートはアプリ側のOSC設定で指定します(既定 **127.0.0.1:3171**)。OSC出力をオフにしていると送信されません
- 送信レートの制限はありません。毎フレーム変化する値をつなぐとフレームレートぶんのメッセージが出ます
> `Trigger` だけで送る使い方では、`In` が一度も変化していない間は初期値の `0` が送られます。
### OSCIntInput `OSCIntInput`
URL: https://synapserack.com/ja/docs/nodes/io/OSCIntInput/
- Outputs: Int Output(int)
- Settable: currentOSCAddress(string)
受信したOSCメッセージのうち、**アドレスがノードの文字列と完全一致**したものだけを拾い、その **第1引数がint型のときに限って** `Int Output` へ出力します。
- ノードのテキストフィールドに監視するOSCアドレスを入力します(前方一致・ワイルドカードは効きません)
- 受信ポートはアプリ側のOSC設定で指定します(既定 **3170**)。OSC入力そのものをオフにしていると、このノードには何も届きません
- 第1引数の型が違うメッセージ(floatなど)は無視されます。float値を受けたい場合は [OSCFloatInput](/ja/docs/nodes/io/OSCFloatInput/) を使ってください
### OSCIntOutput `OSCIntOutput`
URL: https://synapserack.com/ja/docs/nodes/io/OSCIntOutput/
- Inputs: In(int), Trigger(trigger)
- Settable: currentOSCAddress(string)
`In` に入ってきたint値を、ノードに書いたOSCアドレス宛に **引数1個のOSCメッセージ** として送信します。送信のきっかけは2つで、`In` の値が変化したときに即送信し、加えて `Trigger` が発火したときにも**その時点の最新値**をもう一度送ります。
- ノードのテキストフィールドに送信先OSCアドレスを入力します
- 送信先IPとポートはアプリ側のOSC設定で指定します(既定 **127.0.0.1:3171**)。OSC出力をオフにしていると送信されません
> `Trigger` だけで送る使い方では、`In` が一度も変化していない間は初期値の `0` が送られます。
### Output `dmx_simulation_output`
URL: https://synapserack.com/ja/docs/nodes/io/dmx_simulation_output/
Summary: Simulation Output
- Inputs: DMX In(DMXFrame)
`DMX In` で受け取ったDMXフレームを、内蔵の3Dシミュレータへ配信します。ネットワークには何も送らないので、灯体が手元にない状態でPan/Tilt/色の当たりを付けるのに使います。実機へ送るには [ArtNet Output](/ja/docs/nodes/io/artnet_output/) を別途つないでください。
- **Enabled** — 既定オン。オフの間は配信しません
- シミュレータに渡すのはフレームの512チャンネルの値のみで、マスクは使いません
- 配信先の灯体は [OFL Fixture](/ja/docs/nodes/io/ofl_fixture/) が自分の `3D Simulation` 設定(位置・回転・スケール、Pan/Tiltの範囲とオフセット)に従って生成します
### Pad Ripple `midi_pad_ripple`
URL: https://synapserack.com/ja/docs/nodes/io/midi_pad_ripple/
Summary: LED ripple across the pad grid from the pressed pad
- Inputs: Speed(float), Burst(trigger)
- Settable: speedInput(float), currentDeviceName(string), currentChannel(int), currentNoteOffset(int), currentCols(int), currentRows(int), currentVelCore(int), currentVelMid(int), currentVelDim(int)
RGBパッドを持つコントローラのグリッドを小さなディスプレイとして扱い、**押したパッドを中心に光の波紋を広げる**ノードです。グリッド範囲内の NoteOn を受けるとその位置から波紋が生まれ、毎フレーム各パッドの強度を計算して、値が変わったパッドにだけ NoteOn を送ります(差分送信)。波紋は同時に何本でも走り、重なった部分は強度の最大値で合成されます。
ノート配置は `note = Note Offset + 行 × Cols + 列` を前提にしています。
- **Device** — 出力先デバイス(名前で保持)
- **Channel** — 0〜15、**Note Offset** — 0〜127
- **Cols / Rows** — グリッドの列数・行数。それぞれ1〜16(既定 8 × 5)
- **Vel Core / Vel Mid / Vel Dim** — 波頭・中間・尾に使うベロシティ=機種のカラーパレット番号。0〜127(既定は APC40 mk2 の 白3 / 橙9 / 赤5)
- **Speed** — 波紋の広がる速さ(パッド/秒)。0.5〜60にクランプ(既定10)
- **Burst** — グリッド中央から波紋を1つ出すトリガー。パッドが手元になくても動作確認できます
強度からベロシティへの変換は3段階です。0.66超で Core、0.33超で Mid、0.06超で Dim、それ以下は消灯(velocity 0)になります。
> 入力側のデバイス指定はありません。**有効なすべてのMIDI入力デバイス**の、指定Channelかつグリッド範囲内のノートが波紋の中心になります。
> Device / Channel / Note Offset / グリッドサイズを変更すると、**旧設定で点灯していたパッドを消灯してから**キャッシュを作り直します。ノードを削除したときも同様に全消灯を試みます(デバイスが既に抜かれていた場合は点いたままになることがあります)。
### Universe `dmx_universe`
URL: https://synapserack.com/ja/docs/nodes/io/dmx_universe/
- Inputs: DMX 1(DMXFrame), DMX 2(DMXFrame), DMX 3(DMXFrame), DMX 4(DMXFrame), DMX 5(DMXFrame), DMX 6(DMXFrame), DMX 7(DMXFrame), DMX 8(DMXFrame), DMX 9(DMXFrame), DMX 10(DMXFrame), DMX 11(DMXFrame), DMX 12(DMXFrame), DMX 13(DMXFrame), DMX 14(DMXFrame), DMX 15(DMXFrame), DMX 16(DMXFrame)
- Outputs: DMX Out(DMXFrame)
複数のフィクスチャノードが出力するDMXフレームを、1本のユニバースにまとめるマージノードです。マージ方式は **HTP(Highest Takes Precedence)** で、512チャンネルそれぞれについて、**マスクが有効な入力だけ**を対象に最大値を採ります。マスクが立っていない入力はそのチャンネルの比較に参加しないので、アドレスが重ならないフィクスチャ同士は互いを潰しません。
- 入力ポートは内部的に **16本固定**。ノードUIの `Inputs` で表示本数を1〜16の範囲で切り替えます(既定4、`+` / `-` ボタンでも増減)
- 出力 `DMX Out` は512チャンネル**全体**が有効なフレームです
- マージと出力は、いずれかの入力が更新されたフレームだけ `LateUpdate` で実行されます
> 表示本数を減らして隠したポートも、接続が残っていればマージ対象のままです(表示のみの切り替えで、接続そのものは切れません)。
## Layer (12 nodes)
レイヤーの取得・制御。不透明度や表示切り替えをノードから操作する。
### LayerBlendMode `LayerBlendMode`
URL: https://synapserack.com/ja/docs/nodes/layer/LayerBlendMode/
- Inputs: BlendMode(int)
- Outputs: BlendMode(int)
- Settable: intInput(int), currentBlend(int), selectedLayerIndex(int)
選択レイヤーのブレンドモードを番号で切り替えます。
> Layer系ノードの出力は入力のエコーではなく、ドロップダウンで選んだレイヤーの**実際の値**です。入力に何も挿さなくても、LayerウィンドウやMIDIで動かした値が出力に流れてくるので、レイヤーの状態を他のノードの制御に使えます(書き込み口と読み出し口を兼ねる双方向仕様)。
## 動画
### LayerFx `LayerFx`
URL: https://synapserack.com/ja/docs/nodes/layer/LayerFx/
- Inputs: Enable(bool)
- Settable: enableInput(bool), selectedLayerIndex(int), isOn(bool)
選択レイヤーのエフェクトチェーンそのものです。**FxShader系のノードはここに挿します**。`Enable` でチェーン全体のオン/オフを切り替えます(切り替えると内部でチェーンを組み直します)。出力ポートは持ちません。
### LayerInOut `LayerInOut`
URL: https://synapserack.com/ja/docs/nodes/layer/LayerInOut/
- Inputs: RenderTexture Input(RenderTexture)
- Outputs: RenderTexture Output(RenderTexture)
- Settable: selectedIndex(int), selectedLayerGUID(string)
選択レイヤーの映像をノードグラフへ引き込み、加工した映像を同じレイヤーへ戻す出入口です。
> Layer系ノードの出力は入力のエコーではなく、ドロップダウンで選んだレイヤーの**実際の値**です。入力に何も挿さなくても、LayerウィンドウやMIDIで動かした値が出力に流れてくるので、レイヤーの状態を他のノードの制御に使えます(書き込み口と読み出し口を兼ねる双方向仕様)。
### LayerOpacity `LayerOpacity`
URL: https://synapserack.com/ja/docs/nodes/layer/LayerOpacity/
- Inputs: Opacity(float)
- Outputs: Opacity(float)
- Settable: floatInput(float), currentOpacity(float), selectedLayerIndex(int)
選択レイヤーの不透明度を操作・購読します。
> Layer系ノードの出力は入力のエコーではなく、ドロップダウンで選んだレイヤーの**実際の値**です。入力に何も挿さなくても、LayerウィンドウやMIDIで動かした値が出力に流れてくるので、レイヤーの状態を他のノードの制御に使えます(書き込み口と読み出し口を兼ねる双方向仕様)。
### LayerPosition `LayerPosition`
URL: https://synapserack.com/ja/docs/nodes/layer/LayerPosition/
- Inputs: Position X(float), Position Y(float), Position Z(float)
- Outputs: Position X(float), Position Y(float), Position Z(float)
- Settable: inputX(float), inputY(float), inputZ(float), selectedLayerIndex(int)
選択レイヤーの位置(X / Y / Z)を操作・購読します。
> Layer系ノードの出力は入力のエコーではなく、ドロップダウンで選んだレイヤーの**実際の値**です。入力に何も挿さなくても、LayerウィンドウやMIDIで動かした値が出力に流れてくるので、レイヤーの状態を他のノードの制御に使えます(書き込み口と読み出し口を兼ねる双方向仕様)。
### LayerRectMask `LayerRectMask`
URL: https://synapserack.com/ja/docs/nodes/layer/LayerRectMask/
- Inputs: Left(float), Right(float), Top(float), Bottom(float), Softness X(float), Softness Y(float)
- Outputs: Left(float), Right(float), Top(float), Bottom(float), Softness X(float), Softness Y(float)
- Settable: inputLeft(float), inputRight(float), inputTop(float), inputBottom(float), inputSoftnessX(float), inputSoftnessY(float), selectedLayerIndex(int)
選択レイヤーを矩形で切り抜きます。上下左右の位置に加えて、境界のぼかしを X / Y 別に指定できます。
> Layer系ノードの出力は入力のエコーではなく、ドロップダウンで選んだレイヤーの**実際の値**です。入力に何も挿さなくても、LayerウィンドウやMIDIで動かした値が出力に流れてくるので、レイヤーの状態を他のノードの制御に使えます(書き込み口と読み出し口を兼ねる双方向仕様)。
### LayerRotation `LayerRotation`
URL: https://synapserack.com/ja/docs/nodes/layer/LayerRotation/
- Inputs: Rotation X(float), Rotation Y(float), Rotation Z(float)
- Outputs: Rotation X(float), Rotation Y(float), Rotation Z(float)
- Settable: inputX(float), inputY(float), inputZ(float), selectedLayerIndex(int)
選択レイヤーの回転(X / Y / Z)を操作・購読します。
> Layer系ノードの出力は入力のエコーではなく、ドロップダウンで選んだレイヤーの**実際の値**です。入力に何も挿さなくても、LayerウィンドウやMIDIで動かした値が出力に流れてくるので、レイヤーの状態を他のノードの制御に使えます(書き込み口と読み出し口を兼ねる双方向仕様)。
### LayerScale `LayerScale`
URL: https://synapserack.com/ja/docs/nodes/layer/LayerScale/
- Inputs: Scale X(float), Scale Y(float)
- Outputs: Scale X(float), Scale Y(float)
- Settable: inputX(float), inputY(float), selectedLayerIndex(int)
選択レイヤーの拡大率(X / Y)を操作・購読します。
> Layer系ノードの出力は入力のエコーではなく、ドロップダウンで選んだレイヤーの**実際の値**です。入力に何も挿さなくても、LayerウィンドウやMIDIで動かした値が出力に流れてくるので、レイヤーの状態を他のノードの制御に使えます(書き込み口と読み出し口を兼ねる双方向仕様)。
### LayerSeek `LayerSeek`
URL: https://synapserack.com/ja/docs/nodes/layer/LayerSeek/
- Inputs: Position(float), Seek Trigger(trigger)
- Outputs: Position(float)
- Settable: floatInput(float), currentPosition(float), selectedLayerIndex(int), continuousSeek(bool)
選択レイヤーの再生位置を操作します。`Seek Trigger` を叩いた瞬間だけ飛ぶのが既定で、`continuousSeek` を有効にすると `Position` の変化に常時追従します(スクラブになります)。
> Layer系ノードの出力は入力のエコーではなく、ドロップダウンで選んだレイヤーの**実際の値**です。入力に何も挿さなくても、LayerウィンドウやMIDIで動かした値が出力に流れてくるので、レイヤーの状態を他のノードの制御に使えます(書き込み口と読み出し口を兼ねる双方向仕様)。
### LayerSpeed `LayerSpeed`
URL: https://synapserack.com/ja/docs/nodes/layer/LayerSpeed/
- Inputs: Speed(float)
- Outputs: Speed(float)
- Settable: floatInput(float), currentSpeed(float), selectedLayerIndex(int)
選択レイヤーの再生速度を操作・購読します。
> Layer系ノードの出力は入力のエコーではなく、ドロップダウンで選んだレイヤーの**実際の値**です。入力に何も挿さなくても、LayerウィンドウやMIDIで動かした値が出力に流れてくるので、レイヤーの状態を他のノードの制御に使えます(書き込み口と読み出し口を兼ねる双方向仕様)。
### PathToLayerMedia `PathToLayerMedia`
URL: https://synapserack.com/ja/docs/nodes/layer/PathToLayerMedia/
- Inputs: File Path(string)
- Settable: filePathInput(string), selectedLayerIndex(int), lastFilePath(string), statusText(string)
ファイルパスの文字列を渡して、選択レイヤーに素材を読み込ませます。最後に読んだパスと状態文字列を保持します。
### Waveform `LayerWaveform`
URL: https://synapserack.com/ja/docs/nodes/layer/LayerWaveform/
- Settable: selectedLayerId(string), playbackPosition(float), duration(float), showLow(bool), showMid(bool), showHigh(bool)
選択レイヤーの音声波形を表示します。低域 / 中域 / 高域の表示を個別に切り替えられます。ポートを持たない表示専用ノードです。
## Math (16 nodes)
数値の計算。四則演算から丸め・補間まで。
### Abs `abs`
URL: https://synapserack.com/ja/docs/nodes/math/abs/
- Inputs: A(float), B(float)
- Outputs: Result(float)
- Settable: currentValueA(float), currentValueB(float)
A の絶対値を出します。
> **B ポートは二項演算の基底クラス由来で、Abs では一切使われません**。挿しても何も起きません。
> Mathノードは float を受けて float を返す形で、ツマミの値を別の値に変換する中継として使います。全体像は [Math(計算)](/ja/docs/module/math) を参照。
### Add `add`
URL: https://synapserack.com/ja/docs/nodes/math/add/
Summary: Add Float
- Inputs: A(float), B(float)
- Outputs: Result(float)
- Settable: currentValueA(float), currentValueB(float)
A と B を足して `Result` から流します。
> Mathノードは float を受けて float を返す形で、ツマミの値を別の値に変換する中継として使います。全体像は [Math(計算)](/ja/docs/module/math) を参照。
### Average `average`
URL: https://synapserack.com/ja/docs/nodes/math/average/
- Inputs: A(float), B(float)
- Outputs: Result(float)
- Settable: currentValueA(float), currentValueB(float)
A と B の平均を出します。
> Mathノードは float を受けて float を返す形で、ツマミの値を別の値に変換する中継として使います。全体像は [Math(計算)](/ja/docs/module/math) を参照。
### Ceil `ceil`
URL: https://synapserack.com/ja/docs/nodes/math/ceil/
- Inputs: A(float), Trigger(trigger)
- Outputs: Result(float)
- Settable: currentValueA(float)
A を切り上げます。
> `Trigger` はサンプル&ホールドではありません。A は常時流れていて値が変わるたびに Result が出ます。Trigger は「**今の結果をもう一度下流へ押し出す**」だけで、拍に合わせて下流を再発火させたいときに使います。
> Mathノードは float を受けて float を返す形で、ツマミの値を別の値に変換する中継として使います。全体像は [Math(計算)](/ja/docs/module/math) を参照。
### Divide `divide`
URL: https://synapserack.com/ja/docs/nodes/math/divide/
- Inputs: A(float), B(float)
- Outputs: Result(float)
- Settable: currentValueA(float), currentValueB(float)
A ÷ B を `Result` から流します。
> **B が 0 のときは出力を更新しません**。NaN や 0 を出すのではなく、直前の値が残り続けます。「止まったように見える」ときはゼロ割りを疑ってください。
> Mathノードは float を受けて float を返す形で、ツマミの値を別の値に変換する中継として使います。全体像は [Math(計算)](/ja/docs/module/math) を参照。
### Floor `floor`
URL: https://synapserack.com/ja/docs/nodes/math/floor/
- Inputs: A(float), Trigger(trigger)
- Outputs: Result(float)
- Settable: currentValueA(float)
A を切り捨てます。
> `Trigger` はサンプル&ホールドではありません。A は常時流れていて値が変わるたびに Result が出ます。Trigger は「**今の結果をもう一度下流へ押し出す**」だけで、拍に合わせて下流を再発火させたいときに使います。
> Mathノードは float を受けて float を返す形で、ツマミの値を別の値に変換する中継として使います。全体像は [Math(計算)](/ja/docs/module/math) を参照。
### Fract `fract`
URL: https://synapserack.com/ja/docs/nodes/math/fract/
- Inputs: A(float), Trigger(trigger)
- Outputs: Result(float)
- Settable: currentValueA(float)
A の小数部分だけを取り出します。増え続ける値を入れると 0〜1 を繰り返す信号を作れます。
> `Trigger` はサンプル&ホールドではありません。A は常時流れていて値が変わるたびに Result が出ます。Trigger は「**今の結果をもう一度下流へ押し出す**」だけで、拍に合わせて下流を再発火させたいときに使います。
> Mathノードは float を受けて float を返す形で、ツマミの値を別の値に変換する中継として使います。全体像は [Math(計算)](/ja/docs/module/math) を参照。
### Lerp `lerp`
URL: https://synapserack.com/ja/docs/nodes/math/lerp/
- Inputs: A(float), B(float), T(float), Trigger(trigger)
- Outputs: Out(float)
- Settable: inputA(float), inputB(float), inputT(float), valueA(float), valueB(float), valueT(float)
A と B を T で線形補間します。
> **T は 0〜1 にクランプされます**。範囲外を入れても端で止まります。
> Mathノードは float を受けて float を返す形で、ツマミの値を別の値に変換する中継として使います。全体像は [Math(計算)](/ja/docs/module/math) を参照。
### Max `max`
URL: https://synapserack.com/ja/docs/nodes/math/max/
- Inputs: A(float), B(float)
- Outputs: Result(float)
- Settable: currentValueA(float), currentValueB(float)
A と B の大きいほうを出します。値の下限止めに使えます。
> Mathノードは float を受けて float を返す形で、ツマミの値を別の値に変換する中継として使います。全体像は [Math(計算)](/ja/docs/module/math) を参照。
### Min `min`
URL: https://synapserack.com/ja/docs/nodes/math/min/
- Inputs: A(float), B(float)
- Outputs: Result(float)
- Settable: currentValueA(float), currentValueB(float)
A と B の小さいほうを出します。値の頭打ちに使えます。
> Mathノードは float を受けて float を返す形で、ツマミの値を別の値に変換する中継として使います。全体像は [Math(計算)](/ja/docs/module/math) を参照。
### Minus `minus`
URL: https://synapserack.com/ja/docs/nodes/math/minus/
Summary: Minus Float
- Inputs: A(float), B(float)
- Outputs: Result(float)
- Settable: currentValueA(float), currentValueB(float)
A から B を引いて `Result` から流します。
> Mathノードは float を受けて float を返す形で、ツマミの値を別の値に変換する中継として使います。全体像は [Math(計算)](/ja/docs/module/math) を参照。
### Modulo `modulo`
URL: https://synapserack.com/ja/docs/nodes/math/modulo/
Summary: Modulo Float
- Inputs: A(float), B(float)
- Outputs: Result(float)
- Settable: currentValueA(float), currentValueB(float)
A を B で割った余りを出します。ループするカウンタを作るときに使います。
> Mathノードは float を受けて float を返す形で、ツマミの値を別の値に変換する中継として使います。全体像は [Math(計算)](/ja/docs/module/math) を参照。
### Multiply `multiply`
URL: https://synapserack.com/ja/docs/nodes/math/multiply/
- Inputs: A(float), B(float)
- Outputs: Result(float)
- Settable: currentValueA(float), currentValueB(float)
A と B を掛けて `Result` から流します。
> Mathノードは float を受けて float を返す形で、ツマミの値を別の値に変換する中継として使います。全体像は [Math(計算)](/ja/docs/module/math) を参照。
### Pow `pow`
URL: https://synapserack.com/ja/docs/nodes/math/pow/
Summary: Power
- Inputs: A(float), B(float)
- Outputs: Result(float)
- Settable: currentValueA(float), currentValueB(float)
A の B 乗を出します。
> Mathノードは float を受けて float を返す形で、ツマミの値を別の値に変換する中継として使います。全体像は [Math(計算)](/ja/docs/module/math) を参照。
### Round `round`
URL: https://synapserack.com/ja/docs/nodes/math/round/
- Inputs: A(float), Trigger(trigger)
- Outputs: Result(float)
- Settable: currentValueA(float)
A を四捨五入します。
> `Trigger` はサンプル&ホールドではありません。A は常時流れていて値が変わるたびに Result が出ます。Trigger は「**今の結果をもう一度下流へ押し出す**」だけで、拍に合わせて下流を再発火させたいときに使います。
> Mathノードは float を受けて float を返す形で、ツマミの値を別の値に変換する中継として使います。全体像は [Math(計算)](/ja/docs/module/math) を参照。
### Trunc `trunc`
URL: https://synapserack.com/ja/docs/nodes/math/trunc/
- Inputs: A(float), Trigger(trigger)
- Outputs: Result(float)
- Settable: currentValueA(float)
A を 0 方向へ切り捨てます。
> `Trigger` はサンプル&ホールドではありません。A は常時流れていて値が変わるたびに Result が出ます。Trigger は「**今の結果をもう一度下流へ押し出す**」だけで、拍に合わせて下流を再発火させたいときに使います。
> Mathノードは float を受けて float を返す形で、ツマミの値を別の値に変換する中継として使います。全体像は [Math(計算)](/ja/docs/module/math) を参照。
## Operation (11 nodes)
比較・条件分岐・トリガー制御などのフロー制御。
### And `and`
URL: https://synapserack.com/ja/docs/nodes/operation/and/
- Inputs: A(float), B(float)
- Outputs: Result(float)
- Settable: currentValueA(float), currentValueB(float)
A と B を比べて、**両方とも 1.0 以上**なら `Result` に 1、そうでなければ 0 を出します。A か B のどちらかが変化するたびに再計算して出力します。
- 判定式は `A >= 1.0f && B >= 1.0f`
- ノード上には A・B の数値入力フィールドがあり、ポートを繋がずに直接値を打ち込めます
> **真偽の境界は 0 ではなく 1.0 です。** 0.5 は「偽」になります。Slider や LFO の 0〜1 出力をそのまま挿すと、値が 1.0 に到達した瞬間しか真になりません。しきい値を自分で決めたいときは [IFFilter](/ja/docs/nodes/operation/IFFilter/) を手前に置いてください。
### Combine `StringCombine`
URL: https://synapserack.com/ja/docs/nodes/operation/StringCombine/
- Inputs: String A(string), String B(string)
- Outputs: Combined String(string)
- Settable: inputA(string), inputB(string), separator(string), suffix(string)
`String A` と `String B` を `Separator` で繋ぎ、末尾に `Suffix` を足して `Combined String` へ出します。ファイルパスの組み立てなどに使えます。
- `Separator` の初期値は**半角スペース1つ**、`Suffix` の初期値は空文字
- **B が空のときは Separator も付きません**(`A + Suffix` になります)。Suffix は B の有無に関わらず常に付きます
- A・B・Separator・Suffix のいずれかが変わるたびに再出力されます
- ノード上には結合結果のプレビューだけが出ます。Separator と Suffix はコントロールUI側の設定項目です
### Counter `Counter`
URL: https://synapserack.com/ja/docs/nodes/operation/Counter/
- Inputs: Count Trigger(trigger), Reset Trigger(trigger), Min Value(int), Max Value(int), Loop(bool)
- Outputs: Count Output(int)
- Settable: minValueInput(int), maxValueInput(int), loopInput(bool), currentCount(int), minValue(int), maxValue(int), loop(bool)
`Count Trigger` が来るたびに数え、`Count Output` へ整数を出します。`Reset Trigger` では 0 ではなく **`Min Value` に戻ります**。
- 初期値は `Min Value` = 0、`Max Value` = 100、`Loop` = ON
- **カウントの向きは Max と Min の大小で決まります**。Max > Min なら +1、Max < Min なら -1、Max と Min が等しいと Count Trigger を撃っても値は動きません
- Loop が ON のとき、Max を超えると Min へ、Min を下回ると Max へ回り込みます
- ノード上に Count / Min / Max のフィールドと Loop トグルがあり、Count は直接書き換えられます
> **Loop が OFF のとき、値は止まりません。** 範囲外に出たときの処理はループ時にしか実装されていないため、Loop OFF では Max を超えて増え続けます(減る向きも同様)。上限で止めたい場合は後段に Math の Min / Max を置いて挟んでください。
### IFFilter `IFFilter`
URL: https://synapserack.com/ja/docs/nodes/operation/IFFilter/
- Inputs: Value A(float), Value B(float), Trigger(trigger)
- Outputs: True Output(float), False Output(float), True Trigger(trigger), False Trigger(trigger)
- Settable: floatInputA(float), floatInputB(float), currentValueA(float), currentValueB(float)
`Value A` と `Value B` を比べて、成立したら `True Output` と `True Trigger`、しなければ `False Output` と `False Trigger` へ出します。比較の種類はノード上のドロップダウンで選びます: `>` `<` `==` `!=` `>=` `<=`(初期値は `>`)。
- 判定は **A の変化・B の変化・`Trigger` 入力・条件の変更**のいずれでも走ります
- `==` / `!=` は浮動小数の比較なので、完全一致ではなく近似一致で判定します
- `Value A` / `Value B` / `Trigger` はポート横に直接値を打ち込めます
> **True / False どちらの出力にも「A の値」が流れます。** B は比較にしか使われないので、「条件を満たしたら B を流す」という動きにはなりません。値そのものを差し替えたいときは [Switch](/ja/docs/nodes/operation/SignalSwitch/) を使ってください。
### Init Trigger `InitTrigger`
URL: https://synapserack.com/ja/docs/nodes/operation/InitTrigger/
Summary: Fires once, Delay seconds after load
- Inputs: Delay(float)
- Outputs: Trigger(trigger)
- Settable: delayInput(float)
プロジェクトのロードやノード生成から **`Delay` 秒後に1回だけ** `Trigger` を発火します。初期値の流し込みや状態のリセットの入口として使います。Delay はロード直後の数フレームのゴタつき(モジュール生成・接続ハンドシェイク・デバイス初期化)を跨ぐための猶予です。
- `Delay` の初期値は **0.5 秒**。負の値は 0 に丸められます
- 経過時間は `Time.deltaTime`(スケール済み時刻)で進むため、一時停止中は進みません
- ノード上の **Fire** ボタンで手動発火できます(押すとタイマー経路は止まります)
> MIDI コントローラの初期化には使わないでください。再接続時の復元までカバーされる MIDI Bytes の「Send on connect」が用意されています。こちらはロード時の1回きりです。
### MediaBrowserIndex `MediaBrowserIndex`
URL: https://synapserack.com/ja/docs/nodes/operation/MediaBrowserIndex/
- Inputs: Index(int), Trigger(trigger)
- Outputs: File Path(string), Item Count(int)
- Settable: indexInput(int), currentIndex(int), selectedFolderGuid(string), currentPath(string), itemCount(int)
ノード上のドロップダウンで選んだ MediaBrowser のフォルダに対し、`Index` 番目の `File Path` と、そのフォルダの `Item Count` を出します。Counter と組み合わせると、拍ごとに素材を切り替える流れが作れます。
- ドロップダウンの **All**(初期値)は特定フォルダではなく、MediaBrowser の全コンテンツが対象になります
- **Index は剰余でラップします**(`Index % Count`。負の Index は末尾側へ回り込みます)。要素数を超えても先頭へ戻るだけで、クランプはされません
- `Trigger` を撃つと、Index を変えなくても現在の Index で出力し直します
- フォルダが空のとき `File Path` は空文字になります
- ノード上にはフォルダ・Index・Count・選択中ファイル名が表示されます
> **フォルダを切り替えると Index が 0 にリセットされます。** Counter などで進めていた位置は保持されません。
> パスが取れるのは Hap / Video / VLC / Image / Shader / Temp のコンテンツです。それ以外の種別では空文字になります。
### Not `not`
URL: https://synapserack.com/ja/docs/nodes/operation/not/
- Inputs: A(float), B(float)
- Outputs: Result(float)
- Settable: currentValueA(float), currentValueB(float)
A が **1.0 未満**なら `Result` に 1、1.0 以上なら 0 を出します。
- 判定式は `A < 1.0f`
- ノード上には A・B の数値入力フィールドがあり、ポートを繋がずに直接値を打ち込めます
> **B は判定に使われません。** 二項演算の基底クラスを継承しているためポートが生えているだけで、実装は A しか見ていません(B を動かしても結果の値は変わりません)。
> **真偽の境界は 0 ではなく 1.0 です。** 0.5 を入れると「偽」と判定され、Not の結果は 1 になります。
### Or `or`
URL: https://synapserack.com/ja/docs/nodes/operation/or/
- Inputs: A(float), B(float)
- Outputs: Result(float)
- Settable: currentValueA(float), currentValueB(float)
A と B のうち**どちらかが 1.0 以上**なら `Result` に 1、両方とも 1.0 未満なら 0 を出します。A か B のどちらかが変化するたびに再計算して出力します。
- 判定式は `A >= 1.0f || B >= 1.0f`
- ノード上には A・B の数値入力フィールドがあり、ポートを繋がずに直接値を打ち込めます
> **真偽の境界は 0 ではなく 1.0 です。** 0.5 は「偽」扱いになります。
### Random `random`
URL: https://synapserack.com/ja/docs/nodes/operation/random/
- Inputs: A(float), B(float), Trigger(trigger)
- Outputs: Result(float)
- Settable: currentValueA(float), currentValueB(float)
`Trigger` が来たときに `A`〜`B` の範囲で乱数を1つ作り、`Result` へ出します(内部では `Random.Range(A, B)`)。
- ノード上には A・B の数値入力フィールドがあり、ポートを繋がずに直接値を打ち込めます
> **A や B を動かしても振り直されます。** 二項演算の基底クラスを継承しているため、Trigger とは別に、A・B が変化した時点でも `Result` が更新されます。タイミングを Trigger だけに絞りたいときは、A / B には動かない値を入れてください。
### Switch `SignalSwitch`
URL: https://synapserack.com/ja/docs/nodes/operation/SignalSwitch/
Summary: Select one of 4 inputs by index
- Inputs: Index(float), A(float), B(float), C(float), D(float)
- Outputs: Selected(float)
- Settable: indexInput(float), inA(float), inB(float), inC(float), inD(float)
`Index` で `A` / `B` / `C` / `D` の4入力から1つを選び、`Selected` へ流します。
- Index は**小数を切り捨て、範囲外は端に丸めて**扱われます(-5 なら A、99 なら D)。Counter の出力をそのまま挿しても事故になりません
- Index・A〜D はポート横に直接値を打ち込めます。未接続時の定数値もプロジェクトに保存されます
- ノード上には現在の出力値を示すミニバーが表示されます
> **出力は毎フレーム送られます。** 値が変わっていなくても `Selected` へ出し続ける作りなので、下流に「変化したときだけ」を期待するノードを置くときは注意してください。
### Xor `xor`
URL: https://synapserack.com/ja/docs/nodes/operation/xor/
- Inputs: A(float), B(float)
- Outputs: Result(float)
- Settable: currentValueA(float), currentValueB(float)
A と B を真偽に落としてから比べ、**片方だけが真**なら `Result` に 1、両方真・両方偽なら 0 を出します。A か B のどちらかが変化するたびに再計算して出力します。
- 判定式は `(A >= 1.0f) != (B >= 1.0f)`
- ノード上には A・B の数値入力フィールドがあり、ポートを繋がずに直接値を打ち込めます
> **真偽の境界は 0 ではなく 1.0 です。** 0.5 は「偽」扱いになります。
## Output (5 nodes)
最終出力。外部ウィンドウ・Spout/Syphon送出など。
### MasterOutput `MasterOutput`
URL: https://synapserack.com/ja/docs/nodes/output/MasterOutput/
Summary: Master program texture (read-only)
- Outputs: Render Texture(RenderTexture)
全レイヤーを合成した最終的なプログラム映像を `Render Texture` としてグラフへ引き込みます。入力ポートを持たない読み取り専用ノードで、これがあることでマスター映像そのものを Spout / NDI / MediaOut / Fx へ流せます。
- RenderTexture の中身は毎フレーム更新されるため、参照の発行は1回だけです
- マスター解像度が変わると RT が作り直されるので、そのタイミングで参照を再発行します
- アプリのマスター出力が見つからない場合は警告を出して何も発行しません
### MasterResolution `MasterResolution`
URL: https://synapserack.com/ja/docs/nodes/output/MasterResolution/
Summary: Master output resolution X/Y (read-only)
- Outputs: Resolution X(int), Resolution Y(int)
- Settable: resX(int), resY(int)
マスター出力の解像度を `Resolution X` / `Resolution Y` として整数で出します。入力ポートを持たない読み取り専用ノードです。加工ノードの解像度を出力に追従させたり、解像度に応じて処理を切り替えたりする元ネタに使います。
- ノード生成時に現在値を1回出し、以後は解像度が変わるたびに出力します
- ノード上には `幅 x 高さ` が表示されます
### MediaOut `MediaOut`
URL: https://synapserack.com/ja/docs/nodes/output/MediaOut/
Summary: Publish graph output to MediaBrowser (Node live source)
- Inputs: Render Texture(RenderTexture)
- Settable: mediaName(string)
`Render Texture` に入ってきた映像を、MediaBrowser の中のライブ素材として公開します。外部アプリへ出すのではなく、SynapseRack の中で使い回すためのノードです。名前を付けておけば、MediaBrowser からレイヤーへ普通のクリップと同じように置けます。
- ノード上の **Media name** で表示名を編集します(初期値は `Media`)
- フル解像度のバッファは Global Settings の出力解像度で確保され、毎フレーム更新されます
- MediaBrowser のサムネイル用プレビューは 192×108 で、6フレームに1回(約10fps)だけ更新されます
- `Render Texture` 入力は1接続に制限されています
> **入力を切断・ミュートすると、公開している映像は黒にクリアされます。** 直前のフレームが出続けることはありません。ノード生成直後も黒で初期化されます。
> レイヤー側は表示名ではなくノードの内部IDで参照するため、名前を変えてもレイヤーの参照は切れません。
### NDISender `NDISender`
URL: https://synapserack.com/ja/docs/nodes/output/NDISender/
- Inputs: RenderTexture Input(RenderTexture)
- Settable: currentSendNDIName(string)
`RenderTexture Input` に入ってきた映像を NDI としてネットワークへ送出します。出力ポートはありません。
- ノード上の **NDI Name** が送信名になります(初期値は `OutputName`)。この名前が他アプリのソース一覧に出ます
- アルファは保持したまま(`keepAlpha`)、テクスチャを直接キャプチャする方式で送ります
- ノード上に `Sending: 送信名` のステータスが表示されます
### SpoutSender `SpoutSender`
URL: https://synapserack.com/ja/docs/nodes/output/SpoutSender/
- Inputs: RenderTexture Input(RenderTexture)
- Settable: currentSendName(string)
`RenderTexture Input` に入ってきた映像を、同一PC内の他アプリへ送ります。出力ポートはありません。
- **Windows では Spout、macOS では Syphon** として動作します。macOS ではノード名も `SyphonSender` として表示されます
- ノード上の **Name** が送信名になります(初期値は `OutputName`)
- ノード上には現在のプラットフォーム(`Spout (Windows)` / `Syphon (macOS)`)と `Sending: 送信名` が表示されます
> 保存キーとしてのノードidは Windows / macOS 共通で `SpoutSender` のままです(旧プロジェクトを読めるようにするため)。使わない側の名前は検索の別名として効きます。
## ProFx (6 nodes)
高品質な上位エフェクト群。
### Adaptive Mosaic `AdaptiveMosaic`
URL: https://synapserack.com/ja/docs/nodes/profx/AdaptiveMosaic/
Summary: Rearrange multiple inputs into a live mosaic and switch the featured one while performing
- Inputs: Shuffle(trigger), NextFocus(trigger), Beat(trigger), FocusSource(int), TileCount(int), FocusAmount(float), Transition(float), AutoBeat(bool), Pause(bool), FocusOutline(bool)
- Outputs: Out(RenderTexture)
- Settable: focusSourceInput(int), tileCountInput(int), focusAmountInput(float), transitionInput(float), autoBeatInput(bool), pauseInput(bool), focusOutlineInput(bool), currentTileCount(int), currentFocusSource(int), currentBeatInterval(int), currentFocusAmount(float), currentTransitionSeconds(float), currentRandomness(float), currentGap(float), currentRoundness(float), currentDrift(float), currentAccent(float), currentAutoBeat(bool), currentPauseMotion(bool), currentFocusOutline(bool)
複数の映像入力を1枚のモザイクに敷き詰め、Shuffleやビートでレイアウトと主役を組み替えるノードです。レイアウトは毎回その場で生成されます。まず主役(Hero)の矩形を5種のプリセットから選び、その周囲に残った4つの帯を面積比で割り当てて、面積の大きい矩形から順に再帰的に分割していきます。前のレイアウトから新しいレイアウトへは、矩形も表示ソースも滑らかにモーフィングします。
## ソース入力
ノードUIの `Sources` の `-` / `+` でSource入力ポートを増減します(**1〜12**、新規作成時は6本、1本未満にはできません)。ポート名は **Source 1, Source 2, ...**(PortIDは `source_0`, `source_1`, ...)で、1ポートにつき1接続です。
タイルには**実際に接続されているソースだけ**が割り当てられます。各タイルはFill方式(アスペクト維持で切り取り)で敷かれます。
## 演奏操作
- **Shuffle** — レイアウトだけを組み替えます(主役は変えません)
- **NextFocus** — 主役を次の**接続済み**ソースへ送ってからレイアウトを組み替えます
- **Beat** — ビートのパルス入力。`currentBeatInterval` 回(1〜16、初期値4)ごとにNextFocus相当の組み替えが起きます
- **Auto BPM** — ONでグローバルテンポのビートを自分でカウントします。初期値ON(`AutoBeat` 入力 / `autoBeatInput` / `currentAutoBeat`)
## パラメータ
- **TileCount** — タイル数。1〜32にクランプ、初期値18(`TileCount` 入力 / `tileCountInput` / `currentTileCount`)
- **FocusSource** — 主役のスロット番号(1始まり)。1〜12にクランプ、初期値1(`FocusSource` 入力 / `focusSourceInput` / `currentFocusSource`)
- **FocusAmount** — 主役タイルの大きさ。0〜1、初期値0.72(`FocusAmount` 入力 / `focusAmountInput` / `currentFocusAmount`)
- **Transition** — モーフィングの秒数。0〜4にクランプ(UIスライダーは0〜2)、初期値0.45(`Transition` 入力 / `transitionInput` / `currentTransitionSeconds`)
- **Pause** — ONでドリフトのアニメーションが止まります。初期値OFF(`Pause` 入力 / `pauseInput` / `currentPauseMotion`)
- **FocusOutline** — ONで主役タイルの縁がアクセント色(水色)に染まります。初期値OFF(`FocusOutline` 入力 / `focusOutlineInput` / `currentFocusOutline`)
- **currentRandomness** — レイアウト分割のばらつき。0〜1、初期値0.78。UIスライダー名は「Random」
- **currentGap** — タイル間の隙間。0〜0.04にクランプ(UIスライダーは0〜0.025)、初期値0.006
- **currentDrift** — タイル内のUVがゆっくり漂う量。0〜1、初期値0.18
- **currentRoundness** — タイル角の丸み。0〜0.3にクランプ、初期値0.09。**ノードUIにスライダーはありません**(スクリプト/コントロールから設定します)
- **currentAccent** — 主役の縁取りの強さ。0〜1、初期値0.75。FocusOutlineがOFFのときは無効です。こちらもノードUIにスライダーはありません
> **FocusAmountが0.05以下のときは主役タイルが作られません。** レイアウトは主役なしの均等分割になり、FocusOutlineも効かなくなります。
>
> **PauseがONの間はビートによる組み替えも止まります**(ドリフトだけでなくレイアウトの更新も抑止されます)。
>
> **Beat入力はAuto BPMのON/OFFに関わらず効きます。** Auto BPMはグローバルテンポの自動カウントだけを制御します。両方使うとビートが二重に数えられます。
>
> FocusSourceに未接続のスロットを指定した場合は、接続済みの最初のスロットに自動で寄せられます(FocusSourceの値自体も書き換わります)。
>
> 出力解像度はグローバル解像度です。レイアウトが未生成の間は黒を出力します。
### Depth Output `DepthOutput`
URL: https://synapserack.com/ja/docs/nodes/profx/DepthOutput/
- Inputs: Input Texture(RenderTexture), Enable(bool), Inference Every N Frames(int)
- Outputs: Depth Output(RenderTexture)
- Settable: enableInput(bool), skipFramesInput(int), isEnabled(bool), inferenceEveryNFrames(int)
入力映像から**奥行きを推定**し、手前と奥をグレースケールで出力します。
- **Enable** — 初期値ON。**OFFのときは入力がそのまま素通し**します(黒にはなりません)(`Enable` 入力 / `enableInput` / `isEnabled`)
- **Inference Every N Frames** — 何フレームに1回推論するか。最小1、初期値2。ノードUIのスライダーは1〜10(`Inference Every N Frames` 入力 / `skipFramesInput` / `inferenceEveryNFrames`)
> **出力は各推論ごとに、そのフレームの最小値〜最大値で0〜1に正規化された相対深度です。** 絶対距離ではないので、画面内の被写体構成が変わると同じ物体でも明るさが変わります。深度が一定の絵(min == max)では一律0.5になります。
>
> 推論を行わないフレームでは出力バッファは更新されず、直前の結果がそのまま残ります。
>
> 出力解像度はグローバル解像度です(入力に追従しません)。
>
> 推論のたびに深度テンソルをCPUへダウンロードし、一時Texture2Dを経由して転送しています。**負荷が高いので、重いと感じたらInference Every N Framesを上げてください。**
>
> 出力RTは起動から5フレーム後に確保・publishされます。入力が未接続のときは出力が黒で塗られます。
### Object Detection `YoloDetection`
URL: https://synapserack.com/ja/docs/nodes/profx/YoloDetection/
- Inputs: Input Texture(RenderTexture), Enable(bool), Confidence Threshold(float), Inference Every N Frames(int), Max Detections(int)
- Outputs: Mask Output(RenderTexture), detectedCenterX0(float), detectedCenterY0(float)
- Settable: enableInput(bool), confidenceInput(float), skipFramesInput(int), maxDetectionsInput(int), isEnabled(bool), confidenceThreshold(float), inferenceEveryNFrames(int), maxDetections(int)
入力映像から物体を検出して、**見つかった場所を白い矩形で塗ったマスク**を出力します。人・車・動物など、Targetのドロップダウンから選んだ種類の物体を探します。同時に、いちばん確度の高い検出の中心座標(0〜1)も出力するので、検出位置で他のノードを動かすこともできます。
- **Target** — 検出する物体の種類。初期値はPerson
- **Enable** — 初期値ON。**OFFのときは入力がそのまま素通し**します
- **Confidence Threshold** — この確度を超えた検出だけを採用します。初期値0.25(0〜1)
- **Inference Every N Frames** — 何フレームに1回検出するか。初期値2(数字を上げるほど軽くなります)
- **Max Detections** — 描画する検出数の上限。確度の高い順に採用。1〜50、初期値10
- **detectedCenterX0 / detectedCenterY0** — 最上位検出の中心(0〜1)。**検出が0件のときは両方とも0.5**を出力します
> **マスクは矩形の塗りつぶしです。** 物体の形に沿った切り抜きではありません。
>
> 同じ物体に複数の枠が重なって出た場合、**それらはすべてそのまま描かれます**。
>
> 検出できるのは**Targetで選んだ1種類だけ**です。複数の種類を同時に扱いたい場合はノードを分けてください。
>
> 検出しないフレームでは直前のマスクがそのまま出力されます。入力が未接続のときは黒が出ます。
### PixelSort `pixelsort`
URL: https://synapserack.com/ja/docs/nodes/profx/pixelsort/
- Inputs: Layer(RenderTexture), Mask(RenderTexture), Enable(bool), Direction(bool), Ascending(bool), ThresholdMin(float), ThresholdMax(float)
- Outputs: Out(RenderTexture)
- Settable: isUsingInput(bool), directionInput(bool), ascendingInput(bool), thresholdMinInput(float), thresholdMaxInput(float), currentIsUsing(bool), currentDirection(bool), currentAscending(bool), currentThresholdMin(float), currentThresholdMax(float)
明るさ(`0.298912R + 0.586611G + 0.114478B`)が **Threshold Min〜Max の範囲に入る連続した画素列を1つの区間とみなし、その区間内だけを明るさ順に並べ替えます**。並べ替えはコンピュートシェーダー上のバイトニックソートで、行(または列)ごとに1回のDispatchで走ります。
- **Enable** — OFFで素通し。初期値ON(`Enable` 入力 / `isUsingInput` / `currentIsUsing`)
- **Direction** — ONで水平(行方向)、OFFで垂直(列方向)。初期値ON。ノードUIのトグル名は「Horizontal」です(`Direction` 入力 / `directionInput` / `currentDirection`)
- **Ascending** — 並び順。初期値ON(`Ascending` 入力 / `ascendingInput` / `currentAscending`)
- **Threshold Min** — 初期値0.4。UIスライダーは0〜1(`ThresholdMin` 入力 / `thresholdMinInput` / `currentThresholdMin`)
- **Threshold Max** — 初期値0.6。UIスライダーは0〜1(`ThresholdMax` 入力 / `thresholdMaxInput` / `currentThresholdMax`)
- **Mask** — 白い(Rが1の)ところがソート結果、黒いところが元の絵になります(`lerp(元, ソート結果, mask.r)`)。未接続ならソート結果がそのまま出ます
> **ソートする軸のサイズが2048以上だと処理されず素通しになります**(コンソールにエラーが出ます)。水平ソートなら幅、垂直ソートなら高さが対象なので、4K横(3840)を水平ソートすると効きません。
>
> 出力はグローバル解像度で確保され、入力の解像度には追従しません。解像度が違う場合は最後に拡大縮小されます。
>
> 出力ポートへの初回publishは起動から15フレーム後です。
>
> 入力(Layer)が未接続のときは出力が黒で塗られます。
### UV Generator `UVGenerator`
URL: https://synapserack.com/ja/docs/nodes/profx/UVGenerator/
- Inputs: Offset(float)
- Outputs: Composed Output(RenderTexture)
- Settable: offsetInput(float), displayMode(int), singleIndex(int), offset(float), regionCount(int)
出力キャンバスをいくつかの矩形(Region)に区切り、それぞれの**UV Rectを個別の出力ポートとして配り**ます。配った先は [UV Mapper](/ja/docs/nodes/profx/UVMapper/) のRect入力です。同時に、各Regionを色付きの矩形として塗ったComposed Outputも出すので、レイアウトの確認や、そのまま絵としての使用もできます。
## Region
`+ Add` で追加、各カードの×で削除します(最低1つは残ります)。**上限は16**です。追加時の初期値はUV Rect `(0, 0, 0.25, 0.25)`、Res `640×360`、色はプリセット8色(赤・緑・青・黄・シアン・マゼンタ・橙・紫)の巡回です。
Regionごとに**R0, R1, ...** という名前のRect出力ポートが生えます(PortIDは `region_0`, `region_1`, ...)。
## Display Mode(点灯の仕方)
Composed Outputでの各Regionの明るさが変わります。
- **Chase**(初期値) — Offsetに近い順番のRegionだけが明るくなります。明るさは `1 - clamp01(位置差 × Region数 × 2)`
- **Single** — Indexで指定した1つだけが明るさ1、他は0.1
- **All** — すべて明るさ1
- **Offset** — 0〜1。入力ポート経由の値は `Repeat(v, 1)` で0〜1に折り返されます(`Offset` 入力 / `offsetInput` / `offset`)
- **Output** — Composed Outputの解像度。初期値1920×1080
> **Regionごとの「Res」の値は、Composed OutputにもRect出力にも使われません。** 保存されるだけのメタ情報です。
>
> Composed Outputは毎フレームではなく、**パラメータやRegionが変化したときだけ**再生成されます。生成はCPU側で `Texture2D` に1画素ずつ書いてからBlitする方式なので、出力解像度を上げるほど再生成が重くなります。
>
> Chaseモードの明るさはRegionの `order`(並び順)で決まります。Regionを削除するとorderは0から振り直されます。
### UV Mapper `UVMapper`
URL: https://synapserack.com/ja/docs/nodes/profx/UVMapper/
- Inputs: Layer Texture(RenderTexture), Chase Offset(float), Chase Width(float)
- Outputs: Output(RenderTexture)
- Settable: chaseOffsetInput(float), chaseWidthInput(float), chaseOffset(float), chaseWidth(float)
1枚の入力テクスチャを、Rect入力で指定した**複数の矩形領域へ同時に描き込む**ノードです。マッピング用の出力面を組むための素子で、[UV Generator](/ja/docs/nodes/profx/UVGenerator/) のRect出力を受けるのが基本の使い方です。出力は毎フレーム黒でクリアしてから描き直されます。
## Rect入力
`+` / `-` ボタンでRect入力ポートを増減します(**1〜16**、1未満にはできません)。ポート名は **Rect0, Rect1, ...**(PortIDは `rect_0`, `rect_1`, ...)で、未接続でもポート上のX/Y/W/Hフィールドに直接入力できます。**未接続時の初期値は `(0, 0, 1, 1)`=全面**です。
## Fit Mode
- **Stretch**(初期値) — Rectいっぱいに引き伸ばす
- **Fill** — Rectを覆うようにソース側UVを切り取る(アスペクト維持)
- **Fit** — Rect内に収まるよう描画先の矩形を縮める(アスペクト維持、余白あり)
- **Crop** — Crop UVで指定した範囲だけを使う。**このモードのときだけCrop UV欄が表示されます**(初期値 `(0, 0, 1, 1)`)
- **Offset** — ソースUVのX/Yに加算されます。初期値 `(0, 0)`
- **Output** — 出力解像度。初期値1920×1080。変更するとRTが作り直され、下流に新しい参照が通知されます
## チェイス
Rectが2つ以上あるとき、Chase OffsetとChase Widthで**どのRectを描くかを順送りに切り替え**られます。各Rectの位置は `index / Rect数` で、Offsetとの距離(0〜1で折り返し)が `Chase Width / 2 / Rect数` を超えると不透明度0になります。
- **Chase Offset** — `Repeat(v, 1)` で0〜1に折り返されます。初期値0(`Chase Offset` 入力 / `chaseOffsetInput` / `chaseOffset`)
- **Chase Width** — 下限0.01。初期値1(`Chase Width` 入力 / `chaseWidthInput` / `chaseWidth`)
> **Rectが1つだけのときチェイスは効きません**(常に不透明度1)。
>
> 不透明度が0.001以下のRectは描画自体がスキップされます。
>
> Layer Textureが未接続のときは、出力は黒のままです。
## Record (11 nodes)
フレームバッファの録画・再生とタイム系エフェクト(Datamosh・Time Displacement等)。
### Buffer Granular `BufferGranular`
URL: https://synapserack.com/ja/docs/nodes/record/BufferGranular/
Summary: Plays short grains cut from a buffer
- Inputs: Buffer(FrameBufferInput), Position(float), Spray(float), GrainSeconds(float), Speed(float), ReverseProbability(float), SpeedJitter(float)
- Outputs: Out(RenderTexture)
- Settable: positionInput(float), sprayInput(float), grainSecondsInput(float), speedInput(float), reverseInput(float), speedJitterInput(float), currentPosition(float), currentSpray(float), currentGrainSeconds(float), currentSpeed(float), currentReverseProbability(float), currentSpeedJitter(float), currentSeed(int), currentVoices(int)
バッファから短いグレイン(粒)を切り出し、重ねて再生する**映像版グラニュラー**です。
- `Position` が切り出し位置(0〜1)、`Spray` がそのばらつき(0〜1、既定0.3)
- `GrainSeconds` が1粒の長さ(0.01〜10秒、既定0.08)
- 最大4声(`voices`: 1〜4)まで重ねられ、粒ごとに逆再生(`reverseProbability`)・速度のばらつき(`speedJitter`)を混ぜられます
- `speed` は -8〜8(負で逆再生)
## 動画
### Buffer Player `BufferPlayer`
URL: https://synapserack.com/ja/docs/nodes/record/BufferPlayer/
Summary: Plays the full input buffer. Negative speed reverses; Loop repeats; Retrigger returns to the direction-aware edge
- Inputs: Buffer(FrameBufferInput), Speed(float), Play(bool), Loop(bool), Retrigger(trigger)
- Outputs: Out(RenderTexture)
- Settable: speed(float), play(bool), loop(bool), currentSpeed(float), currentPlaying(bool), currentLoopEnabled(bool)
バッファ全体を再生します。
- **Speed に負の値を入れると逆再生**(クランプなし)
- `Loop` で繰り返し
- `Retrigger` は進行方向に応じた端へ戻ります(順再生なら先頭、逆再生なら末尾)
## 動画
### Buffer Read `BufferRead`
URL: https://synapserack.com/ja/docs/nodes/record/BufferRead/
Summary: Reads a frame from any point in a buffer
- Inputs: Buffer(FrameBufferInput), Position(float)
- Outputs: Out(RenderTexture)
- Settable: position(float), currentPosition(float)
バッファの中の任意の1点を取り出して表示します。`Position` の 0〜1 がバッファ全体に対応するので、手で動かせばそのままスクラブになります。Record系で最も単純なノードです。
## 動画
### Buffer Shuffle `BufferShuffle`
URL: https://synapserack.com/ja/docs/nodes/record/BufferShuffle/
Summary: Chops a buffer in tempo-synced chunks and jumps randomly
- Inputs: Buffer(FrameBufferInput), Chaos(float), Chop(trigger)
- Outputs: Out(RenderTexture)
- Settable: chaosInput(float), currentChaos(float), currentChunkBeats(int), currentSeed(int)
バッファを拍単位のチャンクに刻んで、ランダムな位置へ飛びます。テンポに同期したビートリピート的な使い方をします。
- `Chaos` が飛ぶ激しさ(0〜1、既定0.5)
- チャンク長は拍で指定(`chunkBeats`: 1〜16、既定1)
## 動画
### Datamosh `Datamosh`
URL: https://synapserack.com/ja/docs/nodes/record/Datamosh/
Summary: Smears previous frames along estimated motion vectors
- Inputs: Source(RenderTexture), Keyframe(trigger), Amount(float), Enable(bool), MotionOverride(FlowFieldInput)
- Outputs: Out(RenderTexture), Motion(FlowFieldOutput)
- Settable: amountInput(float), enableInput(bool), currentAmount(float), currentVectorScale(float), currentSeed(int), currentEnabled(bool)
推定した動きベクトルに沿って前のフレームを引き伸ばす、圧縮ノイズ的な破壊です。
- **MotionOverride に別の映像の流れ場を挿すと、他の映像の動きを移植できます**
- 推定した動きは `Motion` 出力から他のノードへ渡せます
- `amount`: 0〜1(既定0.8)、`vectorScale`: 0〜64(既定8)
見た目の模倣ではなく実際にコーデックを壊したい場合は MoshLive を使います。
## 動画
### File Recorder `FileRecorder`
URL: https://synapserack.com/ja/docs/nodes/record/FileRecorder/
Summary: Records video to mp4 / dumps a buffer retroactively
- Inputs: In(RenderTexture), Record(bool), DumpSource(FrameBufferInput), DumpTrigger(trigger)
- Outputs: LastFilePath(string)
- Settable: recordGate(bool), currentFps(int), currentFileNamePrefix(string), elapsedSeconds(float)
出力を mp4 に録画します。加えて `DumpSource` にバッファを繋いでおくと、`DumpTrigger` で**遡って**書き出せます。「今の良かった」を、起きた後から保存できます。
- `fps`: 1〜60(既定30)
## 動画
### Frame Buffer `FrameBuffer`
URL: https://synapserack.com/ja/docs/nodes/record/FrameBuffer/
Summary: Keeps recent video in a ring buffer
- Inputs: In(RenderTexture), Record(bool)
- Outputs: Buffer(FrameBufferOutput), WriteHead(float), Filled(float)
- Settable: recordGate(bool), currentCapacitySeconds(float), currentRecording(bool), currentShaderAccess(bool)
直近の映像をリングバッファに貯め続けます。**Record系すべての起点**で、これが無いと下流のノードは何も出せません。
- 容量は秒で指定(`capacitySeconds`: 0.5〜30、既定4)
- 書き込み位置の `WriteHead` とバッファの埋まり具合の `Filled` を出力するので、他のノードの制御にも使えます
### Frame Echo `FrameEcho`
URL: https://synapserack.com/ja/docs/nodes/record/FrameEcho/
Summary: Blends frames from multiple time offsets with decay
- Inputs: Buffer(FrameBufferInput), Decay(float)
- Outputs: Out(RenderTexture)
- Settable: decayInput(float), currentDecay(float), currentTaps(int)
複数の時間位置のフレームを、減衰させながら重ねる多重残像です。
- `Decay` が残り方の強さ(0〜1、既定0.7)
- `Taps` が重ねる枚数(2〜8、既定4)
## 動画
### Mosh Live `MoshLive`
URL: https://synapserack.com/ja/docs/nodes/record/MoshLive/
Summary: Drops keyframes while re-encoding the live input for a true datamosh
- Inputs: In(RenderTexture), KeyframeGate(bool), Refresh(trigger)
- Outputs: Out(RenderTexture)
- Settable: keyframeGate(bool), currentFps(int), currentKeyframeInterval(int), currentKeyframePass(bool)
ライブ入力を**実際にコーデックで再エンコードしながらキーフレームを落とす**、本物のデータモッシュです。Datamosh が見た目の模倣なのに対して、こちらは実際に圧縮を壊しています。
- `fps`: 10〜60(既定30)
- `keyframeInterval`: 5〜300(既定30)
## 動画
### Time Displacement `TimeDisplacement`
URL: https://synapserack.com/ja/docs/nodes/record/TimeDisplacement/
Summary: Offsets per-pixel time by map luminance (slit-scan)
- Inputs: Buffer(FrameBufferInput), Map(RenderTexture), Depth(float)
- Outputs: Out(RenderTexture)
- Settable: depthInput(float), currentDepth(float)
`Map` に入れた映像の明るさに応じて、**ピクセルごとに時間をずらします**(スリットスキャン)。明るいところほど過去/未来のフレームを引いてきます。
- `Depth` がずらし幅(0〜1、既定1)
## 動画
### Time Scratch `TimeScratch`
URL: https://synapserack.com/ja/docs/nodes/record/TimeScratch/
Summary: Follows the live head until Speed or Scratch starts a temporary buffer scratch
- Inputs: Buffer(FrameBufferInput), Speed(float), Scratch(trigger), Reset(trigger), Loop(bool)
- Outputs: Out(RenderTexture)
- Settable: speed(float), loop(bool), currentSpeed(float), currentLoopEnabled(bool), currentActive(bool)
ふだんはライブの最新フレームに追従していて、**Speed をいじるか Scratch を叩いた瞬間だけ**バッファ内を一時的にスクラッチします。終わればライブに復帰します。DJのスクラッチと同じ操作感を映像に持ち込むためのノードです。
- Speed はクランプなし(デッドゾーン 0.0001)
## 動画
## Signal (16 nodes)
LFO・Easing・ADSRなどの信号生成と、Smooth・Remapなどの信号加工。
### ADSR `ADSR`
URL: https://synapserack.com/ja/docs/nodes/signal/ADSR/
Summary: Gate-driven envelope (attack/decay/sustain/release)
- Inputs: Gate(bool), Trigger(trigger), Attack(float), Decay(float), Sustain(float), Release(float)
- Outputs: Envelope(float), On Release End(trigger)
- Settable: gateInput(bool), attackInput(float), decayInput(float), sustainInput(float), releaseInput(float)
Gate が開いている間ずっと値を保持できるエンベロープです。Gate が true になると 0 から Attack 秒で 1 まで立ち上がり、Decay 秒かけて Sustain の高さまで落ちて、そこで保持します。Gate が false になったら、その瞬間の値から Release 秒かけて 0 へ落ちます。カーブの形は Curve ドロップダウンで選び、4区間すべてに同じ Ease が使われます([Easing](/ja/docs/nodes/signal/Easing/) と共通の一覧)。
Trigger 入力は Gate を持たない相手(拍・ヒット検出)用で、開けた直後に Attack + Decay 経過で自動的に閉じます。結果として AD エンベロープ + Release になり、Sustain は Decay の着地点として効きます。
- **Attack** 既定 0.05 秒 / **Decay** 既定 0.2 秒 / **Release** 既定 0.4 秒(いずれも負値は 0 扱い)
- **Sustain** 既定 0.6(0〜1 にクランプ)
- **Curve** 既定 OutQuad
- **Envelope** は 0〜1、**On Release End** はリリースが終わって 0 になった瞬間に発火
再トリガーは値の連続性を取らず、常に 0 から立ち上げ直します。
> Gate は値が **変化した瞬間**(false→true / true→false)だけを見ます。毎フレーム true を送り続ける出力(再生中フラグ等)を挿しても開き直しは起きず、Attack は正常に完了します。
## 動画
### Brightest Point `BrightestPoint`
URL: https://synapserack.com/ja/docs/nodes/signal/BrightestPoint/
Summary: Brightest point position → values
- Inputs: In(RenderTexture)
- Outputs: X(float), Y(float), Brightness(float)
入力の RenderTexture を 32×32 に縮小して CPU 側に読み戻し、最も輝度の高いピクセルの位置を **X** / **Y**(0〜1 の UV 座標。Y は下端が 0)、その輝度を **Brightness**(0〜1)として出力します。「一番明るいところにエフェクトが吸い付く」配線の入口です。
- 輝度は 299:587:114 の重み付き(NTSC 系)で比較
- 入力を外すと X=0.5 / Y=0.5 / Brightness=0 に戻ります
> 位置の分解能は 32×32 縮小ぶん、つまり 1/32 刻みです。読み出しは 3 フレームに 1 回で、GPUからの読み戻しが非同期のため値には数フレームの遅れが乗ります。
### Curve `Curve`
URL: https://synapserack.com/ja/docs/nodes/signal/Curve/
Summary: Freehand curve (envelope or shaper)
- Inputs: In(float), Trigger(trigger), Duration(float), Loop(bool)
- Outputs: Value(float), On Complete(trigger)
- Settable: inInput(float), timeInput(float), loopInput(bool)
ノード上のエディタで点を直接ドラッグして作った 0〜1 の関数を、2 通りに使えるノードです。カーブの実体はどちらのモードでも同じ 1 本で、横軸に何を食わせるかだけが違います。
- **Envelope**(既定) — Trigger が来たら Duration 秒かけてカーブを頭から再生し、**Value** に出力。終端で **On Complete** を発火
- **Shaper** — **In** の値をそのままカーブの横軸に使い、曲げた結果を出力。[Remap](/ja/docs/nodes/signal/Remap/) の非線形版
パラメータ:
- **Duration** 既定 1 秒(内部で下限 0.0001 秒)
- **Loop** — 端をまたいだ分を次の周に持ち越すので、フレーム落ちしても周期がずれません。周回ごとに On Complete が出ます
- 初期カーブは (0,0)–(1,1) の 2 点。補間は単調キュービック(Fritsch–Carlson)で、点の間で 0〜1 を飛び出しません
> Shaper モードでは In は 0〜1 にクランプされ、Trigger / Duration / Loop は使われません。入力が止まれば出力も止まります。
## 動画
### Delay `SignalDelay`
URL: https://synapserack.com/ja/docs/nodes/signal/SignalDelay/
Summary: Value delay line (echo for signals)
- Inputs: In(float), Delay(float)
- Outputs: Delayed(float)
- Settable: inInput(float), delayInput(float)
**In** に来た値を毎フレーム記録し、**Delay** 秒前の値を **Delayed** に出します。同じ信号を遅延量ちがいで何本か通すと、動きがずれて追いかけてくる配線が作れます。
- **Delay** 既定 0.5 秒(0〜10 秒にクランプ)
- リングバッファは 2048 サンプル。記録はフレーム単位なので、遅延時間の分解能は 1 フレームです
> 要求した時刻がバッファに残っている範囲より古い場合は、保持している中でいちばん古い値が出ます(バッファは 2048 フレーム分なので、フレームレートが高いと実効の最大遅延は 10 秒より短くなります)。
### Easing `Easing`
URL: https://synapserack.com/ja/docs/nodes/signal/Easing/
- Inputs: Is Loop(bool), Start Value(float), End Value(float), Duration(float), Restart Trigger(trigger)
- Outputs: Easing Value(float), On Complete(trigger)
- Settable: isLoopInput(bool), startInput(float), endInput(float), timeInput(float), startValue(float), endValue(float), timeValue(float), isLoop(bool), isLoopA(bool)
**Start Value** から **End Value** へ、選んだ Ease のカーブで **Duration** 秒かけて動く値を **Easing Value** に出します。走りきったところで **On Complete** が発火します。ノードには選択中の Ease のグラフと再生位置のドットが表示されます。
- 既定: Start 0 / End 1 / Duration 1 秒 / Ease **Linear** / Loop OFF / Mode **Restart**
- **Is Loop** を ON にすると **Mode**(Restart = 毎回頭から / Yoyo = 往復)で無限に繰り返します
- **Restart Trigger** で先頭から再生し直します
- コントロールUI側のスライダー範囲は Start / End が -10〜10、Duration が 0.1〜10(値そのものにクランプはありません)
「押している間ずっと開いている」形が欲しいときは [ADSR](/ja/docs/nodes/signal/ADSR/)、決まった形から外れたいときは [Curve](/ja/docs/nodes/signal/Curve/) を使います。
> Start / End / Duration / Ease / Loop / Mode のどれかを変えると、その都度 Tween が作り直されて先頭から再生し直します。本番中にパラメータをいじると値が飛ぶのはこのためです。
### LFO `LFO`
URL: https://synapserack.com/ja/docs/nodes/signal/LFO/
Summary: Tempo-synced LFO (beat divisions)
- Inputs: Amp(float), Offset(float), PhaseOffset(float), PulseWidth(float), FreeRate(float)
- Outputs: Value(float), Cycle Trigger(trigger)
- Settable: ampInput(float), offsetInput(float), phaseOffsetInput(float), pulseWidthInput(float), freeRateInput(float), divisionIndex(int)
テンポに同期して周期的に変化する値を出力するLFOです。出力は `波形(0〜1) × Amp + Offset`。つまり**下端が Offset、上端が Offset + Amp** です(Ampが1・Offsetが0なら0〜1)。
## クロックソース(ドロップダウンで選択)
- **GlobalTempo** — アプリのグローバルテンポ(BPM)に同期。拍の境界で位相のズレを自動補正し、Resyncで位相が0に戻ります
- **AbletonLink** — Ableton Linkの連続ビートをそのまま使用
- **Free** — テンポ非同期。`FreeRate` が1秒あたりの周期数(Hz相当、負値は0扱い)
## 拍分割(GlobalTempo / AbletonLink時のみ)
1周期の長さをドロップダウンで選びます: **1/4 beat・1/2 beat・1 beat(初期値)・2 beats・1 bar・2 bars・4 bars** の7段。Freeモードでは分割は使われません。
## 波形(5種)
すべて0〜1を出力します。
- **Sine** — 拍頭が谷。底から立ち上がって山を越えて戻る(cos反転)
- **Saw** — 拍頭0から直線的に1へ
- **Square** — 位相が `PulseWidth` 未満の間1、それ以降0(PulseWidthはSquareにのみ効く。0〜1にクランプ)
- **Triangle** — 0→1→0の三角
- **SampleHold** — 周期ごとに新しい乱数を1周期保持
## ポートの補足
- **PhaseOffset** — 単位は「周期」。1.0でちょうど1周期ずれるので、複数LFOを0.25刻みでずらす、といった使い方ができます
- **Cycle Trigger** — 位相が一周した瞬間に発火するトリガー出力(SampleHoldの乱数更新と同じタイミング)
ノードUIには現在の波形と位相を示すスコープが表示されます。テンポ全体の管理は [GlobalTempo](/ja/docs/nodes/tempo/GlobalTempo/) を参照してください。
## 動画
### RTAverage `RTAverage`
URL: https://synapserack.com/ja/docs/nodes/signal/RTAverage/
Summary: RT average color/brightness → value
- Inputs: Render Texture(RenderTexture)
- Outputs: Average Color(Color), Brightness(float)
入力の RenderTexture を 16×16 に縮小して CPU 側に読み戻し、全ピクセルの平均を **Average Color**、その輝度(0.299R + 0.587G + 0.114B)を **Brightness** として出力します。パラメータはありません。
- 入力を外すと黒 / 0 にリセットされます
> 読み出しは 3 フレームに 1 回で、GPUからの読み戻しが非同期のため値は現在のフレームより数フレーム遅れます。
### Receive Float `ReceiveFloat`
URL: https://synapserack.com/ja/docs/nodes/signal/ReceiveFloat/
Summary: Receives a float from a Send Float channel, one frame late. A missing channel outputs 0
- Outputs: Out(float)
- Settable: currentChannel(string)
Channel 欄に書いた名前の [SendFloat](/ja/docs/nodes/signal/SendFloat/) が流している値を **Out** に出します。ノードUIのドロップダウンには、その時点で存在するチャンネル名が 1 秒ごとに更新されて並びます。
- 該当するチャンネルが無いときは 0 を出力します
- 受け取るのは Send が **前フレーム** に流した値です(Send は LateUpdate、Receive は Update)
この 1 フレーム遅延が仕様なので、Send → Receive を輪にしてもグラフのサイクルにならず、値のフィードバックループが組めます。
## 動画
### Receive RT `ReceiveRT`
URL: https://synapserack.com/ja/docs/nodes/signal/ReceiveRT/
Summary: Receives video from a Send RT channel, one frame late. A missing channel shows black
- Outputs: Out(RenderTexture)
- Settable: currentChannel(string)
Channel 欄に書いた名前の [SendRT](/ja/docs/nodes/signal/SendRT/) が流している映像を **Out** に出します。ノードUIのドロップダウンには、その時点で存在するチャンネル名が 1 秒ごとに更新されて並びます。
- 出力の解像度とフォーマットは Send 側に追従します(Send の Precision 設定がそのままループ全体に伝わります)
- 該当するチャンネルが無いときは黒。チャンネルを切り替えた瞬間も、いったん黒でクリアされます
- 受け取るのは Send が **前フレーム** に流した絵です
この 1 フレーム遅延のおかげで、Receive → 加工 → Send の輪を作っても循環参照にならず、フレームバッファ系のフィードバックが組めます。
## 動画
### Remap `Remap`
URL: https://synapserack.com/ja/docs/nodes/signal/Remap/
Summary: Range remap with clamp
- Inputs: In(float), InMin(float), InMax(float), OutMin(float), OutMax(float)
- Outputs: Remapped(float)
- Settable: inInput(float), inMinInput(float), inMaxInput(float), outMinInput(float), outMaxInput(float), clamp(bool)
`t = (In - InMin) / (InMax - InMin)` を求めて `OutMin + (OutMax - OutMin) * t` を出力します。値の単位が合わないノード同士をつなぐときの継ぎ手です。
- 既定は InMin 0 / InMax 1 / OutMin 0 / OutMax 1(=そのまま通す)
- **Clamp** トグル(既定 ON)で t を 0〜1 に制限します。OFF にすると入力範囲の外でも直線が伸び続けます
- OutMin > OutMax にすれば反転になります
> InMax と InMin の差が 1e-6 未満のときは t = 0 として扱われ、出力は OutMin に固定されます。
### SampleHold `SampleHold`
URL: https://synapserack.com/ja/docs/nodes/signal/SampleHold/
Summary: Hold value on trigger
- Inputs: In(float), Sample Trigger(trigger)
- Outputs: Held(float)
- Settable: inInput(float)
**Sample Trigger** が発火した時点の **In** の値を掴み、次のトリガーが来るまで **Held** に出し続けます。連続的に動いている値を拍で階段状に固めるのに使います。
保持値はプロジェクトに保存され、ロード時にそのまま復元して即座に出力されます。
### Send Float `SendFloat`
URL: https://synapserack.com/ja/docs/nodes/signal/SendFloat/
Summary: Sends a float to a named wireless channel. Receive Float gets the previous frame's value, so feedback loops are allowed
- Inputs: In(float)
- Settable: input(float), currentChannel(string)
**In** の値を、Channel 欄に書いた名前のチャンネルへ毎フレーム流します。受け取るのは [ReceiveFloat](/ja/docs/nodes/signal/ReceiveFloat/) です。グラフ上にエッジができないので、遠くのノードへ配線を引き回さずに済み、サイクル検出の対象にもなりません(=フィードバックが組めます)。
- チャンネル名は前後の空白を除いて比較されます。空欄のときは何も送りません
- 送信は LateUpdate、受信は Update なので、Receive 側が読むのは **前フレームの値**(1 フレーム遅延)
> 同じチャンネル名を複数の Send Float が使うと警告が出て **後から名乗った側が勝ちます**。負けた Send の送信は毎フレーム無視されます。
## 動画
### Send RT `SendRT`
URL: https://synapserack.com/ja/docs/nodes/signal/SendRT/
Summary: Sends video to a named wireless channel. Receive RT gets the previous frame, so feedback loops are allowed
- Inputs: In(RenderTexture)
- Settable: currentChannel(string)
**In** の映像を内部のダブルバッファへコピーし、Channel 欄の名前で公開します。受け取るのは [ReceiveRT](/ja/docs/nodes/signal/ReceiveRT/) です。エッジを引かないのでサイクル検出にかからず、映像のフィードバックループが組めます。
- **Precision** ドロップダウン: **Bits8**(既定)・**Half**・**Float**。Receive 側は Send のフォーマットに追従するので、ここを上げるとループ全体の精度が上がります
- 入力未接続のときは黒を流します。Channel が空欄のときは何も流しません
> 同じチャンネル名を複数の Send RT が使うと警告が出て後から名乗った側が勝ちます。負けた Send の送信は無視されます。
> 8bit(Bits8)のままだと、フィードバックの減衰の尾が量子化で縞になったり、途中で止まって凍ったりします。長い残像を作るときは Half か Float にしてください。
## 動画
### Smooth `Smooth`
URL: https://synapserack.com/ja/docs/nodes/signal/Smooth/
Summary: Asymmetric exponential smoothing
- Inputs: In(float), Attack(float), Release(float)
- Outputs: Smoothed(float)
- Settable: inInput(float), attackInput(float), releaseInput(float)
**In** を追いかける値を出します。時定数は入力が今の値より **大きいときは Attack、小さいときは Release** が使われるので、「立ち上がりは速く、戻りはゆっくり」といった非対称なレスポンス(音量メーター的な質感)が作れます。
- **Attack** 既定 0.05 秒 / **Release** 既定 0.3 秒
- 時定数が 0.0001 以下のときは平滑せず、その場で入力に一致します
- 計算は `exp(-Δt / tau)` なのでフレームレートに依存しません
ノードには入力(暗)と出力(明)のバーが重なって表示されます。
### TextureSample `TextureSample`
URL: https://synapserack.com/ja/docs/nodes/signal/TextureSample/
Summary: Sample RT at UV → Color
- Inputs: Render Texture(RenderTexture), U(float), V(float)
- Outputs: Sampled Color(Color), Brightness(float)
- Settable: uInput(float), vInput(float)
U / V で指定した 1 点の色を読み取り、**Sampled Color** と **Brightness**(0.299R + 0.587G + 0.114B)として出力します。[RTAverage](/ja/docs/nodes/signal/RTAverage/) が画面全体なのに対し、こちらは狙った 1 テクセルだけを見ます。
- **U** / **V** 既定 0.5(0〜1 にクランプ)
- 入力を外すと黒 / 0 にリセットされます
> 読み出しは 3 フレームに 1 回で、GPUからの読み戻しが非同期のため値は数フレーム遅れます。U/V を高速に振ると、出た色は少し前の位置のものになります。
### Threshold `Threshold`
URL: https://synapserack.com/ja/docs/nodes/signal/Threshold/
Summary: float → Bool + rising-edge Trigger
- Inputs: In(float), Threshold(float)
- Outputs: Above(bool), Rising Edge(trigger)
- Settable: inInput(float), thresholdInput(float)
連続的な値(音量・輝度・LFO など)を、ゲート用の Bool と発火用の Trigger に変換します。**In** が **Threshold** 以上のとき **Above** が true、超えた瞬間に **Rising Edge** が発火します。
- **Threshold** 既定 0.5
- ノードUIのメーターは履歴とライブ値を表示し、オレンジのラインをドラッグするとしきい値を変えられます(その値はそのまま Threshold 入力に書き込まれるので、保存も接続も整合します)
> **Rising Edge だけ**が 0.03 のヒステリシスを持ちます。一度発火すると、In が `Threshold - 0.03` を下回るまで再発火しません(しきい値ちょうどの入力での連射防止)。**Above** はヒステリシス無しの生の比較結果なので、ゲート用途では従来どおりの挙動です。
## Source (10 nodes)
動画・画像・Webカメラ・NDI/Spout受信・WebViewなどの入力ソース。
### App Media Player `AppMediaPlayer`
URL: https://synapserack.com/ja/docs/nodes/source/AppMediaPlayer/
Summary: App-owned media player
- Inputs: Media Path(string)
- Outputs: Render Texture(RenderTexture)
- Settable: pathInput(string), mediaPath(string)
Apps SDK用の低レイヤーノードです。**GUIのノード追加UI(右クリック/サイドパネル)には既定で出ません**(グローバル設定で表示に切り替えられます。Apps SDK側の `modules.create` からは設定に関係なく作れます)。
`Media Path` に渡したパスをContentClassifierで分類し、Layerと同じContentPlayerコアで再生してRenderTextureに出します。画像・動画・HAP・VLC・シェーダーが対象です。ノードUIにはパス入力欄とReloadボタンだけがあります。トランスポート操作が要るなら、これを継承した [Content Player](/ja/docs/nodes/source/ContentPlayer/) を使ってください。
- 出力RTはグローバル解像度(GlobalSettings)
- 相対パスで保存されたメディアは image / videos / hap / shader の各ルートを順に試して解決されます
> オフスクリーンのSDKプレイヤーは**既定でミュート**されます(仕様上の決定。UnityVideoとVLCのみ音声を持つため、他バックエンドでは何もしません)。
### App Offscreen Layer `AppOffscreenLayer`
URL: https://synapserack.com/ja/docs/nodes/source/AppOffscreenLayer/
Summary: App-owned offscreen (headless) Layer
- Outputs: Render Texture(RenderTexture)
- Settable: opacity(float), rotationZ(float), positionX(float), positionY(float), scaleX(float), scaleY(float)
Apps SDK用の低レイヤーノードです。**GUIのノード追加UIには既定で出ません**(グローバル設定で表示に切り替えられます)。
中身は本物のLayer(headlessプレハブ)で、カメラ/キャンバス/RT/ContentPlayerのパイプラインを毎フレーム回します。ただしLayerStructureManagerには登録されず、MasterOutputにも合成されません。つまり `layers.list` にも画面にも出てこず、成果物は出力テクスチャだけです。ブレンドはこのノードの担当外で、混ぜたいならMixer系に渡します。
- 位置・回転・スケール・不透明度は `positionX` / `positionY` / `rotationZ` / `scaleX` / `scaleY` / `opacity` で操作します(位置とスケールがX/Yに分かれているのは、バインディングがfloatしか駆動できないため)
- 出力解像度は**生成時に固定**されます(既定はグローバル解像度)
> 不透明度は通常のLayerでは合成時にかかるプロパティで、そのステージがヘッドレスでは走りません。そのため内部キャンバスにCanvasGroupを足して、レンダリング前にアルファを焼き込んでいます=出力テクスチャ自体が薄くなります。
### App Texture Source `AppTextureSource`
URL: https://synapserack.com/ja/docs/nodes/source/AppTextureSource/
Summary: Bridge app-owned RenderTexture into the node graph
- Outputs: Render Texture(RenderTexture)
- Settable: sourceName(string)
Apps SDK用の低レイヤーノードです。**GUIのノード追加UIには既定で出ません**(グローバル設定で表示に切り替えられます)。
アプリ側が登録したテクスチャプロバイダを毎フレーム読み、出力バッファへBlitします。ソースの解像度が変わると出力バッファも作り直されて追従します。ノードUIにあるのは表示名の `Source` フィールドだけで、実際の接続はSDK側から行われます。
> プロバイダが未設定、あるいはソース(ウィンドウやレイヤー)が消えた場合は、**出力を一度だけ透明にクリア**します。最後のフレームが下流に残り続けないための挙動です。
### Content Player `ContentPlayer`
URL: https://synapserack.com/ja/docs/nodes/source/ContentPlayer/
Summary: Play media (MediaBrowser drag & drop / preview select)
- Inputs: Media Path(string), Play(bool), Seek(float), Speed(float), To Start(trigger), To End(trigger), Speed /2(trigger), Speed Reset(trigger), Speed *2(trigger), Loop(bool), Crossfade Loop(bool), BPM Sync(bool), BPM Sync Beat(int), Reset Content(trigger), Native Resolution(bool)
- Outputs: Render Texture(RenderTexture), Position(float), Speed(float), Playing(bool), Loop(bool), Crossfade Loop(bool), BPM Sync(bool), Media Path(string), BPM Sync Beat(int), Reached End(trigger), Native Resolution(bool), Resolution X(int), Resolution Y(int)
- Settable: playInput(bool), seekInput(float), speedInput(float), loopInput(bool), crossfadeInput(bool), bpmSyncInput(bool), beatInput(int), nativeResInput(bool), pathInput(string), mediaPath(string)
メディアを再生してRenderTextureを出すノードです。再生の実体はLayerと同じContentPlayerコアなので、コーデック判定(画像 / 動画 / HAP / VLC / シェーダー)は自動で行われます。MediaBrowserからのドラッグ&ドロップは**ノードのプレビュー領域**で受け取り、Previewトグルを入れておけばMediaBrowserのサムネクリックでも割り当たります。`Media Path` に文字列を流し込んでも同じ経路でロードされます。
## トランスポート
- **Play** — trueでPlay、falseでPause
- **Seek** — 0〜1の正規化位置
- **Speed** — 再生レート。**-5〜5にクランプ**され、負値は逆再生(対応可否は各コーデック側次第)。0は「未指定」として無視されます
- **To Start / To End** — 先頭へ / 末尾へ。To Endは終端イベントの暴発を避けるため厳密な末尾ではなく `(duration - 0.1) / duration` へ飛びます
- **Speed /2・Speed Reset・Speed \*2** — 現在レートの半分 / 1.0 / 2倍
- **Reset Content** — 再生停止+出力を黒クリア+パスを空に戻す
## ループとBPM同期
- **Loop** — 既定ON。ノードUIにトグルは無く、In/Outポートのみです。コンテンツ切替でコーデック側のループ状態が変わっても、毎フレームこのノードの値へ強制的に戻されます
- **Crossfade Loop** — HAP / UnityVideo / VLC の3実装それぞれのクロスフェードループを同時に切り替えます
- **BPM Sync** / **BPM Sync Beat** — 速度コントローラの同期を有効化。拍数は0以下を「未指定」として無視します
> BPM Sync Beat は素材のメタデータ(HAPコンテンツの beat 等)でロード時に上書きされる仕様です。そのため表示と `BPM Sync Beat` 出力は入力値ではなく、アクティブなコントローラの実値をポーリングした結果を出します。
## 出力解像度(Native Resolution)
既定は**Native=ON**で、出力RTはコンテンツの実寸になります。OFFにするとマスター解像度に追従する固定RTへ毎フレームスケールBlitされます。現在の出力RTのサイズは `Resolution X` / `Resolution Y` から取れます。
> Nativeでネイティブサイズが判定できないソース(シェーダー、Nodeソースなど)は、直前の素材が変えたRTサイズが残らないようマスター解像度へ戻ります。
## その他の出力
`Position`(0〜1)・`Speed`・`Playing`・`Media Path` は状態のミラーで、変化したときだけpushされます。`Reached End` は再生が終端に達した瞬間のトリガーです。
> ファイルパスを持たないライブソース(Spout / NDI / 他ノード)の割り当ても保存されますが、復元はベストエフォートです(Nodeソースは最大180フレーム探して見つからなければ諦めます)。
## 動画
### NDIReceiver `NDIReceiver`
URL: https://synapserack.com/ja/docs/nodes/source/NDIReceiver/
- Outputs: RenderTexture Output(RenderTexture)
- Settable: currentNDIName(string)
ネットワーク上のNDIソースを受信するノードです。ドロップダウンでソースを選ぶと、映像が届いてから**その解像度でRenderTextureを作り直して**出力します。ソース一覧は毎フレーム更新され、`SynapseRackMain`(SynapseRack自身の送信)は候補から除外されます。
- 選択は**スティッキー**です。ソースが一時的にオフラインになっても選択は保持され、逆に未選択(None)のときに勝手に先頭のソースへ繋ぎ直すこともしません
- **None** を選ぶと受信を解除し、出力を黒でクリアします(直前の映像が下流に残らないように)
- Refreshボタンはソース一覧をクリアして再探索させます
> 選択直後は5フレーム待ってから、さらに最大300フレーム(約5秒)テクスチャの到着を待ちます。この間に別ソースやNoneへ切り替えると、古い待機処理の結果は破棄されます。タイムアウトした場合は出力が更新されないままになります。
### SpoutReceiver `SpoutReceiver`
URL: https://synapserack.com/ja/docs/nodes/source/SpoutReceiver/
- Outputs: RenderTexture Output(RenderTexture)
- Settable: currentSourceName(string)
同じPCで動いている他アプリの映像を受け取るノードです。**Windowsでは Spout、macOSでは Syphon** として動作し、ノードの表示名も実行中のプラットフォームに応じて SpoutReceiver / SyphonReceiver に切り替わります(保存キーとしてのノードIDは `SpoutReceiver` のまま共通)。ソース一覧は毎フレーム更新され、`SynapseRackMain` は候補から除外されます。
- 選択は**スティッキー**です。未選択(None)のときに先頭のソースへ自動接続することはしません
- **None** を選ぶと受信を解除し、出力を黒でクリアします
- Windowsでは受信テクスチャをそのまま出力し、macOSではソース解像度に合わせて作り直したRenderTextureへ受け取ります
> 選択直後は5フレーム待ってから映像の到着を待ちます(Spoutは最大300フレーム、Syphonは最大500フレーム)。タイムアウトすると出力は更新されないままになります。
### WebCamera `WebCamera`
URL: https://synapserack.com/ja/docs/nodes/source/WebCamera/
- Outputs: RenderTexture Output(RenderTexture)
- Settable: currentDeviceName(string), requestedWidth(int), requestedHeight(int), requestedFPS(int)
ウェブカメラの映像を取り込むノードです。ドロップダウンでデバイスを選ぶとキャプチャが始まり、出力RTは**カメラが実際に返した解像度**へ作り直されます(要求値と一致するとは限りません)。
- `W` / `H` で解像度を要求します(既定1280×720、FPSは30)。値を変えると稼働中のカメラは再起動されます
- **None** を選ぶとカメラを停止し、出力を黒でクリアします
- Refreshボタンでデバイス一覧を取り直せます。未選択のときに先頭のカメラへ自動接続することはしません
> 起動時にまず `RequestUserAuthorization` でカメラ許可を取ってからデバイスを列挙します。macOSでは許可を取らないとデバイス一覧が空・映像が黒のままになるためで、拒否された場合は一覧が空のままになります(Windowsは許可なしでも動くのでOS差が出ます)。
### WebView `WebView`
URL: https://synapserack.com/ja/docs/nodes/source/WebView/
- Inputs: URL(string)
- Outputs: Render Texture(RenderTexture)
- Settable: urlInput(string), currentUrl(string), resolution(float)
Webページをオフスクリーンで描画してRenderTextureに出すノードです。`URL` ポートに文字列を流すか、コントロールUIのアドレスバーから移動できます(コントロールUI側はWebViewを直接クリック操作できます)。新規ノードの初期URLは `https://www.google.com/` です。
- **Resolution** — グローバル解像度に対する描画倍率。既定0.5、スライダーは0.25〜1.0
- コントロールUIには戻る/進む/リロードのボタンがあります
> Resolutionはノードの初期化時に一度だけ読まれます。あとから変更しても値は保存されるだけで、実際の描画解像度はWebViewを作り直すまで変わりません。
> このノードは公式プラグイン **Web Modules** のライセンスが必要です。ライセンスが無い状態で追加すると購入ページを開くか尋ねるダイアログが出て、ノードは削除されます。
### Window Capture `WindowCapture`
URL: https://synapserack.com/ja/docs/nodes/source/WindowCapture/
- Outputs: Capture Texture(RenderTexture)
- Settable: selectedIndex(int), selectedWindowName(string)
他アプリのウィンドウをキャプチャするノードです。ドロップダウンで対象ウィンドウを選ぶと、そのウィンドウのサイズに出力RTを作り直してキャプチャを開始します。Windowsでは Graphics Capture、macOSでは Desktop Capture が使われます。
- Refreshボタンでウィンドウ一覧を取り直します(起動後に開いたアプリはRefreshしないと出てきません)
- **None** を選ぶとキャプチャを止め、出力を黒でクリアします
> 選択は「一覧の何番目か」(`selectedIndex`)で保存されます。次回起動時にウィンドウの並びが変わっていれば、別のウィンドウが選ばれた状態になります。保存されたindexが一覧の範囲外だった場合は先頭が選ばれます。
### YouTube `YouTubeMV`
URL: https://synapserack.com/ja/docs/nodes/source/YouTubeMV/
- Inputs: Search Query(string), Next Result(trigger), Previous Result(trigger), Volume(float)
- Outputs: Render Texture(RenderTexture)
- Settable: queryInput(string), volumeInput(float), searchQuery(string), resolution(float), autoFullscreen(bool), currentVideoTitle(string), currentIndex(int), volume(float), currentTime(float), duration(float), isMuted(bool)
内部のWebViewでYouTubeの検索結果を開き、n番目の動画をクリックして再生し、その描画をRenderTextureに出すノードです。`Search Query` を変えると(500msのスロットル後)検索し直して1件目から再生します。`Next Result` / `Previous Result` で検索結果内を前後に移動します。`Volume` は0〜1にクランプされ、ページ内の `