The **Oscillator Node** (`OscillatorNode`) generates continuous, repeating mathematical periodic waveforms for procedural motion, dimmer chases, and color cycling.

![Oscillator Node](https://unilighter.cc/info/docs/node-graphs/oscillator/oscillator_94df5bda.png)

---

## 🌊 Waveforms & Timing Synchronization

### 1. Available Waveforms
- **Sine**: Smooth, organic harmonic oscillation for ambient dimmers and slow head bobs.
- **Sawtooth / Ramp**: Linear sweep with instantaneous drop/rise for sequential chasers.
- **Square**: Abrupt on/off alternation for sharp strobes and blinder flashes.
- **Triangle**: Linear bi-directional sweep.
- **Noise / Random**: Procedural sample-and-hold random flicker.
- **Impulse**: Single narrow spike per cycle.

### 2. Synchronization Modes
- **Hertz (Hz)**: Free-running frequency specified in cycles per second (`0.01 Hz – 50 Hz`).
- **BPM Sync**: Locks oscillation speed directly to the project's master audio tempo (`x16`, `x8`, `x4`, `x2`, `1/1`, `/2`, `/4`, `/8`, `/16`).

---

## 🔀 Single Value vs Sequence Spread

- **Single Value**: Outputs one synchronized number to all fixtures simultaneously.
- **Sequence Spread**: Generates an array of phase-offset values across a configured `sequenceLength` (e.g. 8 fixtures), creating sweeping wave chases down a truss line automatically.

---

## 🔌 Socket Outputs Reference

| Output Socket | Data Type | Range | Description |
| :--- | :--- | :--- | :--- |
| **Value** | `Number` | `0.0 – 1.0` | Primary instantaneous oscillator amplitude. |
| **Sequence** | `Array` | Array of `Number` | Phase-distributed values for multi-fixture arrays. |

