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 "+ 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 / Output Settings → MIDI → pick an Input Device and (optionally) an Output Device. The output is used to drive LEDs on MIDI pads for Toggle-button feedback.

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, enable toggle, etc.)
  3. Configure input: DMX (connection + channel 1–512) or MIDI (connection + CC 0–127, or Note 0–127)
  4. Use Learn Mode to auto-detect — just move a MIDI controller or hit a MIDI pad button
  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), Attack, Release, enable
  • Analyzer: Type-specific params (Sensitivity, Decay, Window, Min/Max ranges...), Smoothing, OSC range, enable
Scaling: DMX (0–255) and MIDI (0–127) are automatically scaled to match each parameter's range. The enable toggle treats any input value above 50 % as ON.

MIDI Note vs CC

In the MIDI patch popup you can choose between two message types:

  • CC — Continuous Controller (knobs, faders). Value 0–127 maps directly to the parameter range.
  • Note — Note On/Off (pad buttons, keys). The velocity (0–127) drives the parameter while the button is held, or use Toggle mode to latch the state.

The note number field also displays the musical name (e.g., C4 for note 60). Learn Mode detects both kinds — press a pad to learn a Note, move a knob to learn a CC.

Toggle Mode (Note only)

When patching a Note input you can enable Toggle to turn a momentary pad button into a latching switch. The state machine flips on the release edge for natural haptics:

  1. State OFF → press → state ON instantly, release keeps it ON.
  2. State ON → press → state stays ON (armed for off), release → state OFF.

Result: every full press-and-release cycle toggles the parameter once, and the value never flickers while you’re still holding the button.

MIDI Out Feedback (LEDs)

If a MIDI connection has an Output Device configured (Settings → MIDI), JENS mirrors each Toggle state change back to that device as a Note On (velocity 127) or Note Off on the same note. Most MIDI pads (Launchpad, APC, Push, etc.) light up the corresponding button LED when they receive that note — giving you a visual indication of which toggles are active without looking at the screen.

Channel: Toggle feedback is sent on MIDI Channel 1. Sends only happen on actual state changes — no continuous spam.

Examples

  • DMX Universe 1, Ch 10 → Track "Kick" Gain
  • MIDI CC 1 → Track "Main" Smooth Fall
  • MIDI Note C4 (Toggle ON) → Sub "Strobe" enable — pad LED stays lit while the sub is active
  • DMX Ch 1–3 → Subs "Red", "Green", "Blue"

Tracks

Creating Tracks

Quick Create

  1. Click "+ 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 a custom range for all OSC outputs of the item (default 0.0–1.0). Set in the OSC group header of the OUTPUTS section.
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 "+ Sub"
  2. Set name and initial slider value; set the OSC connection and address in the OUTPUTS section
  3. Optionally set a custom OSC Min/Max range or add DMX outputs

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
Kick Bass-drum hits via time-domain band-pass Kick-locked strobes and flashes with low latency
Pitch/Key Played note (fundamental) of a single-note source Note-triggered cues (Note Gate), note-to-colour mapping

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.

Kick

Dedicated bass-drum detector that works directly on the audio samples instead of the FFT. The signal runs through a band-pass filter, then a fast envelope (~5 ms) is compared against a slow baseline (~300 ms). When the fast envelope jumps clearly above the baseline, the output pulses to 1.0 and decays to 0 over the Decay time.

Compared to Onset it skips the FFT window and therefore reacts faster, and sustained bass notes don’t retrigger because only the rise in energy counts. Snare and vocals are filtered out by the band-pass before detection.

Parameters

Parameter Function
Frequency Band-pass range. Default 40–120 Hz — covers typical kick fundamentals (808 sub ~40 Hz, house ~50–60 Hz, acoustic 80–100 Hz).
Sensitivity 0–1, default 0.5. Below 0.05 the analyzer is effectively off; higher values trigger on smaller jumps above the baseline.
Decay 30–400 ms, default 100 ms. How long the pulse takes to fall back to 0. Also the retrigger lockout time.

Presets

  • 808 Sub — 30–80 Hz, Decay 150 ms, Sensitivity 0.40
  • House Kick — 40–120 Hz, Decay 100 ms, Sensitivity 0.50
  • Acoustic — 60–180 Hz, Decay 80 ms, Sensitivity 0.60
Tuning tip: If the bass line triggers the kick, narrow the Frequency range or lower Sensitivity. If fast kick rolls are missed, shorten Decay — it also limits how quickly the next hit can trigger.

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).

Spectral Analyzers

Four band-statistics analyzers that share the same FFT cache as Onset / Centroid. All four output a smoothed 0–1 value and are patchable like every other analyzer.

Flux

Sum of positive magnitude differences between consecutive FFT frames, scaled by Scale Max. Softer than Onset — rises with any change in the spectrum, not just sharp transients. Useful for "intensity increases" lighting events.

Rolloff

Frequency below which X % of the total energy lies (Percent slider, default 85 %). Log-normalised between the configured min/max Hz. Goes up when the mix gets brighter (drum buildup, hi-hat, vocals on top).

Flatness

Wiener entropy (geometric/arithmetic mean ratio). 0 = pure tone, 1 = white noise. Distinguishes pitched material from cymbal/reverb/noise washes. No tuneable params besides Attack / Release.

Shape

Spectral statistics around the centroid:

  • Spread — how wide the spectrum is in Hz
  • Skewness — bipolar; 0.5 = symmetric, <0.5 = bass-heavy, >0.5 = high-heavy
  • Kurtosis — how peaked the distribution is around the centroid

Mode picker sets sensible defaults for Scale Max when switching (spread in Hz, skew/kurt dimensionless).

Pitch/Key

Detects the fundamental frequency of a single note via Harmonic Product Spectrum on the full linear FFT magnitudes — the harmonics (2f, 3f, 4f …) are used to find the fundamental. Designed for monophonic sources (bass, voice, lead synth).

Settings

  • Mode — Hz outputs the log-normalised frequency (default). Note Class ignores the octave and outputs the pitch-class index (0 = C, 1 = C#, …, 11 = B) normalised to [0, 1]. Note Gate outputs 1 while one of the selected notes is played and 0 otherwise.
  • Range (Hz) — the band the search runs in (default 300–20000 Hz). Lower Min for bass notes. In Hz mode the output's log-normalisation derives from these values.
  • Harmonics — 2–6 (default 4). Use 4–5 for clean voices / pitched instruments, 3 for rougher sources.
  • Confidence (0–1, default 0.25) — ratio of the HPS peak to the average magnitude in the search band, saturated to [0, 1]. Below this threshold (consonants, breath, silence) the analyzer holds its previous value (Note Gate: counts as “no note”).
  • Quantize (Hz / Note Class) — Free outputs the raw HPS frequency; Semitone snaps to the nearest 12-TET pitch (A4 = 440 Hz).

Note Gate

  • Notes — C … B, multiple selectable. Every octave counts (C2, C3, C4 … all trigger C).
  • Hold (default 120 ms) — how long the gate stays open when detection briefly drops out.
  • Attack / Release (default 0 ms) — fade time 0 → 1 when the note starts and 1 → 0 after Hold has elapsed. 0 = hard switch.
Note-triggered light: Mode: Note Gate, select the notes, set Range to the instrument (e.g. 40–400 Hz for bass), Hold ~120 ms, Release ~300 ms for a soft fade.

Chroma (Pitch Class Profile)

Aggregates spectral energy into 12 pitch classes (C, C#, …, B) by mapping every FFT bin to its MIDI note modulo 12. The internal 12-vector is exponentially smoothed by Smoothing ms before the dominant class is picked, so the output doesn't flicker between near-equal classes every frame.

Output is dominant_class / 11, normalised to [0, 1]. Frequency range used internally is A0 (27.5 Hz) to ~5 kHz — higher bins are mostly harmonics, not fundamentals.

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.).

Built-in Quick Presets

Every analyzer ships with a row of one-click presets that set the most common configurations in a single shot. They only touch the fields they actually change — other slider values stay where you put them.

AnalyzerPresets
OnsetKick · Snare · Hi‑Hat
Kick808 Sub · House Kick · Acoustic
StereoMix Width · Pan · Reverb Tail
CentroidHi‑Hats · Voice · Mix · Bass
CrestDrum Energy · Vocal Dynamics · Mix Compression
LUFSLive Show · Mastered Music · Quiet Speech
FluxSensitive · Moderate · Strong Only
RolloffBrightness · Edge · Median
ShapeSpread Wide · Bass↔Treble Bias · Pure‑Tone Sensor
ChromaFast Tracking · Stable Lead · Chord‑Locked

Confidence Gates

Every analyzer that reads from the FFT now has a low‑energy gate to prevent its output from flickering on the noise floor between songs / during pauses.

  • Spectral Confidence — Centroid / Rolloff / Flatness / Shape. When the total magnitude inside the analysis band drops below this threshold, the analyzer holds its last value instead of reacting to noise. Default 0.05; raise it for stricter rejection.
  • Pitch Confidence — ratio between the HPS peak and the average magnitude in the search band. Already documented in the Pitch/Key article.
  • Chroma Confidence — minimum aggregated magnitude before the rolling chroma vector is updated. Default 0.05.

Enable / Disable

Toggling an analyzer off does the same thing it does on a Track: the card greys out and stops sending OSC, but the internal DSP and the on‑card visualisation keep running so you can still see the meter move while the OSC bus stays silent. Re‑enable to resume sending instantly.

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.

Math Items

A Math item combines the values of other items and numbers, and sends the result to OSC and DMX like any other item. Add one with + Math.

Calculation

  • Input — the starting value: a Track, Sub, Analyzer, another Math item, or a fixed number (“Value”).
  • Steps — each + Step adds an operator (+ − × ÷ Min Max) and an operand (item or number).
  • Steps are calculated top to bottom like a pocket calculator, without operator precedence: 1 + 2 × 3 = 9.
  • Items contribute their normalized value (0–1, the value on their OUTPUT bar). Math items contribute their result.
  • Division by zero gives 0. An operand set to None or a deleted item counts as 0.

Limit & Result

  • Limit Min / Max — the result is clipped to this range. CLIP lights red while clipping.
  • Invert — mirrors the clipped result within the Limit range (Limit 0–1: 0.2 → 0.8; Limit 0–2: 0.5 → 1.5). Patchable via DMX/MIDI.
  • Result — the clipped (and inverted) value. For OSC and DMX the result is mapped from the Limit range to 0–1, then through the usual OSC / DMX Min/Max. A new Math item starts with OSC Min/Max equal to the Limit, so OSC sends the real result.
Examples: Track 1 × Analyzer Pitch/Key — Track 4 × 2.3 − 0.5 — Sub 2 × 3 with Limit Max 2 clips at 2 when Sub 2 is at 1.

Chaining & Patching

  • A Math item can use other Math items. Loops (A uses B, B uses A) are rejected.
  • Patchable via DMX/MIDI: On/Off, Limit Min/Max, Invert, and every fixed number (click the number field in patch mode).

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.

The OUTPUTS Section

Tracks, Subs and Analyzers share the same OUTPUTS section:

  • OUTPUT — live bar with the item’s normalized value (0–1).
  • OSC group — header with Min/Max (applies to all OSC outputs of the item), then one row per output: address, library, connection, the value actually sent, and × to remove.
  • DMX group — header with Min/Max (0–255, applies to all DMX outputs), then one row per output: channel, 8/16 bit, live bar, connection, sent value, ×.
  • + OSC Output / + DMX Output — add outputs. A group only appears once it has at least one output, so an item can send OSC only, DMX only, both or nothing.

Every OSC output sends the same value. Outputs can target different connections, or the same connection with different addresses. Shows from JENS 1.3.0 and earlier are converted automatically: the former primary output becomes the first row.

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.

DMX Output

JENS can send DMX via sACN (E1.31) or Art-Net. Create an output under Settings → DMX → DMX Connections (Output), then click + DMX Output in the OUTPUTS section of any Track, Sub or Analyzer.

Output Connection

SettingFunction
ProtocolsACN (default) or Art-Net.
Network AdapterInterface the packets leave on. Pick the adapter of your lighting network.
UniversesACN: 1–63999. Art-Net: Net (0–127) / Subnet (0–15) / Universe (0–15).
PrioritysACN only, 0–200 (default 100). Receivers merge sources by priority — higher wins.
Source NamesACN only. Name shown on consoles and sACN viewers.
TransmissionsACN Multicast (default, 239.255.x.x) or Unicast to a Target IP.
Target IPArt-Net: empty = broadcast on the adapter, or a node IP for unicast.
Rate (Hz)Packets per second, 1–44 (default 40). The full universe is resent continuously.

The power button on the card starts / stops sending. When sACN stops (button, deleting the output, quitting JENS) a “Stream Terminated” packet is sent so consoles release it immediately.

Behavior (Settings → DMX)

When Muted or Item Disabled applies to every DMX output — both to disabled Tracks/Subs/Analyzers/Math items and to the Mute button:

  • Hold — channels keep their last value; the light freezes.
  • Send Min (default) — channels drop to the output’s Min value; a blackout with Min 0.
  • Release — a disabled item stops writing its channel (0, or another item’s value). On Mute every DMX output stops sending (sACN sends “Stream Terminated”, so a console or merger takes over immediately).

DMX Output on an Item

  • Ch — DMX channel 1–512.
  • Bit 8 / 16 — 16-bit uses two channels (Ch = coarse, Ch+1 = fine) for smooth fades.
  • Live bar + value — what is actually sent (0–255). “–” means the channel is not written (no connection or released).
  • Connection — which output universe to write to.
  • Min / Max (DMX group header) — DMX range 0–255 for all DMX outputs of the item. Min > Max inverts.
  • Orange dot — another output uses the same channel on the same connection (hover for details).
Several items on one channel: the highest value wins (HTP), as on a lighting console.

The Mute button stops OSC and treats every item as disabled for DMX, following Settings → DMX → Behavior. Use DMX OUT in the I/O Monitor to see what is sent.

Other DMX software on the same computer: JENS shares the sACN (5568) and Art-Net (6454) ports, so a console, visualizer or sACN viewer on the same machine can receive JENS’ output while JENS receives DMX. Use sACN Multicast for this — with several programs on one port, unicast packets reach only one of them. The other program must share the port as well (most sACN software does).
Feedback loops: JENS ignores its own sACN packets on its DMX inputs. With Art-Net, avoid an input on the same universe as an output — the Settings card warns about this.

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

Playback

A Playback item loads an audio file (MP3, WAV, FLAC, OGG, AAC, ALAC) and exposes it as a regular audio source. It behaves like an audio input connection: any Track or Analyzer can listen to it, and its output is audible through any Audio Monitoring route.

HE‑AAC (SBR / Parametric Stereo) is not supported — the decoder flags the file with a clear error rather than playing it back at the wrong sample rate.

Adding a Playback

  1. Header bar → "+ Playback"
  2. Pick an audio file in the OS dialog
  3. The file is decoded on a worker thread; duration, sample rate, and channel count appear on the card once probing finishes.
Audible output: Playback feeds an internal audio source with the playback's id. To hear it, add an Audio Monitoring output and choose the Playback as the source (Settings → Audio → Audio Monitoring).

Transport

Top action row, left‑to‑right:

  • CUE — jumps the transport back to the stored cue point (defaults to 0). Right‑click sets the cue to the current playhead position.
  • Play / Pause — toggles transport. While playing, the card glows in the accent colour and the icon switches to pause.
  • Collapse — hides the body, keeps the compact row visible.
  • Delete — removes the playback.

Body controls

  • Waveform — click to seek. Right‑click anywhere on the waveform sets the cue point to that position (no context menu opens).
  • Loop button + position slider + time — see Loop section.
  • Auto‑play‑on‑CUE button + cue slider + cue time — see CUE section.

Loop

The loop region is highlighted in orange on the waveform. Toggle the loop button to enable looping; when active the playhead wraps from loopEnd back to loopStart.

  • Drag the start / end handles on the waveform to resize the region.
  • Alt + drag across the waveform to draw a fresh loop region from scratch.
  • On first activation, the loop defaults to the full file (0 → duration).

Loop state, start, and end positions are stored in the show file.

CUE Point

A CUE is a saved transport position the Playback can jump to with a single button press. CUE is great for live workflows where a track should always restart from a known anchor (drop, hit, intro).

Setting the CUE

  • Cue slider in the CUE row scrubs the cue point with live preview of the marker.
  • Right‑click the waveform at the desired position.
  • Right‑click the CUE button drops the cue at the current playhead position (fastest way during monitoring).

The CUE point appears as a blue vertical marker on the waveform with a small "CUE" label.

Auto‑play on CUE

The toggle button left of the cue slider decides whether CUE also kicks off playback after seeking:

Auto‑PlayBehaviour
Off (default)CUE jumps to the cue point and pauses.
On CUE jumps to the cue point and starts playback. The CUE button icon flips 180° to advertise the next behaviour.
Patching CUE: both CUE and Play are patchable parameters. Patch them to a DMX channel or MIDI Note; CUE fires on the rising edge (sustained high values do not retrigger). Auto‑Play applies to patched triggers too.

Source Gain

The Gain slider sits at the very first stage of the audio chain — the decoded samples get multiplied by this factor before any DSP routing or Track / Analyzer processing. Range 0–3×. Double‑click the slider to reset to 1.00 (unity).

  • The waveform display scales live with the gain — easy visual feedback for what the signal is doing.
  • Red clipping ticks appear on the waveform whenever a sample hits ±1.0 after gain. Pushing above unity intentionally hard‑clips like a real mixer input trim.
  • The value is stored in the show file and restored on reload.

Audio Connections (Settings → Audio → Input Connections) have the same Source Gain control with identical behaviour for the live capture path.

Items List

Tracks, Subs, Playbacks, and Analyzers all live in a single unified list. Items can be reordered freely via drag‑and‑drop; there is no fixed section separation between item types.

Drag & drop

  • Grab any card’s drag handle (6‑dot grip on the left) and drop it at the desired position. The active drop zone is outlined in the accent colour while you drag.
  • Drop on top of a group container or its header to move the item into that group. Collapsed groups expand temporarily during the drag so the destination is visible.
  • Drag out of a group body back onto the top‑level list to pull an item out of its group.
  • Group containers themselves can be reordered via the grip on the group header. Groups cannot be nested inside other groups.

Groups

Groups are a purely visual organisation layer — they don't affect audio routing or DSP. Use them to collapse related items into a labelled container for live cue‑sheet style overview.

Creating a group

  1. Click and Shift+click cards to build a selection.
  2. Right‑click any selected card → "Create Group from Selection".
  3. A new group container appears at the position of the first selected item, with the name field focused. Type a name and press Enter.

Group header

  • Caret on the left collapses / expands the group body (or double‑click anywhere on the header).
  • Editable name inline.
  • Member count.
  • "Ungroup" dissolves the group; members go back to the top‑level list at the group's previous position.

Smart context menu

The right‑click menu adapts to the selection's group membership:

  • All selected items are outside any group → "Create Group" and "Add to Existing Group" are shown.
  • All selected items are in the same group → "Remove from Group" and "Move to Other Group" are shown.
  • Selection is mixed (different groups, or partly in / partly out) → group actions are hidden — the action would be ambiguous.

Groups and their member lists are persisted in the show file.

Selection & Bulk Actions

The unified items list supports multi‑selection so the same operation can be applied to many cards at once.

Selecting

  • Click a card to select it.
  • Shift + click to toggle membership.
  • ⌘/Ctrl + A selects every visible card.
  • Esc clears the selection.
  • Cards inside a collapsed group are skipped by ⌘+A and arrow navigation.

Right‑click menu

Right‑clicking a selected card opens a cascading menu with true hover‑driven submenus (Set Audio Source ▸, Set OSC Output ▸, Set DMX Output ▸, Move to Other Group ▸, …). Submenus stay open while the cursor is anywhere in the menu or submenu and close after a short grace period when the cursor leaves both.

Bulk actions

  • Set Audio Source ▸ applies to selected Tracks and Analyzers; Subs, Math items and Playbacks are skipped silently.
  • Set OSC Output ▸ sets the connection of the first OSC output of selected Tracks, Subs, Analyzers and Math items. An item without OSC output gets one with its default address.
  • Set DMX Output ▸ sets the connection of all DMX outputs of the selected items. Items without a DMX output are skipped (reported in the toast) — add one in the item’s OUTPUTS section first to choose its channel.
  • Enable / Disable selection toggles the enabled flag. Items whose enabled is currently patched are skipped and reported in the toast ("N patched, skipped").
  • Expand / Collapse selection toggles the card body visibility for all selected cards (and any selected group container).
  • Create Group / Add / Move / Remove — see Groups.
  • Duplicate N items clones every setting onto a fresh id, appends " (copy)" to the name, and inserts the duplicate right after the source. If the source lives inside a group, the duplicate joins the same group. Patch mappings are not carried over.
  • Delete N items confirms via native dialog, then deletes in parallel. Tracks, Subs, Analyzers, Math items and groups can be restored with Undo; playbacks cannot. Deleting a group only dissolves it — its items are kept.

Keyboard Shortcuts

KeyAction
↑ / ↓Move selection to previous / next visible item
→Expand selected card(s) and group(s)
←Collapse selected card(s) and group(s)
EnterToggle enabled on selection (skips patched items)
⌘ / Ctrl + ASelect every visible item
EscClear selection and close any open context menu
⌘ / Ctrl + ZUndo (items, patches, order and groups — not playbacks)
⇧ + ⌘ / Ctrl + ZRedo
Keyboard shortcuts are suppressed while a text input or textarea has focus, so they never hijack normal editing.

OSC Library Number Picker

Some library nodes are parametric (e.g. Resolume layer number, clip column). When you navigate to a parametric node, the tree row exposes an inline stepper:

  • [−] / [+] buttons clamp to the parameter's min / max.
  • The value can also be typed directly in the centre field.
  • Editing the number updates the live OSC path preview at the bottom of the panel without leaving the tree node.