Hello to all,
I'm currently bridging puredata and ogre3d via libpd. The whole project is a game engine called polymorph (http://polymorph.cool)
I have a question regarding patch generation.
I can't find a way to send a patch to pd through a buffer. The only method i found "libpd_openfile" but that requires creating an actual file on the harddrive and passing the path to pd. I would need something like "libpd_newpatch(char*)"...
The idea is to be able to build a patch programmatically, on the c++ side, and send it to pd without saving it as a file.
Did anyone ever done something like that?
Thank in advance!
françois z.
You probably can't build up a patch from nothing at all, but at least you can add objects to an empty canvas - read the canvas from a file (say, "x.pd") and send messages to "pd-x.pd" to add objects to it, connect them, etc.
cheers Miller
On Wed, Apr 05, 2017 at 02:59:18PM +0200, François Zajéga wrote:
Hello to all,
I'm currently bridging puredata and ogre3d via libpd. The whole project is a game engine called polymorph (http://polymorph.cool)
I have a question regarding patch generation.
I can't find a way to send a patch to pd through a buffer. The only method i found "libpd_openfile" but that requires creating an actual file on the harddrive and passing the path to pd. I would need something like "libpd_newpatch(char*)"...
The idea is to be able to build a patch programmatically, on the c++ side, and send it to pd without saving it as a file.
Did anyone ever done something like that?
Thank in advance!
françois z.
-- _ (__ | /_
[made with http://www.network-science.de/ascii/]
Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> https://lists.puredata.info/listinfo/pd-list
Thanks for the quick reply!
Let's say i want to produce this patch:
#N canvas 404 128 765 600 10; #X obj 10 10 osc~ 440; #X obj 10 40 dac~; #X connect 0 0 1 0; #X connect 0 0 1 1;
I save somewhere an empty.pd containing only:
#N canvas 404 128 765 600 10;
I load it using:
libpd_openfile("empty.pd", ".");
Then I call something like:
libpd_symbol( "pd-empty.pd", ";\nobj 10 10 osc~ 440" ); libpd_symbol( "pd-empty.pd", ";\nobj 10 40 dac~;" );
// definition of libpd_symbol in z_libpd.h // EXTERN int libpd_symbol(const char *recv, const char *sym);
And so on?
On 04/05/2017 03:03 PM, Miller Puckette wrote:
You probably can't build up a patch from nothing at all, but at least you can add objects to an empty canvas - read the canvas from a file (say, "x.pd") and send messages to "pd-x.pd" to add objects to it, connect them, etc.
cheers Miller
On Wed, Apr 05, 2017 at 02:59:18PM +0200, François Zajéga wrote:
Hello to all,
I'm currently bridging puredata and ogre3d via libpd. The whole project is a game engine called polymorph (http://polymorph.cool)
I have a question regarding patch generation.
I can't find a way to send a patch to pd through a buffer. The only method i found "libpd_openfile" but that requires creating an actual file on the harddrive and passing the path to pd. I would need something like "libpd_newpatch(char*)"...
The idea is to be able to build a patch programmatically, on the c++ side, and send it to pd without saving it as a file.
Did anyone ever done something like that?
Thank in advance!
françois z.
-- _ (__ | /_
[made with http://www.network-science.de/ascii/]
Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> https://lists.puredata.info/listinfo/pd-list
On 04/05/2017 05:45 PM, François Zajéga wrote:
libpd_symbol( "pd-empty.pd", ";\nobj 10 10 osc~ 440" );
no. rather something like:
t_atom v[4]; libpd_set_float (v+0, 10); libpd_set_float (v+1, 10); libpd_set_symbol(v+2, "osc~"); libpd_set_float (v+3, 440); libpd_message("pd-empty.pd", "obj", 4, v);
amds IOhannes
Ok, it's becoming clear :)
I'll test this tomorrow, thanks Miller & IOhannes for the help,
cheers,
françois z.
On 04/05/2017 06:37 PM, IOhannes m zmölnig wrote:
On 04/05/2017 05:45 PM, François Zajéga wrote:
libpd_symbol( "pd-empty.pd", ";\nobj 10 10 osc~ 440" );
no. rather something like:
t_atom v[4]; libpd_set_float (v+0, 10); libpd_set_float (v+1, 10); libpd_set_symbol(v+2, "osc~"); libpd_set_float (v+3, 440); libpd_message("pd-empty.pd", "obj", 4, v);
amds IOhannes
Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> https://lists.puredata.info/listinfo/pd-list