MIDI Controller Tester

Plug in a MIDI keyboard, pad or control surface and watch every message it sends: notes, how hard each was hit, knobs and pedals. It shows the one that confuses everybody, a note-on with a velocity of zero, which is really a note-off.

How to use it

Four views run at the same time: a keyboard lighting up as you play, a chart of how hard each key was struck, a running list of every knob and pedal you move, and the raw messages underneath.

  1. Plug the controller in first, then connect Press connect and allow the browser when it asks. Devices plugged in afterwards are picked up automatically.
  2. Play every key, slowly and then hard The keyboard turns grey where a key has been played at least once, so a key that stays white after a full sweep is a dead one.
  3. Move every knob, slider and pedal Each one appears in its own row with a live value. A control that jumps about instead of moving smoothly has a worn track.
Full instructions

Your MIDI hardware

The browser will ask once. MIDI is local hardware — the messages are read on this device and thrown away, and nothing is recorded or sent anywhere.

In depth

Diagnosing a MIDI controller without opening the DAW

How to connect a MIDI keyboard or controller in the browser, read the four live panels that show what it is sending, understand the velocity-zero trick that confuses so many people, and track down a stuck note or a dead key.

Screenshot: Every message, as it arrives
Every message, as it arrives as it appears when the page opens.

What a MIDI controller actually sends

A MIDI controller does not make sound. It sends messages. Press a key and it sends a note-on message carrying two numbers: which key, and how hard you struck it. Let go and it sends a note-off. Turn a knob and it sends a control-change message with the knob number and the new position. Push a sustain pedal and it sends another control-change.

The computer at the other end of the cable turns those messages into sound. That means when something goes wrong, the question is always the same: did the controller send the right message, or did the software mishandle it? Answering that question without a diagnostic tool means guessing. This page removes the guesswork by showing every message as it arrives.

Connecting the hardware

Plug the controller in by USB before you do anything else. Then press Connect to MIDI and allow the browser when it asks for permission. Chrome and Edge support MIDI hardware directly. Some other browsers do not, and the page tells you straight away if yours is one of them.

The list of detected devices appears below the button. Many controllers show up as more than one port. A keyboard with drum pads and transport buttons may present the keys on one port and the pads on another. The page listens to all of them at once.

If the controller does not appear, close any other program that might be using it. A DAW, a plugin host, or even another browser tab with MIDI access can lock the port on some operating systems. Close those first, then try again. If it still does not show, try a different USB cable and then a different USB port on the computer.

The on-screen keyboard

A picture of a piano keyboard stretches across the top panel. Each key turns green the moment you press the matching key on your real controller, and goes grey when you release it. Grey means the key has been played at least once. White means it has never been touched.

Play every key from the bottom to the top, slowly and deliberately. When you reach the far end, look back along the picture. Any key still showing white did not send a note-on message. That key is either dead or not making contact. The fault is in the controller itself, not in your software.

This single sweep is the fastest way to check a MIDI keyboard after buying it, after it has been dropped, or after a drink was spilled on it. It takes less than a minute and it answers the question without loading a single plugin.

The velocity chart

Below the keyboard sits a scatter chart labelled How hard you played. Each dot represents one note-on message. The horizontal position is which key was struck and the vertical position is the velocity, a number between one and a hundred and twenty-seven.

On a healthy keyboard, playing softly places dots near the bottom and playing hard places them near the top. A spread of dots from low to high means the velocity sensing is working properly. A flat row of dots all at the same height means the keyboard is sending the same velocity no matter what you do. That is either a setting on the controller or a fault in its pressure sensors.

Very few notes will ever reach a hundred and twenty-seven. On most keyboards that requires hitting the key as hard as you possibly can. Never quite reaching the ceiling is normal. Never getting past about ninety may mean the velocity curve setting on the controller needs adjusting.

Knobs, sliders, and pedals

The panel called Knobs, sliders and pedals shows a row for every control-change number the controller has sent. Each row displays the controller number and a bar showing the current value from zero to a hundred and twenty-seven.

Turn every knob on the controller slowly from one end to the other. The bar should move smoothly. If it jumps, skips values, or snaps between two distant positions, the potentiometer underneath is worn. That kind of jumpiness usually gets worse over time.

Press the sustain pedal if you have one. It appears as controller sixty-four. If the pedal shows as pressed when your foot is off it, the pedal is wired backwards. Most pedals have a polarity switch on the bottom or the side to fix this. Flip it and the reading should reverse.

The velocity-zero trick and why it causes stuck notes

When the MIDI standard was written in the early nineteen eighties, saving bytes mattered. The specification allows a note-on message with a velocity of zero to mean the same thing as a note-off message. Nearly every keyboard built since then uses this shortcut because it lets a run of rapid notes share a single status byte.

This causes a real problem for anything that reads note-on messages without checking the velocity field. It sees a stream of key presses and no releases, and it concludes that every key is held down forever. That is where a large share of the stuck-note bugs in music software come from.

The page handles this correctly. It counts a velocity-zero note-on as a release and shows you how many arrived that way. If you see a stuck-note warning and the message log shows plenty of zero-velocity note-on messages being treated as releases, the controller is doing its job properly. The software on the other end probably is not.

Finding a stuck note

Play a few notes and then take your hands off the keyboard completely. Every key should go from green back to grey within a moment. If a key stays green and a warning appears, that note never received a matching release.

The settings panel lets you choose how many seconds to wait before calling a note stuck. The default is ten. Lower it if you are actively hunting for an intermittent fault. Raise it if you are testing a keyboard with a naturally slow release and you do not want false alarms.

The Forget held keys button clears all currently held notes from the display without wiping the rest of the log. Use it after you have seen the warning and want to start a fresh round of testing.

A stuck note that always lands on the same key points to a broken switch or a dirty contact inside the keyboard. A stuck note that wanders to a different key each time is more likely a cable or connection issue dropping bytes.

Filtering by channel and pausing the stream

The Listen to dropdown in the side panel filters messages by MIDI channel. By default it listens to all sixteen channels at once. If you have two controllers plugged in and each is set to a different channel, filtering to one channel lets you focus on a single device without unplugging the other.

The Pause checkbox stops new messages from updating the display. The controller keeps sending, but the page stops drawing. This is useful when a fast stream of knob movements or note floods is scrolling the message log too quickly to read. Pause it, study what is there, then uncheck the box to resume.

Clear everything wipes the message log, the keyboard, and the velocity chart so you can start a new test from a blank slate.

Your MIDI messages never leave the browser

Every message from the controller is drawn on screen and then discarded. Nothing is saved to a file. Nothing is sent to any server. The browser reads the hardware directly through its own built-in MIDI support, and the page shows what it received.

You can prove this by unplugging the network cable or switching to airplane mode. Connect the controller, play some notes, and turn some knobs. The keyboard lights up, the velocity chart fills in, and the control-change bars move. The page is talking to the controller and nothing else.

Help

Every message, as it arrives

Four views run at the same time: a keyboard lighting up as you play, a chart of how hard each key was struck, a running list of every knob and pedal you move, and the raw messages underneath. Two specific faults are watched for while you play - a key that never responds at all, and a note that is never released.

Plug the controller in first, then connect

Press connect and allow the browser when it asks. Devices plugged in afterwards are picked up automatically.

Play every key, slowly and then hard

The keyboard turns grey where a key has been played at least once, so a key that stays white after a full sweep is a dead one.

Move every knob, slider and pedal

Each one appears in its own row with a live value. A control that jumps about instead of moving smoothly has a worn track.

A note-on with velocity zero is a note-off

When MIDI was designed, every byte counted, so a run of notes was allowed to share one status byte and a release was sent as "note on, velocity nothing". Nearly every keyboard still does it. Anything that reads a note-on without checking the velocity therefore ends up thinking every key is still held down, which is where a large share of stuck-note bugs come from. This page counts them as releases and shows you how many arrived that way, so you can tell a real stuck note from a misread one.

Good to know

The velocity chart shows the whole story

Dots spread from bottom to top mean the keyboard is reading how hard you play. Dots in one flat line mean it is sending the same number every time, whatever you do.

Very few notes hit 127

On most keyboards you have to hit a key extremely hard to reach the top of the range. Never quite getting there is normal; never getting past about ninety may mean the curve setting needs changing.

A stuck note is usually the pedal

Sustain is controller 64, and a pedal wired the wrong way round reads as pressed when it is up. Watch its row while you take your foot off.

Two devices can look like one

Many controllers appear as several ports — keys on one, pads or transport controls on another. All of them are listened to, which is why the list may be longer than the number of things you plugged in.

Common questions

How do I test a MIDI keyboard?
Plug it in, press connect, and play every key. Anything that does not light up on screen is not sending, and the fault is in the keyboard or the cable rather than your software.
Why does my controller not appear?
Close any other program using it first — on many systems a MIDI port can only be open in one place at a time. If it still does not appear, try a different cable, then a different port.
Which browsers support this?
Chrome and Edge support MIDI hardware. Some other browsers do not, and the page says so straight away rather than leaving you wondering.
How do I find a stuck note?
Play, then take your hands off. Anything still listed as held down after a few seconds is flagged, with the name of the note.
Does this record what I play?
No. Each message is drawn and thrown away. Nothing is saved and nothing is sent anywhere.