2013-04-18 196 views
10

使用supercollider我想要做一些实时声音处理,我听说supercollider与蟒蛇

它看上去很不错,但我想坚持,只要“正常”的编程问题蟒蛇。

有什么办法加载python脚本作为模块supercollider或oposite?

这意味着将库导入到我的python代码并使用supercollider功能?

我没有在网上找到关于它的很多信息,所以任何帮助都会很棒。

+1

你已经知道[SC 0.3.1](https://pypi.python.org/pypi/SC/0.3 0.1)? – halex

+1

另外,使用'python supercollider'搜索一些其他有趣的结果。 – Aya

+0

将看起来两个。即时通讯有点麻烦导入sc 0.3.1包,即时通讯使用mac os 10.8。将更新问题,如果解决方案会遇到 – Itzik984

回答

12

我不知道SuperCollider的python实现,但是它很容易在SC和Python之间通过OpenSoundControl进行通信。下面是一些示例代码,来自tutorial,这些代码是我为Art Center的一个班级撰写的,介绍了如何将控制信息从Python发送到SC(在此用作音频引擎)。首先,SC部分:

s.boot; 

(
SynthDef(\sin, { | amp = 0.01, freq = 333, trig = 1 | 
    var env, sig; 
    env = EnvGen.kr(Env.asr(0.001, 0.9, 0.001), trig, doneAction: 0); 
    sig = LFTri.ar([ freq, freq * 0.999 ], 0.0, amp) * env; 
    Out.ar([ 0 ], sig * 0.6); 
}).add; 

h = Synth(\sin, [ \amp, 0.4 ]); 

x = OSCFunc({ | msg, time, addr, port | 
    var pyFreq; 

    pyFreq = msg[1].asFloat; 
    ("freq is " + pyFreq).postln; 
    h.set(\freq, pyFreq); 
}, '/print'); 
) 


现在的Python部分:

import OSC 
import time, random 
client = OSC.OSCClient() 
client.connect(('127.0.0.1', 57120)) 
msg = OSC.OSCMessage() 
msg.setAddress("/print") 
msg.append(500) 
client.send(msg) 


所以,你仍然需要写在SC(一些代码来生成声音的类型,以及对建立Python和SC之间的连接),但是你可以在Python中完成所有其他的工作。请参阅教程页面的链接以获得更深入的解释(以及使用SC的基本解释)。

+1

非常感谢!和教程!我发现它,但你的链接需要更新。 =) –

+0

很高兴它是有益的,谢谢你指出链接被破坏! – caseyanderson

0

你也可以使用Python-osc。 (我真的很喜欢那个!)@caseyanderson是正确的没有一个python实现。 你可以用PIP抓住它: pip install python-osc和进口与import pythonosc 或从这里抓取:https://pypi.python.org/pypi/python-osc