超级准直器的python api
supriya的Python项目详细描述
Supriya是SuperCollider的Python接口。
Supriya允许您:
- 启动并与SuperCollider的scsynth合成服务器通信
- 用本机python代码构造并编译SynthDefunit generator图
- 生成和控制合成器和合成器组的图形
- 对象模型scysnthosc通过Request和 Response类
- 通过Supriya's编辑非实时合成分数 nonrealtimetools.Session类
注意
该项目仍在heavy开发中,尚未 稳定,并且尚未准备在现场部署。
向josiah.oberholtzer@gmail.com发送称赞或投诉,或注册 在https://github.com/josiah-wolf-oberholtzer/supriya/issues的问题。
Supriya只与Python3.3+兼容。
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>