#N canvas 15 212 532 190 10;
#X obj 134 144 hello;
#X text 31 122 See also:;
#X obj 33 88 pdluax hello;
#X obj 123 88 pdluax hello;
#X obj 213 88 pdluax hello;
#X obj 303 88 pdluax hello;
#X obj 88 144 pdlua;
#X text 31 16 [pdluax foo] loads the source file "foo.pd_luax" on each
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;
