使用supercollider和python

Itz*_*984 12 python audio mp3 sound-synthesis supercollider

我想做一些实时的声音处理,我听说过supercollider

它看起来很棒,但我想坚持使用python,因为"普通"编程是个问题.

有没有办法将python脚本作为模块加载到supercollider或oposite?

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

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

cas*_*son 12

我不知道SuperCollider的python实现,但是使用OpenSoundControl在SC和Python之间进行通信非常容易.下面是一些示例代码,来自我在艺术中心为类编写的这些专题的教程,展示了如何将控制信息从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' );
)
Run Code Online (Sandbox Code Playgroud)


现在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)
Run Code Online (Sandbox Code Playgroud)


因此,您仍然需要在SC中编写一些代码(以生成音频类型,以及建立Python和SC之间的连接),但您可以在Python中执行其他所有操作.有关更深入的解释(以及使用SC的基本说明),请参阅教程页面的链接.