Skip to content

Conversation

@ldraney
Copy link

@ldraney ldraney commented Jan 19, 2026

Summary

  • Adds is_recording to the ClipSlot handler's properties_r list
  • This property was already exposed for Clip but missing from ClipSlot

Motivation

The is_recording property is part of Ableton's Live Object Model for ClipSlot but wasn't exposed via OSC. This caused timeouts when clients attempted to query /live/clip_slot/get/is_recording.

Changes

  • abletonosc/clip_slot.py: Added "is_recording" to properties_r list

Testing

Tested with abletonosc-client library - the endpoint now returns the expected boolean value.

🤖 Generated with Claude Code

Changed imports in abletonosc/osc_server.py:
- FROM: `from ..pythonosc` (relative - fails with "beyond top-level package")
- TO: `from AbletonOSC.pythonosc` (full package path - works)

Note: `from pythonosc` alone doesn't work because the module isn't
on Python's path directly - it needs the full package prefix.

Related to upstream issue ideoforms#121

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@CLAassistant
Copy link

CLAassistant commented Jan 19, 2026

CLA assistant check
All committers have signed the CLA.

ldraney and others added 3 commits January 19, 2026 10:11
Adds the ability to load devices onto tracks by name using the Live browser API.

Usage: /live/track/insert_device <track_index> <device_uri> [device_index]
Example: /live/track/insert_device 0 "Wavetable" -1

The handler searches through browser.instruments, browser.audio_effects,
browser.midi_effects, browser.drums, and browser.sounds for a matching
device name and loads it onto the specified track.

Returns:
- (device_index,) on success - the index of the newly added device
- (-1,) if device not found

This enables programmatic device insertion, which was previously not
possible via OSC. Useful for automated music production workflows
and AI-assisted composition tools.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Exposes the is_recording property for ClipSlot, which was missing
from the read-only properties list. This aligns with the Clip handler
which already exposes is_recording.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
In Live 12, browser.packs is a BrowserItem, not an iterable.
Changed all 'for pack in browser.packs:' to 'for pack in browser.packs.iter_children:'
to fix TypeError: 'BrowserItem' object is not iterable.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants