2013-04-18 14 views
10

voglio fare un po 'elaborazione del suono in tempo reale e ho sentito parlare supercolliderUtilizzando SuperCollider con Python

e sembra grande, ma voglio restare a Python per quanto 'normale' di programmazione è il problema.

C'è un modo per caricare uno script Python come modulo per il supercollider o il oposite?

significa importare una libreria nel mio codice Python e utilizzare le funzionalità del supercollider?

Non ho trovato molte informazioni su di esso nel web, quindi qualsiasi aiuto sarà grande.

+1

Lei già conosce [SC 0.3.1] (https://pypi.python.org/pypi/SC/0.3 .1)? – halex

+1

Inoltre, googling per 'supercollider python' restituisce altri risultati interessanti. – Aya

+0

cercherà entrambi. Sto avendo un po 'di problemi a importare il pacchetto sc 0.3.1, im usando mac os 10.8. aggiornerà la domanda se verrà trovata una soluzione – Itzik984

risposta

12

Non sono a conoscenza dell'implementazione Python di SuperCollider, tuttavia è molto semplice comunicare tra SC e Python con OpenSoundControl. Ecco alcuni esempi di codice, da uno tutorial lungo queste linee che ho scritto per un corso presso Art Center, che mostra come inviare le informazioni di controllo da Python a SC (usato qui come motore audio). In primo luogo la parte 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'); 
) 


Ora la parte di 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) 


Quindi, si sarebbe ancora bisogno di scrivere del codice in SC (per generare il tipo di audio, nonché di stabilire la connessione tra Python e SC), ma potresti fare tutto il resto in Python. Vedi il link alla pagina del tutorial per una spiegazione significativamente più approfondita (oltre a una spiegazione di base su come lavorare con SC).

+1

Grazie mille per questo! e il tutorial! L'ho trovato, ma il tuo link deve essere aggiornato. =) –

+0

Sono contento che sia stato utile, grazie per aver sottolineato che il link era rotto! – caseyanderson

0

È inoltre possibile utilizzare Python-osc. (mi piace molto quello!) @caseyanderson ha ragione sul fatto che non ci sia un'implementazione python. si può afferrare con pip: pip install python-osc e l'importazione con import pythonosc o afferrare da qui: https://pypi.python.org/pypi/python-osc