■ huff Home How It Works Install Interface MIDI OSC Output
--:--:--
Video Output
_

huff has three ways to send its output outside the app window: Syphon (macOS), Spout (Windows), and the canvas mirror window (all platforms).


Syphon (macOS)

Syphon lets huff share its canvas as a named texture that any Syphon-enabled application can receive in real time — without capture cards or screen recording.

Compatible receivers: Resolume Avenue/Arena, VDMX, MadMapper, CoGe, Millumin, Modul8, Max/MSP Jitter, Processing (Syphon library).

Usage

  1. Click the SYPHON button in the top bar.
  2. Set the output resolution (default: 1280×720).
  3. Set the FPS cap (default: 30fps — do not set higher than your canvas frame rate).
  4. Click ▶ Start. The sender appears as huff in any Syphon receiver.
CPU round-trip: Uses getImageData() → loopback WebSocket → Metal texture re-upload. Not zero-copy. Works reliably at 720p/30fps. See Caveats for details.

Installation Notes

The Syphon.framework is bundled inside the huff app bundle — no separate installation required.


Spout (Windows)

Spout is the Windows equivalent of Syphon. huff shares its canvas as a named D3D11 texture via the SpoutDX bridge.

Compatible receivers: Resolume Arena, TouchDesigner, MadMapper, Notch, and anything supporting the Spout2 protocol.

Usage

  1. Install the Spout2 runtime if not already present.
  2. Click the SPOUT button in the top bar.
  3. Set resolution and FPS cap.
  4. Click ▶ Start. The sender appears as huff in Spout receivers.

Canvas Mirror Window

The canvas window connects to the embedded WebSocket relay on port 8787 and renders frames as they arrive.

  • Opens automatically with the app.
  • Press F in the canvas window to toggle fullscreen.
  • Move it to a second monitor or projector.
  • Can also be opened in any browser on the local network — navigate to file:///path/to/huff/src/canvas.html.
OBS capture: The canvas window has no UI chrome. Use OBS Window Capture pointed at the canvas window for recording or streaming.

WebSocket Binary Protocol

Syphon frame: Bytes 0–7 : b"HUFFSYPH" (8 bytes) Bytes 8–11 : width u32 little-endian Bytes 12–15 : height u32 little-endian Bytes 16+ : raw RGBA8 pixels (width × height × 4 bytes) Spout frame: Bytes 0–8 : b"HUFFSPOUT" (9 bytes) Bytes 9–12 : width u32 little-endian Bytes 13–16 : height u32 little-endian Bytes 17+ : raw RGBA8 pixels (width × height × 4 bytes)