start_playback
Initiates playback of the current Ableton Live session, allowing AI-assisted music production to begin.
Instructions
Start playing the Ableton session.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- MCP_Server/server.py:481-489 (handler)MCP tool handler for 'start_playback'. Connects to Ableton remote script and sends the 'start_playback' command via socket communication.def start_playback(ctx: Context) -> str: """Start playing the Ableton session.""" try: ableton = get_ableton_connection() result = ableton.send_command("start_playback") return "Started playback" except Exception as e: logger.error(f"Error starting playback: {str(e)}") return f"Error starting playback: {str(e)}"
- Actual implementation in Ableton remote script that invokes Live's song.start_playing() API to start playback.def _start_playback(self): """Start playing the session""" try: self._song.start_playing() result = { "playing": self._song.is_playing } return result except Exception as e:
- AbletonMCP_Remote_Script/__init__.py:229-232 (registration)Registration of 'start_playback' as a state-modifying command in the remote script's command dispatcher, which schedules it on the main thread.elif command_type in ["create_midi_track", "set_track_name", "create_clip", "add_notes_to_clip", "set_clip_name", "set_tempo", "fire_clip", "stop_clip", "start_playback", "stop_playback", "load_browser_item"]:
- MCP_Server/server.py:104-108 (helper)Helper list identifying 'start_playback' as a modifying command that requires delays during socket communication.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", "start_playback", "stop_playback", "load_instrument_or_effect"
- AbletonMCP_Remote_Script/__init__.py:273-274 (registration)Dispatch/registration point in remote script where 'start_playback' command is routed to the _start_playback handler.elif command_type == "start_playback": result = self._start_playback()