From 439fbb614935165fd40277d0e1153e1e8954652d Mon Sep 17 00:00:00 2001 From: Martin Peach Date: Thu, 6 Oct 2011 21:20:19 +0000 Subject: Cleaaned up, added pdluax HOWTO based on doc/pdluax.txt svn path=/trunk/externals/loaders/pdlua/; revision=15533 --- src/pdluax-help.pd | 66 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 65 insertions(+), 1 deletion(-) (limited to 'src/pdluax-help.pd') diff --git a/src/pdluax-help.pd b/src/pdluax-help.pd index 9293dcc..83eff7d 100644 --- a/src/pdluax-help.pd +++ b/src/pdluax-help.pd @@ -1,4 +1,4 @@ -#N canvas 0 22 447 171 10; +#N canvas 15 212 532 190 10; #X obj 134 144 hello; #X text 31 122 See also:; #X obj 33 88 pdluax hello; @@ -10,3 +10,67 @@ object creation. Less efficient than the loader ([foo] loads "foo.pd_lua" just once for all time) but more flexible when developing or live-coding. ; +#N canvas 9 90 607 714 pdluax_HOWTO 0; +#X obj 16 4 cnv 15 600 100 empty empty pdluax_HOWTO 20 12 0 14 -261682 +-66577 0; +#X obj 16 105 cnv 15 600 140 empty empty Advantages 20 12 0 14 -204786 +-66577 0; +#X obj 16 246 cnv 15 600 200 empty empty Disadvantages 20 12 0 14 -204800 +-66577 0; +#X obj 17 448 cnv 15 600 470 empty empty How_To_Write_Code_For_pdluax +20 12 0 14 -203904 -66577 0; +#X text 32 34 The pdluax class allows "volatile" loading of Lua source +code files that define Pd object behaviour.; +#X text 32 69 The [pdluax foo] object loads "foo.pd_luax" at object +creation time.; +#X text 32 127 + You can edit "foo.pd_luax" and new [pdluax foo] objects +will reflect the changes in the file.; +#X text 32 163 + Good for rapid development/testing cycles.; +#X text 32 185 + Good for live coding.; +#X text 32 206 + No need to restart Pd if you made a little mistake. +; +#X text 32 273 - Reloading the file each time is slower.; +#X text 32 293 - Syntax is different to the syntax expected by the +Lua loader (see below for discussion).; +#X text 32 326 - There is no "reload" functionality \, so you can have +multiple objects called [pdluax foo] but that have different behaviours. +; +#X text 32 368 - Data shared between objects must be accessible globally. +; +#X text 32 387 - The above two points mean some mistakes/changes mean +you have to restart Pd anyway.; +#X text 32 473 The last expression/statement in the file should be +of the form:; +#X obj 60 520 cnv 15 400 60 empty empty empty 20 12 0 14 -204786 -66577 +0; +#X text 72 524 return function (self \, sel \, atoms); +#X text 74 541 -- code here; +#X text 73 561 end; +#X text 32 585 This function is executed in the context of the 'initialize' +method of the pdluax class \, and has the same arguments:; +#X text 71 628 'self' is the object to be created.; +#X text 70 645 'sel' is the name of the class.; +#X text 70 663 'atoms' are the creation arguments.; +#X obj 60 730 cnv 15 400 20 empty empty empty 20 12 0 14 -204786 -66577 +0; +#X text 75 731 function self:in_1_float(f) ... end; +#X obj 60 780 cnv 15 400 20 empty empty empty 20 12 0 14 -204786 -66577 +0; +#X text 61 753 or:; +#X text 75 781 self.in_1_float = function(self \, f) ... end; +#X text 31 805 If using the second form \, remember the self argument. +; +#X text 31 830 If you need a shared state between objects \, you need +to use a global name. Try to pick something unique to avoid conflicts +with other scripts. You also need to ensure that you don't clobber +this state - remember the script can be executed more than once.; +#X obj 12 36 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 +-1; +#X obj 12 924 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 +1; +#X text 33 931 by mrpeach 2011/10/06; +#X text 33 918 modified from doc/examples/pdlua/luax.txt; +#X text 31 684 To add methods to the new object you need to add code +_inside_ the returned function. There are two syntaxes for this:; +#X connect 31 0 32 0; +#X restore 228 120 pd pdluax_HOWTO; -- cgit v1.2.1