Use Live API

1.29K viewsCSS QuestionsLive API
1

Hi remotify,

I wonder if it is possible to use the full Live API within Remotify, or can we only use a subsection of it (maybe we can only use what has been added so fare)?

I found this

https://nsuspray.github.io/Live_API_Doc/11.0.0.xml#Live-Browser

I’m trying to list my User folders from Lives browser with this code

myUser_folders = self.application().browser.user_folders
my_sub_item_1 = myUser_folders.children[0]

But I’m getting this error message

> ‘BrowserItemVector’ object has no attribute ‘children’

I’m not sure if the syntax is correct or if something else is preventing it from working.

Joachim Answered question
0

If it’s available in the Live Object Model, you can use it even if its not listed in a Reaction menu.
It sounds like adding .children[0] is not the correct syntax.

JohnC Answered question
0

Hi JohnC,

Thanks for getting back to me!

So I have this code in a reaction, and it works (It lists all my User Folders in Ableton, and its contents).

self.user_folders = self.application().browser.user_folders

for folder_index, user_folder in enumerate(self.user_folders):
self.log_message(“user_folder [index:” + str(folder_index) + “] [name:” + user_folder.name + “]”)

for index, browser_item in enumerate(user_folder.children):
self.log_message(“browser_item [index:” + str(index) + “][name:” + browser_item.name + “][is_folder:” + str(browser_item.is_folder) + “][is_loadable:” + str(browser_item.is_loadable) + “][is_selected:” + str(browser_item.is_selected) + “]”)

This is a section of the generated output in the log (Folder and file names in bold)

2025-05-31T17:56:52.275757: info: Python: INFO:_Framework.ControlSurface:275 – LOG: (css_remove_neon) user_folder [index:0] [name:LiveDJ]
2025-05-31T17:56:52.275831: info: RemoteScriptMessage: (css_remove_neon) user_folder [index:0] [name:LiveDJ]
2025-05-31T17:56:52.395226: info: Python: INFO:_Framework.ControlSurface:395 – LOG: (css_remove_neon) browser_item [index:5][name:8B_126_Donna Summer – I Feel Love_PN.als][is_folder:False][is_loadable:True][is_selected:False]
2025-05-31T17:56:52.395250: info: RemoteScriptMessage: (css_remove_neon) browser_item [index:5][name:8B_126_Donna Summer – I Feel Love_PN.als][is_folder:False][is_loadable:True][is_selected:False]

Now that I have folder and file names I would like to be able to load the Clip Pack e.g “8B_126_Donna Summer – I Feel Love_PN.als” into Session View and I have found this API

load_item() #Method
load_item( (Browser)arg1, (BrowserItem)arg2) → None
Loads the provided browser item.

Location of Live API
https://nsuspray.github.io/Live_API_Doc/11.0.0.xml#Live-Browser

As I’m not sure how to apply this API (I have tried and failed to construct) I wonder if you have some insight or some suggestions how to use the API I would appreciate it!

Joachim

Joachim Edited answer
1

I had some help here…

Unfortunately it would appear that one can’t load Clip Packs (.als) this way, but it works for devices, clip_slots, samples, .wav file etc.

I have User Folders (added in Ableton) ‘LiveDJ’, ‘Songs’ etc. where I have some .wav files.

So if the code example from previous post is use, it generates something like this in the log (I have removed a lot of log text and cleaned it up a bit).

LOG: (Reloop) user_folder [index:0] [name:LiveDJ]
info: RemoteScriptMessage: (Reloop) user_folder [index:0] [name:LiveDJ]

<Content of folder ‘LiveDJ’ with index:0>

LOG: (Reloop) user_folder [index:1] [name:Songs]
info: RemoteScriptMessage: (Reloop) user_folder [index:1] [name:Songs]

LOG: (Reloop) browser_item [index:0][name:Diana Ross – I’m Coming Out.wav][is_folder:False] [is_loadable:True][is_selected:False]
info: RemoteScriptMessage: (Reloop) browser_item [index:0][name:Diana Ross – I’m Coming Out.wav] [is_folder:False][is_loadable:True][is_selected:False]

LOG: (Reloop) browser_item [index:1][name:Kygo – Higher Love.wav][is_folder:False][is_loadable:True][is_selected:False]
info: RemoteScriptMessage: (Reloop) browser_item [index:1][name:Kygo – Higher Love.wav][is_folder:False][is_loadable:True][is_selected:False]

This is the API to use ‘self.application().browser.load_item(browser_item)’

So to load ‘Diana Ross – I’m Coming Out.wav’ from folder ‘Songs’ use this code (e.g. placed in a Remotify Reaction)

# Where in Ableton’s browser is the file locate
my_sample = self.application().browser.user_folders[1].children[0]

# Where to place it, track 1 clip slot 3
self.song().view.highlighted_clip_slot = self.song().tracks[0].clip_slots[2]

# Load the .wav file into selected slot
self.application().browser.load_item(my_sample)

Edit. Noticed that I forgot the last line of code (the one that actually copies the .wav file into the selected clip slot)

Edit 2. Added export of 2 pads Reactions in order to make it easier to try to replicate this.

PS
It would be nice if Remotify could get some kind of wiki where users could upload examples and write short descriptions etc.

Joachim Edited answer

Awesome mate, thanks alot for sharing your findings on this!

0

I tried to edit my previous post and add an Remotify export but it would not take so I’ll try with a new post.

Joachim Answered question