a better search for max devices
Humanizer screenshot

Humanizer

by humanize

THIS DEVICE HAS BEEN SUPERSEDED BY THE GROUP HUMANIZER, WHIC...

View on maxforlive.com

Type
MIDI Effect
Author
humanize
Version
1.1
License
AttributionNonCommercialShareAlike
Live version
9.0.6
Max version
6.1.4
Downloads
19,991
Updated
2015-03-10

Description

THIS DEVICE HAS BEEN SUPERSEDED BY THE GROUP HUMANIZER, WHICH CAN HUMANIZE MULTIPLE CHANNELS, KEEPING THEIR VARIATIONS CORRELATED, IN A REALISTIC MANNER. WE RECOMMEND YOU DOWNLOAD THAT ONE INSTEAD:

http://www.maxforlive.com/library/device/2466/group-humanizer

---------------------------------------------------------------

1/f Humanizer: Add a bit of soul to your squared-off sequences

Summary:

Each incoming MIDI note is delayed a random amount of time. The delays that humans produce when playing music are not purely random but are correlated and can be described by colored noise (for example 1/f noise, also called pink noise). The 1/f Humanizer thus imitates the human type of delays. Based on the research article by

Holger Hennig et al, "The Nature and Perception of Fluctuations in Human Musical Rhythms", PLoS ONE 6:e26457 (2011). Free article download at www.plosone.org/article/info%3Adoi%2F10.1371%2Fjournal.pone.0026457

Max for Live implementation free for private use, written by James Holden.

Technical description:

For each incoming MIDI note (a list composed of one pitch and one velocity), the trigger object first asks a random object (pink~) to produce a random value in response to a bang message ("b"). The random range is set by the RandDel dial. The random value is then interpreted as delay time by the pipe object.

New in Version 1.1:

- window added, that shows the delays

- new switch between two modes:

(1) "minimum (but variable) mean delay". This setting makes the humanizer respond instantly to the selected 'range'. The mean delay is half the humanizer 'range'. Note that the current mean delay changes when adjusting 'range'. Recommended as default.

(2) "constant mean delay of 50 ms". Recommended when adjusting 'range' during performance.

Comments (5)

  • lek · January 29 2014
    Very good one. Any chance to get it a bit faster responsive? Going back and forth quickly to 0.00ms/ high values doesn't seem to bring the value to 0 as fast as the knob.
  • jholden · February 01 2014
    it wasn't really designed with that use case in mind - in this implementation (in order to add a minimal latency for any given range setting) the mean delay time changes as you turn the range knob.
    also i made the choice to use a buffered recording of pink noise as a workaround so that when notes arrive simultaneously (ie a chord) they can be given different delay values. this was a behaviour i desired for musical reasons, rather than something that the research justified, but the slight sacrifices made in achieving it don't spoil the coherence that makes the timing errors 'human'.
    i put the range-related calculations before the buffer for simplicity / because i hadn't considered your use case, but it would be trivial for you to move those objects to a point after the buffer read in the signal chain. also: to get it to behave how you want you should make it add (100 - range) to every delay value to keep the mean delay fixed as you turn the knob.
  • tekn0 · September 30 2014
    This device is amazing. I just want to say thank you for creating it.
  • STEVESLIGHT · December 17 2020
    it crashes my ableton
  • Yaseck · October 09 2025
    It crushes my Ableton too.

← Back to search