ableton live的python远程控制
pylive的Python项目详细描述
幽门
Pylive是一个框架,用于从一个独立的Python脚本中查询和控制Ableton Live,通过开放的声音控制进行中介。它实际上是一个与实时控制表面范例的接口,这意味着它可以做任何硬件控制表面可以做的事情,包括:
- 查询和修改全局参数,如速度、音量、平移、量化、排列时间
- 查询和修改曲目、剪辑、场景和设备的属性
- 触发和停止剪辑和场景
它可以执行LiveOSC OSC API中描述的大多数操作。
要求
- Ableton Live 9+
- Python 2.6+
- LiveOSC (fork):MIDI控制脚本的维护分支,更新后可用于Live 9.6和10。必须安装在Live的
MIDI Remote Scripts
(请参见README) - liblo:使用
brew install liblo
安装
来自PYPI:
pip install pylive
通过Git:
git clone https://github.com/ideoforms/pylive.git
cd pylive
python setup.py install
要检查Pylive是否与Ableton Live成功通信,请尝试运行examples中的一个,或使用以下命令运行测试套件:
python setup.py test
用法
#------------------------------------------------------------------------# Basic example of pylive usage: scan a Live set, trigger a clip,# and modulate some device parameters.#------------------------------------------------------------------------importliveimportrandom#------------------------------------------------------------------------# Scan the set's contents and set its tempo to 110bpm.#------------------------------------------------------------------------set=live.Set()set.scan(scan_clip_names=True,scan_devices=True)set.tempo=110.0#------------------------------------------------------------------------# Each Set contains a list of Track objects.#------------------------------------------------------------------------track=set.tracks[0]print("Track name %s"%track.name)#------------------------------------------------------------------------# Each Track contains a list of Clip objects.#------------------------------------------------------------------------clip=track.clips[0]print("Clip name %s, length %d beats"%(clip.name,clip.length))clip.play()#------------------------------------------------------------------------# We can determine our internal timing based on Live's timeline using# Set.wait_for_next_beat(), and trigger clips accordingly.#------------------------------------------------------------------------set.wait_for_next_beat()clip.get_next_clip().play()#------------------------------------------------------------------------# Now let's modulate the parameters of a Device object.#------------------------------------------------------------------------device=track.devices[0]parameter=random.choice(device.parameters)parameter.value=random.uniform(parameter.minimum,parameter.maximum)
概述
要开始与Ableton实时集交互,典型的工作流如下所示。live通常应该在本地主机上运行,启用liveosc作为控制面。
- 创建一个
live.Set
对象。 - 调用
set.scan()
,它实时查询曲目、剪辑状态以及(可选)剪辑名称和设备的索引 - 通过设置和获取
Set
上的属性与Live交互:set.tempo
、set.time
、set.overdub
是全局集属性set.tracks
是跟踪对象的列表set.tracks[N].name
,set.tracks[N].mute
,是轨迹属性set.tracks[N].clips
是剪辑对象的列表(空槽包含None
)set.tracks[N].devices
是设备对象的列表set.tracks[N].devices[M].parameters
是参数对象的列表
getter和setter使用python的@property
习惯用法,这意味着访问set.tempo
将查询或更新您的活动集。
如果知道没有其他进程与live交互,请将set.caching = True
设置为缓存tempo等属性。这将在第一个实例上查询活动集,然后返回本地存储的值。
有关更多帮助,请参见pydoc live
。
课程
Set
:表示单个ableton活动集的整体。Track
:单个实时跟踪对象。包含Device
和Clip
对象。可能是Group
的成员。Group
:一个或多个Track
对象的分组集。Device
:位于Track
内的乐器或音频效果。包含许多Parameter
对象。Parameter
:具有固定范围和可变值的Device
的单个控制参数。
限制
请注意,Pylive不用于向集合发送MIDI便笺事件或控制消息。对于midi控件,请使用单独的模块,如mido。