[PD] API for manipulating a patch in real time
Miller Puckette
mpuckett at imusic1.ucsd.edu
Wed Dec 10 18:12:23 CET 2008
I can imagine simply writing an example program to do this (putting some
boilerplate first and then a rewritable main at the end). It would
look more like this:
/* don't touch me */
....
/* but replace the following with your code */
main()
{
pd_startthread("arg1 arg2...");
/* do anything you want */
pd_send("foo bang;");
/* etc */
pd_endthread();
}
... the idea would be that pd itself would live in a subthread and you'd
be able to send messages to it and even somehow get return callbacks.
This wouldn't be like pd~ at all, since in this scenario Pd would open
audio and MIDI as needed and schedule itself (with pd~ the subprocess
slaves itself synchronously to the parent). Another restriction would
be that you could only have one Pd thread (it isn't thread-safe!). On
the other hand, this would work fine in Windows, which pd~ doesn't (since
windows appears not to offer pipes unless you add a library with funny
licensing restrictions.)
Would that be a useful thing to have?
cheers
Miller
On Wed, Dec 10, 2008 at 11:28:22AM +0000, Andy Farnell wrote:
>
>
> Yes! Even if it's already 'doable' having a clearly
> abstracted libPd with documented API is clearly the next
> step in Pure Data development. This should be an overriding
> consideration in all current dev directions.
>
>
> On Wed, 10 Dec 2008 20:07:04 +0900
> Chris McCormick <chris at mccormick.cx> wrote:
>
> > On Wed, Dec 10, 2008 at 09:05:16AM +0100, IOhannes m zmoelnig wrote:
> > > Zach Dwiel wrote:
> > > >Hello
> > >
> > > first of all, there is no official API.
> >
> > It would be so nice if there were an easy way to invoke Pd as a library
> > from within other code. I know it's possible to do this (Spore, pd~,
> > RjDj, Pd browser plugin), it's just that it requires writing a bunch of
> > non-trivial support code that must be re-written every time. It
> > shouldn't have to. Pd -nogui could and should be as easily invokeable as
> > any other library.
> >
> > For example, I just wish it was possible to go:
> >
> > #include <pd.h>
> >
> > *PDInstance pd = make_pd_instance();
> > pd->init(/* ..args.. */);
> >
> > while (1)
> > {
> > /* Do stuff here */
> > pd->schedloop();
> > /* Do other stuff here */
> > pd->sendMessage(";my-receiver bang;");
> > }
> >
> > Ok maybe not quite as easy as that, but I reckon you'd see Pd used as
> > the audio engine for loads of other apps and games if this was simple.
> > There has already been interest from e.g. the Blender project and the
> > several other apps that already embed Pd.
> >
> > If this is already easy and I have just missed something obvious, please
> > let me know. (Sorry for not contributing code.)
> >
> > Best,
> >
> > Chris.
> >
> > -------------------
> > http://mccormick.cx
> >
> > _______________________________________________
> > Pd-list at iem.at mailing list
> > UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
>
>
> --
> Use the source
>
> _______________________________________________
> Pd-list at iem.at mailing list
> UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
More information about the Pd-list
mailing list