Skip to content

Add comprehensive browser API with 25 endpoints#194

Open
bimsonz wants to merge 1 commit intoideoforms:masterfrom
bimsonz:feat/browser-api
Open

Add comprehensive browser API with 25 endpoints#194
bimsonz wants to merge 1 commit intoideoforms:masterfrom
bimsonz:feat/browser-api

Conversation

@bimsonz
Copy link
Copy Markdown

@bimsonz bimsonz commented Apr 6, 2026

Summary

Adds a BrowserHandler with full browser integration for programmatic control of Ableton's content browser. This combines and improves on ideas from #183, #192, and #191 which have stalled.

25 endpoints across 5 categories:

Category Count Endpoints
Load by name 10 load_instrument, load_drum_kit, load_audio_effect, load_midi_effect, load_effect, load_sound, load_sample, load_plugin, load_max_device, load_user_preset
Load by target 2 load_to_slot (session view), load_to_arrangement (arrangement view)
Discovery 8 get/categories, get/children, search, list_audio_effects, list_midi_effects, list_sounds, list_plugins, list_user_presets
Preview 2 preview, stop_preview
Utility 3 refresh, hotswap_start, hotswap_load

Key design decisions

Related issues

Closes #183, closes #192, closes #191

Testing

Tested against Ableton Live 12 on macOS. All 25 endpoints verified working via OSC UDP.

Adds BrowserHandler with full browser integration for programmatic
control of Ableton's content browser. Combines and improves on ideas
from ideoforms#183, ideoforms#192, and ideoforms#191.

Endpoints (25):
- Load by name (10): load_instrument, load_drum_kit, load_audio_effect,
  load_midi_effect, load_effect, load_sound, load_sample, load_plugin,
  load_max_device, load_user_preset
- Load by target (2): load_to_slot (session view via highlighted_clip_slot),
  load_to_arrangement (arrangement view, best-effort positioning)
- Discovery (8): get/categories, get/children, search,
  list_audio_effects, list_midi_effects, list_sounds, list_plugins,
  list_user_presets
- Preview (2): preview, stop_preview
- Utility (3): refresh (cache invalidation), hotswap_start, hotswap_load

Key design decisions:
- Explicit track_index on all load endpoints for reliable programmatic use
- Tiered name matching: exact > case-insensitive > extension-stripped > substring
- Depth-limited recursive search (max_depth=4) for safety on large libraries
- Session view loading via highlighted_clip_slot for precise slot targeting
- Browser cache invalidation via filter_type toggle for detecting new content
- Common _load_from_categories helper to DRY up load-by-name pattern

Closes ideoforms#183, closes ideoforms#192, closes ideoforms#191
@CLAassistant
Copy link
Copy Markdown

CLAassistant commented Apr 6, 2026

CLA assistant check
All committers have signed the CLA.

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