← All modules

@maru shared this module so you can build on it and use it in your DAW.

AvailableMIDI & Modulation

Velocity

Shape, compress, or randomize note velocities.

About

A MIDI effect that reshapes how hard each note hits, without changing its pitch or timing. Use it to even out a performance, exaggerate it, lock every note to one level, or add a little human variation.

Controls

  • Mode picks one of four curves:
  • Linear scales every velocity. At 50% Amount nothing changes; lower values play softer, higher values louder.
  • Compress pulls velocities toward the middle (64), evening out dynamics. At full Amount every note lands on 64 before Offset.
  • Expand pushes them away from the middle, exaggerating dynamics, up to twice the original spread.
  • Fixed ignores the incoming velocity and plays every note at the level Amount sets.
  • Amount sets the strength of the curve.
  • Offset (−64 to +64) is added after the curve: positive is louder, negative softer.
  • Random adds a spread of up to ±64 at full setting. The variation is repeatable rather than truly random, so a render plays back the same way every time.
  • The Process on / Pass through switch turns the effect on and off; Pass through leaves velocities unchanged.

Output is always kept between 1 and 127. It never reaches 0, because a velocity of 0 would turn a note into a note-off.

The ledger on the face shows what a few example input velocities become with the current settings, and a small plot draws the full curve. Both leave out the random spread.

Getting started

Velocity sits between a MIDI source and an instrument. Try Compress with a high Amount to tame an uneven keyboard part, or Fixed for drum parts that should hit at one level. There are no presets; the defaults (Linear, 50%, no offset, no randomness) leave notes unchanged.

How it works.

The velocity transform is applied inline to every noteOn. The curve mode selects the mapping function, amount controls its intensity, offset shifts the result, and random adds a deterministic spread. The seed is a hash of a running note counter, so the random sequence repeats exactly across renders and in the test suite. Output is always clamped to 1–127.

What would you make with Velocity?

Describe what you want to make. Build it with the Studio agent.

Goes well with.

Building block

Transpose notes by semitones and octaves.

Building block

Turn single notes into chords.

Building block

Add timing and velocity jitter for human feel.

Building block

Walk held notes through a rhythmic pattern.