[PD] loading Camomile plug-ins using vstplugin~

Miller Puckette msp at ucsd.edu
Sun Jan 20 18:07:30 CET 2019


Bingo!  I added the RTLD_DEEPBIND flag to the dlopen() call in vstplugin~ and
my Camomile plug-in sprang to life.

Now, as to _why_ anyone migth want to do this, here's my use case:  I'm
working with a musician who uses Abelton on a Mac, so I want to write him a
plug-in.  But I have no usable real-time VST hosts on my old Mac (I keep an
old MACOS so I can compile Pd back-compatibly).  I also don't have any
real-time VST hosting software on linux where I'm developing the patch for
the plug-in.  I could learn Ardour (maybe it's time I did that anyhow) but
the fastest way I could see to be able to host my plug-in is from Pd, which
is a piece of software I know well.

cheers
Miller

On Sun, Jan 20, 2019 at 05:18:56PM +0100, Christof Ressi wrote:
> maybe the RTLD_DEEPBIND flag to dlopen() could do the trick? 
> 
> http://man7.org/linux/man-pages/man3/dlopen.3.html
> 
> if I understand correctly, with this flag the shared object should prefer its own symbols, in this case pd_init() from the statically linked libpd, not from the Pd app. I don't have time right now to test this, though.
> 
> and guess what: [vstplugin~] + Camomile actually seems to work on Windows :-D :-D :-D. See attached picture.
> 
> Christof
> 
> > Gesendet: Sonntag, 20. Januar 2019 um 14:55 Uhr
> > Von: "Christof Ressi" <christof.ressi at gmx.at>
> > An: Pd-List <pd-list at lists.iem.at>
> > Betreff: Re: [PD] loading Camomile plug-ins using vstplugin~
> >
> > > Maybe static linking of libpd in Camomile would fix this?
> > 
> > I think Camomile already links statically against libpd.
> > 
> > 
> > > Gesendet: Sonntag, 20. Januar 2019 um 14:35 Uhr
> > > Von: "Claude Heiland-Allen" <claude at mathr.co.uk>
> > > An: pd-list at lists.iem.at
> > > Betreff: Re: [PD] loading Camomile plug-ins using vstplugin~
> > >
> > > Hi,
> > > 
> > > On 20/01/2019 01:52, Miller Puckette wrote:
> > > > I don't think it works.  Unless I'm misreading things, once Camomile calls
> > > > pd_init(), that call doesn't go to the pd_init that's compiled into
> > > > Camomile (via libpd) but instead calls pd_init from the Pd that called
> > > > vstplugin~ that called Camomile.  This does nothing, and the next thing libpd
> > > > tries to access in the Pd instance fails.
> > > Maybe static linking of libpd in Camomile would fix this??? But that 
> > > would just postpone the issue until the first dynamically-linked 
> > > external is loaded by the deeper Pd, which tries to access eg 
> > > class_new(): does it get the one in Pd host or Camomile .pd_linux?
> > > 
> > > On GNU glibc systems, dlmopen() may be relevant?
> > > 
> > > 
> > > Claude
> > > -- 
> > > https://mathr.co.uk
> > > 
> > > 
> > > 
> > > 
> > > _______________________________________________
> > > Pd-list at lists.iem.at mailing list
> > > UNSUBSCRIBE and account-management -> https://lists.puredata.info/listinfo/pd-list
> > >
> > 
> > 
> > 
> > _______________________________________________
> > Pd-list at lists.iem.at mailing list
> > UNSUBSCRIBE and account-management -> https://lists.puredata.info/listinfo/pd-list
> >







More information about the Pd-list mailing list