lucianoiam / live_rpyc Goto Github PK
View Code? Open in Web Editor NEWCreate Ableton Live control surfaces that run on an external Python interpreter
License: GNU General Public License v3.0
Create Ableton Live control surfaces that run on an external Python interpreter
License: GNU General Public License v3.0
First of all, I gotta say that this is awesome! I was thinking about it as well, as making something custom in Ableton with LiveOSC became a nightmare.
Seems like most of the functions work right out of the box, I can query what I need and command what I need as well. The only thing missing now is the callback to trigger actions via clips, but I cannot get it to work for some reason.
Here's code I'm running as test case:
if __name__ == '__main__':
Live = connect()
live_app = Live.Application.get_application()
song = live_app.get_document()
def clipTestTriggered():
print("huh ->clipTestTriggered ")
def clipTestTriggered2():
print("duh => clipTestTriggered")
def tempoCallback ():
print("temppooooo")
def volumeCallback():
print("yeah!")
bind(song.add_tempo_listener, song.remove_tempo_listener, tempoCallback)
bind(song.tracks[0].mixer_device.add_sends_listener, song.tracks[0].mixer_device.remove_sends_listener, volumeCallback)
bind(song.tracks[0].add_clip_slots_listener, song.tracks[0].remove_clip_slots_listener,
clipTestTriggered)
for track in song.tracks:
for clip in track.clip_slots:
bind(clip.add_playing_status_listener, clip.remove_playing_status_listener, clipTestTriggered2)
print('Connected to Ableton Live {}.{}.{}'.format(live_app.get_major_version(),
live_app.get_minor_version(), live_app.get_bugfix_version()))
print(song.tracks[0].mixer_device.sends_has_listener)
start_thread()
try:
input('Try playing/pausing Live or press Enter to exit\n')
except:
pass
disconnect()
So the code above spits out following:
Connected to Ableton Live 10.1.7
<bound method MixerDevice.sends_has_listener of <MixerDevice.MixerDevice object at 0x0000000025514D48>>
Try playing/pausing Live or press Enter to exit
temppooooo
temppooooo
This is what I get when I start this one, mess around in Ableton with clips, and finally, fiddle with tempo.
I'm not sure what is going on. Even if I try to add a listener to sends, it fails, even though it seems that it has a listener, according to that log. Do you have any idea what I might be doing wrong?
Cheers
Hey,
Anyone has an idea how these scripts can be updated to support Live 11?
What exactly in a code should be replaced, any possible roadmap?
Is there any tool that works on Live 11, not exactly live_rpyc? Maybe it's somehow similar to take ideas from them?
Thanks
Hey,
First of all thanks for bringing this tool up.
It works well by reading various information from Ableton, but finding it hard to change something. I know that Ableton API is not documented officially so that's the main issue.
Anyone found a way to activate a Rack or Device?
It's called "Device Activator" in GUI, but I have found that property is is_active
via API.
What I've got is this in client.py
:
print(str(song.tracks[0].devices[0]), str(song.tracks[0].devices[0].is_active))
it returns:
('<RackDevice.RackDevice object at 0x172c4b270>', 'False')
if I do
song.tracks[0].devices[0].is_active = True
it says
AttributeError: can't set attribute
I'm looking at https://structure-void.com/PythonLiveAPI_documentation/Live10.1.19.xml and searching by "Live.RackDevice.RackDevice" and seems nothing is offered.
It's even not clear how to to find information in docs or google, by which phrase: "activator", "active", "mute" or even something else.
Any hint would be appreciated
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.