fire_clip
Start playing a specific clip in Ableton Live by specifying track and clip indices, enabling AI-assisted music production control.
Instructions
Start playing a clip.
Parameters:
track_index: The index of the track containing the clip
clip_index: The index of the clip slot containing the clip
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| track_index | Yes | ||
| clip_index | Yes |
Implementation Reference
- MCP_Server/server.py:440-458 (handler)MCP tool handler for 'fire_clip' that proxies the command to the Ableton remote script via socket connection.@mcp.tool() def fire_clip(ctx: Context, track_index: int, clip_index: int) -> str: """ Start playing a clip. Parameters: - track_index: The index of the track containing the clip - clip_index: The index of the clip slot containing the clip """ try: ableton = get_ableton_connection() result = ableton.send_command("fire_clip", { "track_index": track_index, "clip_index": clip_index }) return f"Started playing clip at track {track_index}, slot {clip_index}" except Exception as e: logger.error(f"Error firing clip: {str(e)}") return f"Error firing clip: {str(e)}"
- Actual Ableton Live API implementation that fires the clip slot using Live's Python API.def _fire_clip(self, track_index, clip_index): """Fire a clip""" try: if track_index < 0 or track_index >= len(self._song.tracks): raise IndexError("Track index out of range") track = self._song.tracks[track_index] if clip_index < 0 or clip_index >= len(track.clip_slots): raise IndexError("Clip index out of range") clip_slot = track.clip_slots[clip_index] if not clip_slot.has_clip: raise Exception("No clip in slot") clip_slot.fire() result = { "fired": True } return result except Exception as e: self.log_message("Error firing clip: " + str(e)) raise
- Dispatching logic in remote script that routes 'fire_clip' command to the _fire_clip handler.elif command_type == "fire_clip": track_index = params.get("track_index", 0) clip_index = params.get("clip_index", 0) result = self._fire_clip(track_index, clip_index)
- MCP_Server/server.py:104-107 (registration)'fire_clip' listed as a state-modifying command in AbletonConnection.send_command for special handling (delays).is_modifying_command = command_type in [ "create_midi_track", "create_audio_track", "set_track_name", "create_clip", "add_notes_to_clip", "set_clip_name", "set_tempo", "fire_clip", "stop_clip", "set_device_parameter",