aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xGem/Gem.pd_darwinbin5075220 -> 5075216 bytes
-rw-r--r--Gem/README.md215
-rw-r--r--Gem/README.txt157
-rw-r--r--Gem/examples/13.recursion/04.binary_tree.pd168
-rw-r--r--Gem/examples/13.recursion/05.n-ary_tree.pd120
-rw-r--r--Gem/examples/13.recursion/nrepeat.pd4
-rwxr-xr-xGem/gem_filmAVF.sobin55996 -> 55996 bytes
-rwxr-xr-xGem/gem_imageIO.sobin37584 -> 37584 bytes
-rwxr-xr-xGem/gem_imageJPEG.sobin49088 -> 49088 bytes
-rwxr-xr-xGem/gem_imageSGI.sobin56360 -> 56360 bytes
-rwxr-xr-xGem/gem_imageSTB.sobin201256 -> 201256 bytes
-rwxr-xr-xGem/gem_imageTIFF.sobin64236 -> 64236 bytes
-rwxr-xr-xGem/gem_modelOBJ.sobin97560 -> 97560 bytes
-rwxr-xr-xGem/gem_recordNDI.sobin28696 -> 28696 bytes
-rwxr-xr-xGem/gem_videoAVF.sobin61172 -> 61172 bytes
-rwxr-xr-xGem/gem_videoDECKLINK.sobin69600 -> 69600 bytes
-rwxr-xr-xGem/gem_videoNDI.sobin45648 -> 45648 bytes
-rwxr-xr-xGem/gemcocoawindow.pd_darwinbin39192 -> 39192 bytes
-rwxr-xr-xGem/gemglutwindow.pd_darwinbin41924 -> 41924 bytes
-rwxr-xr-xGem/gemmacoswindow.pd_darwinbin39088 -> 39088 bytes
-rwxr-xr-xGem/pix_drum.pd_darwinbin25416 -> 25416 bytes
-rwxr-xr-xGem/pix_fiducialtrack.pd_darwinbin68884 -> 68884 bytes
-rwxr-xr-xGem/pix_hit.pd_darwinbin23432 -> 23432 bytes
-rwxr-xr-xGem/pix_mano.pd_darwinbin39660 -> 39660 bytes
24 files changed, 367 insertions, 297 deletions
diff --git a/Gem/Gem.pd_darwin b/Gem/Gem.pd_darwin
index 6e16692..4032415 100755
--- a/Gem/Gem.pd_darwin
+++ b/Gem/Gem.pd_darwin
Binary files differ
diff --git a/Gem/README.md b/Gem/README.md
new file mode 100644
index 0000000..8902751
--- /dev/null
+++ b/Gem/README.md
@@ -0,0 +1,215 @@
+GEM - Graphics Environment for Multimedia
+=========================================
+
+
+You can get the current distribution from:
+https://gem.iem.at
+https://git.iem.at/pd/Gem
+https://github.com/umlaeute/Gem
+
+If you want to compile the newest (bleeding edge, and possibly unstable) source
+code yourself, you can get a copy from the public git repository:
+
+ https://git.iem.at/pd/Gem.git
+
+There is also a mirror on github:
+
+ https://github.com/umlaeute/Gem
+
+Usually, you will only need the read-only repository, which you can get with
+
+$ git clone https://git.iem.at/pd/Gem.git
+
+# NEW
+
+Gem is now supported by Microsoft W, Linux and macOS-X.
+The IRIX version might work (but most probably will not): if you want to use Gem
+under IRIX, feel free to make it work and report failure and success to me, so i
+can incorporate any needed changes into the main Gem-trunk.
+
+for installation instructions see below
+
+# BUILDING
+
+To build & install GEM run:
+~~~
+$ ./configure
+$ make
+$ make install
+~~~
+
+note: when using a git-clone of the Gem sources, you first need to run
+`./autogen.sh` (which is a wrapper around `autoreconf -fiv`).
+
+note: that you might want to help Gem to find the Pd-headers, e.g. by doing
+
+~~~sh
+$ ./configure --with-pd=/usr/include/pd
+~~~
+
+try the following, to see more available options:
+
+~~~sh
+$ ./configure --help=recursive
+~~~
+
+## DEPENDENCIES
+Gem can utilize a lot of libraries and frameworks in order to improve its capabilities.
+Most of these libraries are optional and will be detected automatically when running `./configure`.
+Some libraries won't be detected automatically and you must provide additional information
+on how to use them (see `./configure --help=recursive` for a list of options).
+
+### hard (required) dependencies
+
+The only hard requirements of Gem are:
+
+- Pure Data
+- openGL
+- GLU
+
+### soft (optional) dependencies
+
+Support for text output is optional, but will be compiled into the "core" of Gem
+(that is: once it is enabled, you will need the relevant runtime libraries in order to be able to use Gem at all)
+
+| Library/Framework | notes |
+|-------------------|-------------------------|
+| ftgl | Font rendering support |
+| fribidi | support for RTL-scripts |
+
+Most dependencies are purely optional and are only used in plugins.
+If the runtime libraries are not available, Gem won't be able to use those plugins, but it will otherwise work as normal.
+
+
+| Library/Framework | Operating System | notes |
+|------------------------------|------------------|------------------------------------------------------------------|
+| sdl2 | | Window managment |
+| glfw3 | | Window managment |
+| assimp | | 3D model loading |
+| ImageIO | macOS | image reading/writing |
+| QuickTime | macOS, Windows | only 32bit OS are supported |
+| libquicktime | Linux | film reading/writing |
+| ImageMagick | | image reading/writing (many formats) |
+| libTIFF | | TIFF image reading/writing |
+| libjpeg | | JPEG image reading/writing |
+| gmerlin_avdec | (mostly) Linux | film reading |
+| libdc1394 | Linux | video capture from industry-grade "IEEE 1394" cameras |
+| libdv/libraw1394/libiec61883 | Linux | video capture from consumer-grade "firewire" cameras |
+| libv4l2 | Linux | V4L2 video capture and output |
+| VLC | | open media as video capture via VLC |
+| libvncclient | | grab frames via the VNC protocol |
+| DeckLink | | video input from Blackmagic's DeckLink hardware |
+| NDI | | NDI frame capture and output |
+| AVT | | grab frames from GiGE-devices via Prosilica's AVT SDK |
+| Halcon | | grab frames from industrial grade cameras via MVTec's HALCON SDK |
+| Pylon | | grab frames from GiGE-devices via Basler's PYLON SDK |
+| OptiTrack | | capture video from OptiTrack cameras |
+| | | |
+
+# INSTALLING
+`make install` might work (mostly on linux)
+
+If you want to have full control on where to install the files, use the `prefix` and `libdir` variables,
+like so:
+
+~~~sh
+make install libdir=~/Documents/Pd/extra prefix=~/Documents/Pd/extra/Gem/xtra
+~~~
+
+## PREBUILT BINARIES
+
+### Linux
+
+Chances are high, that Gem is already packaged for your distribution.
+
+Just run
+
+~~~sh
+apt install gem
+~~~
+
+(or the equivalent).
+
+
+
+### Microsoft Windows
+
+To install GEM on W32/W64 from pre-built binaries you have two options:
+
+1. installer (preferred method)
+ use the installer executable to install Gem into ...\pd\extra
+ (to _build_ the installer you will have to have NSIS installed
+ see build/win-nsis for details)
+
+2. `deken` (use Pd's *Find externals* feature)
+
+ please note that the deken package comes with all plugins.
+ in most cases, you won't need all of them, and having plugins
+ installed that you don't need, will considerably slow down load
+ time of patches and might leed to undesired side-effects.
+ therefore, if loading is too slow (or you experience weird
+ things), it might be a good idea to disable plugins you don't
+ need.
+ disabling plugins is as simple as deleting them (or moving them
+ into a subfolder)
+
+ plugins are files of the form: "gem_<type><NAME>.dll"
+ e.g. "gem_filmQT.dll" is a plugin for reading films using the
+ QuickTime framework.
+ a number of plugins (e.g. videoPYLON, videoHALCON, videoAVT,
+ videoNDI, videoDECKLINK,...) require proprietary libraries.
+ you need to obtain and install these libraries yourself; if you
+ haven't done so or don't own a device that can interact with those
+ libraries, you can safely remove these plugins.
+ if you have no clue what this is about, these plugins are most
+ likely not for you (so remove them)
+
+### Apple macOS-X
+
+Use the `deken` package.
+
+
+# RUNNING
+
+Just *installing* Gem is not enough !
+You will have to tell Pd that it should load that library !!
+You cannot create any Gem-objects without having loaded the Gem-library into Pd !!!
+
+Typically, you will load Gem by putting a `[declare -lib Gem]` object into any patch that uses Gem.
+
+Alternatively you could also add Gem to the libraries loaded at startup (via Pd's preference system),
+or by starting Pd with the `-lib Gem` cmdline arguments.
+
+Once you've successfully loaded Gem, you should see a kind of a splash screen on the Pd-console.
+
+If loading fails, make sure you have the proper binary for you OS:
+- windows: Gem.dll, Gem.m_i386, Gem.m_*
+- macOS-X: Gem.pd_darwin, Gem.d_fat, Gem.d_ppc, Gem.d_*
+- linux : Gem.pd_linux, Gem.l_i386, Gem.l_ia64, Gem.l_*
+- freeBSD: Gem.pd_freebsd, Gem.b_i386, Gem.b_*
+- irix : Gem.pd_irix
+ - ...
+
+# BUG-REPORTS:
+
+Please do not hesitate to report any crashes, weirdnesses or other issues, using
+our bugtracker at https://bugs.gem.iem.at
+or the gem-dev mailinglist (subscription at http://lists.puredata.info)
+
+If your mail only says "hey, it does not work !", it is an annoyance and no bug-report.
+Please specify at least the following things:
+- Operating-System (kernel-version,...)
+- video-card, driver
+- other hardware that is related to your problem (e.g.: camera)
+- does your system work with similar applications (e.g.: capture-software, openGL (games, "glxgears"))
+- what is the output of Pd when you start it with the "-verbose" flag
+ (e.g.:"pd -verbose -lib Gem")
+
+Please do not use the puredata bugtracker for reporting Gem-specific bugs.
+
+
+# FINAL NOTES
+have fun
+
+zmoelnig@iem.at
+
diff --git a/Gem/README.txt b/Gem/README.txt
deleted file mode 100644
index d87427c..0000000
--- a/Gem/README.txt
+++ /dev/null
@@ -1,157 +0,0 @@
-This is GEM - Graphics Environment for Multimedia
-=================================================
-You can get the current distribution from:
-https://gem.iem.at
-https://git.iem.at/pd/Gem
-https://github.com/umlaeute/Gem
-
-if you want to compile the newest (bleeding edge, and possibly unstable) source
-code yourself, you can get a copy from the public git repository:
-
- https://git.iem.at/pd/Gem.git
-
-There is also a mirror on github:
- https://github.com/umlaeute/Gem
-
-usually, you will only need the read-only repository, which you can get with
-
-$ git clone https://git.iem.at/pd/Gem.git
-
-=============================================
-NEW:::
-------
-
-Gem is now supported by W32, linux and macOS-X
-the IRIX version might work (but most probably will not): if you want to use Gem
-under IRIX, feel free to make it work and report failure and success to me, so i
-can incorporate any needed changes into the main Gem-trunk.
-
-for installation instructions see below
-
--------------------------------------
--------------------------------------
-
-INSTALLATION:
-=============
-
--------------------------------------
-To build & install GEM run:
-$ ./configure
-$ make
-$ make install
-
-
-note: when using a git-clone of the Gem sources, you first need to run
-`./autogen.sh` (which is a wrapper around `autoreconf -fiv`).
-
-note: that you might want to help Gem to find the Pd-headers, e.g. by doing
-$ ./configure --with-pd=/usr/include/pd
-try
-$ ./configure --help=recursive
-to see more options.
-
--------------------------------------
-To install GEM on W32:
-a) installer (preferred method)
- use the installer executable to install Gem into ...\pd\extra
- (to _build_ the installer you will have to have NSIS installed
- see build/win-nsis for details)
-
-b) archive (do it by hand)
-
- 1) unzip the GEM package
-
- 2) put the subfolders of Gem-<version>\ into a directory where Pd will
- find it. If you are using an up-to-date version of Pd (>=0.43), put them
- into the folder "Application Data\Pd\" in your home directory.
- For older versions of Pd, put them into the "extra" folder of your Pd
- installation.
- e.g. if you installed Pd as "C:\Program Files\Pd-0.43-0" you should
- end up with:
- "C:\Program Files\Pd-0.43-0\extra\Gem"
- and eventually with
- "C:\Program Files\Pd-0.43-0\extra\pix_drum"
- "C:\Program Files\Pd-0.43-0\extra\pix_mano"
- ...
-
- there is no need to copy the README.txt found in Gem-<version>\
-
- 3) please note that the archive comes with all plugins
- in most cases, you won't need all of them, and having plugins
- installed that you don't need, will considerably slow down load
- time of patches and might leed to undesired side-effects.
- therefore, if loading is too slow (or you experience weird
- things), it might be a good idea to disable plugins you don't
- need.
- disabling plugins is as simple as deleting them (or moving them
- into a subfolder)
-
- plugins are files of the form: "gem_<type><NAME>.dll"
- e.g. "gem_filmQT.dll" is a plugin for reading films using the
- QuickTime framework.
- in order to use videoPYLON, videoHALCON and videoAVT, you need
- to install proprietary libraries yourself; if you haven't done
- so or don't own a device that can interact with those libraries,
- you can safely remove these plugins.
- if you have no clue what this is about, these plugins are most
- likely not for you (so remove them)
-
-
-
--------------------------------------
--------------------------------------
-
-RUNNING:
-========
-
-just installing Gem is not enough !
-you will have to tell Pd that it should load that library !!
-you cannot create any Gem-objects without having loaded the Gem-library into Pd !!!
-
-make sure you have the proper binary for you OS
- - windows: Gem.dll, Gem.m_i386, Gem.m_*
- - macOS-X: Gem.pd_darwin, Gem.d_fat, Gem.d_ppc, Gem.d_*
- - linux : Gem.pd_linux, Gem.l_i386, Gem.l_ia64, Gem.l_*
- - freeBSD: Gem.pd_freebsd, Gem.b_i386, Gem.b_*
- - irix : Gem.pd_irix
- - ...
-
-when starting Pd, tell it to load Gem with the "-lib" flag
-if your Gem-binary lives in pd/extra/, you could just try "pd -lib Gem"
-if your Gem-binary lives somewhere else use something like "pd -lib /path/to/my/Gem"
-you could also use "pd -path /path/to/my -lib Gem"
-after loading Gem you will see a bit of a welcome message on the konsole
-
-NOTE: there *must not* be any file extension with the "-lib"-flag.
- e.g. this will fail miserably:
- "pd -lib Gem.dll"
-NOTE: please note the spelling: it is "Gem" and not "gem" nor "GEM"
-
-if you have problems loading any library including Gem, have a look at the
-Pd-documentation.
-if you have problems loading just Gem (but other libraries work), send me a
-bug-report (see below)
-
-BUG-REPORTS:
-============
-please do not hesitate to report any crashes, weirdnesses or other issues, using
-our bugtracker at https://bugs.gem.iem.at
-or the gem-dev mailinglist (subscription at http://lists.puredata.info)
-
-if your mail only says "hey, it does not work !", it is an annoyance and no bug-report
-please specify at least the following things:
- Operating-System (kernel-version,...)
- video-card, driver
- other hardware that is related to your problem (e.g.: camera)
- does your system work with similar applications (e.g.: capture-software,
- openGL (games, "glxgears")
- what is the output of Pd when you start it with the "-verbose" flag
- (e.g.:"pd -verbose -lib Gem")
-
-please do not use the puredata bugtracker for reporting Gem-specific bugs.
-
-----
-have fun
-
-zmoelnig@iem.at
-
diff --git a/Gem/examples/13.recursion/04.binary_tree.pd b/Gem/examples/13.recursion/04.binary_tree.pd
index 01dcd99..89cf3d8 100644
--- a/Gem/examples/13.recursion/04.binary_tree.pd
+++ b/Gem/examples/13.recursion/04.binary_tree.pd
@@ -1,4 +1,4 @@
-#N canvas 6 61 602 516 10;
+#N canvas 6 61 602 553 10;
#X declare -lib Gem;
#X obj 14 66 gemwin;
#X obj 14 9 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1
@@ -9,92 +9,104 @@
#X text 170 17 A tutorial on recursion in Gem;
#X text 170 37 (GPL) 2007 Claude Heiland-Allen <claude@mathr.co.uk>
;
-#X obj 24 163 r \$0-recurse;
-#X obj 68 133 v \$0-depth;
-#X obj 14 113 t a b;
-#X floatatom 91 96 5 0 0 2 max-depth - -;
-#X obj 14 253 t a a;
-#X obj 59 253 circle;
-#X obj 14 223 separator;
-#X obj 36 473 s \$0-recurse;
-#X obj 14 353 t b a b;
-#X obj 99 383 v \$0-depth;
-#X obj 99 403 - 1;
-#X obj 99 423 max 0;
+#X obj 24 233 r \$0-recurse;
+#X obj 88 213 v \$0-depth;
+#X obj 14 193 t a b;
+#X floatatom 111 176 5 0 17 2 max-depth - -;
+#X obj 14 293 t a a;
+#X obj 14 273 separator;
+#X obj 36 533 s \$0-recurse;
+#X obj 14 413 t b a b;
#X obj 99 443 v \$0-depth;
-#X obj 36 453 spigot;
-#X obj 14 383 v \$0-depth;
-#X obj 14 423 v \$0-depth;
-#X obj 14 403 + 1;
-#X obj 184 253 t a a;
-#X obj 229 253 circle;
-#X obj 206 473 s \$0-recurse;
-#X obj 184 353 t b a b;
-#X obj 269 383 v \$0-depth;
-#X obj 269 403 - 1;
-#X obj 269 423 max 0;
+#X obj 99 463 - 1;
+#X obj 99 483 max 0;
+#X obj 116 533 v \$0-depth;
+#X obj 36 513 spigot;
+#X obj 14 443 v \$0-depth;
+#X obj 14 483 v \$0-depth;
+#X obj 14 463 + 1;
+#X obj 184 293 t a a;
+#X obj 206 533 s \$0-recurse;
+#X obj 184 413 t b a b;
#X obj 269 443 v \$0-depth;
-#X obj 206 453 spigot;
-#X obj 184 383 v \$0-depth;
-#X obj 184 423 v \$0-depth;
-#X obj 184 403 + 1;
-#X obj 184 223 separator;
-#X obj 14 183 t a a;
-#X obj 184 303 translate 1.5 0 1 0;
-#X obj 184 323 scale 0.5;
-#X obj 14 323 scale 0.5;
-#X obj 14 303 translate 1.5 0 1 0;
-#X obj 14 283 rotate -30 0 0 1;
-#X obj 184 283 rotate 30 0 0 1;
-#X obj 68 113 f 4;
-#X text 170 77 The simplest recursive branching structure is one that
+#X obj 269 463 - 1;
+#X obj 269 483 max 0;
+#X obj 286 533 v \$0-depth;
+#X obj 206 513 spigot;
+#X obj 184 443 v \$0-depth;
+#X obj 184 483 v \$0-depth;
+#X obj 184 463 + 1;
+#X obj 184 273 separator;
+#X obj 14 253 t a a;
+#X obj 184 363 translate 1.5 0 1 0;
+#X obj 14 363 translate 1.5 0 1 0;
+#X obj 14 343 rotate -30 0 0 1;
+#X obj 184 343 rotate 30 0 0 1;
+#X obj 88 193 f 4;
+#X text 211 77 The simplest recursive branching structure is one that
splits into two at each branch. Essentially what we are creating is
a circle \, plus two transformed copies of the whole structure \, limited
to a maximums depth of recursion.;
-#X text 170 137 Be careful not to increase the max-depth too much:
+#X text 211 137 Be careful not to increase the max-depth too much:
the splitting at each recursion leads to an exponential increase in
the number of circles to be drawn.;
#X obj 497 15 declare -lib Gem;
+#X obj 259 506 t a a;
+#X obj 89 506 t a a;
+#X obj 14 135 scale 0.4 0.4 1;
+#X obj 14 383 scale 0.95 0.95 1;
+#X obj 184 383 scale 0.95 0.95 1;
+#X obj 259 316 circle;
+#X obj 59 316 circle;
+#X obj 59 293 color 1 0 0;
+#X obj 259 293 color 0 0 1;
+#X obj 14 114 translateXYZ 2 -1 0;
#X connect 1 0 0 0;
#X connect 2 0 0 0;
#X connect 3 0 0 0;
-#X connect 4 0 9 0;
-#X connect 7 0 37 0;
-#X connect 9 0 37 0;
-#X connect 9 1 44 0;
-#X connect 10 0 44 1;
-#X connect 11 0 42 0;
-#X connect 11 1 12 0;
-#X connect 13 0 11 0;
-#X connect 15 0 21 0;
-#X connect 15 1 20 0;
-#X connect 15 2 16 0;
+#X connect 4 0 53 0;
+#X connect 7 0 35 0;
+#X connect 9 0 35 0;
+#X connect 9 1 40 0;
+#X connect 10 0 40 1;
+#X connect 11 0 38 0;
+#X connect 11 1 51 0;
+#X connect 12 0 11 0;
+#X connect 14 0 20 0;
+#X connect 14 1 19 0;
+#X connect 14 2 15 0;
+#X connect 15 0 16 0;
#X connect 16 0 17 0;
-#X connect 17 0 18 0;
-#X connect 18 0 19 0;
-#X connect 18 0 20 1;
-#X connect 20 0 14 0;
-#X connect 21 0 23 0;
-#X connect 23 0 22 0;
-#X connect 24 0 43 0;
-#X connect 24 1 25 0;
-#X connect 27 0 33 0;
-#X connect 27 1 32 0;
-#X connect 27 2 28 0;
-#X connect 28 0 29 0;
-#X connect 29 0 30 0;
-#X connect 30 0 31 0;
-#X connect 30 0 32 1;
-#X connect 32 0 26 0;
-#X connect 33 0 35 0;
-#X connect 35 0 34 0;
-#X connect 36 0 24 0;
-#X connect 37 0 13 0;
-#X connect 37 1 36 0;
-#X connect 38 0 39 0;
-#X connect 39 0 27 0;
-#X connect 40 0 15 0;
-#X connect 41 0 40 0;
-#X connect 42 0 41 0;
-#X connect 43 0 38 0;
-#X connect 44 0 8 0;
+#X connect 17 0 45 0;
+#X connect 19 0 13 0;
+#X connect 20 0 22 0;
+#X connect 22 0 21 0;
+#X connect 23 0 39 0;
+#X connect 23 1 52 0;
+#X connect 25 0 31 0;
+#X connect 25 1 30 0;
+#X connect 25 2 26 0;
+#X connect 26 0 27 0;
+#X connect 27 0 28 0;
+#X connect 28 0 44 0;
+#X connect 30 0 24 0;
+#X connect 31 0 33 0;
+#X connect 33 0 32 0;
+#X connect 34 0 23 0;
+#X connect 35 0 12 0;
+#X connect 35 1 34 0;
+#X connect 36 0 48 0;
+#X connect 37 0 47 0;
+#X connect 38 0 37 0;
+#X connect 39 0 36 0;
+#X connect 40 0 8 0;
+#X connect 44 0 30 1;
+#X connect 44 1 29 0;
+#X connect 45 0 19 1;
+#X connect 45 1 18 0;
+#X connect 46 0 9 0;
+#X connect 47 0 14 0;
+#X connect 48 0 25 0;
+#X connect 51 0 50 0;
+#X connect 52 0 49 0;
+#X connect 53 0 46 0;
diff --git a/Gem/examples/13.recursion/05.n-ary_tree.pd b/Gem/examples/13.recursion/05.n-ary_tree.pd
index 308f5e5..7c21b45 100644
--- a/Gem/examples/13.recursion/05.n-ary_tree.pd
+++ b/Gem/examples/13.recursion/05.n-ary_tree.pd
@@ -1,7 +1,7 @@
-#N canvas 6 61 600 605 10;
+#N canvas 788 283 600 605 10;
#X declare -lib Gem;
#X obj 14 66 gemwin;
-#X obj 14 9 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1
+#X obj 14 9 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 1
;
#X msg 48 10 create;
#X msg 55 33 destroy;
@@ -9,75 +9,73 @@
#X text 170 17 A tutorial on recursion in Gem;
#X text 170 37 (GPL) 2007 Claude Heiland-Allen <claude@mathr.co.uk>
;
-#X obj 30 159 r \$0-recurse;
-#X obj 68 133 v \$0-depth;
-#X obj 14 113 t a b;
-#X floatatom 84 70 5 0 0 2 max-depth - -;
-#X obj 14 187 t a a;
-#X obj 60 188 circle;
-#X obj 14 325 separator;
-#X obj 36 536 s \$0-recurse;
-#X obj 14 416 t b a b;
-#X obj 99 446 v \$0-depth;
-#X obj 99 466 - 1;
-#X obj 99 486 max 0;
-#X obj 99 506 v \$0-depth;
-#X obj 36 516 spigot;
-#X obj 14 446 v \$0-depth;
-#X obj 14 486 v \$0-depth;
-#X obj 14 466 + 1;
-#X obj 68 113 f 4;
-#X obj 14 346 rotate 0 0 0 1;
-#X obj 126 303 * 72;
-#X obj 14 366 translate 2 0 1 0;
-#X obj 14 386 scale 0.35;
-#X obj 14 270 nrepeat 5;
-#X obj 119 236 t f f;
-#X floatatom 118 196 5 0 0 2 count - -;
-#X obj 149 259 swap 360;
-#X obj 149 282 /;
-#X obj 118 215 clip 1 16;
-#X obj 84 89 clip 1 6;
-#X text 170 77 Recursion can be combined with iteration to make complex
+#X obj 30 239 r \$0-recurse;
+#X obj 68 213 v \$0-depth;
+#X obj 14 193 t a b;
+#X floatatom 83 170 5 1 6 2 max-depth - -;
+#X obj 14 267 t a a;
+#X obj 14 375 separator;
+#X obj 36 586 s \$0-recurse;
+#X obj 14 466 t b a b;
+#X obj 99 496 v \$0-depth;
+#X obj 99 516 - 1;
+#X obj 99 536 max 0;
+#X obj 99 556 v \$0-depth;
+#X obj 36 566 spigot;
+#X obj 14 496 v \$0-depth;
+#X obj 14 536 v \$0-depth;
+#X obj 14 516 + 1;
+#X obj 68 193 f 4;
+#X obj 14 396 rotate 0 0 0 1;
+#X obj 156 353 * 72;
+#X obj 14 416 translate 2 0 1 0;
+#X obj 149 286 t f f;
+#X floatatom 149 266 5 1 16 2 count - -;
+#X obj 179 309 swap 360;
+#X obj 179 332 /;
+#X text 230 57 Recursion can be combined with iteration to make complex
structures. However \, using the [repeat] from Zexy is no longer enough.
Trying to use it with an external counter leads to re-entrancy bugs
\, because the [repeat] is retriggered before the counter has finished
\, which messes up the counter's internal state. [nrepeat] is a "repeat
with a built in counter" \, which is re-entrancy safe.;
#X obj 440 9 declare -lib Gem;
+#X obj 14 320 nrepeat 4;
+#X obj 14 133 scaleXYZ 0.02 0.02 1;
+#X obj 60 268 square 0.8;
+#X obj 14 113 rotate 20 1 0 0;
#X connect 1 0 0 0;
#X connect 2 0 0 0;
#X connect 3 0 0 0;
-#X connect 4 0 9 0;
+#X connect 4 0 36 0;
#X connect 7 0 11 0;
#X connect 9 0 11 0;
-#X connect 9 1 24 0;
-#X connect 10 0 35 0;
-#X connect 11 0 29 0;
-#X connect 11 1 12 0;
-#X connect 13 0 25 0;
-#X connect 15 0 21 0;
-#X connect 15 1 20 0;
-#X connect 15 2 16 0;
+#X connect 9 1 23 0;
+#X connect 10 0 23 1;
+#X connect 11 0 33 0;
+#X connect 11 1 35 0;
+#X connect 12 0 24 0;
+#X connect 14 0 20 0;
+#X connect 14 1 19 0;
+#X connect 14 2 15 0;
+#X connect 15 0 16 0;
#X connect 16 0 17 0;
#X connect 17 0 18 0;
-#X connect 18 0 19 0;
-#X connect 18 0 20 1;
-#X connect 20 0 14 0;
-#X connect 21 0 23 0;
-#X connect 23 0 22 0;
-#X connect 24 0 8 0;
-#X connect 25 0 27 0;
-#X connect 26 0 25 1;
-#X connect 27 0 28 0;
-#X connect 28 0 15 0;
-#X connect 29 0 13 0;
-#X connect 29 1 26 0;
-#X connect 30 0 29 1;
-#X connect 30 1 32 0;
-#X connect 31 0 34 0;
-#X connect 32 0 33 0;
-#X connect 32 1 33 1;
-#X connect 33 0 26 1;
-#X connect 34 0 30 0;
-#X connect 35 0 24 1;
+#X connect 17 0 19 1;
+#X connect 19 0 13 0;
+#X connect 20 0 22 0;
+#X connect 22 0 21 0;
+#X connect 23 0 8 0;
+#X connect 24 0 26 0;
+#X connect 25 0 24 1;
+#X connect 26 0 14 0;
+#X connect 27 0 33 1;
+#X connect 27 1 29 0;
+#X connect 28 0 27 0;
+#X connect 29 0 30 0;
+#X connect 29 1 30 1;
+#X connect 30 0 25 1;
+#X connect 33 0 12 0;
+#X connect 33 1 25 0;
+#X connect 34 0 9 0;
+#X connect 36 0 34 0;
diff --git a/Gem/examples/13.recursion/nrepeat.pd b/Gem/examples/13.recursion/nrepeat.pd
index 4d26d68..2761460 100644
--- a/Gem/examples/13.recursion/nrepeat.pd
+++ b/Gem/examples/13.recursion/nrepeat.pd
@@ -1,4 +1,5 @@
-#N canvas 0 0 413 451 10;
+#N canvas 6 61 413 451 10;
+#X declare -path zexy -lib zexy;
#X obj 78 26 inlet;
#X obj 78 60 t b a b;
#X obj 131 121 repeat \$1;
@@ -24,6 +25,7 @@
#X text 8 225 repeated;
#X text 119 381 counter;
#X text 30 419 nrepeat.pd (GPL) <claude@mathr.co.uk>;
+#X obj 227 386 declare -path zexy -lib zexy;
#X connect 0 0 1 0;
#X connect 1 0 7 0;
#X connect 1 1 2 0;
diff --git a/Gem/gem_filmAVF.so b/Gem/gem_filmAVF.so
index 7c323d0..af0e276 100755
--- a/Gem/gem_filmAVF.so
+++ b/Gem/gem_filmAVF.so
Binary files differ
diff --git a/Gem/gem_imageIO.so b/Gem/gem_imageIO.so
index 578c9f7..cfa742c 100755
--- a/Gem/gem_imageIO.so
+++ b/Gem/gem_imageIO.so
Binary files differ
diff --git a/Gem/gem_imageJPEG.so b/Gem/gem_imageJPEG.so
index 1c6b17f..ee9f965 100755
--- a/Gem/gem_imageJPEG.so
+++ b/Gem/gem_imageJPEG.so
Binary files differ
diff --git a/Gem/gem_imageSGI.so b/Gem/gem_imageSGI.so
index 2c13df5..96de812 100755
--- a/Gem/gem_imageSGI.so
+++ b/Gem/gem_imageSGI.so
Binary files differ
diff --git a/Gem/gem_imageSTB.so b/Gem/gem_imageSTB.so
index 968245c..ad5779b 100755
--- a/Gem/gem_imageSTB.so
+++ b/Gem/gem_imageSTB.so
Binary files differ
diff --git a/Gem/gem_imageTIFF.so b/Gem/gem_imageTIFF.so
index 673e4a3..1c73d7c 100755
--- a/Gem/gem_imageTIFF.so
+++ b/Gem/gem_imageTIFF.so
Binary files differ
diff --git a/Gem/gem_modelOBJ.so b/Gem/gem_modelOBJ.so
index 48a3d81..2484b84 100755
--- a/Gem/gem_modelOBJ.so
+++ b/Gem/gem_modelOBJ.so
Binary files differ
diff --git a/Gem/gem_recordNDI.so b/Gem/gem_recordNDI.so
index 5fb9524..86dec08 100755
--- a/Gem/gem_recordNDI.so
+++ b/Gem/gem_recordNDI.so
Binary files differ
diff --git a/Gem/gem_videoAVF.so b/Gem/gem_videoAVF.so
index ac1e9bd..bbc99d3 100755
--- a/Gem/gem_videoAVF.so
+++ b/Gem/gem_videoAVF.so
Binary files differ
diff --git a/Gem/gem_videoDECKLINK.so b/Gem/gem_videoDECKLINK.so
index 3c63134..1c7da74 100755
--- a/Gem/gem_videoDECKLINK.so
+++ b/Gem/gem_videoDECKLINK.so
Binary files differ
diff --git a/Gem/gem_videoNDI.so b/Gem/gem_videoNDI.so
index 578e452..ff393bf 100755
--- a/Gem/gem_videoNDI.so
+++ b/Gem/gem_videoNDI.so
Binary files differ
diff --git a/Gem/gemcocoawindow.pd_darwin b/Gem/gemcocoawindow.pd_darwin
index 99760ea..9bdb8af 100755
--- a/Gem/gemcocoawindow.pd_darwin
+++ b/Gem/gemcocoawindow.pd_darwin
Binary files differ
diff --git a/Gem/gemglutwindow.pd_darwin b/Gem/gemglutwindow.pd_darwin
index 82d4a11..7fb76ce 100755
--- a/Gem/gemglutwindow.pd_darwin
+++ b/Gem/gemglutwindow.pd_darwin
Binary files differ
diff --git a/Gem/gemmacoswindow.pd_darwin b/Gem/gemmacoswindow.pd_darwin
index 749428b..41dae9c 100755
--- a/Gem/gemmacoswindow.pd_darwin
+++ b/Gem/gemmacoswindow.pd_darwin
Binary files differ
diff --git a/Gem/pix_drum.pd_darwin b/Gem/pix_drum.pd_darwin
index 619aa2c..11c2f1d 100755
--- a/Gem/pix_drum.pd_darwin
+++ b/Gem/pix_drum.pd_darwin
Binary files differ
diff --git a/Gem/pix_fiducialtrack.pd_darwin b/Gem/pix_fiducialtrack.pd_darwin
index 5c5b694..3e546e8 100755
--- a/Gem/pix_fiducialtrack.pd_darwin
+++ b/Gem/pix_fiducialtrack.pd_darwin
Binary files differ
diff --git a/Gem/pix_hit.pd_darwin b/Gem/pix_hit.pd_darwin
index d1aae46..1a78032 100755
--- a/Gem/pix_hit.pd_darwin
+++ b/Gem/pix_hit.pd_darwin
Binary files differ
diff --git a/Gem/pix_mano.pd_darwin b/Gem/pix_mano.pd_darwin
index 4a21322..8328424 100755
--- a/Gem/pix_mano.pd_darwin
+++ b/Gem/pix_mano.pd_darwin
Binary files differ