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.

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.
