This page covers:

  • What Keysight keeps track of
  • How note activity simulation functions
  • How to adjust simulation settings

What does Keysight simulate?

One of the goals of Keysight is to visually express as much musical detail as possible. In addition to note-on/note-off timing (mandatory for any visualiser to function), Keysight keeps track of:

  • Individual note-on velocities (called "activity" by Keysight)
  • The approximate volume of each note over time
  • Note-off velocity
  • Three pedals (soft, sostenuto, sustain)
  • Notes per second
  • Total activity
  • Pitch bending

The specific way in which Keysight simulates these things can be configured under Core > Simulation.

Warning

Unless you have a very niche and specific use-case, it is unlikely for simulation adjustment to be useful, and it gets quite complicated.

How "activity" is calculated

Initial value

"Note activity" refers to Keysight's internal understanding of the velocity of the note-on event. The incoming MIDI velocity is mapped using Core > Simulation, Midi behaviour section from an integer 0 - 127 value to a float 0.00 - 1.00 value, which is then used in a myriad of places such as:

  • Note object material brightness
  • Note light brightness
  • Particle path stretching
  • Pulse lifetime

Info

Mapping occurs via getting the linear distance between Velocity floor and Velocity ceiling as a float. Any values below the floor are clamped to 0.00, and any above the ceiling to 1.00. Changing the floor and ceiling to 10 and 30, then playing a MIDI note-on with a velocity of 20 would yield an output value of 0.50.

This floor and ceiling exist to apply contrast to note velocities from digital pianos and/or performers that operate within a smaller range than the maximum 0 - 127 (as is common).

Sim bounds

Value over time

Most effects only use the activity value once when the effect is created, showing the initial activity value over the whole effect's lifetime. However, the simulated activity value will decay over time to approximately match the volume decay of a piano note.

Info

This decay is calculated by:

  • Take note index as factor between min/max die-off times for damped and undamped
  • Take current damping amount from sustain to determine current note's die-off time
  • Multiply die-off time by the time taken to simulate the current frame (frametime)
  • Subtract this frame's die-off time from the note activity

Over-time values are summed to create the "total activity" value used by the Activity colour mode. Over-time activity values can also be used on effects, e.g. if dynamic activity of brightness or other variables is desired.

Warning

Enabling dynamic activity (such as via Enable colour over time in Colour settings) has a severe CPU performance overhead, especially when used on Particles.

Adjusting activity calculation

By default, Keysight is configured to broadly match the velocity range and volume decay times of a typical digital piano. However, if you want to use over-time effects to mirror some other instrument such as a synth, activity decay variables are configurable:

Die-off

Each of these sliders is a value in seconds for a maximum velocity note-on to decay. The note's position on the piano is used as a factor between the given times (i.e. lower-register notes have a longer decay time).

Setting 4 of these sliders to 999.0 or similar will functionally remove any dynamic decay, as all notes then take 999 seconds to fully decay. Alternatively, setting both A0 and C8 damped / undamped times to the same value will remove the dynamic decay time difference across the keyboard.

Pedal simulation

Sustain (and damping)

The raw sustain pedal velocity is mapped similar to an activity value, as most sustain pedals with gradual MIDI increments will begin sending > 0 values well before you actually hear any sustain occuring on your piano VST (in order to match the take-up on an acoustic pedal, no doubt). Core > Simulation, MIDI behaviour section controls the floor and ceiling values for this mapping, with the default of 28 and 65 roughly matching my own piano.

Sustain

Sustain is not binary in Keysight, just as it isn't on an acoustic piano or high quality piano VSTs. Values between floor and ceiling are mapped to a 0.00 - 1.00 damping value, which is then used in note calculation and damper visualisation.

Damping is forced to a value of 1.00 for higher register notes (Ab6 and up) to mirror the way real pianos do not have dampers on these strings. This can be disabled under Core > Simulation, Note activity simulation over time section.

Sostenuto

Note

I LOVE the sostenuto pedal. And you should too.

The sostenuto pedal (the middle of the three, on most pianos that have it) catches any currently raised dampers and keeps them held until the sostenuto pedal is released. In Keysight, this behaviour is slightly adjusted to only catch dampers that are raised by note-on events (a feature that does exist on a handful of physical pianos, but is very uncommon to say the least).

Having a damper caught by the sostenuto pedal overrides the damping value to 1.00 for that note index when calculating note decay time. It also keeps the damper visualisation damper raised slightly higher than sustain pedal damper-raising.

Soft

Soft pedal is not used in the stock Keysight configuration. This pedal has no mapping or special behaviour, its 0 - 127 value is mapped to 0.00 - 1.00 and is potentially used in two places:

  • Scene > Lighting, Lighting bloom section, while Modify bloom with soft pedal usage is enabled
  • Automation > Pedal preset switching

Modify bloom with soft pedal usage can be useful if you want the entire Keysight scene to "feel" different while the soft pedal is down. However, feedback on this feature has commonly been that it is confusing to a lay audience and muddies things, and so it is disabled by default.