超级准直器的python api

supriya的Python项目详细描述


SupriyaSuperColliderPython接口。

Supriya允许您:

  • 启动并与SuperColliderscsynth合成服务器通信
  • 用本机python代码构造并编译SynthDefunit generator图
  • 生成和控制合成器和合成器组的图形
  • 对象模型scysnthosc通过RequestResponse
  • 通过Supriya's编辑非实时合成分数 nonrealtimetools.Session

注意

该项目仍在heavy开发中,尚未 稳定,并且尚未准备在现场部署。

josiah.oberholtzer@gmail.com发送称赞或投诉,或注册 在https://github.com/josiah-wolf-oberholtzer/supriya/issues的问题。

Supriya只与Python3.3+兼容。

graph.png

GitHub| PyPI| Documentation| Issue Tracker| Mailing list

快速启动

一。获得supriya和supercallider

GitHub

~$ git clone https://github.com/josiah-wolf-oberholtzer/supriya.git
~$ cd supriya
supriya$ sudo pip install -e .

http://supercollider.github.io/获取SuperCollider

运行测试以确保一切正常:

supriya$ tox

有关获取abjad的详细帮助,请参阅我们的安装说明, 设置它,并安装任何其他依赖项,如Graphviz

2.发出一些噪音

启动python解释器并导入supriya:

>>> from supriya import *

启动超级准直器服务器:

>>> server = servertools.Server()
>>> server.boot()
<Server: udp://127.0.0.1:57751, 8i8o>

创建和分配组:

>>> group = servertools.Group().allocate()

制作合成器定义并发送到服务器:

>>> builder = synthdeftools.SynthDefBuilder(
...     amplitude=1.0,
...     frequency=440.0,
...     gate=1.0,
...     )
>>> with builder:
...     source = ugentools.SinOsc.ar(
...         frequency=builder['frequency'],
...         )
...     envelope = ugentools.EnvGen.kr(
...         done_action=synthdeftools.DoneAction.FREE_SYNTH,
...         envelope=synthdeftools.Envelope.asr(),
...         gate=builder['gate'],
...         )
...     source = source * builder['amplitude']
...     source = source * envelope
...     out = ugentools.Out.ar(
...         bus=(0, 1),
...         source=source,
...         )
...
>>> synthdef = builder.build().allocate()

与服务器同步:

>>> server.sync()
<Server: udp://127.0.0.1:57751, 8i8o>

使用先前定义的合成器定义创建合成器:

>>> synth = servertools.Synth(synthdef)
>>> synth
<Synth: ???>

将其作为先前创建的组的子组分配到服务器上:

>>> group.append(synth)
>>> synth
<Synth: 1001>

查询服务器的节点树:

>>> response = server.query_remote_nodes(include_controls=True)
>>> print(response)
NODE TREE 0 group
    1 group
        1000 group
            1001 f1c3ea5063065be20688f82b415c1108
                amplitude: 0.0, frequency: 440.0

将MIDI控制器绑定到Synth的控件:

>>> korg = miditools.NanoKontrol2()
>>> korg.open_port(0)
>>> source = korg.fader_1
>>> target = synth.controls['frequency']
>>> bind(source, target, range_=Range(110, 880), exponent=2.0)
Binding()

释放合成器:

>>> synth.release()

退出服务器:

>>> server.quit()
<Server: offline>

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

推荐PyPI第三方库


热门话题
java如何使用JNA创建同一库的多个实例?   java在将Graphql查询作为JSON字符串传递时收到意外的令牌错误   OAuth2 oltu的java问题   java桌面应用程序使用的好的嵌入式数据库是什么?   java Firebase数据库高级查询选项   java正在使磁盘上的EhCache元素过期   java 安卓还原处于backstack中的片段的实例状态   XMemcached中的java异步集   java TimescaleDB是否使用与Postgresql完全相同的JDBC驱动程序?   java从网站c读取信息#   检查java Android中的字符串是否只包含数字和空格   c#如何向web服务发送特殊字符?   grails无法调用需要java的方法。lang.类参数?   java我在组合框中调用的方法不会运行所有代码,它只运行部分代码   java发送带有标头的HTTP GET请求