I’m pretty sure the performance is comparable since it’s running low level C code.

Does anyone have a ofxPd project that utilizes cyclone? I’ve been having a hard time figuring out getting cyclone compiled.

I tested it hard these latest hours
It works very fine.
I only tested it with the simulator but … it is ok :slight_smile:

I didn’t need cyclone lib, so I cannot answer.
On next days, probably :slight_smile:

I seem to be having some problems compiling the example files in CB.

I get the following error

obj\release\addons\ofxPd\src\pd\pure-data\src\s_loader.o:s_loader.c|| undefined reference to `SetDllDirectory’|

Any help would be lovely :slight_smile:

I fixed it by actually following the instructions on github. Just had to use the 007 tag and fix the video file commenting thing :slight_smile:

I read several posts about the fact we cannot use input AND output at the same time.

Any trick for that ?

Hi, I’m trying ofxPd on Android, I’ve made a test app based on the test app delivered with the addon.
Just added

<uses-permission android:name="android.permission.RECORD_AUDIO"/>  

in Android Manifest and modified main.cpp based on other Android OpenFrameworks’ examples.

I’ve set number of inputs in testApp.cpp to 1 in this way

void testApp::setup() {  
	int ticksPerBuffer = 8;	// 8 * 64 = buffer len of 512  
	ofSoundStreamSetup(2, 1, this, 44100, ofxPd::blockSize()*ticksPerBuffer, 4);  
	core.setup(2, 1, 44100, ticksPerBuffer);  

The problem I’m experiencing is: when audio input is enabled user interface becomes unresponsive, i.e. no redrawing (rescaling) when I turn the device.
The problem goes away when I set

ofSoundStreamSetup(2, 0, this, 44100, ofxPd::blockSize()*ticksPerBuffer, 4);  

and no audio input anymore obviously.

Is this a known problem?


I tested some polyphonic structures using ofxPd on iOS device.

If using [poly 48 1] easily on my OSX, I wanted to know more about using that on iOS.
In order to make it working fine, I had to increase the ticksPerBuffer value from 8 to 32, which can have other consequences, but in my case it is very okay.

int ticksPerBuffer = 32;	  
core.setup(2, 0, 44100, ticksPerBuffer);  
// setup OF sound stream  
ofSoundStreamSetup(2, 0, this, 44100, ofxPd::blockSize()*ticksPerBuffer, 3);  

I’m trying to use ofxPd in a PandaboardES with Ubuntu 11.10 but i receive this errror:

g++: error: unrecognized option ‘export-dynamic’

i have also posted this problem in this topic: http://forum.openframeworks.cc/t/pandaboardes-and-openframework/9592/0 .
If someone know has tried with another ARm processor (Pandaboard,Beagleboard or other) please let me know how do you solve this. Thanks


Hi there,
trying to create a background audio playing mode, I’d like to know if someone had some experiences with ofxPd and background audio.

There are many things over the net like this-one or this-one, but in “our” case with ofxPd, I guess it has to be deeply changed.

Anyone ?

anyone would help me about tickbuffersize strangeness ? (related to http://forum.openframeworks.cc/t/libpd-amp;-tickperbuffer-parameter-for-ipad-amp;-other-devices…/9961/1)

Howdy all,

Some months ago, I updated the libpd cpp wrapper with the ability to manually poll for events. Today I pulled in those changes to ofxPd.

Now, if you do not add any receivers (or call clearReceivers), incoming events are stored in a queue using a pd::Message type… Same goes for midi receivers.

It works like this:

while(pd.numMessages() > 0) {  
    pd::Message& msg = pd.nextMessage(&msg);  
    switch(msg.type) {  
        case PRINT:  
            cout << got print: " << msg.symbol << endl;  
        case BANG:  
            cout << "go a bang to " << msg.dest << endl;  
        case NOTE_ON:  
            cout << "got a note on " << msg.channel  
                  << msg.pitch << " " << msg.velocity << endl;  

hi danomatika

thanks for this wonderfull addon … it’s a really usefull bridge to work some sound shit inside OF !! Gorgeous !

i’ve been able to use simple examples perfectly and easyly, but i’m facing some problems when trying to add externals. I’m trying with Zexy as it’s documented on the GitHub help readme but i can’t make it to work.

I’m on OSx 10.6.8 , Xcode 3.2.4 and OF_073 …

What i’ve done :

* downloaded with the svn command line the Pd 0.42 folder.
* copied the .h and .cpp files inisde the /externals/zexy/src to myTestApp/src/externals/zexy .
* include this folder myTestApp/src/externals/zexy on my XcodeProject
* declare the setup function as follows in testApp.h after the #include’s (is correct to put it here?)
#pragma once
extern “C” {
void zexy_setup();
* add the zexy_setup(); call just after pd.init(…).

What i’m getting is a link error :

ld: duplicate symbol _verbose in

Any idea os why is it happening or what i might be doing wrong ?
Thanks for your support and work .


It’s a problem with either libpd or zexy. I tried updating the libpd sources and get a different error (see the bottom of the ofxPd readme on how to do that). I also tried different zexy versions from:




but again, different errors kept it from building. Zexy *did* build last year with ofxPd, but something has gone out of sync and I’m sure zexy is not being tested with libpd, so that’s not surprising.

I would ask on the CDM PD Everywhere Forum: http://createdigitalnoise.com/categories/pd-everywhere Also, you could submit a bug report to libpd and/or zexy (IEM).

I’m sure it’s something relatively easy to fix, but IMO I’d replace the externals you’re using with pd-vanilla patches to avoid having to build it anyway. Check out rjlib for a useful set of abstractions (https://github.com/rjdj/rjlib). I’m also slowly transitioning my patch library, you can checkout some of those in the rc-patches/rc (https://github.com/danomatika/rc-patches/tree/master/rc).

Hi again danomatika …

In fact the error is related with a duplicate function issue …
In s_print.c (in libPd) and in zexy.c there is a function :

void verbose(int level, const char *fmt, …);

what i did is to comment out the verbose function in zexy.h and zexy.cpp …
i’m pretty sure this is not the way to go, but at least i could compile.
the problem is that because i took out the zexy verbose print … i don’t see any prints on the console so i’m not sure if the external is working properly …?¿

* anyone has more understanding of libPdf and zexy to determine how to solve this issue ?
* i’ve tried to compile with expr and cyclone and i found similar issues with other functions … seems like there are many functions defined in libPdf which are like “overiden” in the externals ?¿ is there a way to make this nicely and c++ ?

thanks for your support .


Well, it did work before and I’m currently using other externals myself: iemlib, mrpeach, and ggee. It might be that libpd is currently on pd version 0.43.3 while the external sources you may be using are for 0.42.5. See if you can use a different branch or perhaps the trunk? I’ll ask up the chain.

Ok, I asked Peter et al at libpd, we’ll see if there’s any more info: https://github.com/libpd/libpd/issues/31

I’d dig into this more, but I’m currently too busy on other things.

I’m having an issue with ofxPd where I’m opening several instances of a patch that has a r-object as such:
[r $0-distance]

I’m trying to send floats to individual instances of my opened patches with something like:

pd.sendFloat(pdusers[i].patch.dollarZeroStr()+"-distance", value);  

But I’m not getting anything (tried a print inside the patch, etc)
I’ve really tried anything, have you tried that dynamic patching by individual patch instance adressing works?

(I’m using throw~ and catch~ to receive all audio from all the instanced patches, which does seem to work)


Yes it works. Check your patch.

I just added a test to the example:

        cout << endl << "BEGIN Instance Test" << endl;  
	// open 10 instances  
	for(int i = 0; i < 10; ++i) {  
		Patch p = pd.openPatch("pd/instance.pd");  
	// send a hello bang to each instance individually using the dollarZero  
	// to [r $0-instance] which should print the instance dollarZero unique id  
	// and a unique random number  
	for(int i = 0; i < instances.size(); ++i) {  
	// send a random float between 0 and 100  
	for(int i = 0; i < instances.size(); ++i) {  
		pd.sendFloat(instances[i].dollarZeroStr()+"-instance", int(ofRandom(0, 100)));  
	// send a symbol  
	for(int i = 0; i < instances.size(); ++i) {  
		pd.sendSymbol(instances[i].dollarZeroStr()+"-instance", "howdy dude");  
	// close all instances  
	for(int i = 0; i < instances.size(); ++i) {  
	cout << "FINISH Instance Test" << endl;  

As an alternative, I used a PD-based approach to do the same thing in my last pd project using [u\_makepoly] in rjlib.

Try the latest ofxPd which works with OF0073 and was tested on Win7. It should work.

It takes time to double check things when there is a new OF release, so you may need to stick with an older OF until I can update things.

The midi errors are normal as the [midiin] and [sysexin] built in pd objects are not supported on Windows and therefore cannot be created. I use these in the test.pd patch which then cannot be created when running the example on Windows.

Yes, midi has no effect on the sound output. In this case, these are just the internal midi objects in the pd instance which you can communicate to through the midi send/recieeves in ofxPd. There is no OS-level midi api in ofxPd, for that use ofxMidi which can easily be hooked up to ofxPd (I wrote the apis to be very similar).