Skip to content

Conversation

@ldraney
Copy link

@ldraney ldraney commented Jan 18, 2026

Summary

Adds the ability to load devices onto tracks by name using the Live browser API. This enables programmatic device insertion, which was previously not possible via OSC.

Usage: /live/track/insert_device <track_index> <device_uri> [device_index]

Example: /live/track/insert_device 0 "Wavetable" -1

How It Works

The handler searches through:

  • browser.instruments
  • browser.audio_effects
  • browser.midi_effects
  • browser.drums
  • browser.sounds

For a matching device name (exact match first, then substring), then calls browser.load_item() to load it onto the specified track.

Returns

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

Use Cases

  • Automated music production workflows
  • AI-assisted composition tools
  • Scripted session setup
  • Remote control applications that need to add instruments/effects

Testing

Tested with Live 12 on macOS:

  • ✅ Loading instruments (Wavetable, Operator, Simpler)
  • ✅ Loading audio effects (Compressor, Reverb, EQ Eight)
  • ✅ Returns -1 for nonexistent devices
  • ✅ Works with device names containing spaces

🤖 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 18, 2026

CLA assistant check
All committers have signed the CLA.

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>
@ldraney ldraney force-pushed the feature/insert-device branch from e725b47 to 88b0847 Compare January 19, 2026 17:12
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