Skip to content

Commit 37e270d

Browse files
committed
Fix CI: Remove f-strings for Python 2.7 compatibility
- Replaced f-string formatting with string concatenation (Python 2.7 compatible) - Fixed: f"Parameter '{param_name}' not found" → "Parameter '" + str(param_name) + "' not found" - Fixed: f"Send {chr(65+i)}" → "Send " + chr(65+i) - Removed external project references per request This ensures compatibility with Ableton Live 11 (Python 2.7) and Live 12 (Python 3.11.6).
1 parent 07d282d commit 37e270d

2 files changed

Lines changed: 3 additions & 25 deletions

File tree

ClaudeMCP_Remote/liveapi_tools.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1628,7 +1628,7 @@ def get_device_parameter_by_name(self, track_index, device_index, param_name):
16281628
"max": float(param.max)
16291629
}
16301630

1631-
return {"ok": False, "error": f"Parameter '{param_name}' not found"}
1631+
return {"ok": False, "error": "Parameter '" + str(param_name) + "' not found"}
16321632
except Exception as e:
16331633
return {"ok": False, "error": str(e)}
16341634

@@ -1653,7 +1653,7 @@ def set_device_parameter_by_name(self, track_index, device_index, param_name, va
16531653
"value": float(param.value)
16541654
}
16551655

1656-
return {"ok": False, "error": f"Parameter '{param_name}' not found"}
1656+
return {"ok": False, "error": "Parameter '" + str(param_name) + "' not found"}
16571657
except Exception as e:
16581658
return {"ok": False, "error": str(e)}
16591659

@@ -1846,7 +1846,7 @@ def get_track_sends(self, track_index):
18461846
sends.append({
18471847
"index": i,
18481848
"value": float(send.value),
1849-
"name": str(send.name) if hasattr(send, 'name') else f"Send {chr(65+i)}"
1849+
"name": str(send.name) if hasattr(send, 'name') else "Send " + chr(65+i)
18501850
})
18511851

18521852
return {

README.md

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -277,27 +277,6 @@ See `examples/cv_tools_control.py` for a complete working example.
277277

278278
For detailed M4L integration documentation, see [MAX4LIVE_INTEGRATION.md](MAX4LIVE_INTEGRATION.md).
279279

280-
## Comparison with Similar Projects
281-
282-
### vs. ahujasid/ableton-mcp
283-
284-
[ahujasid/ableton-mcp](https://github.com/ahujasid/ableton-mcp) is another MCP-based Ableton control project. **Verifiable differences:**
285-
286-
| Feature | This Project | ahujasid/ableton-mcp |
287-
|---------|-------------|---------------------|
288-
| **Tool Count** | 220 tools | ~40 tools |
289-
| **Architecture** | Python Remote Script (native) | AbletonJS + Node.js bridge |
290-
| **Transport** | Direct TCP socket (port 9004) | HTTP/WebSocket via AbletonJS |
291-
| **Live 12 Features** | Take lanes, display values ✅ | Not specified |
292-
| **Thread Safety** | Queue-based (main thread execution) | AbletonJS handles threading |
293-
| **Deployment** | Single Python script | Node.js + AbletonJS dependencies |
294-
295-
**Different Design Philosophies:**
296-
- **This project**: Maximize API coverage (220 tools), native Python, no external dependencies
297-
- **ahujasid/ableton-mcp**: Minimal viable toolset (~40 tools), JavaScript ecosystem integration
298-
299-
Both are valid approaches for different use cases. This project prioritizes breadth of API coverage, while ahujasid/ableton-mcp prioritizes integration with JavaScript/Node.js workflows.
300-
301280
## Contributing
302281

303282
Contributions are welcome! Please feel free to submit a Pull Request.
@@ -316,7 +295,6 @@ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file
316295

317296
- Built with [Ableton Live's Python Remote Script API](https://docs.cycling74.com/max8/vignettes/live_api_overview)
318297
- Designed for use with [Model Context Protocol (MCP)](https://modelcontextprotocol.io/)
319-
- Inspired by [ahujasid/ableton-mcp](https://github.com/ahujasid/ableton-mcp)
320298
- Created by Claude Code
321299

322300
## Support

0 commit comments

Comments
 (0)