feat: Add Browser API support#192
Open
Dandiggas wants to merge 2 commits intoideoforms:masterfrom
Open
Conversation
Adds browser.py handler exposing Live's Browser API via OSC: New endpoints: - /live/browser/get/user_folders - List user folders in Places - /live/browser/get/samples - List samples root items - /live/browser/list [path] - List items at a browser path - /live/browser/load [path] - Load item to current selection - /live/browser/preview [path] - Preview audio file - /live/browser/stop_preview - Stop preview - /live/browser/load_to_slot [path, track, slot] - Load to specific Session clip slot - /live/browser/load_to_arrangement [path, track, beat] - Load to Arrangement view Also adds view control endpoints in application.py: - /live/application/get/focused_document_view - /live/application/focus_view [view_name] - /live/application/show_view [view_name] Closes #XX (Add browser API request)
a9cf520 to
c12e024
Compare
bimsonz
added a commit
to bimsonz/AbletonOSC
that referenced
this pull request
Apr 5, 2026
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds a new
browser.pyhandler that exposes Live's Browser API via OSC, enabling programmatic loading of audio files and samples.New Endpoints
Browser Navigation
/live/browser/get/user_folders/live/browser/get/samples/live/browser/list [path]Loading Files
/live/browser/load [path]/live/browser/load_to_slot [path, track, slot]/live/browser/load_to_arrangement [path, track, beat]Preview
/live/browser/preview [path]/live/browser/stop_previewView Control (in application.py)
/live/application/get/focused_document_view/live/application/focus_view [name]/live/application/show_view [name]Usage Example
Implementation Notes
Browser.load_item()APIload_to_slotsetshighlighted_clip_slotto target Session viewload_to_arrangementswitches to Arranger view and sets song positionDownloads/Audio Files/kick.wav)Related
Addresses the browser API request in recent issues.
Testing
Tested with Ableton Live 12 on macOS.