[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