ableton live的python远程控制

pylive的Python项目详细描述


幽门

Pylive是一个框架,用于从一个独立的Python脚本中查询和控制Ableton Live,通过开放的声音控制进行中介。它实际上是一个与实时控制表面范例的接口,这意味着它可以做任何硬件控制表面可以做的事情,包括:

  • 查询和修改全局参数,如速度、音量、平移、量化、排列时间
  • 查询和修改曲目、剪辑、场景和设备的属性
  • 触发和停止剪辑和场景

它可以执行LiveOSC OSC API中描述的大多数操作。

要求

安装

来自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.temposet.timeset.overdub是全局集属性
    • set.tracks是跟踪对象的列表
    • set.tracks[N].nameset.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:单个实时跟踪对象。包含DeviceClip对象。可能是Group的成员。
  • Group:一个或多个Track对象的分组集。
  • Device:位于Track内的乐器或音频效果。包含许多Parameter对象。
  • Parameter:具有固定范围和可变值的Device的单个控制参数。

限制

请注意,Pylive不用于向集合发送MIDI便笺事件或控制消息。对于midi控件,请使用单独的模块,如mido

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
面向批处理的java非阻塞队列   java如何基于HttpComponent获取html内容   java为什么我的程序会显示此错误?   java spring控制器如何处理应用程序/octetstream请求?   尝试将数据插入数据库时出现java常规错误   无法在java多线程处理中维护生产者任务的顺序   java为什么JSON数据无法访问ViewPager?   java获取Maven中特定分支的SVN buildnumber   java客户端无法从服务器接收信息   java等轴测地图绘制,生成   java无法调试ProcessBuilder   java热点JVM阵列分配   在数组中存储“inputdialog”数据的java   saml Java Inflater引发DataFormatException“无效代码长度集”   从集合(爬虫、Jsoup、Java)写入文件