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
-
Gain — Amplify/attenuate sensitivity
(clipped to ±1.0)
-
Low-Cut Filter — Remove unwanted low
frequencies (Highpass)
-
High-Cut Filter — Remove unwanted high
frequencies (Lowpass)
-
RMS Calculation — Convert waveform to
smooth value (0–1)
-
Smoothing — Slow down changes (separate
attack/release)
-
Response Curve + Gate/Limiter — Shape
feel, define active range
-
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
-
Press Tab to enter Patch Mode (highlights mappable
parameters)
- Click any parameter (gain, filter, slider value, etc.)
-
Configure input: DMX (connection + channel 1–512) or MIDI
(connection + CC 0–127)
-
Use Learn Mode to auto-detect — just
move the MIDI controller
-
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
- Click "Add Track"
-
Set name, audio connection, output connection, OSC address
- 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?
-
Gain first — Boost weak signals before
filtering
-
Filters second — Clean the boosted
signal, isolate bands
-
RMS third — Convert to smooth positive
value
-
Smoothing on X — Smooth before curve to
prevent jitter
-
Curve + Gate/Limiter — Shape response
and active range in one step
-
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) |
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
- Settings → OSC → Add Connection
- Name: Target software (e.g., "Resolume")
- 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
-
Settings → Audio → Audio Monitoring section
- Click "Add Output"
-
Source: Select the input connection to listen to
-
Output Device: Select the playback device (e.g.,
speakers, headphones)
-
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 |