Python bindings for Csound (fork of ctcsound)
These bindings can be used with any version of csound >= 6.18. Csound 7 is explicitely supported and is the recommended version.
Installation
Csound
Csound needs to be installed in the system. See https://github.com/csound/csound/releases
In Linux / macOS:
curl -fsSL https://csound-plugins.github.io/installer/install.sh | bash
This installs the latest version of csound 7.
libcsound
pip install libcsound
Quick Start
Rendering in real-time using a render thread
import libcsound csound = libcsound.Csound() csound.setOption('-odac') csound.compileOrc(r''' sr = 44100 ; Modify to fit your system ksmps = 64 nchnls = 2 0dbfs = 1 instr 1 kchan init -1 kchan = (kchan + metro:k(1)) % nchnls if changed:k(kchan) == 1 then println "Channel: %d", kchan + 1 endif asig = pinker() * 0.2 outch kchan + 1, asig endin ''') csound.start() thread = csound.performanceThread() thread.play() # Schedule an instance of instr 1 for 10 seconds thread.scoreEvent(0, "i", [1, 0, 10]) input("Press any key to stop...\n") thread.stop()
Render offline
import libcsound csound = libcsound.Csound() csound.setOption('-ooutfile.wav') csound.compileOrc(r''' sr = 44100 ksmps = 64 nchnls = 2 0dbfs = 1 instr 1 kchan init -1 kchan = (kchan + metro:k(1)) % nchnls if changed:k(kchan) == 1 then println "Channel: %d", kchan + 1 endif asig = pinker() * 0.2 outch kchan + 1, asig endin ''') csound.start() csound.scoreEvent("i", [1, 0, 10]) csound.setEndMarker(10) # Perform until the end of the score while not csound.performKsmps(): pass