[linux-audio-user] writing a realtime app in python

Atte André Jensen atte.jensen at gmail.com
Tue Mar 20 04:28:45 EDT 2007


Jack O'Quin wrote:

> I'm not an expert in python (just started learning it recently), but
> I am fairly sure you will not be able to handle JACK process callbacks
> in python because a call to the global garbage collector at that point
> will almost certainly blow your realtime deadline, causing JACK to
> kick your client out of its realtime processing graph.

I'm pretty sure that's not gonna be a problem. This is a python API to 
csound, which is (obviously) written in C. This is from the test.py 
included with csound:

csound = csnd.Csound()
csound.Compile('-o', 'dac', 'trapped.csd')
while not csound.PerformBuffer():
     pass
csound.Reset()

So basically sound.PerformBuffer() is everything, the rest is just 
bookkeeping (which python is great for). So I simply need to spawn that 
in a seperate thread with realtime priorities.

Any ideas?

> You could code those parts of the program in C or C++ to avoid
> memory management in the "harder" realtime portions of your
> application.  With sufficiently large ringbuffers (or the like), the
> other parts can probably be written in python with some higher
> latency.

My intial tests shows the python API berforms just as good as tegular 
csound, with buffers set to -b32 and -B64

> Disclaimer: I am only a beginner python programmer.  Nice language,
> however.

It's the nicest :-)

-- 
peace, love & harmony
Atte

http://www.atte.dk      | quintet:      http://www.anagrammer.dk
                         | compositions: http://www.atte.dk/compositions


More information about the linux-audio-user mailing list