Introduction

What is JENS?

JENS analyzes audio signals in real-time and converts them into OSC for lighting systems and other Softwares, enabling audio-reactive performances and installations.

Key Features

Category Features
Audio Multi-channel capture, DSP (gain, filters, gate/limiter, curves), FFT visualization, smoothing, audio monitoring
Output OSC over UDP with custom min/max, DMX via sACN/Art-Net, multiple connections
Control DMX/MIDI input via patch mappings for real-time parameter control
Workflow Tracks (audio-reactive), Subs (manual), presets, show files
Interface Three themes (Light/Dark/Black), collapsible cards, modern design

Signal Flow

Audio Input  → FFT → DSP → Control → OSC/DMX Output
       │
       └→ Audio Monitoring → Output Device
DMX Input  ───────────────┘
MIDI Input ───────────────┘

Control = Parameter control via Patch Mappings

System Requirements

Component Minimum Recommended
macOS 12.0 (Monterey) Latest, Apple Silicon
Windows 10 64-bit 11 64-bit
CPU M1 / Core i5 (2015+) M1 / Core i7
Audio Any CoreAudio (macOS) or WASAPI (Windows) device
Network Ethernet recommended for DMX (gigabit for multiple universes)
Firewall: Allow incoming/outgoing connections on first launch (macOS) or allow Private Networks (Windows).

Installation

macOS

  1. Download the .dmg file (arm64 for Apple Silicon, x64 for Intel, or Universal)
  2. Open .dmg, drag JENS to Applications, eject
  3. First launch: Right-click → Open, allow network + microphone access

Windows

  1. Download the .msi installer (x64)
  2. Run installer, follow wizard, allow firewall access
macOS "App is damaged": Run xattr -cr /Applications/JENS.app in Terminal.

Quick Start

Get from installation to your first audio-reactive setup in 5 minutes.

  1. Launch JENS from Applications (macOS) or Start Menu (Windows)
  2. Add Audio Input: Settings → Audio → Add Connection → select your device
  3. Add OSC Output: Settings → OSC → Add Connection → Host 127.0.0.1, Port 8000
  4. Create Track: Click "Add Track" → select audio + OSC connections, set address (e.g. /audio/level), enable
  5. Verify: Make sound — level meter moves, FFT shows bars, output value updates
  6. Fine-tune: Adjust Gain (sensitivity), Response Curve (feel), Smoothing (flow), Gate (noise floor)
  7. Save: File → Save Show → My First Show.jens

Core Concepts

Architecture Overview

Signal Flow

Audio Input → Audio Connection → Track
                    ↓
    DSP: Gain → Filters → RMS → Smoothing → Curve+Gate/Limit → OSC Scaling
                    ↓
    Output (OSC Min–Max) → OSC

DMX Input  ─┐
MIDI Input ─┴→ Patch Mappings → Parameters (real-time control)

Core Components

Component Purpose
Connections Audio (input), OSC (output), DMX/MIDI (control) — configure once, reference everywhere
Tracks Audio-reactive processing channels: Audio → DSP → OSC/DMX output
Subs Manual OSC faders without audio, controllable via patch mappings
Patch Mappings DMX/MIDI inputs controlling any parameter in real-time
Processing Loop Runs at 30/44/60 Hz, processes all enabled tracks

DSP Chain

  1. Gain — Amplify/attenuate sensitivity (clipped to ±1.0)
  2. Low-Cut Filter — Remove unwanted low frequencies (Highpass)
  3. High-Cut Filter — Remove unwanted high frequencies (Lowpass)
  4. RMS Calculation — Convert waveform to smooth value (0–1)
  5. Smoothing — Slow down changes (separate attack/release)
  6. Response Curve + Gate/Limiter — Shape feel, define active range
  7. OSC Min/Max Scaling — Map output to custom range

Connections

Connections define where data comes from and goes to. Configure once in Settings, reference in tracks/subs.

Type Direction Setup
Audio Input Settings → Audio → Device + Channels (mono/stereo/multi)
Audio Monitoring Output Settings → Audio → Source + Output Device + Channels
OSC Output Settings → OSC → Host IP + Port
DMX Input Settings → DMX → Protocol (sACN/Art-Net) + Universe
MIDI Input Settings → MIDI → Device selection

Tracks and Subs

Feature Tracks Subs
Audio Input Yes No
DSP Processing Full chain None
External Control Via patch mappings Via patch mappings
FFT Visualization Yes No
Output OSC OSC

Tracks capture audio, run DSP, and output control values.

Subs are manual sliders that output OSC. Use for master intensity, color mixing, effect triggers, or as DMX/MIDI → OSC bridges.

Organization

  • Drag & drop to reorder (6-dot handle)
  • Click chevron to collapse/expand

Patch Mapping

Patch mapping links external controllers (DMX, MIDI) to any JENS parameter.

How to Map

  1. Press Tab to enter Patch Mode (highlights mappable parameters)
  2. Click any parameter (gain, filter, slider value, etc.)
  3. Configure input: DMX (connection + channel 1–512) or MIDI (connection + CC 0–127)
  4. Use Learn Mode to auto-detect — just move the MIDI controller
  5. Press Tab again or Esc to exit Patch Mode

Mappable Parameters

  • Track: Gain, filters (low/high cut), gate, limiter, smoothing (attack/release), response curve, OSC range, enable
  • Sub: Value (slider), OSC range (min/max)
Scaling: DMX (0–255) and MIDI (0–127) are automatically scaled to match each parameter's range.

Examples

  • DMX Universe 1, Ch 10 → Track "Kick" Gain
  • MIDI CC 1 → Track "Main" Smooth Fall
  • DMX Ch 1–3 → Subs "Red", "Green", "Blue"

Tracks

Creating Tracks

Quick Create

  1. Click "Add Track"
  2. Set name, audio connection, output connection, OSC address
  3. Enable the track (toggle ON)

Parameters

Parameter Range Description
Gain 0–15 Sensitivity multiplier applied to raw audio before filters
Low Cut 20–20k Hz Highpass filter — removes frequencies below cutoff
High Cut 20–20k Hz Lowpass filter — removes frequencies above cutoff
Gate 0–1 Minimum RMS for processing (below → output 0)
Limiter 0–1 Maximum RMS for processing (above → output 1)
Attack 0–5s How fast value increases (0=instant, 0.05=fast, 0.5=slow)
Release 0–5s How fast value decreases (0=instant, 0.2=medium, 1.0=slow)
Response Linear, Logarithmic (gentle), Exponential (punchy), S-Curve (natural)
OSC Min/Max float Map output 0–1 to custom range (default 0.0–1.0)
Frequency Isolation: Use Low Cut + High Cut together as bandpass. E.g., 40–150 Hz for kick drum, 4000–20000 Hz for hi-hat.

Management

  • Reorder: Drag 6-dot handle
  • Collapse: Click chevron (shows name, enable, value only)
  • Delete: Click trash icon

DSP Overview

Full Processing Chain

Audio Samples
  ↓
1. Gain (scale sensitivity, clip to ±1.0)
2. Low-Cut (Butterworth 2nd order Highpass, 12 dB/oct)
3. High-Cut (Butterworth 2nd order Lowpass, 12 dB/oct)
4. RMS Calculation (→ value 0.0–1.0)
5. Smoothing (exponential moving avg, separate attack/release)
6. Response Curve + Gate/Limiter
7. OSC Min/Max Scaling
  ↓
Output (float) → OSC

Why This Order?

  1. Gain first — Boost weak signals before filtering
  2. Filters second — Clean the boosted signal, isolate bands
  3. RMS third — Convert to smooth positive value
  4. Smoothing on X — Smooth before curve to prevent jitter
  5. Curve + Gate/Limiter — Shape response and active range in one step
  6. OSC scaling last — Map to receiver's expected range

Gate/Limiter Behavior

Gate and Limiter define the active range where the response curve operates:

X < Gate       → Y = 0  (signal ignored)
X in [Gate, Limiter] → Y = 0–1 (curve applied)
X > Limiter    → Y = 1  (signal maxed)

Response Curves

Curve Formula Best For
Linear y = x Direct 1:1 mapping
Logarithmic y = log₁₀(1+9x) Gentle rise, sensitive to quiet
Exponential y = x² Aggressive/punchy effects
S-Curve y = x²(3–2x) Natural feel (recommended)

Subs

Creating Subs

  1. Click "Add Sub"
  2. Set name, OSC connection, OSC address, initial slider value
  3. Optionally set custom OSC Min/Max range

Control Methods

Method Action
Drag slider Click and drag handle
Click track Jump to position
Type value Click number, type, press Enter
Shift+Drag Fine control (slower)
Alt+Drag Snap to 0.0, 0.25, 0.5, 0.75, 1.0

External Control

Enter Patch Mode (Tab) → Click slider → Configure DMX/MIDI → Use Learn Mode to auto-detect.

Common Patterns

  • Master Intensity: Sub at 1.0 → /master/intensity
  • RGB Color: Three subs → /rgb/red, /rgb/green, /rgb/blue
  • MIDI→OSC Bridge: MIDI Console fader → JENS sub → OSC to software / light desk

Output Protocols

OSC

Open Sound Control: UDP-based network protocol for multimedia. Low-latency, flexible addressing, widely supported (TouchDesigner, ETC, Resolume, Max/MSP).

Creating a Connection

  1. Settings → OSC → Add Connection
  2. Name: Target software (e.g., "Resolume")
  3. Host: 127.0.0.1 (same machine) or IP address

Address Format

Rule Example
Must start with / /audio/level
Case-sensitive /Drums/Kick/drums/kick
Use hierarchies /drums/kick, /channel/1/intensity
No spaces or special chars Letters, numbers, _, -, /

Naming Strategies

  • By Source: /drums/kick, /vocals/lead
  • By Function: /lighting/intensity/master, /video/opacity
  • By Channel: /channel/1/intensity, /zone/1/master

Testing

Use an OSC monitor (Protokol, OSC Data Monitor) to verify messages. Configure it to listen on the same port as your JENS connection.

Tip: JENS sends float values in your configured OSC Min/Max range (default 0.0–1.0). If the receiver expects 0–255, either set OSC Max to 255 or scale on the receiver side.

Audio Monitoring

Audio Monitoring routes an audio input connection directly to an output device for monitoring — pure passthrough without any DSP processing. Be aware: "BUFFER_MAX_SAMPLES = 4096" this cause a delay up to 85ms.

Setup

  1. Settings → Audio → Audio Monitoring section
  2. Click "Add Output"
  3. Source: Select the input connection to listen to
  4. Output Device: Select the playback device (e.g., speakers, headphones)
  5. Output Channels: Select which output channels receive audio (all channels if none selected)

Use Cases

  • Monitor Mix: Listen to the audio being analyzed while building your show
  • Soundcheck: Verify audio input is working correctly before going live
  • Multi-Output: Route the same input to different output devices simultaneously
Note: Audio Monitoring is a raw passthrough — no gain, filtering, or other DSP is applied. The input connection's channel mix (mono) is sent directly to the selected output channels.

Behavior

Scenario Result
Source input deleted Output automatically clears source (shows "No Source"), playback stops
No samples available Silence is output (no crackling or artifacts)
Multiple outputs on same input All outputs receive the audio independently