[PD] pd.lib

Chris McCormick chris at mccormick.cx
Sat Sep 26 17:13:30 CEST 2009


And now with the attachment.

On Sat, Sep 26, 2009 at 03:24:34PM +0100, Chris McCormick wrote:
> On Fri, Sep 25, 2009 at 03:51:06PM -0400, Mathieu Bouchard wrote:
> > On Thu, 24 Sep 2009, Damien Henry wrote:
> >
> >> Where can I find documentation about pd.lib ? Does anyone on the list  
> >> turn pd into a library ? for creating a DSP engine for instance ?
> >
> > Bah, j'ai fait ça (libpd.so, libpd.dylib ...) sous forme d'un petit  
> > changement de makefile, mais je n'ai rien fait de concret avec ça. 
> > j'avais juste espéré que ça inspire quelqu'un.
> >
> > Il y a d'autres gens qui en ont fait une bibliothèque aussi, mais à ce 
> > que je sache, pas quelque chose de générique comme libpd.so, plutôt 
> > quelque chose pour faire de Pd un greffon dans un autre logiciel en 
> > particulier ou au mieux une interface générique qui n'est pas <m_pd.h> 
> > (par exemple VST...). Personnellement, j'ai pas regardé.
> 
> Well I think it would be of great benefit to Pd if we all stopped doing it in
> our own once off, implementation specific, half-arsed way and did it properly
> and robustly and submitted the code back to Miller. I already submitted some
> half-arsed code for this to him (see the attached patch against Makefile.in),
> but I think my chances aren't that great for getting it accepted, since it
> stinks! :)
> 
> Damien, if you want you can try with that patch and something like this:
> 
> void* launchpd(void* arg)
> {
>     char* args[2] = {"pd", "-nogui"};
>     sys_printhook = (t_printhook)my_printhook;
>     sys_main(2, args);
> }
> 
> I think a lot of people dream of a libpd which is independent of all the GUI
> code and the driver-specific audio code. It would be awesome if I could go:
> 
> t_pd* mypd = launchpd();
> while (1) {
> 	mypd->getBuffer(mybuffer);
> }
> 
> It would certainly make it easier to make stuff like browser plugins. I dream
> of a day when we post the libpd code to the whatwg list and it gets accepted by
> all the major browsers, and then we have in-browser procedural audio for our
> web apps.
> 
> Chris.
> 
> -------------------
> http://mccormick.cx

> --- ../../pd-0.42-5/src/makefile.in	2008-12-29 19:08:26.000000000 +0000
> +++ makefile.in	2009-07-15 13:44:11.000000000 +0100
> @@ -2,6 +2,7 @@
>  OBJ_DIR = ../obj
>  BIN_DIR = ../bin
>  PDEXEC = $(BIN_DIR)/pd
> +LIBPD = $(BIN_DIR)/libpd.a
>  EXT= @EXT@
>  GUINAME= @GUINAME@
>  
> @@ -26,7 +27,7 @@
>  GLIB = @LIBS@
>  
>  LDFLAGS = @LDFLAGS@
> -LIB =  @PDLIB@
> +LIB =  @LIBPD@
>  
>  WARN_CFLAGS = -Wall -W -Wstrict-prototypes \
>      -Wno-unused -Wno-parentheses -Wno-switch
> @@ -42,14 +43,14 @@
>  
>  ASIOOBJ = $(ASIOSRC:.cpp=.o)
>  
> -SRC = g_canvas.c g_graph.c g_text.c g_rtext.c g_array.c g_template.c g_io.c \
> +LSRC = g_canvas.c g_graph.c g_text.c g_rtext.c g_array.c g_template.c g_io.c \
>      g_scalar.c g_traversal.c g_guiconnect.c g_readwrite.c g_editor.c \
>      g_all_guis.c g_bang.c g_hdial.c g_hslider.c g_mycanvas.c g_numbox.c \
>      g_toggle.c g_vdial.c g_vslider.c g_vumeter.c \
>      m_pd.c m_class.c m_obj.c m_atom.c m_memory.c m_binbuf.c \
>      m_conf.c m_glob.c m_sched.c \
>      s_main.c s_inter.c s_file.c s_print.c \
> -    s_loader.c s_path.c s_entry.c s_audio.c s_midi.c \
> +    s_loader.c s_path.c s_audio.c s_midi.c \
>      d_ugen.c d_ctl.c d_arithmetic.c d_osc.c d_filter.c d_dac.c d_misc.c \
>      d_math.c d_fft.c d_array.c d_global.c \
>      d_delay.c d_resample.c \
> @@ -57,7 +58,12 @@
>      x_time.c x_acoustics.c x_net.c x_qlist.c x_gui.c x_list.c d_soundfile.c \
>      $(SYSSRC)
>  
> -OBJ = $(SRC:.c=.o) 
> +# the main() file isn't required by libpd
> +SRC = $(LSRC) s_entry.c
> +
> +OBJ = $(SRC:.c=.o)
> +
> +LOBJ = $(LSRC:.c=.o)
>  
>  GSRC =  @GUISRC@
>  
> @@ -123,6 +129,15 @@
>  $(PDEXEC): $(OBJ) $(BIN_DIR)
>  	cd ../obj;  $(CC) $(LDFLAGS) $(DBG_CFLAGS) -o $(PDEXEC) $(OBJ) $(LIB)
>  
> +libpd: $(LOBJ) $(BIN_DIR)
> +	cd ../obj; $(AR) r $(LIBPD) $(LOBJ)
> +	@# linux
> +	@#cd ../obj; $(CC) -shared -Wl,-soname,libpd.so.1 -o libpd.so.$(PD_VERSION) $(LOBJ)
> +	@# mac OS
> +	@#cd ../obj; $(CC) -Wl,-dylib_install_name -Wl,libpd.dylib.$(PD_VERSION) -o libpd.dylib $(LOBJ)
> +	@# windows
> +	@#???
> +
>  $(BIN_DIR)/pd-gui: $(GOBJ) $(GSRC)
>  	cd ../obj; $(CC) $(INCLUDE) -o $(BIN_DIR)/$(GUINAME) $(GOBJ) $(GLIB)
>  
> --- ../../pd-0.42-5/src/makefile.in	2008-12-29 19:08:26.000000000 +0000
> +++ makefile.in	2009-07-15 14:16:53.000000000 +0100
> @@ -2,6 +2,7 @@
>  OBJ_DIR = ../obj
>  BIN_DIR = ../bin
>  PDEXEC = $(BIN_DIR)/pd
> +LIBPD = $(BIN_DIR)/libpd.a
>  EXT= @EXT@
>  GUINAME= @GUINAME@
>  
> @@ -42,14 +43,14 @@
>  
>  ASIOOBJ = $(ASIOSRC:.cpp=.o)
>  
> -SRC = g_canvas.c g_graph.c g_text.c g_rtext.c g_array.c g_template.c g_io.c \
> +LSRC = g_canvas.c g_graph.c g_text.c g_rtext.c g_array.c g_template.c g_io.c \
>      g_scalar.c g_traversal.c g_guiconnect.c g_readwrite.c g_editor.c \
>      g_all_guis.c g_bang.c g_hdial.c g_hslider.c g_mycanvas.c g_numbox.c \
>      g_toggle.c g_vdial.c g_vslider.c g_vumeter.c \
>      m_pd.c m_class.c m_obj.c m_atom.c m_memory.c m_binbuf.c \
>      m_conf.c m_glob.c m_sched.c \
>      s_main.c s_inter.c s_file.c s_print.c \
> -    s_loader.c s_path.c s_entry.c s_audio.c s_midi.c \
> +    s_loader.c s_path.c s_audio.c s_midi.c \
>      d_ugen.c d_ctl.c d_arithmetic.c d_osc.c d_filter.c d_dac.c d_misc.c \
>      d_math.c d_fft.c d_array.c d_global.c \
>      d_delay.c d_resample.c \
> @@ -57,7 +58,12 @@
>      x_time.c x_acoustics.c x_net.c x_qlist.c x_gui.c x_list.c d_soundfile.c \
>      $(SYSSRC)
>  
> -OBJ = $(SRC:.c=.o) 
> +# the main() file isn't required by libpd
> +SRC = $(LSRC) s_entry.c
> +
> +OBJ = $(SRC:.c=.o)
> +
> +LOBJ = $(LSRC:.c=.o)
>  
>  GSRC =  @GUISRC@
>  
> @@ -123,6 +129,15 @@
>  $(PDEXEC): $(OBJ) $(BIN_DIR)
>  	cd ../obj;  $(CC) $(LDFLAGS) $(DBG_CFLAGS) -o $(PDEXEC) $(OBJ) $(LIB)
>  
> +libpd: $(LOBJ) $(BIN_DIR)
> +	cd ../obj; $(AR) r $(LIBPD) $(LOBJ)
> +	@# linux
> +	@#cd ../obj; $(CC) -shared -Wl,-soname,libpd.so.1 -o libpd.so.$(PD_VERSION) $(LOBJ)
> +	@# mac OS
> +	@#cd ../obj; $(CC) -Wl,-dylib_install_name -Wl,libpd.dylib.$(PD_VERSION) -o libpd.dylib $(LOBJ)
> +	@# windows
> +	@#???
> +
>  $(BIN_DIR)/pd-gui: $(GOBJ) $(GSRC)
>  	cd ../obj; $(CC) $(INCLUDE) -o $(BIN_DIR)/$(GUINAME) $(GOBJ) $(GLIB)
>  

> _______________________________________________
> Pd-list at iem.at mailing list
> UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list

-------------------
http://mccormick.cx
-------------- next part --------------
A non-text attachment was scrubbed...
Name: libpd.patch
Type: text/x-diff
Size: 3922 bytes
Desc: not available
URL: <http://lists.puredata.info/pipermail/pd-list/attachments/20090926/3d9121fd/attachment.patch>


More information about the Pd-list mailing list