JENS Help

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). For Stereo Analyzers, also assign L/R channels in the “Stereo L/R” row.
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
  ↓
0. Pinking Filter (+3 dB/Oct, perceptual loudness compensation)
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

Pinking Filter (Auto-applied)

At the very start of the DSP chain JENS applies a +3 dB/Octave high-frequency boost (6 cascaded high-shelf biquads from 125 Hz to 4 kHz). This compensates for the human ear’s bass-bias when measuring loudness — without it, bass-heavy content would dominate the RMS reading even when the perceived loudness is similar.

Auto-Gain

Click the AUTO pill next to the Gain slider to enable Auto-Gain. JENS tracks the rolling input-RMS average (~3 seconds time constant) and automatically adjusts the effective gain to hit a target level (default 0.3). The Gain slider becomes dimmed; the value visible to the rest of the chain is the auto-adjusted one. Good for shows where the input level varies between songs.

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

Analyzers

Overview

Analyzers are advanced audio analysis modules.

Unlike Tracks (which output overall RMS level), Analyzers focus on what kind of audio is happening — transients, stereo character, brightness, dynamics, loudness.

Available Types

Type Detects Typical Use
Onset Sharp transients (drum hits, kicks, snares, hi-hats) Trigger strobes, flash lights, beat-synced effects
Stereo Width, Balance, or Side-Energy of L/R signal Spatial lighting effects, panning, wide vs narrow mix
Centroid Spectral brightness (where the energy lives) Color/hue mapping (bass = blue, treble = white)
Crest Peak-to-RMS ratio in dB (dynamics) Punchiness-based triggers, genre detection
LUFS K-weighted loudness (ITU-R BS.1770) Loudness-aware effects, perceived energy

Onset

Detects sudden energy increases in the spectrum — classic drum/percussion trigger. Output is an instant pulse to 1.0 on hit, then exponential decay to 0 over the configured Decay time.

Parameters

Parameter Function
Frequency Dual-handle range slider. Only spectral bands in this range contribute to detection. Default 20 Hz–16 kHz (full range).
Sensitivity 0 = effectively off, 1 = very sensitive. The detector uses a per-band median threshold + ratio voting, so this is scale-invariant across frequencies.
Decay How long (50–500 ms) the pulse takes to fall back to 0 after a trigger. Also the retrigger lockout time.

Drum Presets

Three quick-set buttons configure Frequency + Decay + Sensitivity for typical drum elements:

  • Kick — 30–150 Hz, Decay 200 ms, Sensitivity 0.35
  • Snare — 150–800 Hz, Decay 120 ms, Sensitivity 0.40
  • Hi-Hat — 5 kHz–16 kHz, Decay 60 ms, Sensitivity 0.65
Tuning tip: If a kick triggers too often, lower Sensitivity. If hi-hats aren’t catching, raise it. The algorithm is per-band scale-invariant, so a busy bass line won’t raise the threshold for snare or hi-hat detection.

Stereo

Decomposes the input into Mid (L+R) and Side (L−R) and reports one of three characteristics. Requires the Audio Connection to have explicit Stereo L/R channel assignment (Settings → Audio).

Modes

  • Width — ratio of side energy to total energy. 0 = pure mono, 1 = pure side. Loudness-independent.
  • Balance — (R−L) / (R+L) mapped to 0–1. 0 = full left, 0.5 = center, 1 = full right. For mono input it always reports 0.5 (centered).
  • Side — absolute RMS of the side signal. Scales with both width and loudness.
Stereo L/R setup: Open Settings → Audio → your audio connection → in the "Stereo L/R" section pick the left and right channels via the L / R buttons on each channel chip. Without this assignment, the Stereo analyzer returns mono defaults.

Centroid

Spectral Centroid — the weighted average frequency where the spectrum’s energy is centered. Low centroid = bass-heavy, high centroid = bright/treble-heavy.

Parameters

  • Min Hz / Max Hz — the Hz range that maps to the 0–1 output. Default 100–6000 Hz.

Output is logarithmically normalized over the Min/Max range, which matches how human hearing perceives brightness.

Idea: Map this to color hue. Bass-dominant sections become blue/red, build-ups and bright moments push toward white/yellow.

Crest

Crest Factor — ratio of peak amplitude to RMS amplitude, in dB, over a rolling window. High crest = punchy/percussive material; low crest = sustained/compressed material.

Parameters

  • Window — rolling window length (100–2000 ms). Longer windows average more.
  • Min dB / Max dB — the dB range that maps to the 0–1 output. Default 3–20 dB.

Idea: Gate strobe effects behind a Crest threshold — only fire strobes during punchy drum-heavy material, not during sustained drones.

LUFS

Loudness Units relative to Full Scale, computed with K-weighting (ITU-R BS.1770-4 standard). Models perceived loudness better than raw RMS.

Parameters

  • Mode — Momentary (400 ms window) or Short-Term (3 s window).
  • Min dB / Max dB — the LUFS range that maps to the 0–1 output. Default −40 to −10 dB (typical music level range).

Analyzer Presets

Click the bookmark icon in any analyzer’s header to open the preset menu. Save the current settings under a name, then apply that preset to other analyzers of the same type.

  • Save as Preset... — enter a name, press Enter. Stored in app_data_dir/AnalyzerPresets/ as JSON.
  • Apply — click a preset name to load it into the current analyzer.
  • Delete — click the X next to a preset name in the menu.

Presets only show for analyzers matching the saved type (Onset presets only appear on Onset analyzers, etc.).

Patching Analyzer Params

Most analyzer parameters can be controlled live via DMX or MIDI, just like Track DSP parameters.

Enter Patch Mode (Tab) → click any parameter slider in an analyzer card → configure DMX address or MIDI CC → the slider turns orange when actively driven by an external source.

Patchable params include: Sensitivity, Decay, Window, Crest Min/Max, LUFS Min/Max, Smoothing Rise/Fall, OSC Min/Max.

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.

Multiple OSC Outputs per Item

Each Track, Sub and Analyzer can send its value to multiple OSC destinations simultaneously. Beneath the primary OSC row, click + Add OSC Output to add another row with its own connection and address.

  • Same value is sent to every configured output.
  • Each additional output can target a different connection or the same one with a different address.
  • The X button on each row removes that output. The primary row’s X clears the primary output but keeps the row visible.
Address uniqueness: The same (connection, address) pair cannot appear twice in a show. JENS will reject the save and display the conflict via a toast.

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