animate-from-data
Generate After Effects keyframes for a layer property from any numeric data series, mapping raw values to a desired output range.
Instructions
Generate After Effects keyframes for a layer property directly from an arbitrary numeric data series - stock prices, sensor readings, scores, survey results, or any other time-ordered numbers (not audio; see animate-to-audio for that). Provide either data (explicit {time, value} points) or values + interval (an evenly-spaced series with an implied time step) - not both. Each raw value is normalized using [inputMin, inputMax] (auto-detected from the series when not given, so an unknown-range series still maps cleanly) and mapped to [outputMin, outputMax], with the same optional response curve and smoothing animate-to-audio uses. Targets a plain layer property (e.g. 'ADBE Opacity') by default, or an effect's property when effectIndex/effectName/effectMatchName is given.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| data | No | Explicit {time, value} points, in seconds and raw data units (max 2000, one point becomes one keyframe). Does not need to be pre-sorted by time. Provide this or values+interval, not both. | |
| curve | No | Response shaping (default: linear). 'exponential' emphasizes high values; 'logarithmic' boosts low-value detail. | |
| values | No | Raw values for an evenly-spaced series (one every `interval` seconds, starting at `startTime`; max 2000). Provide this with interval, or use `data` instead for explicit per-point times. | |
| compName | No | Name of the target composition. Preferred over compIndex when both are given. | |
| inputMax | No | Raw data value mapped to outputMax. Auto-detected from the series (after smoothing) when omitted. | |
| inputMin | No | Raw data value mapped to outputMin. Auto-detected from the series (after smoothing) when omitted. | |
| interval | No | Seconds between consecutive `values` entries. Required when `values` is given. | |
| compIndex | No | 1-based composition index, used if compName is not given. | |
| layerName | No | Name of the target layer (alternative to layerIndex). | |
| outputMax | Yes | Property value at inputMax (or the series' highest point, when inputMax is not given). | |
| outputMin | Yes | Property value at inputMin (or the series' lowest point, when inputMin is not given). | |
| startTime | No | Seconds to offset every generated keyframe by. In `values` mode this is also where the series starts (default: 0). | |
| effectName | No | Display name of the effect to target. | |
| layerIndex | No | 1-based index of the target layer within the composition. | |
| effectIndex | No | 1-based index of the effect in the layer's Effects group, to target an effect property instead of a plain layer property. | |
| propertyName | No | Target property name or matchName (e.g. 'ADBE Opacity', 'ADBE Scale', 'ADBE Rotate Z' - matchNames are locale-independent and preferred). Used when propertyPath is not given, or as the effect-property fallback. | |
| propertyPath | No | Path to the target property, from the effect root (if an effect selector is given) or from the layer root otherwise, e.g. ['Compositing Options', 'Effect Opacity'] or [3, 1]. | |
| clearExisting | No | Remove the property's existing keyframes first (default: true). | |
| propertyIndex | No | Fallback target property index under the effect root (effect targeting only). | |
| effectMatchName | No | Internal matchName of the effect to target. | |
| keyframeOptions | No | Optional graph/easing controls applied uniformly to every keyframe this call generates. | |
| smoothingWindow | No | Moving-average window (in samples) applied to raw values before mapping, to smooth out noisy data (default: 1 = no smoothing). |