Skip to content
Pure Data embeddable audio synthesis library
Objective-C C C++ Java C# Makefile Other
Failed to load latest commit information.
cpp cpp: allow re-init without clearing current subscribers Mar 27, 2016
csharp libpd_init now returns 0 on success & -1 on failure to match C conven… Dec 19, 2013
dist Added support for including native libraries in libpd.jar May 7, 2012
java/org/puredata/core Update Nov 30, 2015
javatests/org/puredata/core Updating Java tests. Jun 15, 2015
jni Added print concatenation layer to jni Feb 3, 2016
libpd.xcodeproj added g_clone.c to libpd.xcodeproj Apr 11, 2016
libpd_wrapper updated ringbuffer macros as per discussion on #109 Apr 1, 2016
libs added original mingGW LGPL pthreads dll Apr 12, 2012
objc whitespace & comment updates to latest PR merge Mar 27, 2016
pure-data @ 4a1885a updates for latest pure-data master: new g_clone.c & warning fixes Apr 2, 2016
python updates for latest pure-data master: new g_clone.c & warning fixes Apr 3, 2016
samples udpated objc pdtest xcodeproj Mar 27, 2016
.classpath cosmetic change Feb 1, 2013
.gitignore move xcode project ignores into sample gitignores Mar 27, 2016
.gitmodules updated pure-data submodule to use sourceforge git Jul 5, 2015
.project Added integration test for MIDI in particular Nov 24, 2010 updates for latest pure-data master: new g_clone.c & warning fixes Apr 3, 2016
CHANGES.txt small whitespace updates, bumped version 0.8.3 Sep 28, 2015
LICENSE.txt Added license info, improved tests Nov 26, 2010
Makefile Merge branch 'os_atomics' Apr 8, 2016 Merge branch 'os_atomics' Apr 8, 2016
libpd.podspec forgot to bump version in podspec, actually tagging now Sep 28, 2015
libpd_win.sln removed example for now May 3, 2012
mingw_build.bat Copy compiled dll to C# wrapper solution Oct 26, 2012


Pure Data as an embeddable audio synthesis library

Copyright (c) Peter Brinkmann & the libpd team 2010-2015


See our website and book at

For documentation of libpd, see the wiki:

If you are using Processing, iOS, or Android, see our companion repositories:

Getting libpd

The preferred method to download libpd is to use git.

Do not download libpd as a zip or tar.gz file from GitHub.

The "Download zip" button may look like a good idea, but currently Github does not include submodule files when compiling zip files. This means the zip file is missing the main pd source files and you will not be able to build libpd, with errors such as: No rule to make target `pure-data/src/d_arithmetic.o' or No such file or directory: pure-data/extra/bonk~/bonk~.c.

To download libpd & checkout the pure-data submodule do the following:

git clone
cd libpd
git submodule init
git submodule update

You should now have a libpd directory and the libpd/pure-data should contain the pd sources. If not, make sure you ran the git submodule commands in the libpd folder itself.

For most uses, it is recommended to checkout the latest stable release version via a git tag. For example, to switch to libpd version 0.8.3 after cloning:

git checkout 0.8.3

The master branch contains the latest libpd development and can be considered generally stable. However, we make no guarantees. :)

Repository Layout


The folder containing the sources of Pd Vanilla and standard externals. This is a git submodule of Miller Puckette's official Pd git repository:



This folder contains the source files that make up the core of libpd., Makefile, libpd.xcodeproj, libpd_win.sln

Build support for various platforms. Feel free to improve the build system in any way you see fit.

Currently the main Makefile builds a dynamic lib on Windows (in MinGW), Linux, & Mac OSX and has the following targets:

  • libpd: (default) builds if no target is specified, builds the
  • cpplib: builds libpd with the cpp wrapper
  • csharplib: builds libpdcsharp.dll (tested on Windows only)
  • javalib: builds libpdnative and the jni wrapper
  • clean: removes the object files
  • clobber: removes the linked library files
  • install: installs libpd C library (& C++ if built) and headers, set location with prefix= (default: /usr/local)
  • uninstall: removes libpd C library and headers, set location with prefix= (default: /usr/local)

Makefile options allow for conditional compilation of libpd util and pd extra externals sources into libpd as well as other options:

  • UTIL=true, compiles libpd_wrapper/util ringbuffer and print concatenator
  • EXTRA=true, compiles pure-data/extra externals which are then inited in libpd_init()
  • DEBUG=true, compiles libpd with -Wall & no optimizations

For example, to build libpd with both util and extra:

make UTIL=true EXTRA=true

Note: cpplib is automatically built with UTIL=true as it uses the ringbuffer

java, csharp, objc, cpp, python

Glue for using libpd with Java, C#, Objective C, C++ and Python. Feel free to improve or add support for other languages such as Lua.


Contains small sample programs and tests in the various supported langauges.

Xcode Project

libpd.xcodeproj provides an Xcode project to build libpd + the Obj-C wrapper as a static library for iOS & Mac OSX. Drag the libpd project into your existing Xcode project, then add libpd-ios (or libpd-osx) to the Linked Frameworks and Libraries in the General tab of your project target.

For detailed instructions, see Working with libpd in Xcode

If you are unfamiliar with how static libraries work or how to use them in Xcode, see this useful tutorial.

Java Builds

Ready-made binaries for Java are available at libpd-java-build: (may not be up to date)


If you are using Xcode to build iOS apps, you can use CocoaPods to add libpd to your project.

Use the following in your CocoaPods podfile:

pod 'libpd', :git => '', :submodules => true
Something went wrong with that request. Please try again.