7 Commits

Author SHA1 Message Date
valknar b7cec9d24b Rename package directory AbletonOSC/ -> ableton_osc/
Python package naming convention uses snake_case. Update the import in
the root __init__.py and the setuptools include pattern in pyproject.toml.
Internal relative imports within the package are unaffected.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-01 13:46:34 +02:00
valknar c0fa9cb0e6 Add /live/browser/list_children OSC endpoint
Allows clients to explore the browser tree by category and path,
returning the names of child nodes at the given location.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-01 13:33:58 +02:00
valknar 6fc0a84dfe Fix song/application access: property not method call
ControlSurface exposes song and application as properties, not callable
methods. Replace manager.song() and manager.application() with the correct
attribute access throughout handler, application, browser, and view modules.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-01 13:27:55 +02:00
valknar ac6a049516 Fix Ableton Live detection: add root __init__.py and harden Manager init
Live scans the Remote Scripts folder for __init__.py with create_instance()
at the *root* of the script folder. Our create_instance was buried inside
the AbletonOSC/ subpackage, so Live never found it.

Also:
- Inner AbletonOSC/__init__.py: guard import with try/except for pytest compat
- Manager: use show_message() (Live status bar) instead of log_message()
- Manager: wrap OSCServer.start() in try/except OSError so a port conflict
  surfaces as a readable status message instead of a silent crash
- Manager: run handler init inside component_guard() as required by the
  Ableton ControlSurface framework
- Manager stub: add show_message, schedule_message, component_guard no-ops
  so out-of-Ableton tooling/tests don't break

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-01 12:46:42 +02:00
valknar caaa055c8a Fix build backend to use setuptools.build_meta
setuptools.backends.legacy is not available in older pip environments;
switch to the standard setuptools.build_meta and add wheel to requires.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-01 12:38:10 +02:00
valknar 08e4b9e8bd Add comprehensive README with full OSC API reference
Documents every endpoint across all 13 handlers: song, track,
return_track, clip, clip_slot, device (incl. rack chains, drum pads,
sub-device params), scene, view, application, browser, groove.
Includes protocol reference, indexing rules, listener pattern,
installation steps, network config, and architecture overview.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-01 12:31:41 +02:00
valknar aad042650e Initial implementation: full Ableton Live 11 OSC remote script
Covers all major Live API objects with get/set/listen/method handlers:
song, track, return_track, clip, clip_slot, device (incl. rack chains
and drum pads), scene, view, application, browser, groove.

Zero external runtime dependencies — OSC encoded/decoded in osc_server.py.
Wildcard * support for track/scene indices. Listener callbacks fire to
matching /get/ addresses for bidirectional state sync.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-01 12:27:47 +02:00