v0.1Latest
MIDI Humanize
MIDI Humanize
Loosens mechanically precise MIDI playback by adding subtle timing and velocity variation. Timing jitter is applied around a delayed center so it stays causal, and velocity is nudged within a configured amount to break up uniform dynamics. The result feels more like a human performance without drifting out of time.

Inputs
MIDI In
- ID:
midi - Kind:
midi - Rate:
event - Coercion: Forbidden
- Description: MIDI message input
Seed
- ID:
seedMod - Kind:
control - Rate:
control - Range: 0 to 65535
- Coercion: Implicit
- Default:
0
Outputs
MIDI Out
- ID:
midi - Kind:
midi - Rate:
event - Coercion: Forbidden
- Description: MIDI message output
Parameters
Timing Spread (late)
- ID:
timingMs - Type:
float - Control:
slider - Range or Options: 0 to 50 ms, step 0.1
- Default:
0 - Description: Maximum random delay added to each note. Causal: live notes are pushed later only, never earlier.
Velocity Jitter
- ID:
velocityJitter - Type:
int - Control:
slider - Range or Options: 0 to 32 midiVelocity, step 1
- Default:
0 - Description: Random note-on velocity offset applied within the configured jitter range.
Probability
- ID:
probability01 - Type:
float - Control:
slider - Range or Options: 0 to 1 phase01, step 0.01
- Default:
1 - Description: Chance that an incoming note event is humanized instead of passing through unchanged.
Seed
- ID:
seed - Type:
int - Control:
numberInput - Range or Options: 0 to 65535 count, step 1
- Default:
0 - Description: Deterministic random seed for repeatable timing and velocity variation.
Notes
- Canonical ID:
midi.humanize - Category:
midi - Runtime Surface: midi
- Runtime Targets:
control-main-thread - JUCE Early Access: Supported
- Early Access Note: Native-supported in the plugin for the current catalog/runtime support contract.