changed: - ---- === Possible Mentors === Chris McCormick === Description === **!LibPD: Pd's Engine as a Library** Several people have expressed interested in embedding Pd's audio engine inside their application, often a game, and Pd has already been implemented in at least one commercial game (Spore) and one commercial application (RjDj). At the moment, using Pd's engine as a library is kind of annoying. There is no default makefile target to build it like that and you have to tweak and mess about with things quite a lot. For this summer of code task we'd like to see it become easy to compile and distribute Pd's engine as a standalone library, to enable it to be embedded inside other programs. The result should be: 1. Modifications to the makefile to provide a libpd.so target (cross platform). 2. Example code for linking Pd into your own projects. 3. Support the different options for the scheduler integration and multi-threading vs. multi-process (see mailing list threads below) Articles about Pd in games: * Gamasutra article on using Pd: http://www.gamasutra.com/resource_guide/20030528/paul_01.shtml * Pd in spore post: http://lists.puredata.info/pipermail/pd-list/2007-11/056324.html Some useful links to start: * http://pure-data.svn.sourceforge.net/viewvc/pure-data/trunk/pd/src/ : Pd's source code * The following threads: http://lists.puredata.info/pipermail/pd-list/2007-12/057951.html , http://lists.puredata.info/pipermail/pd-list/2008-02/059463.html * Chris !McCormick's post in this thread includes a makefile example: http://lists.puredata.info/pipermail/pd-list/2008-02/059572.html * Good messages from Miller Puckette in the same thread: http://lists.puredata.info/pipermail/pd-list/2008-02/059540.html http://lists.puredata.info/pipermail/pd-list/2008-02/059612.html * And one more thread where Miller discusses this more and gives example code: http://lists.puredata.info/pipermail/pd-list/2008-12/066755.html === Required Skills === * C programming * Some knowledge or interest in learning about the basics of Pd's core, scheduler etc. * Some knowledge of build systems (makefiles, autoconf) on Linux, Windows and OS-X