2013-04-18 256 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