This page covers:
- MIDI inputs
- Supported MIDI events
- Channels vs. Tracks
Info
If you do not see your MIDI device in the MIDI device selection dropdown box, see this guide for information about using one hardware MIDI device in two programs at once.
MIDI inputs
Live input device
MIDI, Live input MIDI device section
The dropdown box found in the MIDI menu displays all connected MIDI devices that are capable of being received from.
Note
Keysight was originally built exclusively for streaming. MIDI file playback was added in an update, and then render-to-video added significantly later.
File playback
MIDI, MIDI file section
Keysight only accepts one MIDI file at a time. A new MIDI file can be loaded by clicking the Load MIDI file button and selecting a file. While Auto-load is enabled, Keysight will automatically load the last MIDI file selected upon startup (as long as System settings have been saved after loading this file).
Warning
For a MIDI file to be valid for use in Keysight, it must have at least two note-on events occuring on different ticks. A MIDI file of a single note is not supported, as it breaks some MIDI time calculation things.
Info
MIDI file reading is handled by an external tool called json_midi➚ created by HeapUnderflow➚ specifically for Keysight, which converts a MIDI file into a JSON data structure with accurate timing that Keysight can then read and load into a struct. json_midi➚ is open source, and follows the official MIDI specification to the letter.
json_midi➚ can take some time to process MIDI files due to file access at multiple stages in the pipeline. Keysight has no way of knowing if json_midi has failed or is simply taking a long time when processing files, and so there is a timeout threshold of 20.0s
set under System > Interface that can be adjusted if you have large MIDI files on a slow computer and the MIDI file loading is timing out.
Simulated inputs
Keysight also has some debug functionality for simulating MIDI events. This can be useful when testing presets at different velocities without needing to play anything on a live MIDI device. The note test inputs are as follows:
A/D
to move the note test cursor left/right. HoldShift
to move an octave at a timeW/S
to increase/decrease the MIDI velocity. HoldShift
to change10
velocity per input- Hold
Q
to spawn a test note, or click and hold the blank area to the right of the menu Shift + Q
toggles turbo note testing modeCtrl + mousewheel
to pitch bend (requires activation under Core > Simulation)Ctrl + middle mouse button
to reset pitch bending
Supported MIDI events
Keysight does not support every feature of MIDI, as a lot of MIDI functionality is niche and not used by "normal" piano simulation. Dropped MIDI events can be found in the Log tab. Supported events are:
- Note on/off
- ID
- Velocity
- Channel
- Control change
- ID (only 64/66/67)
- Velocity
- Channel
- Pitch bend
- Velocity
- Channel
Channels vs. Tracks
Keysight only has an understanding of MIDI channels, and completely ignores tracks. This is due to me not understanding (at the time of building all the architecture for MIDI events) that some MIDI files use track information for different instruments, rather than channels. Tracks are useable by Keysight at the cost of losing channel data by toggling this option under System > Interface: