Python Scripting

You can use CsoundVST as a Python extension module. In fact, you can do this either in a standard Python interpreter, such as Python command line or the Idle Python GUI, or in CsoundVST itself in Python mode.

To use CsoundVST in a standard Python interpreter, import CsoundVST.

	  import CsoundVST
	

The CsoundVST module automatically creates an instance of CppSound named csound, which provides an object-oriented interface to the Csound API. In a standard Python interpreter, you can load a Csound .csd file and perform it like this:

	  C:\Documents and Settings\mkg>python
	  Python 2.3.3 (#51, Dec 18 2003, 20:22:39) [MSC v.1200 32 bit (Intel)] on win32
	  Type "help", "copyright", "credits" or "license" for more information.
	  >>> import CsoundVST
	  >>> csound.load("c:/projects/csound5/examples/trapped.csd")
	  1
	  >>> csound.exportForPerformance()
	  1
	  >>> csound.perform()
	  BEGAN CppSound::perform(5, 988ee0)...
	  BEGAN CppSound::compile(5, 988ee0)...
	  Using default language
	  0dBFS level = 32767.0
	  Csound version 5.00 beta (float samples) Jun  7 2004
	  libsndfile-1.0.10pre6
	  orchname:  temp.orc
	  scorename: temp.sco
	  orch compiler:
	  398 lines read
	  instr   1
	  instr   2
	  instr   3
	  instr   4
	  instr   5
	  instr   6
	  instr   7
	  instr   8
	  instr   9
	  instr   10
	  instr   11
	  instr   12
	  instr   13
	  instr   98
	  instr   99
	  sorting score ...
	  ... done
	  Csound version 5.00 beta (float samples) Jun  6 2004
	  displays suppressed
	  0dBFS level = 32767.0
	  orch now loaded
	  audio buffered in 16384 sample-frame blocks
	  SFDIR undefined.  using current directory
	  writing 131072-byte blks of shorts to test.wav
	  WAV
	  SECTION 1:
	  ENDED CppSound::compile.
	  ftable 1:
	  ftable 2:
	  ftable 3:
	  ftable 4:
	  ftable 5:
	  ftable 6:
	  ftable 7:
	  ftable 8:
	  ftable 9:
	  ftable 10:
	  ftable 11:
	  ftable 12:
	  ftable 13:
	  ftable 14:
	  ftable 15:
	  ftable 16:
	  ftable 17:
	  ftable 18:
	  ftable 19:
	  ftable 20:
	  ftable 21:
	  ftable 22:
	  new alloc for instr 1:
	  B  0.000 ..  1.000 T  1.000 TT  1.000 M:     32.7      0.0
	  new alloc for instr 1:
	  B  1.000 ..  3.600 T  3.600 TT  3.600 M:    207.6      0.1

	  ...

	  B 93.940 .. 94.418 T 98.799 TT281.799 M:    477.6     85.0
	  B 94.418 ..100.000 T107.172 TT290.172 M:    118.9     11.5
	  end of section 4         sect peak amps:  25950.8  26877.4
	  inactive allocs returned to freespace
	  end of score.              overall amps:  32204.8  31469.6
	  overall samples out of range:        0        0
	  0 errors in performance
	  782 131072-byte soundblks of shorts written to test.wav WAV
	  Elapsed time = 13.469000 seconds.
	  ENDED CppSound::perform.
	  1
	  >>>
	

To use CsoundVST itself as your Python interpreter, click on the CsoundVST Settings tab, and select the Python check box in the Csound performance mode box. Do not create a new CppSound object; you must use the builtin csound object in the CsoundVST module.

The koch.py script shows how to use Python to do algorithmic composition for Csound. You can use Python triple-quoted string literals to hold your Csound files right in your script, and assign them to Csound:

	  csound.setOrchestra('''sr = 44100
	  kr = 441
	  ksmps = 100
	  nchnls = 2
	  0dbfs = .1
	  instr 1,2,3,4,5 ; FluidSynth General MID
	  I; INITIALIZATION
	  ; Channel, bank, and program determine the preset, that is, the actual sound.
	  ichannel		=			p1
	  iprogram		=			p6
	  ikey	 		= 			p4
	  ivelocity 		= 			p5 + 12
	  ijunk6 			= 			p6
	  ijunk7			=			p7
	  ; AUDIO
	  istatus			=			144;
	  print			iprogram, istatus, ichannel, ikey, ivelocityaleft, aright
	  fluid			"c:/projects/csound5/samples/VintageDreamsWaves-v2.sf2", \\
	  iprogram, istatus, ichannel, ikey, ivelocity, 1
	  outs 			aleft, arightendin''')
	  csound.setCommand("csound --opcode-lib=c:/projects/csound5/fluid.dll \\
	  -RWdfo ./koch.wav ./temp.orc ./temp.sco")
	  csound.exportForPerformance()
	  csound.perform()
	

To run your script in Csound VST, click on the Perform button.