DCC Speed Table Calculator
Values are an integer scale your decoder defines (at least 64 levels, up to 256) — not a fixed percentage. See Sources below.
Description
A decoder's custom speed table replaces the simple 3-point Vstart/Vhigh/Vmid model (CV2, CV5, CV6) with 28 individually-set values, one per speed step — CV67 (step 1) through CV94 (step 28). This only takes effect when CV29 bit 4 is set to use the speed table; see this site's CV29 Calculator for that bit.
Setting all 28 values by hand is tedious, and the NMRA standard doesn't define a single "correct" curve shape between your low and high points — that's left to the modeler (or to a manufacturer's own preset tables, which this calculator doesn't attempt to reproduce). This calculator fills in the 26 steps between your chosen Speed Step 1 and Speed Step 28 values with plain linear interpolation, so you get a smooth, even ramp without entering every value one at a time.
Forward Trim (CV66) and Reverse Trim (CV95) are optional scale factors applied on top of the table — a quick way to trim overall forward or reverse speed without re-entering the whole table. Leave either blank to leave that trim unset (CV66/CV95 = 0, meaning "not implemented").
Sources
The CV map itself is reproduced directly from NMRA Standard S-9.2.2, "Configuration Variables For Digital Command Control, All Scales" (July 2012): CV67-94 is defined as "28 bytes wide, consisting of 28 values for forward speeds," CV66 (Forward Trim) and CV95 (Reverse Trim) are each "a scale factor... interpreted as n/128," and CV29 bit 4 selects between the CV2/5/6 model and this CV66-95 table. The standard also states speed-table values sit on a decoder-specific scale ("at least 64 voltage drive levels and can have as many as 256") rather than a fixed 0-255 percentage — check your own decoder's documentation for how it interprets these values.
The linear interpolation between your two endpoints is this calculator's own tool, not an NMRA-defined formula — the standard leaves the curve shape between speed steps entirely up to the manufacturer and never states one. Plain evenly-spaced interpolation is disclosed here rather than presented as a reproduction of any particular decoder's algorithm.
Disclaimer: program a few steps and test on your actual locomotive before committing to a full table — how a given value translates into real-world speed varies by decoder and motor.

