Apologies for spam; we've changed our policy by requiring approval for accounts, and deleted all existing spam and user - thanks for your help flagging content. We continue to test our forums and Vanilla software, aiming for release early in 2013. If you need to give us feedback outside the forum, contact us via http://createdigitalmusic.com/contact/ or on Facebook
Can I use PD-Extended with libpd?
  • Has anyone tried this? Is it on some roadmap somewhere? 
  • 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.
  • 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:

    http://noisepages.com/groups/pd-everywhere/forum/topic/using-expr-in-libpd/

    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?
  • 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 ;)
  • 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: https://github.com/rjdj/rjlib

    This is not a limitation as it's actually easier to do somethings directly in C/C++, etc
  • 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.
  • 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? 
  • 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: http://noisepages.com/groups/pd-everywhere/forum/topic/licensing/

    Also, I suggest not relying too much on externals beyond a few main ones which are BSD when using libpd, (mrpeach) for instance.
  • 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.
  • 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:

    http://noisepages.com/groups/pd-everywhere/forum/topic/using-expr-in-libpd/

    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...
  • Hello, I am trying to find what license the Mrpeach externals are under. At this link it states that theyre under GPL.

    http://ccrma.stanford.edu/planetccrma/mirror/fedora/linux/planetccrma/10/i386/repoview/pd-mrpeach.html

    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!

  • 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: http://multinc.com/2009/08/24/compatibility-between-the-iphone-app-store-and-the-lgpl/

    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!)

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

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

  • 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