Map Input » History » Revision 2
Revision 1 (Adam Klama, 06/21/2026 02:24 PM) → Revision 2/4 (Adam Klama, 06/21/2026 02:52 PM)
# Map Input
## Overview
A **Map Input** applies a **1D lookup table** to another input and reports the
result as a new, independent channel. You give it a list of X breakpoints and the
Y value at each one; the controller looks up the source value on the X axis and
**interpolates** between points. Use it to reshape a signal — for example to turn
a pedal-position input into a torque-request curve.
This is the standalone 1D map described on the
[Scaling & Maps](../Scaling-and-Maps.md) page — it produces a **separate** channel
that other IO can reference by alias.
## Prerequisites & hardware
You need:
- A **source input** to use as the X axis — any existing input, by alias.
- The map data: matching lists of **X breakpoints** and **Y values**.
## Add it in the app
1. Add a new input and choose **Map Input** as the type.
2. Choose the **source input** (the X axis).
3. Give it a clear **alias** (e.g. `Torque Request`).
4. Enter the **input values** (X) and **output values** (Y) of the map.
## Settings reference
> Schema: `config/MapInputConfigData.proto`.
| Setting | Meaning | Unit | Range / values | Notes |
|---|---|---|---|---|
| **Source input** | The input read on the X axis | — | an existing input (by alias) | The value looked up in the map. |
| **Input values (X)** | The X-axis breakpoints | source's unit | list of sint32 | Must be **strictly increasing**. The points where the curve bends. |
| **Output values (Y)** | The result at each X breakpoint | result's unit | list of sint32 | One Y per X. Values between breakpoints are interpolated. |
**How it maps:** the source value is located between two X breakpoints and the
output is linearly interpolated between their Y values. Keep one Y for every X.
For more on editing maps, see [Scaling & Maps](../Scaling-and-Maps.md).
## Common settings
Map Input also uses the shared setting — alias. See [Common IO Settings](../Common-IO-Settings.md).
## Example — pedal position to torque request
1. Type **Map Input**, alias `Torque Request`.
2. **Source input** = your `Pedal Position` input (0–100 %).
3. **Input values (X)** `0, 20, 50, 80, 100`.
4. **Output values (Y)** `0, 50, 200, 450, 600` — a progressive curve that is
gentle off-idle and steeper near full pedal.
## Troubleshooting
- **Output flat or stuck at one end:** the source is sitting below the first or
above the last X breakpoint — values outside the table are clamped to the end Y.
- **Map rejected / behaves oddly:** make sure **Input values** are strictly
increasing and that there is one **Output value** for each.
## Related
- [Scaling & Maps](../Scaling-and-Maps.md) — concept page for 1D maps.
- [Map Output](../outputs/Map-Output.md) — the same lookup applied to an output.
- [Mux Input](Mux-Input.md) — select between inputs rather than interpolate.