Identifying and Fixing MIDI Ghost Notes

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).

Signs of a genuine ghost note

  • Detection window any Note On arriving within 30 ms of the previous Note On for the same pitch
  • Marker flagged with a red ⚠ GHOST tag plus the measured gap in milliseconds
  • Typical bounce gap a few milliseconds — far shorter than a deliberate second press
  • Example note 52 (E3) ghosted twice, 12 ms apart, during light playing

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 Ghost Notes: Identify and Fix Duplicate Note Triggers

When a DAW records two notes from one physical key press, the extra event is usually a ghost note.1 It can sound like a double-trigger, a thicker note, or a sequencer step with stacked velocity. The cause is often a bouncing contact strip: a key press that completes the electrical circuit twice within a few milliseconds because the contact material flexes slightly before settling.2 Identifying which key causes the ghost and whether it happens consistently narrows down whether the fix is a firmware update, a filter, or a hardware repair.

This tester flags any Note On message arriving within 30 ms of a previous Note On for the same pitch with a red ⚠ GHOST marker in the event log. The 30 ms threshold is a conservative tool window; debounce and duplicate-note filters use configurable time thresholds rather than a universal standard.3 Intentional re-presses are separate musical events, not duplicate events from one press.

What causes MIDI ghost notes

Most MIDI keyboards use a two-contact system under each key. The key depresses a rubber dome with two conductive strips: one contact closes early in the press, and the second closes later. The time between the two contacts determines the velocity value.4 When the contact strip fails, one or both contacts stop conducting. A key where neither contact conducts produces no Note On at any pressure. That is the definition of a dead key. A key where only one contact conducts produces a Note On but always at the same velocity, regardless of how hard you press.

Seeing bounce before the DAW hides it

The browser log catches the duplicate Note On before DAW plugins, instruments, or quantization can disguise it. If the same key produces paired events under 30 ms, you have evidence of contact bounce rather than a musical timing issue. DAW software often applies its own note-deduplication or quantization that masks the raw hardware behavior, which is why a browser-based test reveals the problem first.

The 30 ms window is generous on purpose. A deliberate second press at musical speed is almost always wider than that, so the flag rarely catches intentional playing. When you see the marker, read the logged gap first: a value of a few milliseconds is the signature of mechanical bounce, not human timing.

How this tester identifies ghost notes

Every Note On event that arrives within 30 ms of the previous Note On for the same pitch is flagged with a ⚠ GHOST marker in the event log.3 The marker shows both the original event and the ghost, along with the time gap in milliseconds. For a bouncing contact strip, the gap is typically a few milliseconds, far shorter than a deliberate second press.

Capturing repeatable ghost-note evidence

To test for ghost notes, play each key at different velocities. Ghost notes on contact strip wear tend to appear at specific pressure ranges, usually soft or medium pressure, where the contact bounces most. Building on this, check whether the ghost appears on every press or only occasionally. Intermittent ghost notes point to a borderline contact strip that will fail more consistently as it wears further. CapyToolkit's marker and time gap give you evidence you can screenshot before changing firmware, filters, or hardware.

Fixing MIDI ghost notes

Start by checking whether the manufacturer publishes firmware or driver updates for the keyboard. Firmware can affect how raw switch transitions are debounced before the controller sends MIDI messages. Download the latest firmware from the manufacturer website and install it according to their instructions, then retest. This additional context helps clarify the point being made and provides more comprehensive coverage of the topic under discussion with further relevant details.

If firmware does not resolve the issue, a MIDI filter plugin in your DAW can suppress events arriving within a configurable window. This masks the ghost without fixing the underlying hardware but keeps the keyboard usable while you arrange a repair. For persistent ghost notes on specific keys after a firmware update, replacing the contact strip section covering the affected keys is the definitive hardware fix. This is a common repair that most keyboard technicians can perform.

DAW-side mitigation while awaiting hardware repair

Until the hardware fix is complete, a MIDI filter plugin in your DAW lets you suppress ghost notes with a DAW filter and keep the keyboard usable for recording. Most major DAWs support MIDI effect chains or event-filter plugins that can suppress incoming Note On events arriving within a configurable time window after the previous event on the same pitch. A short debounce window removes most contact-strip bounce while leaving deliberate rapid re-presses audible.

Each DAW has a slightly different implementation, but the principle is identical: suppress the second of two identical notes arriving within the ghost-note window. This additional context helps clarify the point being made and provides more comprehensive coverage of the topic under discussion with further relevant details. Further details and practical considerations round out this discussion with additional relevant information for the reader to consider carefully.

Ghost note markers as diagnostic evidence for repair

Save a screenshot of the event log showing the ⚠ GHOST markers with their time gaps before implementing any filter. The gap value in milliseconds is the critical measurement. A gap in the single-digit to low-double-digit millisecond range is consistent with contact-strip bounce, whereas gaps above 30 ms may indicate a different hardware issue. Very short electrical chatter may benefit from firmware or hardware repair rather than software mitigation. Include the screenshot with a warranty claim or repair appointment to give the technician a reproducible baseline.

When to use this

Run this test when you hear double-triggers in your DAW, when a sequencer records two notes on the same beat from a single key press, or when a chord sounds thicker or phase-shifted compared to adjacent chords because one key is doubling up.

Examples

E3 flagged with ⚠ GHOST on light presses

Two Note On events for note 52 arrive a few milliseconds apart. The gap is consistent across multiple presses at the same velocity. This is contact strip bounce. Check for a firmware update. If none is available, a MIDI filter plugin with a short debounce window can mask the duplicate event in the DAW.

Ghost appears only at specific velocity (soft playing)

Ghost notes appear only when pressing the key gently (velocity below 40). Firm presses produce a clean single event. This is a borderline contact strip that bounces only under low-force press conditions. It will likely worsen over time.

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.

    QMK Firmware, "Contact bounce / contact chatter," qmk.fm, accessed June 2026. https://docs.qmk.fm/feature_debounce_type

  3. 3.

    Fannon, "midi-deduper," github.com, accessed June 2026. https://github.com/Fannon/midi-deduper

  4. 4.

    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

FAQ