Keyframes, expressions, markers and time remapping¶
Part of the animation skill: these tools appear once it is loaded — by ae_enable_skill with animation, or by find_tool when a search returns one of them.
ae_list_keyframes ¶
Every keyframe of a property: time, value, interpolation on each side, ease (speed and influence), and for spatial properties the tangents and roving. Read this before easing or editing keys; the indices it gives are what the other keyframe tools take.
read-only · repeat-safe · stays inside After Effects.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
layer |
string |
yes | — | The layer by its name or its index in the composition, 1 at the top. |
path |
string |
yes | — | Path of the property, segments separated by /: match names as ae_property_tree lists them (ADBE Transform Group/ADBE Position), display names in After Effects' language, the English names of the common ones (Transform/Position, Effects/<effect>/<parameter>, Masks/1/Mask Path, Text/Source Text), or 1-based indices. |
comp |
string? |
— | null |
The composition by name or id; when empty, the active one, else the one worked on last, else the only one in the project. |
JSON Schema
{
"type": "object",
"properties": {
"layer": {
"description": "The layer by its name or its index in the composition, 1 at the top.",
"type": "string"
},
"path": {
"description": "Path of the property, segments separated by /: match names as ae_property_tree lists them (ADBE Transform Group/ADBE Position), display names in After Effects\u0027 language, the English names of the common ones (Transform/Position, Effects/\u003Ceffect\u003E/\u003Cparameter\u003E, Masks/1/Mask Path, Text/Source Text), or 1-based indices.",
"type": "string"
},
"comp": {
"description": "The composition by name or id; when empty, the active one, else the one worked on last, else the only one in the project.",
"type": [
"string",
"null"
],
"default": null
}
},
"required": [
"layer",
"path"
]
}
ae_set_keyframes ¶
Set keyframes on a property in one call: a list of {time, value} pairs, each optionally with its own easing, plus a preset or interpolation, influence and speed that apply to all of them. Existing keys at other times stay unless replace is true. A key at a time that already has one replaces it. Values take the same forms as ae_set_property.
only adds · repeat-safe · stays inside After Effects.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
layer |
string |
yes | — | The layer by its name or its index in the composition, 1 at the top. |
path |
string |
yes | — | Path of the property, segments separated by /: match names as ae_property_tree lists them (ADBE Transform Group/ADBE Position), display names in After Effects' language, the English names of the common ones (Transform/Position, Effects/<effect>/<parameter>, Masks/1/Mask Path, Text/Source Text), or 1-based indices. |
keys |
array |
yes | — | Keyframes as a list of objects with time (seconds) and value (as ae_set_property takes it); any may also carry its own preset, in_interpolation, out_interpolation, influence_in, influence_out, speed_in, speed_out, in_tangent, out_tangent or label. |
comp |
string? |
— | null |
The composition by name or id; when empty, the active one, else the one worked on last, else the only one in the project. |
replace |
boolean |
— | false |
Remove the property's existing keyframes first. |
preset |
string? |
— | null |
easy_ease (both sides), ease_in, ease_out, linear, or hold; the explicit settings below override a preset side by side. |
inInterpolation |
string? |
— | null |
Interpolation into the key: LINEAR, BEZIER or HOLD. |
outInterpolation |
string? |
— | null |
Interpolation out of the key: LINEAR, BEZIER or HOLD. |
influenceIn |
number? |
— | null |
Ease influence into the key, 0.1 to 100 percent; 33.33 is Easy Ease. Setting it makes the side bezier. |
influenceOut |
number? |
— | null |
Ease influence out of the key, 0.1 to 100 percent; 33.33 is Easy Ease. Setting it makes the side bezier. |
speedIn |
number? |
— | null |
Speed into the key in units per second; 0 comes to a rest, as Easy Ease does. |
speedOut |
number? |
— | null |
Speed out of the key in units per second; 0 starts from rest, as Easy Ease does. |
label |
integer? |
— | null |
Keyframe label colour as a number 0 to 16 as After Effects numbers them; 0 is none. |
JSON Schema
{
"type": "object",
"properties": {
"layer": {
"description": "The layer by its name or its index in the composition, 1 at the top.",
"type": "string"
},
"path": {
"description": "Path of the property, segments separated by /: match names as ae_property_tree lists them (ADBE Transform Group/ADBE Position), display names in After Effects\u0027 language, the English names of the common ones (Transform/Position, Effects/\u003Ceffect\u003E/\u003Cparameter\u003E, Masks/1/Mask Path, Text/Source Text), or 1-based indices.",
"type": "string"
},
"keys": {
"description": "Keyframes as a list of objects with time (seconds) and value (as ae_set_property takes it); any may also carry its own preset, in_interpolation, out_interpolation, influence_in, influence_out, speed_in, speed_out, in_tangent, out_tangent or label.",
"type": "array"
},
"comp": {
"description": "The composition by name or id; when empty, the active one, else the one worked on last, else the only one in the project.",
"type": [
"string",
"null"
],
"default": null
},
"replace": {
"description": "Remove the property\u0027s existing keyframes first.",
"type": "boolean",
"default": false
},
"preset": {
"description": "easy_ease (both sides), ease_in, ease_out, linear, or hold; the explicit settings below override a preset side by side.",
"type": [
"string",
"null"
],
"default": null
},
"inInterpolation": {
"description": "Interpolation into the key: LINEAR, BEZIER or HOLD.",
"type": [
"string",
"null"
],
"default": null
},
"outInterpolation": {
"description": "Interpolation out of the key: LINEAR, BEZIER or HOLD.",
"type": [
"string",
"null"
],
"default": null
},
"influenceIn": {
"description": "Ease influence into the key, 0.1 to 100 percent; 33.33 is Easy Ease. Setting it makes the side bezier.",
"type": [
"number",
"null"
],
"default": null
},
"influenceOut": {
"description": "Ease influence out of the key, 0.1 to 100 percent; 33.33 is Easy Ease. Setting it makes the side bezier.",
"type": [
"number",
"null"
],
"default": null
},
"speedIn": {
"description": "Speed into the key in units per second; 0 comes to a rest, as Easy Ease does.",
"type": [
"number",
"null"
],
"default": null
},
"speedOut": {
"description": "Speed out of the key in units per second; 0 starts from rest, as Easy Ease does.",
"type": [
"number",
"null"
],
"default": null
},
"label": {
"description": "Keyframe label colour as a number 0 to 16 as After Effects numbers them; 0 is none.",
"type": [
"integer",
"null"
],
"default": null
}
},
"required": [
"layer",
"path",
"keys"
]
}
ae_remove_keyframes ¶
Remove keyframes of a property: the ones at the indices or times given, or all of them when neither is. A property with no keys left keeps its last value.
may overwrite or delete · repeat-safe · stays inside After Effects.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
layer |
string |
yes | — | The layer by its name or its index in the composition, 1 at the top. |
path |
string |
yes | — | Path of the property, segments separated by /: match names as ae_property_tree lists them (ADBE Transform Group/ADBE Position), display names in After Effects' language, the English names of the common ones (Transform/Position, Effects/<effect>/<parameter>, Masks/1/Mask Path, Text/Source Text), or 1-based indices. |
comp |
string? |
— | null |
The composition by name or id; when empty, the active one, else the one worked on last, else the only one in the project. |
indices |
array? |
— | null |
Keyframe indices as ae_list_keyframes numbers them, 1 first; the keys at times, or all keys, when empty. |
times |
array? |
— | null |
Times in seconds of the keyframes meant, each within half a frame of a key; the keys at indices, or all keys, when empty. |
JSON Schema
{
"type": "object",
"properties": {
"layer": {
"description": "The layer by its name or its index in the composition, 1 at the top.",
"type": "string"
},
"path": {
"description": "Path of the property, segments separated by /: match names as ae_property_tree lists them (ADBE Transform Group/ADBE Position), display names in After Effects\u0027 language, the English names of the common ones (Transform/Position, Effects/\u003Ceffect\u003E/\u003Cparameter\u003E, Masks/1/Mask Path, Text/Source Text), or 1-based indices.",
"type": "string"
},
"comp": {
"description": "The composition by name or id; when empty, the active one, else the one worked on last, else the only one in the project.",
"type": [
"string",
"null"
],
"default": null
},
"indices": {
"description": "Keyframe indices as ae_list_keyframes numbers them, 1 first; the keys at times, or all keys, when empty.",
"type": [
"array",
"null"
],
"items": {
"type": "integer"
},
"default": null
},
"times": {
"description": "Times in seconds of the keyframes meant, each within half a frame of a key; the keys at indices, or all keys, when empty.",
"type": [
"array",
"null"
],
"items": {
"type": "number"
},
"default": null
}
},
"required": [
"layer",
"path"
]
}
ae_ease_keyframes ¶
Change the interpolation and ease of existing keyframes: a preset as the Animation menu offers them, or interpolation per side with influence (percent) and speed, continuous and auto bezier tangents, roving for spatial keys. Applies to the keys at the indices or times given, or all of them.
only adds · repeat-safe · stays inside After Effects.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
layer |
string |
yes | — | The layer by its name or its index in the composition, 1 at the top. |
path |
string |
yes | — | Path of the property, segments separated by /: match names as ae_property_tree lists them (ADBE Transform Group/ADBE Position), display names in After Effects' language, the English names of the common ones (Transform/Position, Effects/<effect>/<parameter>, Masks/1/Mask Path, Text/Source Text), or 1-based indices. |
comp |
string? |
— | null |
The composition by name or id; when empty, the active one, else the one worked on last, else the only one in the project. |
indices |
array? |
— | null |
Keyframe indices as ae_list_keyframes numbers them, 1 first; the keys at times, or all keys, when empty. |
times |
array? |
— | null |
Times in seconds of the keyframes meant, each within half a frame of a key; the keys at indices, or all keys, when empty. |
preset |
string? |
— | null |
easy_ease (both sides), ease_in, ease_out, linear, or hold; the explicit settings below override a preset side by side. |
inInterpolation |
string? |
— | null |
Interpolation into the key: LINEAR, BEZIER or HOLD. |
outInterpolation |
string? |
— | null |
Interpolation out of the key: LINEAR, BEZIER or HOLD. |
influenceIn |
number? |
— | null |
Ease influence into the key, 0.1 to 100 percent; 33.33 is Easy Ease. Setting it makes the side bezier. |
influenceOut |
number? |
— | null |
Ease influence out of the key, 0.1 to 100 percent; 33.33 is Easy Ease. Setting it makes the side bezier. |
speedIn |
number? |
— | null |
Speed into the key in units per second; 0 comes to a rest, as Easy Ease does. |
speedOut |
number? |
— | null |
Speed out of the key in units per second; 0 starts from rest, as Easy Ease does. |
continuous |
boolean? |
— | null |
Keep the tangents continuous through the key. |
autoBezier |
boolean? |
— | null |
Let After Effects pick the tangents (auto bezier). |
roving |
boolean? |
— | null |
For spatial properties: let the key rove in time to keep the speed even along the path. |
inTangent |
array? |
— | null |
For spatial properties: the tangent into the key as [x, y] or [x, y, z] relative to it. |
outTangent |
array? |
— | null |
For spatial properties: the tangent out of the key. |
spatialContinuous |
boolean? |
— | null |
For spatial properties: keep the path tangents continuous through the key. |
spatialAutoBezier |
boolean? |
— | null |
For spatial properties: let After Effects pick the path tangents. |
label |
integer? |
— | null |
Keyframe label colour as a number 0 to 16 as After Effects numbers them; 0 is none. |
JSON Schema
{
"type": "object",
"properties": {
"layer": {
"description": "The layer by its name or its index in the composition, 1 at the top.",
"type": "string"
},
"path": {
"description": "Path of the property, segments separated by /: match names as ae_property_tree lists them (ADBE Transform Group/ADBE Position), display names in After Effects\u0027 language, the English names of the common ones (Transform/Position, Effects/\u003Ceffect\u003E/\u003Cparameter\u003E, Masks/1/Mask Path, Text/Source Text), or 1-based indices.",
"type": "string"
},
"comp": {
"description": "The composition by name or id; when empty, the active one, else the one worked on last, else the only one in the project.",
"type": [
"string",
"null"
],
"default": null
},
"indices": {
"description": "Keyframe indices as ae_list_keyframes numbers them, 1 first; the keys at times, or all keys, when empty.",
"type": [
"array",
"null"
],
"items": {
"type": "integer"
},
"default": null
},
"times": {
"description": "Times in seconds of the keyframes meant, each within half a frame of a key; the keys at indices, or all keys, when empty.",
"type": [
"array",
"null"
],
"items": {
"type": "number"
},
"default": null
},
"preset": {
"description": "easy_ease (both sides), ease_in, ease_out, linear, or hold; the explicit settings below override a preset side by side.",
"type": [
"string",
"null"
],
"default": null
},
"inInterpolation": {
"description": "Interpolation into the key: LINEAR, BEZIER or HOLD.",
"type": [
"string",
"null"
],
"default": null
},
"outInterpolation": {
"description": "Interpolation out of the key: LINEAR, BEZIER or HOLD.",
"type": [
"string",
"null"
],
"default": null
},
"influenceIn": {
"description": "Ease influence into the key, 0.1 to 100 percent; 33.33 is Easy Ease. Setting it makes the side bezier.",
"type": [
"number",
"null"
],
"default": null
},
"influenceOut": {
"description": "Ease influence out of the key, 0.1 to 100 percent; 33.33 is Easy Ease. Setting it makes the side bezier.",
"type": [
"number",
"null"
],
"default": null
},
"speedIn": {
"description": "Speed into the key in units per second; 0 comes to a rest, as Easy Ease does.",
"type": [
"number",
"null"
],
"default": null
},
"speedOut": {
"description": "Speed out of the key in units per second; 0 starts from rest, as Easy Ease does.",
"type": [
"number",
"null"
],
"default": null
},
"continuous": {
"description": "Keep the tangents continuous through the key.",
"type": [
"boolean",
"null"
],
"default": null
},
"autoBezier": {
"description": "Let After Effects pick the tangents (auto bezier).",
"type": [
"boolean",
"null"
],
"default": null
},
"roving": {
"description": "For spatial properties: let the key rove in time to keep the speed even along the path.",
"type": [
"boolean",
"null"
],
"default": null
},
"inTangent": {
"description": "For spatial properties: the tangent into the key as [x, y] or [x, y, z] relative to it.",
"type": [
"array",
"null"
],
"items": {
"type": "number"
},
"default": null
},
"outTangent": {
"description": "For spatial properties: the tangent out of the key.",
"type": [
"array",
"null"
],
"items": {
"type": "number"
},
"default": null
},
"spatialContinuous": {
"description": "For spatial properties: keep the path tangents continuous through the key.",
"type": [
"boolean",
"null"
],
"default": null
},
"spatialAutoBezier": {
"description": "For spatial properties: let After Effects pick the path tangents.",
"type": [
"boolean",
"null"
],
"default": null
},
"label": {
"description": "Keyframe label colour as a number 0 to 16 as After Effects numbers them; 0 is none.",
"type": [
"integer",
"null"
],
"default": null
}
},
"required": [
"layer",
"path"
]
}
ae_separate_dimensions ¶
Separate the dimensions of a position or another multi-dimensional property, so each axis has keyframes of its own, or join them again; the answer names the per-axis properties (the followers) the keyframe tools then take by path.
only adds · repeat-safe · stays inside After Effects.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
layer |
string |
yes | — | The layer by its name or its index in the composition, 1 at the top. |
path |
string |
yes | — | Path of the property, segments separated by /: match names as ae_property_tree lists them (ADBE Transform Group/ADBE Position), display names in After Effects' language, the English names of the common ones (Transform/Position, Effects/<effect>/<parameter>, Masks/1/Mask Path, Text/Source Text), or 1-based indices. |
comp |
string? |
— | null |
The composition by name or id; when empty, the active one, else the one worked on last, else the only one in the project. |
separate |
boolean? |
— | null |
Separate the dimensions (true) or join them again (false); empty only reports. |
JSON Schema
{
"type": "object",
"properties": {
"layer": {
"description": "The layer by its name or its index in the composition, 1 at the top.",
"type": "string"
},
"path": {
"description": "Path of the property, segments separated by /: match names as ae_property_tree lists them (ADBE Transform Group/ADBE Position), display names in After Effects\u0027 language, the English names of the common ones (Transform/Position, Effects/\u003Ceffect\u003E/\u003Cparameter\u003E, Masks/1/Mask Path, Text/Source Text), or 1-based indices.",
"type": "string"
},
"comp": {
"description": "The composition by name or id; when empty, the active one, else the one worked on last, else the only one in the project.",
"type": [
"string",
"null"
],
"default": null
},
"separate": {
"description": "Separate the dimensions (true) or join them again (false); empty only reports.",
"type": [
"boolean",
"null"
],
"default": null
}
},
"required": [
"layer",
"path"
]
}
ae_set_expression ¶
Put an expression on a property and check it compiles: a broken expression is reported with After Effects' own error message and not left on the property, so the answer can be trusted. An empty expression removes the one there; check_only tries the expression and restores whatever was there before. The answer carries the value the expression yields at the current time.
only adds · repeat-safe · stays inside After Effects.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
layer |
string |
yes | — | The layer by its name or its index in the composition, 1 at the top. |
path |
string |
yes | — | Path of the property, segments separated by /: match names as ae_property_tree lists them (ADBE Transform Group/ADBE Position), display names in After Effects' language, the English names of the common ones (Transform/Position, Effects/<effect>/<parameter>, Masks/1/Mask Path, Text/Source Text), or 1-based indices. |
expression |
string |
yes | — | The expression, in After Effects' JavaScript; empty removes the expression on the property. |
comp |
string? |
— | null |
The composition by name or id; when empty, the active one, else the one worked on last, else the only one in the project. |
enabled |
boolean |
— | true |
Leave the expression switched on; false puts it on the property disabled. |
checkOnly |
boolean |
— | false |
Only check that the expression compiles and what it yields, restoring the property afterwards. |
JSON Schema
{
"type": "object",
"properties": {
"layer": {
"description": "The layer by its name or its index in the composition, 1 at the top.",
"type": "string"
},
"path": {
"description": "Path of the property, segments separated by /: match names as ae_property_tree lists them (ADBE Transform Group/ADBE Position), display names in After Effects\u0027 language, the English names of the common ones (Transform/Position, Effects/\u003Ceffect\u003E/\u003Cparameter\u003E, Masks/1/Mask Path, Text/Source Text), or 1-based indices.",
"type": "string"
},
"expression": {
"description": "The expression, in After Effects\u0027 JavaScript; empty removes the expression on the property.",
"type": "string"
},
"comp": {
"description": "The composition by name or id; when empty, the active one, else the one worked on last, else the only one in the project.",
"type": [
"string",
"null"
],
"default": null
},
"enabled": {
"description": "Leave the expression switched on; false puts it on the property disabled.",
"type": "boolean",
"default": true
},
"checkOnly": {
"description": "Only check that the expression compiles and what it yields, restoring the property afterwards.",
"type": "boolean",
"default": false
}
},
"required": [
"layer",
"path",
"expression"
]
}
ae_list_markers ¶
The markers of a composition, or of a layer when one is named: time, comment, duration, label, chapter, URL, cue point name and, for composition markers, whether the region is protected.
read-only · repeat-safe · stays inside After Effects.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
comp |
string? |
— | null |
The composition by name or id; when empty, the active one, else the one worked on last, else the only one in the project. |
layer |
string? |
— | null |
A layer by name or index for layer markers; the composition's own markers when empty. |
JSON Schema
{
"type": "object",
"properties": {
"comp": {
"description": "The composition by name or id; when empty, the active one, else the one worked on last, else the only one in the project.",
"type": [
"string",
"null"
],
"default": null
},
"layer": {
"description": "A layer by name or index for layer markers; the composition\u0027s own markers when empty.",
"type": [
"string",
"null"
],
"default": null
}
}
}
ae_set_marker ¶
Add a marker on the composition, or on a layer when one is named, at a time with a comment and optional duration, label, chapter, URL, frame target and cue point name. A marker already at that time is replaced.
only adds · repeat-safe · stays inside After Effects.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
time |
number? |
— | null |
Time in seconds within the composition; the composition's current time when empty. |
comment |
string? |
— | null |
The marker's comment, shown on it in the timeline. |
comp |
string? |
— | null |
The composition by name or id; when empty, the active one, else the one worked on last, else the only one in the project. |
layer |
string? |
— | null |
A layer by name or index for layer markers; the composition's own markers when empty. |
duration |
number? |
— | null |
Duration of the marker in seconds; 0 for a point marker. |
label |
integer? |
— | null |
Label colour as a number 0 to 16 as After Effects numbers them; 0 is none. |
chapter |
string? |
— | null |
Chapter name, for formats that carry chapters. |
url |
string? |
— | null |
Web link the marker carries. |
frameTarget |
string? |
— | null |
Frame target of the web link. |
cuePointName |
string? |
— | null |
Cue point name, for Flash and streaming cue points. |
protectedRegion |
boolean? |
— | null |
For composition markers: protect the region the marker spans from being retimed. |
eventCuePoint |
boolean? |
— | null |
Make the cue point an event rather than navigation. |
parameters |
object? |
— | null |
Key and value pairs the marker carries, as an object of strings; for cue points and scripts that read them. |
JSON Schema
{
"type": "object",
"properties": {
"time": {
"description": "Time in seconds within the composition; the composition\u0027s current time when empty.",
"type": [
"number",
"null"
],
"default": null
},
"comment": {
"description": "The marker\u0027s comment, shown on it in the timeline.",
"type": [
"string",
"null"
],
"default": null
},
"comp": {
"description": "The composition by name or id; when empty, the active one, else the one worked on last, else the only one in the project.",
"type": [
"string",
"null"
],
"default": null
},
"layer": {
"description": "A layer by name or index for layer markers; the composition\u0027s own markers when empty.",
"type": [
"string",
"null"
],
"default": null
},
"duration": {
"description": "Duration of the marker in seconds; 0 for a point marker.",
"type": [
"number",
"null"
],
"default": null
},
"label": {
"description": "Label colour as a number 0 to 16 as After Effects numbers them; 0 is none.",
"type": [
"integer",
"null"
],
"default": null
},
"chapter": {
"description": "Chapter name, for formats that carry chapters.",
"type": [
"string",
"null"
],
"default": null
},
"url": {
"description": "Web link the marker carries.",
"type": [
"string",
"null"
],
"default": null
},
"frameTarget": {
"description": "Frame target of the web link.",
"type": [
"string",
"null"
],
"default": null
},
"cuePointName": {
"description": "Cue point name, for Flash and streaming cue points.",
"type": [
"string",
"null"
],
"default": null
},
"protectedRegion": {
"description": "For composition markers: protect the region the marker spans from being retimed.",
"type": [
"boolean",
"null"
],
"default": null
},
"eventCuePoint": {
"description": "Make the cue point an event rather than navigation.",
"type": [
"boolean",
"null"
],
"default": null
},
"parameters": {
"description": "Key and value pairs the marker carries, as an object of strings; for cue points and scripts that read them.",
"type": [
"object",
"null"
],
"default": null
}
}
}
ae_remove_markers ¶
Remove markers of the composition, or of a layer when one is named: those at the indices or times given, or all of them.
may overwrite or delete · repeat-safe · stays inside After Effects.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
comp |
string? |
— | null |
The composition by name or id; when empty, the active one, else the one worked on last, else the only one in the project. |
layer |
string? |
— | null |
A layer by name or index for layer markers; the composition's own markers when empty. |
indices |
array? |
— | null |
Marker indices as ae_list_markers numbers them, 1 first; the markers at times, or all markers, when empty. |
times |
array? |
— | null |
Times in seconds of the markers meant; the markers at indices, or all markers, when empty. |
JSON Schema
{
"type": "object",
"properties": {
"comp": {
"description": "The composition by name or id; when empty, the active one, else the one worked on last, else the only one in the project.",
"type": [
"string",
"null"
],
"default": null
},
"layer": {
"description": "A layer by name or index for layer markers; the composition\u0027s own markers when empty.",
"type": [
"string",
"null"
],
"default": null
},
"indices": {
"description": "Marker indices as ae_list_markers numbers them, 1 first; the markers at times, or all markers, when empty.",
"type": [
"array",
"null"
],
"items": {
"type": "integer"
},
"default": null
},
"times": {
"description": "Times in seconds of the markers meant; the markers at indices, or all markers, when empty.",
"type": [
"array",
"null"
],
"items": {
"type": "number"
},
"default": null
}
}
}
ae_time_remap ¶
Time remapping of a footage or nested composition layer: switch it on, which puts keys at the layer's start and end, and set the keys that map composition time to source time (both in seconds) for freeze frames, slow motion and reversal. Ease the keys with ae_ease_keyframes on the path ADBE Time Remapping; enabled false switches it off.
only adds · repeat-safe · stays inside After Effects.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
layer |
string |
yes | — | The layer by its name or its index in the composition, 1 at the top. |
comp |
string? |
— | null |
The composition by name or id; when empty, the active one, else the one worked on last, else the only one in the project. |
enabled |
boolean |
— | true |
Switch time remapping on (the default) or off. |
keys |
array? |
— | null |
Keyframes as {time, value}: the composition time and the source time it shows, both in seconds. |
replace |
boolean |
— | false |
Remove the existing time remap keys before setting the new ones. |
JSON Schema
{
"type": "object",
"properties": {
"layer": {
"description": "The layer by its name or its index in the composition, 1 at the top.",
"type": "string"
},
"comp": {
"description": "The composition by name or id; when empty, the active one, else the one worked on last, else the only one in the project.",
"type": [
"string",
"null"
],
"default": null
},
"enabled": {
"description": "Switch time remapping on (the default) or off.",
"type": "boolean",
"default": true
},
"keys": {
"description": "Keyframes as {time, value}: the composition time and the source time it shows, both in seconds.",
"type": [
"array",
"null"
],
"default": null
},
"replace": {
"description": "Remove the existing time remap keys before setting the new ones.",
"type": "boolean",
"default": false
}
},
"required": [
"layer"
]
}