Pd and JUCE?



I would like to use JUCE inside a Pd external (e.g to render GUI). Is there any public repository on GitHub or elsewhere that do that? I have no idea if it's merely possible but as Pd is open source i guess that nothing is impossible with some time to waste.


Sorry for a probably stupid question: But what is a "Pd external"?


Would it work for you to do it the other way around? To embed pure data into your Juce application you could use



I mean Pure Data objects / plug-ins ( https://en.wikipedia.org/wiki/Pure_Data ).



I'm aware of projects that embed libpd as a core audio in JUCE, but i'm still curious about the reverse, embedding JUCE in Pd.

I did few test with Max/MSP and in the future i plan to port it to GNU/Linux. Pd use Tcl/Tk for the GUI part. So i guess it will be much more work to make the JUCE message manager loop running.

I follow libpd and Pd for a while but i never heard about a project using this approach. JUCE is often mentioned when it's time to talk about changing the GUI of Pd, but since libpd is there all the people are focused on wrapping it. Surely the only sane choice that i'll quickly adopt also.

I should probably ask onto the Pd list instead.

Anyway thanks for reply.

FTM ( http://iem.kug.ac.at/fileadmin/media/iem/altdaten/projekte/publications/paper/ftm/ftm.pdf )?


As you've said, you'll probably get more assistance on a Pd forum with this, but here's my 2 cents ...

Looking around it seems that Pd should be able to interface with C code fairly easily, so perhaps you could build the parts of JUCE you want as a DLL, and call into them with the Pd externals?


Oliver Greschke from Elastic Drums and I hacked on "limited" PureData patch support in JUCE at the Music Hack Day in Barcelona using libPD as a backend.  Oliver and few others have then done some incredible work to take it a lot further and ironed out some of the bugs. You can find the source code along with some documentation here. The plugin branch is especially interesting.

There will be a meetup in Berlin soon (17th of August) where we will discuss this topic and hopefully make some progress. Feel free to join if you are interested. 



Curiously i opened that thread right after seen that GithHub repository ;-)

But as my project is to make a Pd object (and not run Pd patches) it is less relevant. Surely i should go deeper in the Pd source by myself to understand more precisely how Pd and/or libPd works. Anyway thanks for your reply and for the good news: JUCE and libPd worlds are connected!


It may be easy to build Pd external with JUCE concerning the core modules. But for GUI classes, as soon as you need the event loop to run, that is another story. I guess that it should be possible to manage the event loop by myself. But as i'm a very newbie in Pd dev i'm not sure that it is not a dead end. I'll probably have to go at the trial and error party alone.


This is pretty darned cool.


One of the YouTube videos addresses the major issue of libpd (and Pure Data as a whole) for plugins: only a single instance of Pure Data can be running at a time. It was also mentioned in the video that there were existing branches of Pure Data that addressed this, but these changes hadn't been folded into the canonical Pd distribution.


Any scope estimates on how big of a project it will be to get Pure Data into a state where it can run multiple instances? Is this something that is being actively worked on? Also, what is the specific issue with multiple instances - are a lot of global variables being used?


Sean Costello


I hope you don't mind I imported the code into my repo to make it easier to build for linux:

Haven't tested it much though, but it builds and runs at least :)