[PD] howto load and install externals tutorial

Roman Haefeli reduzent at gmail.com
Thu Mar 2 14:04:00 CET 2017


On Don, 2017-03-02 at 01:03 -0300, Alexandre Torres Porres wrote:
> Howdy, I worked on a howto load and install externals tutorial and
> put it up in here: https://puredata.info/docs/tutorials/FrontPage
> 
> Also find it in here https://sites.google.com/site/porres/Using%20Pd%
> 20Externals.pdf?attredirects=0&d=1
> 
> feel free to comment and give some feedbacks

Good work! Great coverage of aspects. Do you plan to convert the final
draft into a wikipage? I guess this would ease collaboration on the
long run.


My notes:

Re 2.2.1 C):
------------

The global and application specific paths are dependent on how Pd and
externals were installed. Everything that comes from the
distribution/package manager goes to /usr/, while all self-compiled
stuff goes to /usr/local (when intalled system-wide). As a user, you
shouldn't never ever touch /usr/ directly.


Application-specific:
/usr/lib/puredata/extra   if installed via a package manager (apt-get)
/usr/local/lib/pd/extra   if compiled by yourself. 

User-specific (needs to be created):
~/.local/lib/pd/extra     (preferred since version Pd-0.47-1) 
~/pd-externals             (deprecated but still usable). 
     - 
Global:
/usr/lib/pd-externals	      (searched by Pd from package
manager)
/usr/local/lib/pd-externals   (searched by used-installed Pd)



How to load different library formats
-------------------------------------

Different library layouts require different ways of loading. I'll try
to put together a summary of the different layouts I found "in the
wild".


Single-file-per-object libraries
--------------------------------

How to load them:

[declare -stdpath libraryname]


Examples:
  * virtually anything from Pd-extended
  * iemnet
  * all
abstractions libraries

Notes:
It works for both, abstractions and externals, as long as each object
has its own file and they're in a folder libraryname. Supposedly, the
majority of libraries uses this layout.


Multi-object externals
----------------------

How to load them:

[declare -stdlib libraryname]

Examples:
  *  (can't think of any right now)


Mix of multi-object external and abstractions
---------------------------------------------

How to load them:

[declare -stdpath libraryname -stdlib libraryname]

Examples: 
  * zexy (not from Pd-extended)
  * Gem

Notes:
You can test above with zexy. You need both declarations so that you
can load both [nop] and [dirac~].
Gem is a special animal again. It uses a trick internally and adds the
path automatically. Even if it is a mix of abstractions and a multi-
object external, you stil can load it with [declare -stdlib Gem].


Mix of several multi-object externals and abstractions
------------------------------------------------------

[declare -stdpath libname -stdlib libname/lib1 -stdlib/lib2 [...]]

Examples:
  * iemlib

Note: 
If the multi-object external doesn't have the same name as the parent
folder, you need to add libname/ prefix to -stdlib. 
If you, for instance, only [declare -stdpath iemlib], you can
successfully load [hp4_butt~] because it is an abstraction of iemlib,
but it throws an error to the Pd-console:

 filter~ hp2c $1 $2 $3 $4
... couldn't create

because it uses [filter~] from iemlib1 internally. So, the proper way
to make [hp4_butt~] work is to use:

[declare -stdpath iemlib -stdlib iemlib/iemlib1]


Roman
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 473 bytes
Desc: This is a digitally signed message part
URL: <http://lists.puredata.info/pipermail/pd-list/attachments/20170302/d229e384/attachment.sig>


More information about the Pd-list mailing list