12,297
edits
mNo edit summary |
mNo edit summary |
||
Line 4: | Line 4: | ||
Pure Data can be relevant to sound designers, musicians, and software developers, given a way to integrate graphical sound development with their tools and platforms of choice. | Pure Data can be relevant to sound designers, musicians, and software developers, given a way to integrate graphical sound development with their tools and platforms of choice. | ||
We present libpd, a thin wrapper that turns Pure Data into an embeddable audio library, as one solution. libpd emerged as a byproduct of an effort to port Pd to Android, but it has since taken on a life of its own, with language bindings for Java, Processing, Objective C, and Python, mobile apps for Android and iOS, and inclusion in packages such as openFrameworks and jReality. Since its announcement in October 2010, it has attracted more than 100 developers, and libpd-based applications are running on more than 3,000,000 iPhones and available to millions of Android devices in the Android Market. We explain the design of libpd, how to use the library, and how it fits into the lifecycle of an audio application from sound design to deployment. We conclude with a discussion of the relationship of libpd to Pd proper. | We present libpd, a thin wrapper that turns Pure Data into an embeddable audio library, as one solution. libpd emerged as a byproduct of an effort to port Pd to [[Android]], but it has since taken on a life of its own, with language bindings for Java, [[Processing]], [[Objective-C]], and Python, mobile apps for Android and [[iOS]], and inclusion in packages such as openFrameworks and jReality. Since its announcement in October 2010, it has attracted more than 100 developers, and libpd-based applications are running on more than 3,000,000 iPhones and available to millions of Android devices in the Android Market. We explain the design of libpd, how to use the library, and how it fits into the lifecycle of an audio application from sound design to deployment. We conclude with a discussion of the relationship of libpd to Pd proper. | ||
=== Design === | === Design === | ||
libpd is defined not only by what it adds to Pd, but what it removes. As a pure audio library, it has no graphical user interface, no audio drivers, and no MIDI drivers. Most crucially, libpd has no innate sense of time. | libpd is defined not only by what it adds to Pd, but what it removes. As a pure audio library, it has no graphical user interface, no audio drivers, and no [[MIDI]] drivers. Most crucially, libpd has no innate sense of time. | ||
Instead, libpd focuses on signal processing in its purest form: Samples go in, magic happens, samples come out. The heart of libpd is an audio callback that accepts a buffer of input samples, processes them, and fills a buffer of output samples. libpd keeps track of time only in terms of the number of samples requested so far (i.e., the number of invocations of the process function); calling the process function at the right time is the responsibility of the client code. | Instead, libpd focuses on signal processing in its purest form: Samples go in, magic happens, samples come out. The heart of libpd is an audio callback that accepts a buffer of input samples, processes them, and fills a buffer of output samples. libpd keeps track of time only in terms of the number of samples requested so far (i.e., the number of invocations of the process function); calling the process function at the right time is the responsibility of the client code. |