Back to the example index

Playable instrument and optional Web MIDI

Two Performance parts: part 0 is a mono legato lead with voice priority 100; part 1 is a polyphonic pad limited to eight voices. Per-part controls update every sounding note and future notes. Begin with a low device volume.

Keyboard
Live controls for the selected part

The four FM sliders and hardware knobs CC16–19 target the selected part or incoming MIDI channel respectively, with a 50 ms ramp. Operator controls preserve the other three operators. CC121 restores the FM values captured when Connect Web MIDI was clicked; pedal and panic CCs cannot be remapped. MIDI knob movements do not move the browser sliders.

No audio created.

Web MIDI is optional, requires a secure context and an explicit click, and is unavailable in some browsers. The adapter handles channel-voice notes, sustain, pitch bend, wheel, volume/expression, pan, aftertouch and all-notes-off; it is not a MIDI driver and ignores SysEx. Touch pressure, where supported, drives per-key modulation.

Local physical MIDI campaign

This is a manual observation capture, not hardware authentication. Browser automation and injected MIDI can test this UI but never certify a physical controller or human listening. Nothing is uploaded or saved across reloads. Review controller identifiers below and exported notes before sharing; use no serial numbers, personal names or secrets.

Exact declared conditions

Start audio first; begin the permission scenario before Connect Web MIDI. Begin clears declarations: check them only after performing the run. Settings and effective controls are captured, not inferred from slider positions. Changes to declared conditions, selected host part, octave or glide invalidate the active scope; restart/dispose abandons it. CC/bend controls are intentional scenario actions and are recorded separately. Missing hardware or steps must stay unverified. Finish releases both parts; export before clearing or leaving.

At most 24 runs and 256 observations per run are retained. Event overflow is counted and keeps acceptance unverified. No SysEx or arbitrary packet payloads are retained. Active, abandoned, changed-scope, desktop and non-listened runs remain unverified even if the manual selector says pass. Any physical pass/fail is an unauthenticated declaration requiring review of the original file.

No input identifiers observed.
No local captures.
Loading example…