Project thread: Building an ultra-portable performance set, and my experience with Remote Scripting in Live 10

Discuss music production with Ableton Live.
randi
Posts: 105
Joined: Thu Apr 03, 2014 4:03 am
Contact:

Re: Project thread: Building an ultra-portable performance set, and my experience with Remote Scripting in Live 10

Post by randi » Tue Mar 09, 2021 12:08 am

The Rabbits wrote:
Sat Feb 27, 2021 12:46 pm

Collapse and expand group tracks and move to the next and previous groups. Navigate through device chains with expansion of racks and moving through their chains. Enable and disable devices. Control all sends on tracks and mute/solo returns. Do all this in Arrangement view.......
Did you find out how to do collapsing and unfolding of group tracks? I couldn't find any reference in the LOM, but maybe was searching with the wrong terms.
I am currently also unable to access grouped device parameters :? :lol:

The Rabbits
Posts: 129
Joined: Tue Apr 07, 2020 2:23 pm

Re: Project thread: Building an ultra-portable performance set, and my experience with Remote Scripting in Live 10

Post by The Rabbits » Tue Mar 09, 2021 2:11 am

This is my code.

if track.is_foldable:
track.fold_state = not track.fold_state
else:
track.view.is_collapsed = not track.view.is_collapsed

fold_state refers to groups .is_foldable is true for Groups.
.is_collapsed refers to tracks that are collapsed in Arrangement view.

I combined the two because it means one less pad used and the two are never both true.

I'm pretty sure I didn't have to do anything different to get devices for group tracks, but I'm in the middle of rearranging my code and it's not quite behaving right now. I'll try and get back to you in the next day or so.

The Rabbits
Posts: 129
Joined: Tue Apr 07, 2020 2:23 pm

Re: Project thread: Building an ultra-portable performance set, and my experience with Remote Scripting in Live 10

Post by The Rabbits » Tue Mar 09, 2021 2:18 am

Do you mean devices on group tracks or devices in racks?

If it's racks, this might help. I call this to build a list so I can traverse the entire device list in a sensible order. I spent some time trying to do it without building a list but it gets messy with racks.

Code: Select all

def get_device_list(self, container):
		# add each device in order. if device is a rack, process each chain recursively
		# don't add racks that are not showing devices.
		lst = []
		for dev in container:
			lst.append(dev)
			if dev.can_have_chains:  # is a rack and it's open
				if dev.view.is_showing_chain_devices:
					for ch in dev.chains:
						lst += self.get_device_list(ch.devices)
		return lst
		


Called this way.
device_list = self.get_device_list(current_track.devices)

randi
Posts: 105
Joined: Thu Apr 03, 2014 4:03 am
Contact:

Re: Project thread: Building an ultra-portable performance set, and my experience with Remote Scripting in Live 10

Post by randi » Tue Mar 09, 2021 9:44 pm

Thank you very much!
As I am a pretty new to dev and python and remote scripting, plus the Mackie C4 script is very messy and doesn't use the frameworks at all, yet, I will need to find a way to a) incorporate your code and b) make a button in one of the 4 modes. I think in channel strip mode would make the most sense.
And I meant both :-) So thank you twice!

randi
Posts: 105
Joined: Thu Apr 03, 2014 4:03 am
Contact:

Re: Project thread: Building an ultra-portable performance set, and my experience with Remote Scripting in Live 10

Post by randi » Thu Apr 08, 2021 8:31 pm

I got it working :-) But tweaked it a bit, to also fold when a track WITHIN a group is selected.

Code: Select all

# group track fold toggle, also groups from within
                if encoder_index == encoder_04_index:
                    track_util.toggle_fold(self.selected_track)
and

Code: Select all

def toggle_fold(track):
    if is_group_track(track):
        track.fold_state = not track.fold_state
        return True
    elif is_grouped(track):
        toggle_fold(track.group_track)
    return False
Thanks very much! :D

subparuser
Posts: 46
Joined: Thu Jan 09, 2020 1:18 pm

Re: Project thread: Building an ultra-portable performance set, and my experience with Remote Scripting in Live 10

Post by subparuser » Sun Apr 11, 2021 12:27 am

Fantastic idea for a thread - this is bloody great!

I'd love to see the Mackie scripts get some love, and I don't know if I'm up to doing it, but if I ever were to give it a go then hopefully this is the place to come for a breadcrumb trail.

Really hoping to see updates and developments here, especially from the point of view of someone starting out - total ELI5 stylee. Because I can be thick as pigsh*t when it comes to this stuff so XXX* instructions are a godsend.

*Extremely Explicit, Eh!


skotterz
Posts: 6
Joined: Sun Nov 03, 2013 12:34 am

Re: Project thread: Building an ultra-portable performance set, and my experience with Remote Scripting in Live 10

Post by skotterz » Sat Aug 14, 2021 10:49 pm

lots to read here. treasure trove of info, thanks folks, but before i read every word, does this work with L11?

randi
Posts: 105
Joined: Thu Apr 03, 2014 4:03 am
Contact:

Re: Project thread: Building an ultra-portable performance set, and my experience with Remote Scripting in Live 10

Post by randi » Sat Aug 14, 2021 11:34 pm

My / Our Mackie C4 script does work with Live 10 and 11. I use it on a daily basis.
https://github.com/markusschloesser/MackieC4_P3
But your question might have been towards the thread starter?

jbone1313
Posts: 578
Joined: Wed Dec 12, 2007 2:44 am

Re: Project thread: Building an ultra-portable performance set, and my experience with Remote Scripting in Live 10

Post by jbone1313 » Sat Aug 14, 2021 11:51 pm

Mine works perfectly in Live 11. It's amazing having this control over Live without having to rely on third parties.

From what I can tell, in my completely unofficial opinion, user remote scripts are supported by Live. They added a default folder specifically for those scripts. And, I sometimes see things in the release notes where they have added capabilities in the API.

But, my understanding is Ableton - support - will not support our user remote scripts, for good and probably obvious reasons.

It's all good. I am grateful that Ableton allows this.

randi
Posts: 105
Joined: Thu Apr 03, 2014 4:03 am
Contact:

Re: Project thread: Building an ultra-portable performance set, and my experience with Remote Scripting in Live 10

Post by randi » Sun Dec 25, 2022 5:01 pm

The Rabbits wrote:
Tue Mar 09, 2021 2:18 am
Do you mean devices on group tracks or devices in racks?

If it's racks, this might help. I call this to build a list so I can traverse the entire device list in a sensible order. I spent some time trying to do it without building a list but it gets messy with racks.

Code: Select all

def get_device_list(self, container):
		# add each device in order. if device is a rack, process each chain recursively
		# don't add racks that are not showing devices.
		lst = []
		for dev in container:
			lst.append(dev)
			if dev.can_have_chains:  # is a rack and it's open
				if dev.view.is_showing_chain_devices:
					for ch in dev.chains:
						lst += self.get_device_list(ch.devices)
		return lst
		


Called this way.
device_list = self.get_device_list(current_track.devices)
Hi,
finally trying to implement accessing rack/grouped devices in the Mackie C4 script but running into issues. Is your code available somewhere to take a look at?
I first tried with your above code, then switched over to using the code from v2 device_chain_utils.py and from track_selection.py (get_racks_recursive). Keep running into attribute errors with "'Vector' object has no attribute 'devices' "
Thanks!

lee__yosh
Posts: 3
Joined: Wed Oct 04, 2023 8:13 am

Re: Project thread: Building an ultra-portable performance set, and my experience with Remote Scripting in Live 10

Post by lee__yosh » Wed Oct 04, 2023 11:29 pm

Hello, I’m new to the forum, but not new to using Ableton, and I’ve already been studying the question of midi remote scripts since Ableton version 9. I seriously couldn’t get close to programming, but several times I managed to glue several scripts into one and by editing them I succeeded assemble a ready-made working script for Behringer CMD LC-1 and X-TOUCH MINI controllers (I can share these scripts for versions 9 and 10 if interested). Now I’ve managed to cheaply purchase a high-quality vintage faderfox FT3 controller, for which I want to adapt some of the scripts available on the network since I don’t yet know how to create my own from scratch, and there’s no financial opportunity to buy a remotify.io license since there’s a war going on in my country :-(


Most of what I found on the net for Ableton 11, the script for Block11 suited me in terms of functionality, but there is one problem - all the Encoders on my faderfox FT3, except for the one assigned to regulate the tempo, do not want to work correctly with this script. It looks like the question is in "map mode" which is written there only to regulate the tempo in the file SpecialTransportComponent.py (line 134), Image and for the rest "sends" "volums" "device parameters" ... MapMode seems to be defined as "Absolute" and I don't know how to change it to "TwoCompliment"
https://github.com/leonardreidy/Block11 ... in/Block11

Please help me edit the script. I need to change "map mode" to "Live.MidiMap.MapMode.relative_two_compliment"

Post Reply