insert_envelope_point
Add automation points to REAPER envelopes for precise control of volume, pan, mute, and other parameters in audio projects.
Instructions
Insert a point into an automation envelope. Identify the envelope by name (e.g. 'Volume', 'Pan', 'Mute') or by 0-based envelope_index. Using envelope_name is preferred and works even if the envelope is not yet visible/armed in the REAPER UI.
time: position in seconds
value: linear amplitude (Volume: 0.0=silence, 1.0=0 dB, 2.0=+6 dB max)
shape: 0=linear, 1=square, 2=slow start/end, 3=fast start, 4=fast end, 5=bezier
tension: bezier tension (-1.0 to 1.0)
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| track_index | Yes | ||
| time | Yes | ||
| value | Yes | ||
| envelope_index | No | ||
| envelope_name | No | ||
| shape | No | ||
| tension | No |
Implementation Reference
- src/reaper_mcp/server.py:1012-1042 (handler)The MCP tool handler that registers 'insert_envelope_point' and calls the adapter.
def insert_envelope_point( track_index: int, time: float, value: float, envelope_index: int | None = None, envelope_name: str | None = None, shape: int = 0, tension: float = 0.0, ) -> dict[str, Any]: """ Insert a point into an automation envelope. Identify the envelope by name (e.g. 'Volume', 'Pan', 'Mute') or by 0-based envelope_index. Using envelope_name is preferred and works even if the envelope is not yet visible/armed in the REAPER UI. - time: position in seconds - value: linear amplitude (Volume: 0.0=silence, 1.0=0 dB, 2.0=+6 dB max) - shape: 0=linear, 1=square, 2=slow start/end, 3=fast start, 4=fast end, 5=bezier - tension: bezier tension (-1.0 to 1.0) """ try: return _wrap( adapter.insert_envelope_point( track_index=track_index, envelope_index=envelope_index, envelope_name=envelope_name, time=time, value=value, shape=shape, tension=tension, ) ) - The adapter method that forwards the 'insert_envelope_point' request to the REAPER client.
def insert_envelope_point( self, track_index: int, envelope_index: int | None = None, envelope_name: str | None = None, time: float = 0.0, value: float = 1.0, shape: int = 0, tension: float = 0.0, ) -> dict[str, Any]: return self._client.call( "insert_envelope_point", track_index=track_index, envelope_index=envelope_index, envelope_name=envelope_name, time=time, value=value, shape=shape, tension=tension, )