Skip to main content
Glama

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
NameRequiredDescriptionDefault
track_indexYes
clip_indexYes

Implementation Reference

  • 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)
  • '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",

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ahujasid/ableton-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server