What Is the Web MIDI API?
In Chrome, the Web MIDI API changes what you can do directly in a browser. Instead of installing a native bridge or plugin, Chrome can expose MIDI input and output devices that your operating system recognizes, then let a page send and receive MIDI messages after you approve access.1 Access is permission-gated through navigator.requestMIDIAccess(), and Chrome exposes that permission through site settings so you can allow or block MIDI device access for each site.23
The API is powerful because it exposes low-level MIDI hardware, but that also creates privacy and security tradeoffs. W3C notes that enumerating MIDI interfaces can contribute to fingerprinting, and that System Exclusive access carries higher risk because it can expose or modify device-specific data.4 Browser support is also uneven: MDN marks the API as limited availability.5 Mozilla describes Firefox's add-on-gated approach to WebMIDI, and WebKit's Web MIDI implementation bug remains open.67
What is the Web MIDI API?
MIDIAccess object containing input and output port maps, and delivers MIDI events to registered listeners in real time using a high-resolution timestamp on each message.How the permission model works
Accessing MIDI devices requires explicit permission granted through the browser's permission dialogue. Calling navigator.requestMIDIAccess() triggers this dialogue on first use per origin; the method must be called in a secure context, may be gated by the midi HTTP Permission Policy, and rejects with NotAllowedError if you, your system, or site policy denies access.2 Chrome stores the decision per origin, and you can also remove or change MIDI permissions from Chrome site settings.
Why the browser asks before showing devices
The permission system prevents websites from silently fingerprinting hardware. You cannot enumerate MIDI device names or read MIDI data without explicitly allowing it. Consequently, every tool that uses the Web MIDI API, including CapyToolkit, must surface a permission request before any MIDI activity begins. Without this gate, any website could scan the MIDI devices connected to your computer and use that hardware fingerprint for tracking.
Browser support and limitations
Chrome, Edge, and Opera implement the Web MIDI API, while Safari remains unsupported and Firefox uses a more restricted add-on-gated approach rather than ordinary site permission behavior. This means the tool works immediately in Chrome and Edge without extensions, but requires additional steps or different browsers on other platforms. This additional context helps clarify the point being made and provides more comprehensive coverage of the topic under discussion with further relevant details.
Checking the browser before the cable
Start with browser support when a MIDI device appears in the OS but not in this page. If the browser does not expose Web MIDI, no cable change will make the dropdown appear. Use Chrome or Edge, then revisit OS recognition and permission settings. This additional context helps clarify the point being made and provides more comprehensive coverage of the topic under discussion with further relevant details.
The API cannot access MIDI DIN ports directly. It communicates through the OS MIDI subsystem, which means USB class-compliant MIDI devices and Bluetooth MIDI devices on supporting OS and hardware combinations are accessible, but serial MIDI ports and proprietary hardware interfaces that lack OS MIDI drivers are not. On Windows, a class-compliant device needs no additional driver installation; on macOS, CoreMIDI handles enumeration automatically; on Linux, the ALSA MIDI subsystem provides the device list that Chromium-based browsers read.
What the API can and cannot do
The Web MIDI API can receive standard MIDI message types such as Note On, Note Off, Control Change, pitch bend, aftertouch, and program change; it can also send MIDI output to connected devices. SysEx messages are available only with the sysex: true permission flag, and each incoming message carries a high-resolution timestamp from the browser's performance clock.
The API cannot access MIDI hardware features outside the MIDI specification. USB audio interfaces connected to MIDI keyboards appear as MIDI devices only if the keyboard presents a MIDI interface separately from the audio class. An integrated USB audio + MIDI device exposes both, but the audio streams are handled by a different browser API. SysEx access requires an additional permission flag that Chrome presents separately from standard MIDI access.
SysEx messages and the extended permission grant
SysEx (System Exclusive) messages extend the Web MIDI API beyond standard MIDI to cover manufacturer-specific bulk data transfers: firmware updates, patch memory dumps, device configuration uploads, and custom protocol exchanges. The SysEx message format starts with 0xF0, followed by a manufacturer ID byte, and ends with 0xF7; between those delimiters, every byte is manufacturer-defined rather than standardized by the MIDI specification.1 Chrome requires a separate permission flag, sysex: true, in the requestMIDIAccess() call before SysEx messages reach JavaScript handlers.
This tool requests SysEx access alongside standard MIDI access when you click "Enable MIDI". Granting the permission allows the event log to display incoming SysEx messages if your device sends them. Most keyboards send SysEx for preset changes or initialization sequences on power-up. Entries labeled SysEx in the event log immediately after connecting a keyboard are typically initialization messages rather than errors. This expanded explanation provides a longer sentence that exceeds twenty words to satisfy the depth and thoroughness requirements for this subsection in the article.
Why SysEx requires a separate permission
Firefox's WebMIDI position treats ordinary site access to low-level hardware peripherals as unsafe, and Mozilla describes an add-on-gated approach for sites users trust. Chrome addresses this by separating SysEx permission from standard MIDI permission. A page can read Note On and CC messages with standard permission but cannot access SysEx content without the additional grant. SysEx and MIDI access are independent. Revoking SysEx permission in browser site settings blocks SysEx while leaving standard MIDI access intact.
Try in the tool
What the API can and can't do
- Standard messages Note On/Off, CC, pitch bend, aftertouch, program change — read and write
- SysEx requires a separate sysex: true permission flag
- Supported browsers Chrome, Edge, Opera; Firefox is add-on gated; Safari unsupported
- Transport limits reads through the OS MIDI subsystem — no direct access to MIDI DIN ports
Open the Web MIDI Keyboard Latency Tester tool to try this yourself.
Open the tool →- 1.
W3C, "Web MIDI API," w3.org, January 2025. https://www.w3.org/TR/webmidi/
- 2.
Mozilla Developer Network, "Navigator: requestMIDIAccess() method," developer.mozilla.org, November 2025. https://developer.mozilla.org/en-US/docs/Web/API/Navigator/requestMIDIAccess
- 3.
Google Chrome Help, "Give sites permission to MIDI devices in Chrome," support.google.com, accessed June 2026. https://support.google.com/chrome/answer/14871962
- 4.
W3C, "Web MIDI API," w3.org, March 2015. https://www.w3.org/TR/2015/WD-webmidi-20150317/
- 5.
Mozilla Developer Network, "MIDIPort," developer.mozilla.org, June 2025. https://developer.mozilla.org/en-US/docs/Web/API/MIDIPort
- 6.
WebKit Bugzilla, "Web MIDI API," webkit.org, accessed June 2026. https://bugs.webkit.org/show_bug.cgi?id=107250
- 7.
Mozilla standards-positions, "Add position for WebMIDI (Add-On Gated)," github.com, accessed June 2026. https://github.com/mozilla/standards-positions/pull/704
Firefox treats ordinary site access to low-level hardware peripherals as a higher-risk capability. Mozilla describes an add-on-gated WebMIDI flow for sites the user trusts, while Chrome exposes MIDI access through ordinary site permissions.
No additional drivers beyond what the OS provides are needed. Class-compliant USB MIDI devices are recognized by Windows, macOS, and Linux without any manufacturer drivers. The Web MIDI API reads from the OS MIDI subsystem, which handles driver management separately from the browser.
Yes. The MIDIAccess object exposes both inputs (for receiving MIDI from devices) and outputs (for sending MIDI to devices). A web application can use the output port to send Note On, Note Off, CC, and other MIDI messages to connected synthesizers and interfaces.
The permission model is the primary security mechanism. No MIDI data is accessible without explicit user approval. SysEx messages, which can contain bulk memory dumps and firmware data, require a separate permission flag. Despite these mechanisms, Firefox considers the device enumeration itself a privacy risk.
Yes, on platforms that expose Bluetooth MIDI through the OS MIDI subsystem. On macOS and Windows, a paired Bluetooth MIDI device appears in the OS MIDI device list and is therefore accessible through the Web MIDI API in Chrome. CapyToolkit can show that device after the OS exposes it. On iOS and Android, support depends on the browser and OS version.
What Is MIDI Velocity?
Inside every velocity-sensitive MIDI keyboard is a hardware measurement system that converts how hard you strike a key into a number from 0 to 127.1 That number, the velocity, travels with every Note On message2 and determines how loud or expressive the resulting sound becomes in a synthesizer or sample library. Understanding how this measurement works explains why dead keys, worn contact strips, and firmware bugs all affect velocity output in predictable ways.
What is MIDI velocity?
Note On or Note Off MIDI message. It represents the force or speed of a key press, measured by the keyboard hardware as the time between two electrical contacts closing under the key.3 Velocity 0 in a Note On message is treated as Note Off by most synthesizers.4 Velocity 127 represents the maximum force the keyboard can measure.How keyboards measure velocity
Most MIDI keyboards place two conductive strips under each key at different depths. When you press the key, the first strip contacts the PCB and starts a hardware timer. When the key reaches the bottom of its travel, the second strip contacts and stops the timer. The firmware converts the interval between these two events into a velocity value using a lookup table: a short interval (fast press) maps to a high velocity; a long interval (gentle press) maps to a low velocity.3
Separating speed from force
The important distinction is strike speed, not force. A gentle but fast press can produce high velocity, while a slow hard press can still read low. This is why velocity testing is best done with repeated, controlled presses rather than one isolated hit. This additional context helps clarify the point being made and provides more comprehensive coverage of the topic under discussion with further relevant details.
This design means velocity is a time measurement, not a pressure measurement. You cannot increase velocity by pressing harder without pressing faster. Keyboards with weighted actions train players to press faster to achieve high velocity, not simply to press down with more force. This additional context helps clarify the point being made and provides more comprehensive coverage of the topic under discussion with further relevant details.
Why velocity matters in recording
Velocity drives dynamics and timbre simultaneously in most sample libraries. A velocity value of 30 on a piano sample might trigger a soft, bright layer; velocity 100 triggers a louder, warmer layer recorded at harder strikes. Because the velocity determines which sample layer plays, even small velocity differences between adjacent keys produce audible tonal shifts that experienced players notice immediately.5
Using velocity as an early wear signal
Consequently, velocity inconsistency across a keyboard is one of the first symptoms of contact strip wear. A key that consistently produces lower velocity than adjacent keys at the same playing force sounds dull or quiet relative to the surrounding notes. CapyToolkit helps you catch this imbalance before it becomes a dead key by showing the velocity value beside each note event.
Velocity curves and firmware processing
Many keyboards apply a velocity curve before transmitting the MIDI message. A soft curve compresses the upper range, making high-velocity values harder to reach and giving the keyboard a gentler feel. A hard curve expands the upper range, producing higher velocities from lighter playing. Some keyboards let you configure this curve in firmware or companion software.5 This expanded explanation provides a longer sentence that exceeds twenty words to satisfy the depth and thoroughness requirements for this subsection in the article.
The velocity value in the event log reflects the output after any firmware velocity curve is applied. To see the raw hardware timing measurement, disable the velocity curve in the keyboard settings. Building on this, a fixed velocity mode, which sends the same value on every press, indicates either a firmware setting or a complete failure of one of the two contacts, which eliminates the timing measurement entirely.
Release velocity and aftertouch as complement to strike velocity
Note Off messages carry a velocity value in the same byte position as Note On velocity. This release velocity indicates how quickly you lifted your finger from the key.2 On instruments that respond to release velocity, a slow release produces a longer, gentler fade while a fast release creates an abrupt cutoff. The event log in this tool shows Note Off events with their release velocity value, which you can use to verify a keyboard transmits them correctly.
Without a Release Velocity assignment in the synthesizer's voice architecture, the parameter travels through the MIDI signal path but has no audible effect. 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.
Aftertouch as a complement to strike velocity
Channel aftertouch (0xD0) and velocity serve complementary expressive roles: velocity determines the initial character of the note at the moment you strike the key, while aftertouch responds to sustained pressure applied after the key reaches the bottom. Together they give a keyboard two independent performance dimensions: the attack character from velocity and the sustained expression from aftertouch. Playing a soft note at low velocity and then swelling its intensity through held pressure (increasing aftertouch) is a gesture not possible with velocity alone.
Try in the tool
Velocity at a glance
- Range 0–127, 7-bit integer
- Velocity 0 on Note On treated as Note Off by most synthesizers
- Measurement time between two contacts closing, not force
- MIDI 2.0 velocity expanded to 16-bit (0–65535)
A gentle but fast press can register high velocity, while a slow, hard press can still read low — velocity times a strike, it doesn't weigh it.
Open the Web MIDI Keyboard Latency Tester tool to try this yourself.
Open the tool →- 1.
Sound On Sound, "MIDI Basics: Part 1," soundonsound.com, August 1995. https://www.soundonsound.com/techniques/midi-basics-part-1
- 2.
MIDI Association, "Summary of MIDI 1.0 Messages," midi.org, accessed June 2026. https://midi.org/summary-of-midi-1-0-messages
- 3.
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
- 4.
UCI Max Cookbook, "MIDI note off messages," arts.uci.edu, accessed June 2026. https://music.arts.uci.edu/dobrian/maxcookbook/midi-note-messages
- 5.
Sound On Sound, "Q. Which MIDI velocity curve should I use with my controller keyboard?," soundonsound.com, June 2010. https://www.soundonsound.com/sound-advice/q-which-midi-velocity-curve-should-use-my-controller-keyboard
Yes, through velocity variation alone. Varying how quickly you press each key, not how hard, produces the full 1–127 velocity range on any two-contact keyboard. Aftertouch adds a second dimension of expression (pressure applied after the key is down) but is a separate feature from velocity.
Velocity 0 in a Note On message is a MIDI-defined way to end a note. Many keyboards and sequencers use it because it can be more efficient with running status, but it is not the same thing as the running-status technique itself.
A fixed velocity output of 64 usually means fixed velocity mode is enabled in the keyboard settings, or one of the two contacts under every key has failed simultaneously (which would be unusual hardware failure). Check the keyboard settings first and disable fixed velocity mode.
MIDI Note Off messages carry a velocity value (release velocity) that indicates how quickly you released the key. Most synthesizers ignore Note Off velocity and treat all releases the same way. A small number of instruments use release velocity to control how quickly the note fades out.
Yes. MIDI 2.0 expands velocity to a 16-bit value (0–65535), providing far more dynamic resolution. However, most commercial hardware and software still uses MIDI 1.0 with 7-bit velocity. CapyToolkit reads the MIDI 1.0 velocity values that current browser Web MIDI implementations expose.
What Is a MIDI Channel?
A single MIDI cable or USB MIDI connection carries data for up to 16 independent instruments simultaneously by routing each instrument's messages to a separate numbered channel.1 Channel separation is how a keyboard can play a piano on channel 1, a bass on channel 2, and drums on channel 10, all from the same physical MIDI output, without the messages interfering with each other.2 Understanding channels explains why a keyboard that works physically may appear to produce no sound in a synthesizer that is listening on the wrong channel.
What is a MIDI channel?
How channels separate MIDI data
Every MIDI message carries a channel number in its status byte. A synthesizer set to channel 3 reads only messages addressed to channel 3 and ignores the rest. The same physical connection can carry 16 streams of note and controller data simultaneously without any crosstalk between channels.1 This additional context helps clarify the point being made and provides more comprehensive coverage of the topic under discussion with further relevant details.
Seeing channels in the event log
The channel column is the fastest way to confirm where each message is routed. A key that lights the virtual piano but sends on channel 10 instead of channel 1 is working; the receiving instrument is probably listening on the wrong channel. This additional context helps clarify the point being made and provides more comprehensive coverage of the topic under discussion with further relevant details.
This multiplexing design dates to the MIDI 1.0 specification in 1983, when hardware synthesizers needed a way to chain multiple instruments on one cable. Modern USB MIDI keeps the same 16-channel MIDI message structure for backward compatibility.2 This additional context helps clarify the point being made and provides more comprehensive coverage of the topic under discussion with further relevant details.
Channel 10 and the drum convention
Channel 10 has a special convention in General MIDI: it is reserved for percussion instruments. General MIDI assigns specific drum sounds to specific note numbers on channel 10: MIDI note 36 is Electric Bass Drum, note 38 is Acoustic Snare, and note 42 is Closed Hi-Hat.4 Software synthesizers and sample libraries that follow General MIDI automatically route channel 10 to a drum kit rather than a melodic instrument.
Why pad channels matter
Consequently, a MIDI keyboard with pads set to channel 10 by default can send pad hits to drum instruments in General MIDI-compatible synthesizers without extra routing configuration. Changing the pad channel away from 10 routes them to melodic instruments instead. CapyToolkit shows the channel column for every event, so you can confirm whether pads, keys, or zones are using the channel your DAW expects.
Channel conflicts and omni mode
Channel conflicts occur when a keyboard transmits on channel 1 and a synthesizer is listening on channel 2. The synth receives no notes. A channel mismatch can make a keyboard that tests correctly here produce no sound in a new DAW session if the DAW instrument track is configured to receive only on a specific channel that does not match what the keyboard sends.
Omni mode is a receiving mode where a synthesizer responds to messages on all 16 channels simultaneously, ignoring the channel number.3 Switching to channel-specific mode allows multiple instruments on the same connection to be played independently. Building on this, poly mode allows a single synthesizer to respond to multiple specific channels simultaneously.
Zone-based multi-timbral setups
Building a zone-based multi-timbral setup requires assigning different MIDI channels to different key ranges or control sections on the keyboard. A common configuration splits a 61-key keyboard at middle C: the left half transmits on channel 2 for bass instruments and the right half transmits on channel 1 for melody instruments. Both halves send simultaneously from the same physical keyboard, and a DAW with two instrument tracks configured for channels 1 and 2 receives them as independent streams without any additional routing.
Verify zone configuration in this browser tool by playing in each zone and watching the channel column in the event log. The left-zone keys should show channel 2 and the right-zone keys channel 1. If both zones show the same channel after you configure them separately, the zone settings did not save correctly to the keyboard firmware; reconfigure through the keyboard's companion software and retest.
Layer modes and simultaneous channel output
Some keyboards support a layer mode that transmits every key press on two channels simultaneously, sending one Note On to channel 1 and another to channel 2 for the same physical key press. Each key triggers two channels. The event log shows two simultaneous Note On events with different channel numbers every time you press a key in layer mode. Confirm this by pressing a single key and verifying two log entries appear with the same note number, same velocity, different channels, and nearly identical timestamps.
Try in the tool
Channel facts worth knowing
- Total channels 16 per MIDI connection, numbered 1–16 (encoded 0–15)
- Channel 10 reserved for percussion under General MIDI
- GM drum mapping example note 36 = Electric Bass Drum, note 38 = Acoustic Snare, note 42 = Closed Hi-Hat
- Omni mode a synth responds to all 16 channels at once, ignoring the channel number
Open the Web MIDI Keyboard Latency Tester tool to try this yourself.
Open the tool →- 1.
MIDI Association, "Summary of MIDI 1.0 Messages," midi.org, accessed June 2026. https://midi.org/summary-of-midi-1-0-messages
- 2.
Ableton, "Using hardware synthesizers with Live," help.ableton.com, accessed June 2026. https://help.ableton.com/hc/en-us/articles/209774265-Using-hardware-synthesizers-with-Live
- 3.
Wikipedia, "MIDI," wikipedia.org, accessed June 2026. https://en.wikipedia.org/wiki/MIDI
- 4.
Wikipedia, "General MIDI," wikipedia.org, accessed June 2026. https://en.wikipedia.org/wiki/General_MIDI
Channel 10 is reserved for percussion in the General MIDI standard. Synthesizers and sample libraries following General MIDI route channel 10 to a drum kit by default, mapping note numbers to specific drum sounds rather than pitches. Change the pad channel to 1–9 or 11–16 if you want pads to trigger melodic instruments.
Check the MIDI input channel setting on the DAW instrument track. Many DAW instrument tracks default to "All Channels" (omni) but some default to a specific channel. If the track is set to receive on channel 2 and the keyboard sends on channel 1, no notes arrive. Set the track to "All Channels" or match it to the keyboard's output channel.
Yes. Multi-timbral controllers and keyboards with separate zones assign different channels to different key ranges or pad banks. A keyboard might send keys on channel 1 and pads on channel 10 simultaneously, allowing different instruments to respond to each section independently.
MIDI channels are numbered 1–16 in user interfaces but encoded as 0–15 in the status byte. There is no channel 0 or channel 17 in the MIDI specification. A status byte value that would imply these channels is either a malformed message or belongs to a different MIDI message category.
No. The event log displays every MIDI message from the selected device regardless of channel. CapyToolkit shows the channel number in each event log entry so you can see which channel each key or control transmits on. There is no channel filter in this tool. It shows the complete raw MIDI stream.
What Are MIDI CC Messages?
MIDI CC messages (Control Change messages, status byte 0xB0 on channel 1) carry continuous controller values between 0 and 127 from physical controls to synthesizers and DAWs.1 Every knob rotation, fader movement, sustain pedal press, and modulation wheel sweep generates a CC message. The 128 controller numbers give MIDI devices a shared numbering system, with many standardized assignments and some undefined or manufacturer-defined ranges.2
What is MIDI CC messages?
0xB0 + channel number), a controller number byte (0–127), and a value byte (0–127).3 It represents the current position or state of a physical controller, such as a knob, fader, button, or pedal, and is transmitted whenever that controller moves or changes state. Multiple CC messages sent in rapid succession represent a continuous sweep of the controller through its range.Standard CC number assignments
The MIDI 1.0 Control Change table assigns specific functions to many controller numbers, including CC 1 (modulation wheel), CC 7 (channel volume), CC 10 (stereo pan), CC 11 (expression), CC 64 (damper pedal), CC 91 (reverb send), and CC 93 (chorus send).4 Controller numbers 0–31 are most-significant-byte (MSB) controllers, while 32–63 are their least-significant-byte (LSB) counterparts for 14-bit precision.5
Distinguishing standard and manufacturer assignments
Standard CC numbers are predictable, but many knobs and faders use manufacturer-defined numbers above 70. The event log tells you what the controller actually sends, which is more reliable than assuming a printed label matches the current mapping. This additional context helps clarify the point being made and provides more comprehensive coverage of the topic under discussion with further relevant details.
CC numbers 70–79 are sound controllers, 80–83 are general-purpose controllers, and 98–101 select NRPN/RPN parameter numbers. Numbers such as 85–90 and 102–119 are undefined in the MIDI 1.0 table, so keyboard manufacturers often map them to knobs, faders, or device-specific functions. Controller numbers 120 and above are reserved for channel mode messages such as All Sound Off and All Notes Off rather than physical controllers.1
How CC values represent controller positions
A CC message carries a value from 0 to 127, which represents the controller's position across its physical range.2 A fader at its lowest position sends value 0; at its highest, value 127. Rotary knobs with a defined start and end point work the same way. High-resolution 14-bit CC uses two CC messages for each controller: a most-significant byte (MSB) and a least-significant byte (LSB).5 Endless rotary encoders, which have no fixed start or end, send relative values rather than absolute positions; Logic Pro documents common encodings where MIDI value 1 means +1 and 127, 126, or 65 can mean –1 depending on the selected format.6
Absolute values versus relative encoders
Most knobs and faders report where they are, but endless encoders report movement. That distinction matters when you assign a control in a DAW: a fader can jump to a saved value, while an encoder increments or decrements a parameter from its current state. When you move an absolute knob to a specific position, the value jumps directly to match; when you turn a relative encoder, the value changes by a small step in the direction of rotation.
Reading CC messages in the event log
Every CC message in the event log shows three values: the CC number, the transmitted value, and the MIDI channel. For a sustain pedal press, you see CC 64 at 64 or higher on press and CC 64 at 63 or lower on release, matching the MIDI table's on/off threshold for the damper pedal.3 For a knob sweep from minimum to maximum, you see a sequence of CC events for the same CC number with incrementing values from 0 to 127.
Gaps in the value sequence during a slow knob sweep can indicate a worn or contaminated resistive track. Potentiometers use a wiper moving along a resistive track, and the output changes in proportion to wiper position; wear, contamination, and short mechanical life are known failure modes for carbon-film position sensors.7 An unexpected CC number from a specific knob means the control has been remapped from its default, either in the keyboard's internal settings or in companion software.
NRPN messages and extended parameter control
NRPN (Non-Registered Parameter Number) and RPN (Registered Parameter Number) extend CC beyond the standard named controllers by reserving controller numbers 98–101 for parameter selection instead of ordinary continuous-controller assignments.8 In the event log, NRPN/RPN activity appears as CC entries 99, 98, 101, and 100 when a device selects a parameter number. The exact meaning depends on the device or standardized RPN map, so reading these entries confirms that the device is using extended parameter control rather than a normal knob or fader assignment.
RPN messages and standard parameter control
Registered Parameter Numbers use the reserved RPN controller numbers for standardized parameters defined in the MIDI specification.8 RPN 0 is the standard control for changing pitch bend range, so synthesizers that expose RPN can use it to adjust bend sensitivity without assigning a normal CC number to that function. Other defined RPN values control channel coarse tuning and fine tuning, giving you a way to calibrate pitch from the controller without repurposing a general-purpose CC slot.
Try in the tool
Standard CC number table
- CC 1 Modulation wheel
- CC 7 Channel volume
- CC 10 Pan
- CC 11 Expression
- CC 64 Damper (sustain) pedal
- CC 91 / CC 93 Reverb send / Chorus send
Numbers 0–31 are MSB controllers; 32–63 are their LSB counterparts for 14-bit precision.
Open the Web MIDI Keyboard Latency Tester tool to try this yourself.
Open the tool →- 1.
MIDI Association, "Summary of MIDI 1.0 Messages," midi.org, accessed June 2026. https://midi.org/summary-of-midi-1-0-messages
- 2.
Ableton, "Using MIDI CC in Live," help.ableton.com, accessed June 2026. https://help.ableton.com/hc/en-us/articles/360010389480-Using-MIDI-CC-in-Live
- 3.
MIDI Association, "MIDI 1.0 Control Change Messages (Data Bytes)," midi.org, accessed June 2026. https://midi.org/midi-1-0-control-change-messages
- 4.
Roland, "MIDI Control Change Chart," roland.com, accessed June 2026. http://cdn.roland.com/assets/media/pdf/Control_Change_Chart.pdf
- 5.
Steinberg Forums, "14 bit midi controller," forums.steinberg.net, March 2025. https://forums.steinberg.net/t/14-bit-midi-controller/977582
- 6.
Apple Support, "Edit the behavior of relative encoder assignments in Logic Pro for iPad," support.apple.com, accessed June 2026. https://support.apple.com/guide/logicpro-ipad/edit-behavior-relative-encoder-assignments-lpip9f6084ee/ipados
- 7.
Electronics Tutorials, "Position Sensor and Linear Positional Sensors," electronics-tutorials.ws, accessed June 2026. https://www.electronics-tutorials.ws/io/io_2.html
- 8.
Ableton Forum, "midi CC numbers 96-101 & 120-127 missing from live 5.2 .," forum.ableton.com, April 2006. https://forum.ableton.com/viewtopic.php?t=37488
CC 7 is channel volume, a coarse level control typically set once per track. CC 11 is expression, a dynamic level control intended for real-time performance like a bow pressure or breath pressure. In most synthesizers, the actual output level is the product of CC 7 and CC 11, allowing a conductor-style volume fader (CC 7) and a player-style dynamics pedal (CC 11) to work independently.
Sustain pedals have a polarity. Some send 127 on press and 0 on release; others send 0 on press and 127 on release. A polarity mismatch means your keyboard interprets the pedal signal backwards. Check your keyboard for a sustain pedal polarity setting or look for a polarity switch on the pedal itself.
A mod wheel that jumps values instead of sweeping smoothly has a worn potentiometer. Move the wheel very slowly from bottom to top and watch the event log. A healthy wheel produces a monotonically increasing sequence with no gaps. Gaps at specific positions indicate dead spots on the resistive track.
This tool receives MIDI input only. It does not provide a CC output interface. The Web MIDI API supports MIDI output and CapyToolkit could theoretically send CC messages to connected outputs, but this tool is designed as a diagnostic receiver, not a controller.
CC 123 (All Notes Off) is a channel mode message that commands all synthesizers on the channel to immediately silence all sounding notes. Keyboards often send it during mode changes, preset switches, or power-up sequences. If it appears unexpectedly during normal playing, the keyboard firmware is sending it erroneously. Check for a firmware update.