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.

MIDI Humanize node screenshot

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.