diff options
-rwxr-xr-x | Gem/Gem.pd_darwin | bin | 5075220 -> 5075216 bytes | |||
-rw-r--r-- | Gem/README.md | 215 | ||||
-rw-r--r-- | Gem/README.txt | 157 | ||||
-rw-r--r-- | Gem/examples/13.recursion/04.binary_tree.pd | 168 | ||||
-rw-r--r-- | Gem/examples/13.recursion/05.n-ary_tree.pd | 120 | ||||
-rw-r--r-- | Gem/examples/13.recursion/nrepeat.pd | 4 | ||||
-rwxr-xr-x | Gem/gem_filmAVF.so | bin | 55996 -> 55996 bytes | |||
-rwxr-xr-x | Gem/gem_imageIO.so | bin | 37584 -> 37584 bytes | |||
-rwxr-xr-x | Gem/gem_imageJPEG.so | bin | 49088 -> 49088 bytes | |||
-rwxr-xr-x | Gem/gem_imageSGI.so | bin | 56360 -> 56360 bytes | |||
-rwxr-xr-x | Gem/gem_imageSTB.so | bin | 201256 -> 201256 bytes | |||
-rwxr-xr-x | Gem/gem_imageTIFF.so | bin | 64236 -> 64236 bytes | |||
-rwxr-xr-x | Gem/gem_modelOBJ.so | bin | 97560 -> 97560 bytes | |||
-rwxr-xr-x | Gem/gem_recordNDI.so | bin | 28696 -> 28696 bytes | |||
-rwxr-xr-x | Gem/gem_videoAVF.so | bin | 61172 -> 61172 bytes | |||
-rwxr-xr-x | Gem/gem_videoDECKLINK.so | bin | 69600 -> 69600 bytes | |||
-rwxr-xr-x | Gem/gem_videoNDI.so | bin | 45648 -> 45648 bytes | |||
-rwxr-xr-x | Gem/gemcocoawindow.pd_darwin | bin | 39192 -> 39192 bytes | |||
-rwxr-xr-x | Gem/gemglutwindow.pd_darwin | bin | 41924 -> 41924 bytes | |||
-rwxr-xr-x | Gem/gemmacoswindow.pd_darwin | bin | 39088 -> 39088 bytes | |||
-rwxr-xr-x | Gem/pix_drum.pd_darwin | bin | 25416 -> 25416 bytes | |||
-rwxr-xr-x | Gem/pix_fiducialtrack.pd_darwin | bin | 68884 -> 68884 bytes | |||
-rwxr-xr-x | Gem/pix_hit.pd_darwin | bin | 23432 -> 23432 bytes | |||
-rwxr-xr-x | Gem/pix_mano.pd_darwin | bin | 39660 -> 39660 bytes |
24 files changed, 367 insertions, 297 deletions
diff --git a/Gem/Gem.pd_darwin b/Gem/Gem.pd_darwin Binary files differindex 6e16692..4032415 100755 --- a/Gem/Gem.pd_darwin +++ b/Gem/Gem.pd_darwin 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 Binary files differindex 7c323d0..af0e276 100755 --- a/Gem/gem_filmAVF.so +++ b/Gem/gem_filmAVF.so diff --git a/Gem/gem_imageIO.so b/Gem/gem_imageIO.so Binary files differindex 578c9f7..cfa742c 100755 --- a/Gem/gem_imageIO.so +++ b/Gem/gem_imageIO.so diff --git a/Gem/gem_imageJPEG.so b/Gem/gem_imageJPEG.so Binary files differindex 1c6b17f..ee9f965 100755 --- a/Gem/gem_imageJPEG.so +++ b/Gem/gem_imageJPEG.so diff --git a/Gem/gem_imageSGI.so b/Gem/gem_imageSGI.so Binary files differindex 2c13df5..96de812 100755 --- a/Gem/gem_imageSGI.so +++ b/Gem/gem_imageSGI.so diff --git a/Gem/gem_imageSTB.so b/Gem/gem_imageSTB.so Binary files differindex 968245c..ad5779b 100755 --- a/Gem/gem_imageSTB.so +++ b/Gem/gem_imageSTB.so diff --git a/Gem/gem_imageTIFF.so b/Gem/gem_imageTIFF.so Binary files differindex 673e4a3..1c73d7c 100755 --- a/Gem/gem_imageTIFF.so +++ b/Gem/gem_imageTIFF.so diff --git a/Gem/gem_modelOBJ.so b/Gem/gem_modelOBJ.so Binary files differindex 48a3d81..2484b84 100755 --- a/Gem/gem_modelOBJ.so +++ b/Gem/gem_modelOBJ.so diff --git a/Gem/gem_recordNDI.so b/Gem/gem_recordNDI.so Binary files differindex 5fb9524..86dec08 100755 --- a/Gem/gem_recordNDI.so +++ b/Gem/gem_recordNDI.so diff --git a/Gem/gem_videoAVF.so b/Gem/gem_videoAVF.so Binary files differindex ac1e9bd..bbc99d3 100755 --- a/Gem/gem_videoAVF.so +++ b/Gem/gem_videoAVF.so diff --git a/Gem/gem_videoDECKLINK.so b/Gem/gem_videoDECKLINK.so Binary files differindex 3c63134..1c7da74 100755 --- a/Gem/gem_videoDECKLINK.so +++ b/Gem/gem_videoDECKLINK.so diff --git a/Gem/gem_videoNDI.so b/Gem/gem_videoNDI.so Binary files differindex 578e452..ff393bf 100755 --- a/Gem/gem_videoNDI.so +++ b/Gem/gem_videoNDI.so diff --git a/Gem/gemcocoawindow.pd_darwin b/Gem/gemcocoawindow.pd_darwin Binary files differindex 99760ea..9bdb8af 100755 --- a/Gem/gemcocoawindow.pd_darwin +++ b/Gem/gemcocoawindow.pd_darwin diff --git a/Gem/gemglutwindow.pd_darwin b/Gem/gemglutwindow.pd_darwin Binary files differindex 82d4a11..7fb76ce 100755 --- a/Gem/gemglutwindow.pd_darwin +++ b/Gem/gemglutwindow.pd_darwin diff --git a/Gem/gemmacoswindow.pd_darwin b/Gem/gemmacoswindow.pd_darwin Binary files differindex 749428b..41dae9c 100755 --- a/Gem/gemmacoswindow.pd_darwin +++ b/Gem/gemmacoswindow.pd_darwin diff --git a/Gem/pix_drum.pd_darwin b/Gem/pix_drum.pd_darwin Binary files differindex 619aa2c..11c2f1d 100755 --- a/Gem/pix_drum.pd_darwin +++ b/Gem/pix_drum.pd_darwin diff --git a/Gem/pix_fiducialtrack.pd_darwin b/Gem/pix_fiducialtrack.pd_darwin Binary files differindex 5c5b694..3e546e8 100755 --- a/Gem/pix_fiducialtrack.pd_darwin +++ b/Gem/pix_fiducialtrack.pd_darwin diff --git a/Gem/pix_hit.pd_darwin b/Gem/pix_hit.pd_darwin Binary files differindex d1aae46..1a78032 100755 --- a/Gem/pix_hit.pd_darwin +++ b/Gem/pix_hit.pd_darwin diff --git a/Gem/pix_mano.pd_darwin b/Gem/pix_mano.pd_darwin Binary files differindex 4a21322..8328424 100755 --- a/Gem/pix_mano.pd_darwin +++ b/Gem/pix_mano.pd_darwin |