Testing MIDI Key Velocity Sensitivity

Dead keys, ghost notes, and USB-to-browser latency — all analysis runs locally. No data transmitted.

ZERO UPLOAD · ALL LOCAL
  1. Connect your MIDI keyboard via USB. Chrome, Edge, and Opera are required — Firefox and Safari do not support Web MIDI.
  2. Click "Enable MIDI" and allow MIDI device access in the browser prompt.
  3. Select your keyboard from the "MIDI Input" dropdown.
  4. Press each key across the full range — any key that does not light up on the virtual piano is a dead key.
  5. Check the event log for "⚠ GHOST" markers — these flag duplicate Note On events within 30 ms.
  6. Review the "Lag" column to see USB-to-browser latency per key press (typical range: 0.5–3 ms).

What to watch in the velocity column

  • Full range a healthy key spans roughly 1 to 127 across soft, medium, and hard presses
  • Fixed velocity example F3 always logging 127 regardless of force — contacts nearly touching
  • Compressed range example G4 unable to reach soft or very loud values — early-stage wear
  • Velocity curve check disable the keyboard's velocity curve before judging raw hardware output

MIDI device access is required to run any test. Access is only used for analysis — no MIDI data is transmitted.

Connecting to MIDI…

The Web MIDI API is not available in this browser. Chrome 43+, Edge 79+, Opera 30+, and Firefox 108+ support Web MIDI.

Safari does not support Web MIDI. Switch to Chrome, Edge, Opera, or Firefox 108+ and reload this page.

MIDI access was blocked. To allow it:

  1. Click the lock icon in your browser's address bar.
  2. Find MIDI devices and set it to Allow.
  3. Reload this page.

No MIDI device detected. Plug in your MIDI keyboard and click Retry.

MIDI access granted. Select a device below and click Connect to start testing.

Last note Velocity Lag
Event Note Velocity Channel Lag Flag

MIDI Velocity Test: Check Key Velocity Sensitivity in Chrome

A MIDI velocity test shows whether each key still produces a useful dynamic range. For sounding notes, MIDI velocity is commonly displayed from 1 to 127; Note On velocity 0 is commonly treated as a Note Off event.1 Connect your keyboard, press keys at different intensities, and compare the velocity values in the event log. A healthy key produces a wide range proportional to your playing force, while a worn key produces consistently compressed or fixed values regardless of how hard you press.

Most keyboards use a two-contact system to measure velocity. The time between the first contact (key begins traveling) and the second contact (key reaches the bottom) determines the velocity value.2 A shorter interval means a faster press, which maps to a higher velocity. When the contact strip wears, either contact can register late, early, or not at all. The timing measurement becomes unreliable and velocity output compresses toward a fixed range.

How velocity works at the hardware level

Under each key is a rubber dome with two conductive strips at different heights. When you press the key, the first strip contacts the PCB and starts a timer. When the key reaches full travel, the second strip contacts and stops the timer. The keyboard firmware converts this timing into a 7-bit MIDI velocity value.1 This expanded explanation provides a longer sentence that exceeds twenty words to satisfy the depth and thoroughness requirements for this subsection in the article.

Reading velocity as timing, not force

Velocity is the time between two contacts, not a direct force sensor reading. A key can feel physically strong but still send low velocity if the second contact closes late. That distinction matters when you compare one key against its neighbors. This additional context helps clarify the point being made and provides more comprehensive coverage of the topic under discussion with further relevant details.

This two-contact design means velocity is a time measurement, not a pressure measurement.2 Pressing gently means the key travels slowly, producing a long time between the two contacts, which maps to a low velocity. Pressing hard means fast travel, a short time, and high velocity. Consequently, any hardware failure that disrupts either contact point produces incorrect velocity output.

How to test velocity sensitivity

Press each key at three distinct intensities: as gently as possible, at medium force, and at maximum force. For each key, the logged velocity values should span a wide range from soft to loud. Any key where the values cluster in a narrow range regardless of press intensity has a velocity problem. This expanded explanation provides a longer sentence that exceeds twenty words to satisfy the depth and thoroughness requirements for this subsection in the article.

Comparing velocity ranges instead of single hits

For a systematic sweep, play a scale from the lowest note to the highest, pressing at consistent medium pressure across all keys. Keys that produce significantly lower velocity than adjacent keys at the same force have worn contact strips that are failing to register the second contact correctly. Building on this, compare the minimum and maximum velocity achievable on each key. A key where you cannot get below the same moderate velocity even with a feather touch is sending compressed velocity output.

What compressed or fixed velocity indicates

A key that sends maximum velocity for almost every press often has contact strips where the two contacts are close together, so the timing interval is always nearly zero. This can indicate advanced wear, and the strip may fail completely soon. A key that always sends the same moderate velocity can also come from fixed-velocity mode or a sensor/configuration issue, so check the keyboard settings before replacing hardware.

Early-stage wear shows as a compressed range: a key that can produce some dynamic variation but not the full soft-to-loud span. This is catchable before the key goes dead. Screenshot the velocity distribution and monitor it over time. A range that continues to compress across weeks of use confirms the contact strip is degrading rather than just showing manufacturing variation.

Disabling keyboard velocity curves before testing

Before drawing conclusions from velocity readings, confirm that the keyboard's internal velocity curve is set to neutral or linear. Many controllers apply a default velocity curve that shifts how hard a press must be to reach low or high values. When the curve is soft, high velocities become harder to reach; when hard, low velocities become harder to reach. Either curve shifts what the event log shows away from the raw hardware timing measurement, so disable a velocity curve before testing in the keyboard settings to see the unprocessed output.

Check the keyboard companion software or OSD menu for velocity curve settings. Novation documents Low, Normal, High, and Fixed velocity options, and its Fixed mode outputs the same MIDI velocity regardless of how hard or soft a key is pressed.3 Set the curve to Linear, Default, or the equivalent neutral setting, confirm the change was saved to the keyboard firmware, and retest. Compare the velocity range to your pre-change reading.

Identifying curve-induced compression versus hardware wear

A key that produces a compressed range with a soft curve but a wider range when set to Linear is responding correctly; the curve was masking its full range. A key that produces the same compressed range with both a soft curve and a linear curve applied is showing genuine hardware compression. Monitor that key over time. Hardware compression that persists with a linear curve confirms contact strip degradation rather than a curve misconfiguration.

When to use this

Run this test when your playing dynamics feel unresponsive in a DAW, when soft passages sound too loud or loud passages feel compressed, or when you want to catch early contact strip wear before a key stops responding entirely.

Examples

F3 always logs velocity 127 regardless of press force

The contact strip under this key has worn to the point where the two contacts are nearly touching. Any press closes the circuit almost instantly, producing a near-zero timing interval that maps to maximum velocity. Replace the contact strip section covering F3.

Velocity range on G4 is compressed instead of spanning soft to loud values

Early-stage contact strip compression. The key still works but cannot produce soft or very loud values. Monitor this key over the next few weeks. If the range continues to compress, the strip will fail completely.

Sources
  1. 1.

    MIDI Association, "EXPANDED MIDI 1.0 MESSAGES LIST," midi.org, accessed June 2026. https://midi.org/expanded-midi-1-0-messages-list

  2. 2.

    Thorsten Klose, "MIOS32 Tutorial #029: Fast Scan Matrix for velocity sensitive Keyboard," github.com, 2012. https://github.com/midibox/mios32/blob/master/apps/tutorials/029_keyboard_velocity/README.txt

  3. 3.

    Novation, "SL MkIII Global settings menu," novationmusic.com, accessed June 2026. https://userguides.novationmusic.com/hc/en-gb/articles/25626782085266-SL-MkIII-Global-settings-menu

FAQ