duplicate_track
Duplicate an existing track in Ableton Live by specifying its index, enabling quick replication of arrangements, instruments, and settings for music production workflows.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| track_index | Yes |
Implementation Reference
- MCP_Server/server.py:525-533 (handler)MCP tool handler and registration for 'duplicate_track'. Forwards command to Ableton remote script via socket.@mcp.tool() def duplicate_track(ctx: Context, track_index: int) -> str: try: ableton = get_ableton_connection() result = ableton.send_command("duplicate_track", {"track_index": track_index}) return f"Duplicated track '{result.get('original_name')}' to '{result.get('new_name')}' at index {result.get('new_index')}" except Exception as e: logger.error(f"Error duplicating track: {str(e)}") return f"Error duplicating track: {str(e)}"
- Core implementation of duplicate_track command in Ableton Live remote script. Uses Live's API: self._song.duplicate_track(track_index) to duplicate the track.def _duplicate_track(self, track_index): """Duplicate a track at the specified index""" try: if track_index < 0 or track_index >= len(self._song.tracks): raise IndexError("Track index out of range") original_track = self._song.tracks[track_index] # Duplicate the track self._song.duplicate_track(track_index) # Get the new track (it will be at the next index) new_track_index = track_index + 1 new_track = self._song.tracks[new_track_index] result = { "duplicated": True, "original_name": original_track.name, "new_name": new_track.name, "original_index": track_index, "new_index": new_track_index } return result except Exception as e: self.log_message("Error duplicating track: " + str(e)) raise
- AbletonMCP_Remote_Script/__init__.py:296-298 (registration)Command dispatch/registration in remote script's _process_command that routes 'duplicate_track' to the handler.elif command_type == "duplicate_track": track_index = params.get("track_index", 0) result = self._duplicate_track(track_index)