load_drum_kit_tool
Load a drum rack and assign a specific drum kit to it using track index, rack URI, and kit path. Facilitates AI-assisted music production within Ableton Live via the AbletonMCP server.
Instructions
Load a drum rack and then load a specific drum kit into it.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| kit_path | Yes | ||
| rack_uri | Yes | ||
| track_index | Yes |
Implementation Reference
- MCP_Server/server.py:158-162 (handler)Handler function registered as load_drum_kit_tool, which executes the tool logic by delegating to the load_drum_kit helper.@mcp.tool() def load_drum_kit_tool(ctx: Context, track_index: int, rack_uri: str, kit_path: str) -> str: """Load a drum rack and then load a specific drum kit into it.""" return load_drum_kit(ctx, track_index, rack_uri, kit_path)
- MCP_Server/server.py:158-162 (registration)Registration of the load_drum_kit_tool using the @mcp.tool() decorator.@mcp.tool() def load_drum_kit_tool(ctx: Context, track_index: int, rack_uri: str, kit_path: str) -> str: """Load a drum rack and then load a specific drum kit into it.""" return load_drum_kit(ctx, track_index, rack_uri, kit_path)
- Core helper function that implements the logic to load a drum rack on a track and then load a specific drum kit from the browser into it.def load_drum_kit(ctx: Context, track_index: int, rack_uri: str, kit_path: str) -> str: """ Load a drum rack and then load a specific drum kit into it. Parameters: - track_index: The index of the track to load on - rack_uri: The URI of the drum rack to load (e.g., 'Drums/Drum Rack') - kit_path: Path to the drum kit inside the browser (e.g., 'drums/acoustic/kit1') """ try: ableton = get_ableton_connection() # Step 1: Load the drum rack result = ableton.send_command("load_browser_item", {"track_index": track_index, "item_uri": rack_uri}) if not result.get("loaded", False): return f"Failed to load drum rack with URI '{rack_uri}'" # Step 2: Get the drum kit items at the specified path kit_result = ableton.send_command("get_browser_items_at_path", {"path": kit_path}) if "error" in kit_result: return f"Loaded drum rack but failed to find drum kit: {kit_result.get('error')}" # Step 3: Find a loadable drum kit kit_items = kit_result.get("items", []) loadable_kits = [item for item in kit_items if item.get("is_loadable", False)] if not loadable_kits: return f"Loaded drum rack but no loadable drum kits found at '{kit_path}'" # Step 4: Load the first loadable kit kit_uri = loadable_kits[0].get("uri") load_result = ableton.send_command("load_browser_item", {"track_index": track_index, "item_uri": kit_uri}) return f"Loaded drum rack and kit '{loadable_kits[0].get('name')}' on track {track_index}" except Exception as e: logger.error(f"Error loading drum kit: {str(e)}") return f"Error loading drum kit: {str(e)}"