To register and login, use your Google, Twitter, Facebook, LinkedIn, or OpenID credentials.

This is allowing us to stop most spam registrations. We've deleted most of the spam accounts that got through, and we're closely watching for more.

Can I use PD-Extended with libpd?

shmimpieshmimpie Posts: 29
edited November -1 in Pd Everywhere
Has anyone tried this? Is it on some roadmap somewhere? 


  • pbrinkmannpbrinkmann Posts: 685 ✭✭
    Pd Extended is huge and contains a lot of stuff that isn't immediately relevant to libpd, such as UI enhancements. libpd does support externals, however, and if you want to use externals from Pd Extended, then you can build and package them for use with libpd. Details depend on your target platform; in order to get started, you can look at the way pd-for-android and pd-for-ios handle standard externals like fiddle~. My book also provides some pointers.
  • shmimpieshmimpie Posts: 29
    Love your book! Thanks for writing it, and thanks for libpd!

    But it would seem that using externals is a non-starter on iOS. That's at least what this thread implies:

    First, not being able to use expr~ is a pretty big bummer. And of course, Apple's policies are an even bigger bummer.

    We should accept that Apple will not change, because they won't. So, that said, do you (or does anyone) know of any initiatives to recreate the functionality of various externals (like expr~) under BSD (or similar) license?
  • pbrinkmannpbrinkmann Posts: 685 ✭✭
    You're welcome! The good news is that expr~ has been available under the GNU LGPL since last fall. Since I'm not a lawyer, I've been careful not to draw any legal conclusions in the book, but my understanding is that the LGPL is okay for iOS. You should confirm this with someone who actually understands licenses ;)
  • danomatikadanomatika Posts: 94
    No, there is no, and probably wil be no libpd-extended. It's up to you to include and build external source code.

    Yes, expr~ is in. The license is BSD now. As for other things, try rjlib which aims to recreate many things currently in externals in pd-extended:

    This is not a limitation as it's actually easier to do somethings directly in C/C++, etc
  • peterpeter Posts: 466 admin
    Right, let's make sure we separate concerns here:

    1. Can you use externals with libpd? Yes, absolutely.
    2. Can you use every external in pd-extended? No. It's really best to think of pd-extended as a big, convenient bundle of stuff targeted at desktop use. That's different from libpd (and Vanilla), which focuses on giving you the same functionality everywhere, so that a Pd patch that runs on a Mac laptop also runs on an Android handset and an iPhone, etc.
    3. Can you use pd-extended as your authoring tool for libpd work? Totally. I do it all the time, especially with the new UI plugins in the latest builds. You just want to occasionally open that patch in pd-vanilla to see which things you've forgotten that are extended only. ;) But this is primarily the way I work now, and it works pretty nicely.
    I've actually learned a lot from being forced to use vanilla objects in libpd work. As Dan says, rjlib is a big help.
  • shmimpieshmimpie Posts: 29
    Thanks guys. 

    Dan, regarding rjlib, the license files distributed with it are a little confusing (to me). They indicate that it's licensed via GPL, but also BSD. (The BSD license is included at the end of LICENSE.txt). I'm not a lawyer, so I find this tricky.

    Can you (or anyone) confirm that using rjlib in an iOS app is ok? 
  • danomatikadanomatika Posts: 94
    GPL is only an issue if you are *statically linking* code, since dynamic linking isn't allowed on iOS. So compiled/source code externals are out. Externals that are just .pd patches are fine, since they are not compiled and can be (ostensibly) replaced by the end user.

    The GPL is designed in part so that if you get a program that uses some library, you can upgrade that library ... either by swapping in a new dynamic lib or recompiling the program with the updated sources for that library.

    In our case with pd, patches are just text files, not compiled code, so I think it's no big deal. I'm no lawyer, but we discussed this a bit already:

    Also, I suggest not relying too much on externals beyond a few main ones which are BSD when using libpd, (mrpeach) for instance.
  • danomatikadanomatika Posts: 94
    Oh and it's also a good idea to have two pdsettings files ... one to use when doing libpd work and another for regular pd-extended. I've just removed the autoloading of libs from the libpd settings file  and patch using [declare] ... it's essentially like using vanilla/libpd.
  • shmimpieshmimpie Posts: 29
    Hi all. Thanks for the replies!

    I decided to try to build an iOS project with libpd and expr~ and got the same errors that were
    mentioned in this thread:

    Undefined symbols for architecture armv7:
    “_finite”, referenced from:
    _ex_finite in libLibPd.a(vexp_fun.o)
    “_drem”, referenced from:
    _ex_drem in libLibPd.a(vexp_fun.o)
    ld: symbol(s) not found for architecture armv7

    What to do? The solutions posted in that thread seem a bit nasty... Before hacking away, I thought I'd ask
    if anyone has dealt with this issue yet...
  • kowonghkowongh Posts: 12

    Hello, I am trying to find what license the Mrpeach externals are under. At this link it states that theyre under GPL.

    However danomatika is saying they are under BSD. Where can I find this information since the mrpeach folder in pd extended is without a license.txt. I really need the sendUDP and midifile externals! Thank you!

  • reakinatorreakinator Posts: 301

    You could look in the pd-externals svn repo. Unfortunately, his net folder has a gpl license in it..

  • Above, danomatika says: "Yes, expr~ is in. The license is BSD now."

    I think this is misinformation. As far as I can tell, and you can confirm this by looking at the source, the license for expr~ is LGPL, which is a no-go with the Apple App Store.

    Or is it? See here:

    At any rate, this issue does not seem closed. It's not 100% clear that you can use LGPL code in an iOS app. And if the effort to get expr~ released under BSD was successful, well, the license that's in the expr~ folder distributed with libpd is still LGPL.

    Anyone have any new information on this? (Please don't advise to 'just rewrite expr~' as previous threads have. expr~ is basically an interpreter, and interpreters are non-trivial things to write!)

  • reakinatorreakinator Posts: 301

    I say use it, it's open source, if someone complains report here. :)

  • reakinatorreakinator Posts: 301
    edited November 2012

    ps. you'd probably have to rewrite expr~ at the point of complaint.

  • hanshans Posts: 112

    most of the libraries included in Pd-extended are pretty easy to build for Android. Basically, any library based on the library template, you can build like this:

    make NDK_BASE=/path/to/your/android-ndk-r8 UNAME=ANDROID

  • ashshaoshashshaosh Posts: 8

    Hello, guys. I'm start to explore new opportunities and license question is what real worried. Extended contains many useful libraries and not all of it "correctly" licensed for using with Appstore. Maybe we can create some kind of list for libraries with BSD-like license and analogues? Its cool to share your code with people, but when this interferes to develop new cool programs its bad. Many peoples find useful this list.

    For me now its trouble to use folder_list, wahwah an others. Its licensed under gpl, but i wish to load files from folder automatically, i need this library, but appstore don't pass my work. If i would come to some place where i can find alternative or better licensed analog or clone that would be great.

Sign In or Register to comment.