aboutsummaryrefslogtreecommitdiff
path: root/Gem
diff options
context:
space:
mode:
Diffstat (limited to 'Gem')
-rwxr-xr-xGem/Gem.pd_darwinbin4963468 -> 4963284 bytes
-rw-r--r--Gem/develop/include/Gem/Base/GemBase.h1
-rw-r--r--Gem/develop/include/Gem/Base/GemPixObj.h6
-rw-r--r--Gem/develop/include/Gem/Base/GemShape.h1
-rw-r--r--Gem/develop/include/Gem/Base/TextBase.h1
-rw-r--r--Gem/develop/include/Gem/Gem/Image.h127
-rw-r--r--Gem/develop/include/Gem/Gem/State.h5
-rw-r--r--Gem/develop/include/Gem/Utils/any.h20
-rw-r--r--Gem/develop/include/Gem/Utils/is_pointer.h34
-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_imageMAGICK.sobin50948 -> 50948 bytes
-rwxr-xr-xGem/gem_imageSGI.sobin56268 -> 56268 bytes
-rwxr-xr-xGem/gem_imageTIFF.sobin64124 -> 64128 bytes
-rwxr-xr-xGem/gem_modelOBJ.sobin97556 -> 97560 bytes
-rwxr-xr-xGem/gem_videoAVF.sobin61072 -> 61072 bytes
-rw-r--r--Gem/gemcocoawindow-help.pd118
-rwxr-xr-xGem/gemcocoawindow.pd_darwinbin39108 -> 39108 bytes
-rw-r--r--Gem/gemglfw2window-help.pd126
-rw-r--r--Gem/gemglfw3window-help.pd132
-rw-r--r--Gem/gemglutwindow-help.pd145
-rwxr-xr-xGem/gemglutwindow.pd_darwinbin41844 -> 41844 bytes
-rw-r--r--Gem/gemglxwindow-help.pd118
-rw-r--r--Gem/gemmacoswindow-help.pd120
-rwxr-xr-xGem/gemmacoswindow.pd_darwinbin38964 -> 38964 bytes
-rw-r--r--Gem/gemmacwindow-help.pd143
-rw-r--r--Gem/gemsdlwindow-help.pd114
-rw-r--r--Gem/gemw32window-help.pd144
-rwxr-xr-xGem/pix_drum.pd_darwinbin25336 -> 25336 bytes
-rwxr-xr-xGem/pix_fiducialtrack.pd_darwinbin69040 -> 69040 bytes
-rwxr-xr-xGem/pix_hit.pd_darwinbin23356 -> 23356 bytes
-rwxr-xr-xGem/pix_mano.pd_darwinbin39584 -> 39584 bytes
33 files changed, 1281 insertions, 74 deletions
diff --git a/Gem/Gem.pd_darwin b/Gem/Gem.pd_darwin
index 6151264..8e1536a 100755
--- a/Gem/Gem.pd_darwin
+++ b/Gem/Gem.pd_darwin
Binary files differ
diff --git a/Gem/develop/include/Gem/Base/GemBase.h b/Gem/develop/include/Gem/Base/GemBase.h
index 8ff4678..cc752d5 100644
--- a/Gem/develop/include/Gem/Base/GemBase.h
+++ b/Gem/develop/include/Gem/Base/GemBase.h
@@ -15,7 +15,6 @@
#ifndef _INCLUDE__GEM_BASE_GEMBASE_H_
#define _INCLUDE__GEM_BASE_GEMBASE_H_
-#include "Gem/GemGL.h"
#include "Gem/ContextData.h"
#include "Base/CPPExtern.h"
diff --git a/Gem/develop/include/Gem/Base/GemPixObj.h b/Gem/develop/include/Gem/Base/GemPixObj.h
index b6a4076..e9a4f9b 100644
--- a/Gem/develop/include/Gem/Base/GemPixObj.h
+++ b/Gem/develop/include/Gem/Base/GemPixObj.h
@@ -18,9 +18,9 @@ LOG
#include "Base/GemBase.h"
#include "Gem/Image.h"
#include "Gem/Rectangle.h"
-#include "stdlib.h"
-#include "string.h"
-#include "math.h"
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
/*-----------------------------------------------------------------
-------------------------------------------------------------------
diff --git a/Gem/develop/include/Gem/Base/GemShape.h b/Gem/develop/include/Gem/Base/GemShape.h
index 47395c2..d990a63 100644
--- a/Gem/develop/include/Gem/Base/GemShape.h
+++ b/Gem/develop/include/Gem/Base/GemShape.h
@@ -16,6 +16,7 @@
#define _INCLUDE__GEM_BASE_GEMSHAPE_H_
#include "Base/GemBase.h"
+#include "Gem/GemGL.h"
#include <map>
/*-----------------------------------------------------------------
-------------------------------------------------------------------
diff --git a/Gem/develop/include/Gem/Base/TextBase.h b/Gem/develop/include/Gem/Base/TextBase.h
index 7c6b832..4c10cb7 100644
--- a/Gem/develop/include/Gem/Base/TextBase.h
+++ b/Gem/develop/include/Gem/Base/TextBase.h
@@ -26,6 +26,7 @@
#include "RTE/Outlet.h"
#include "Base/GemBase.h"
+#include "Gem/GemGL.h"
#include <vector>
#include <string>
diff --git a/Gem/develop/include/Gem/Gem/Image.h b/Gem/develop/include/Gem/Gem/Image.h
index bf61aef..c0b6eda 100644
--- a/Gem/develop/include/Gem/Gem/Image.h
+++ b/Gem/develop/include/Gem/Gem/Image.h
@@ -8,7 +8,7 @@ LOG
Copyright (c) 1997-1999 Mark Danks. mark@danks.org
Copyright (c) Günther Geiger. geiger@epy.co.at
- Copyright (c) 2001-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at
+ Copyright (c) 2001-2019 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at
For information on usage and redistribution, and for a DISCLAIMER OF ALL
WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution.
@@ -17,10 +17,9 @@ LOG
#ifndef _INCLUDE__GEM_GEM_IMAGE_H_
#define _INCLUDE__GEM_GEM_IMAGE_H_
-#include "Gem/GemGL.h"
-
#include <string.h>
#include <stdlib.h>
+#include "Gem/ExportDef.h"
///////////////////////////////////////////////////////////////////////////////
// Color component defines
@@ -28,29 +27,33 @@ LOG
// These should be used to reference the various color channels
///////////////////////////////////////////////////////////////////////////////
-/* RGBA */
-
-#if GL_RGBA_GEM == GL_RGBA
-const int chRed = 0;
-const int chGreen = 1;
-const int chBlue = 2;
-const int chAlpha = 3;
-#else
-const int chAlpha = 0;
-const int chRed = 1;
-const int chGreen = 2;
-const int chBlue = 3;
+/* RGBA: on Apple this is really BGRA_EXT */
+#ifndef __APPLE__
+# define GEM_RGBA 0x1908
+const int chRed = 0;
+const int chGreen = 1;
+const int chBlue = 2;
+const int chAlpha = 3;
+#else /* APPLE */
+# define GEM_RGBA 0x80E1
+const int chAlpha = 0;
+const int chRed = 1;
+const int chGreen = 2;
+const int chBlue = 3;
#endif
+#define GEM_RGB 0x1907
/* Gray */
-const int chGray = 0;
+#define GEM_GRAY 0x1909
+const int chGray = 0;
/* YUV422 */
-const int chU = 0;
-const int chY0 = 1;
-const int chV = 2;
-const int chY1 = 3;
+#define GEM_YUV 0x85B9
+const int chU = 0;
+const int chY0 = 1;
+const int chV = 2;
+const int chY1 = 3;
/*-----------------------------------------------------------------
-------------------------------------------------------------------
@@ -86,23 +89,23 @@ struct GEM_EXTERN imageStruct {
//////////
// dimensions of the image
- GLint xsize;
- GLint ysize;
+ int xsize;
+ int ysize;
//////////
// (average) width of 1 pixel (LUMINANCE = 1, RGBA = 4, YUV = 2)
- GLint csize;
+ int csize;
//////////
// data type - always GL_UNSIGNED_BYTE (except for OS X)
- GLenum type;
+ unsigned int type;
//////////
// the format - either GL_RGBA, GL_LUMINANCE
// or GL_YCBCR_422_GEM (which is on mac-computers GL_YCBCR_422_APPLE)
- GLenum format;
+ unsigned int format;
- //////////
+ /////////
// is this owned by us (? what about underscores ?)
int notowned;
@@ -136,10 +139,10 @@ struct GEM_EXTERN imageStruct {
/////////
// gets the color of a pixel
- virtual void getRGB(int X, int Y, unsigned char*r, unsigned char*g,
+ virtual bool getRGB(int X, int Y, unsigned char*r, unsigned char*g,
unsigned char*b, unsigned char*a=NULL) const;
- virtual void getGrey(int X, int Y, unsigned char*g) const;
- virtual void getYUV(int X, int Y, unsigned char*y, unsigned char*u,
+ virtual bool getGrey(int X, int Y, unsigned char*g) const;
+ virtual bool getYUV(int X, int Y, unsigned char*y, unsigned char*u,
unsigned char*v) const;
/* following will set the whole image-data to either black or white
@@ -192,64 +195,64 @@ struct GEM_EXTERN imageStruct {
* this is maybe not really clean (the meta-data is stored in the destination,
* while the source has no meta-data of its own)
*/
- virtual void convertTo (imageStruct*to, GLenum dest_format=0) const;
- virtual void convertFrom(const imageStruct*from, GLenum dest_format=0);
-
- virtual void fromRGB (const unsigned char* orgdata);
- virtual void fromRGBA (const unsigned char* orgdata);
- virtual void fromBGR (const unsigned char* orgdata);
- virtual void fromBGRA (const unsigned char* orgdata);
- virtual void fromRGB16 (const unsigned char* orgdata);
- virtual void fromABGR (const unsigned char* orgdata);
- virtual void fromARGB (const unsigned char* orgdata);
- virtual void fromGray (const unsigned char* orgdata);
- virtual void fromGray (short* orgdata);
- virtual void fromUYVY (const unsigned char* orgdata);
- virtual void fromYUY2 (const unsigned char* orgdata); // YUYV
- virtual void fromYVYU (const unsigned char* orgdata);
+ virtual bool convertTo (imageStruct*to, unsigned int dest_format=0) const;
+ virtual bool convertFrom(const imageStruct*from, unsigned int dest_format=0);
+
+ virtual bool fromRGB (const unsigned char* orgdata);
+ virtual bool fromRGBA (const unsigned char* orgdata);
+ virtual bool fromBGR (const unsigned char* orgdata);
+ virtual bool fromBGRA (const unsigned char* orgdata);
+ virtual bool fromRGB16 (const unsigned char* orgdata);
+ virtual bool fromABGR (const unsigned char* orgdata);
+ virtual bool fromARGB (const unsigned char* orgdata);
+ virtual bool fromGray (const unsigned char* orgdata);
+ virtual bool fromGray (const short* orgdata);
+ virtual bool fromUYVY (const unsigned char* orgdata);
+ virtual bool fromYUY2 (const unsigned char* orgdata); // YUYV
+ virtual bool fromYVYU (const unsigned char* orgdata);
/* planar YUV420: this is rather generic and not really YV12 only */
- virtual void fromYV12 (const unsigned char* Y, const unsigned char*U,
+ virtual bool fromYV12 (const unsigned char* Y, const unsigned char*U,
const unsigned char*V);
/* assume that the planes are near each other: YVU */
- virtual void fromYV12 (const unsigned char* orgdata);
+ virtual bool fromYV12 (const unsigned char* orgdata);
/* assume that the planes are near each other: YVU */
- virtual void fromYU12 (const unsigned char* orgdata);
+ virtual bool fromYU12 (const unsigned char* orgdata);
/* overloading the above two in order to accept pdp YV12 packets */
- virtual void fromYV12 (const short* Y, const short*U, const short*V);
- virtual void fromYV12 (const short* orgdata);
+ virtual bool fromYV12 (const short* Y, const short*U, const short*V);
+ virtual bool fromYV12 (const short* orgdata);
/* aliases */
- virtual void fromYUV422 (const unsigned char* orgdata)
+ virtual bool fromYUV422 (const unsigned char* orgdata)
{
- fromUYVY(orgdata);
+ return fromUYVY(orgdata);
}
- virtual void fromYUV420P(const unsigned char* orgdata)
+ virtual bool fromYUV420P(const unsigned char* orgdata)
{
- fromYV12(orgdata);
+ return fromYV12(orgdata);
}
- virtual void fromYUV420P(const unsigned char*Y,const unsigned char*U,
+ virtual bool fromYUV420P(const unsigned char*Y,const unsigned char*U,
const unsigned char*V)
{
- fromYV12(Y,U,V);
+ return fromYV12(Y,U,V);
}
// "data" points to the image.
// the memory could(!) be reserved by this class or someone else
// "notowned" should be set to "1", if "data" points to foreign memory
// "data" is not freed directly, when the destructor is called
- unsigned char *data; // the pointer to the data
+ unsigned char *data; // the pointer to the data
private:
// "pdata" is the private data, and is the memory reserved by this class
// this data is freed when the destructor is called
- unsigned char *pdata;
+ unsigned char *pdata;
// "datasize" is the size of data reserved at "pdata"
- size_t datasize;
+ size_t datasize;
public:
//////////
// true if the image is flipped horizontally (origin is upper-left)
// false if the image is openGL-conformant (origin is lower-left)
- GLboolean upsidedown;
+ bool upsidedown;
/* make the image orientation openGL-conformant */
virtual void fixUpDown(void);
@@ -270,17 +273,17 @@ struct GEM_EXTERN pixBlock {
//////////
// the block's image
- imageStruct image;
+ imageStruct image;
//////////
// is this a newimage since last time?
// ie, has it been refreshed
- bool newimage;
+ bool newimage;
//////////
// keeps track of when new films are loaded
// useful for rectangle_textures on OSX
- bool newfilm;
+ bool newfilm;
};
///////////////////////////////////////////////////////////////////////////////
diff --git a/Gem/develop/include/Gem/Gem/State.h b/Gem/develop/include/Gem/Gem/State.h
index 173acf9..4273e46 100644
--- a/Gem/develop/include/Gem/Gem/State.h
+++ b/Gem/develop/include/Gem/Gem/State.h
@@ -208,7 +208,10 @@ public:
// key not found
return false;
}
- value=gem::any_cast<T>(val);
+ if(_PIX == key)
+ value=gem::any_cast<T>(val, true);
+ else
+ value=gem::any_cast<T>(val);
return true;
} catch (gem::bad_any_cast&x) {
::verbose(3, "%s:%d [%s] %d :: %s", __FILE__, __LINE__, __FUNCTION__, key,
diff --git a/Gem/develop/include/Gem/Utils/any.h b/Gem/develop/include/Gem/Utils/any.h
index 0861e19..435f3a3 100644
--- a/Gem/develop/include/Gem/Utils/any.h
+++ b/Gem/develop/include/Gem/Utils/any.h
@@ -27,7 +27,9 @@
#include <algorithm>
#include <string>
-//#define GEM_ANY_TYPEID_HACK
+#include "is_pointer.h"
+
+//#define GEM_ANY_TYPEID_HACK 1
namespace gem
{
@@ -293,6 +295,11 @@ struct GEM_EXTERN any {
{
return (get_type() == typeid(T));
}
+ template<typename T>
+ bool compatible(T&x) const
+ {
+ return compatible<T>();
+ }
// implicit casting is disabled by default
@@ -329,11 +336,10 @@ struct GEM_EXTERN any {
};
// boost::any-like casting
-
template<typename T>
-T* any_cast(any* this_)
+T* any_cast(any* this_, bool force)
{
- if (this_->get_type() != typeid(T)) {
+ if (!force && !this_->compatible<T>()) {
throw bad_any_cast(this_->get_type(), typeid(T));
}
if (sizeof(T) <= sizeof(void*)) {
@@ -346,13 +352,13 @@ T* any_cast(any* this_)
template<typename T>
T const* any_cast(any const* this_)
{
- return any_cast<T>(const_cast<any*>(this_));
+ return any_cast<T>(const_cast<any*>(this_), false);
}
template<typename T>
-T const& any_cast(any const& this_)
+T const& any_cast(any const& this_, bool force_pointers=false)
{
- return *any_cast<T>(const_cast<any*>(&this_));
+ return *any_cast<T>(const_cast<any*>(&this_), force_pointers && is_pointer<T>());
}
#ifdef GEM_INTERNAL
// Note: The "unsafe" versions of any_cast are not part of the
diff --git a/Gem/develop/include/Gem/Utils/is_pointer.h b/Gem/develop/include/Gem/Utils/is_pointer.h
new file mode 100644
index 0000000..6c5cb16
--- /dev/null
+++ b/Gem/develop/include/Gem/Utils/is_pointer.h
@@ -0,0 +1,34 @@
+/*
+ * Copyright © 2010 fredoverflow https://stackoverflow.com/a/3177723/1169096
+ * Copyright © 2019 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at
+ */
+
+#ifndef GEM_IS_POINTER_H_
+#define GEM_IS_POINTER_H_
+
+namespace gem
+{
+ template <typename T>
+ struct is_pointer_type
+ {
+ enum { value = false };
+ };
+
+ template <typename T>
+ struct is_pointer_type<T*>
+ {
+ enum { value = true };
+ };
+
+ template <typename T>
+ bool is_pointer(void)
+ {
+ return is_pointer_type<T>::value;
+ }
+ template <typename T>
+ bool is_pointer(const T&)
+ {
+ return is_pointer_type<T>::value;
+ }
+};
+#endif // GEM_IS_POITNER_H_
diff --git a/Gem/gem_filmAVF.so b/Gem/gem_filmAVF.so
index 7c922fc..777d963 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 cb03553..1e3c247 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 87d6026..ad598fa 100755
--- a/Gem/gem_imageJPEG.so
+++ b/Gem/gem_imageJPEG.so
Binary files differ
diff --git a/Gem/gem_imageMAGICK.so b/Gem/gem_imageMAGICK.so
index 00c784d..6ffe34c 100755
--- a/Gem/gem_imageMAGICK.so
+++ b/Gem/gem_imageMAGICK.so
Binary files differ
diff --git a/Gem/gem_imageSGI.so b/Gem/gem_imageSGI.so
index db22b37..1eafb37 100755
--- a/Gem/gem_imageSGI.so
+++ b/Gem/gem_imageSGI.so
Binary files differ
diff --git a/Gem/gem_imageTIFF.so b/Gem/gem_imageTIFF.so
index c59fd7b..7f51a37 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 885518d..71bf247 100755
--- a/Gem/gem_modelOBJ.so
+++ b/Gem/gem_modelOBJ.so
Binary files differ
diff --git a/Gem/gem_videoAVF.so b/Gem/gem_videoAVF.so
index 5d9adcf..e79d0fe 100755
--- a/Gem/gem_videoAVF.so
+++ b/Gem/gem_videoAVF.so
Binary files differ
diff --git a/Gem/gemcocoawindow-help.pd b/Gem/gemcocoawindow-help.pd
new file mode 100644
index 0000000..f7fb1df
--- /dev/null
+++ b/Gem/gemcocoawindow-help.pd
@@ -0,0 +1,118 @@
+#N canvas 30 105 957 728 10;
+#X declare -lib Gem;
+#X obj 367 612 gemcocoawindow;
+#X obj 448 642 print unknown.message;
+#X obj 367 645 route bang;
+#X obj 367 668 bng 15 250 50 0 empty empty render! 17 7 0 10 -262144
+-4034 -1;
+#X obj 674 703 print info;
+#X obj 424 697 s \$0-info;
+#X text 485 697 feedback about the window;
+#X obj 674 657 r \$0-info;
+#X obj 674 680 spigot;
+#X obj 721 682 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 407 45 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 85 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 125 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 165 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 205 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 245 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 285 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 325 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 365 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 405 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 367 506 t a;
+#X obj 407 445 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X msg 421 51 create;
+#X msg 421 90 bang;
+#X msg 421 130 destroy;
+#X text 515 91 clear window \, activate openGL-context \, and send
+render-bang;
+#X text 515 132 destroy the window;
+#X text 515 51 create the window;
+#X text 515 171 single-buffered(1) or double-buffered(2) rendering
+;
+#X msg 421 170 buffer 2;
+#X msg 421 210 FSAA \$1;
+#X text 515 211 Full Screen Antia Aliasing mode;
+#X msg 421 250 title foo;
+#X text 515 251 title of the window;
+#X msg 421 290 dimen 640 460;
+#X text 515 291 change dimension of the window;
+#X msg 421 330 offset 100 100;
+#X text 515 331 change position of the window;
+#X text 515 411 turn on/off window borders;
+#X text 515 451 (don't) show cursorwhen it's on the window;
+#X obj 407 525 cnv 15 470 30 empty empty empty 20 12 0 14 -258113 -66577
+0;
+#X text 465 17 standard messages;
+#X msg 421 530 blurb;
+#X text 515 531 some random unknown message;
+#X obj 407 565 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#N canvas 76 289 890 395 specific 0;
+#X obj 88 303 outlet;
+#X obj 88 231 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X msg 88 254 menubar \$1;
+#X connect 1 0 2 0;
+#X connect 2 0 0 0;
+#X restore 411 571 pd specific messages;
+#X text 47 51 [gemcocoawindow];
+#X text 18 79 part of Gem;
+#X obj 38 693 declare -lib Gem;
+#X text 24 669 last updated for Gem-0.94;
+#X msg 421 450 cursor \$1;
+#X obj 490 452 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X msg 421 410 border \$1;
+#X obj 490 412 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 501 372 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X text 515 371 switch fullscreen mode on/off;
+#X msg 421 370 fullscreen \$1;
+#X obj 235 348 metro 100;
+#X obj 235 326 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X text 13 145 [gemcocoawindow] uses Cocoa to create windows.;
+#X text 16 171 afaict \, it is non-functional. you probably should
+use [gemmacoswindow] instead.;
+#X connect 0 0 2 0;
+#X connect 0 1 1 0;
+#X connect 2 0 3 0;
+#X connect 2 1 5 0;
+#X connect 7 0 8 0;
+#X connect 8 0 4 0;
+#X connect 9 0 8 1;
+#X connect 20 0 0 0;
+#X connect 22 0 20 0;
+#X connect 23 0 20 0;
+#X connect 24 0 20 0;
+#X connect 29 0 20 0;
+#X connect 30 0 20 0;
+#X connect 32 0 20 0;
+#X connect 34 0 20 0;
+#X connect 36 0 20 0;
+#X connect 42 0 0 0;
+#X connect 45 0 0 0;
+#X connect 50 0 20 0;
+#X connect 51 0 50 0;
+#X connect 52 0 20 0;
+#X connect 53 0 52 0;
+#X connect 54 0 56 0;
+#X connect 56 0 20 0;
+#X connect 57 0 20 0;
+#X connect 58 0 57 0;
diff --git a/Gem/gemcocoawindow.pd_darwin b/Gem/gemcocoawindow.pd_darwin
index 18eff44..b2e3482 100755
--- a/Gem/gemcocoawindow.pd_darwin
+++ b/Gem/gemcocoawindow.pd_darwin
Binary files differ
diff --git a/Gem/gemglfw2window-help.pd b/Gem/gemglfw2window-help.pd
new file mode 100644
index 0000000..ff8d292
--- /dev/null
+++ b/Gem/gemglfw2window-help.pd
@@ -0,0 +1,126 @@
+#N canvas 70 90 957 728 10;
+#X declare -lib Gem;
+#X obj 367 612 gemglfw2window;
+#X obj 442 642 print unknown.message;
+#X obj 367 645 route bang;
+#X obj 367 668 bng 15 250 50 0 empty empty render! 17 7 0 10 -262144
+-4034 -1;
+#X obj 674 703 print info;
+#X obj 424 697 s \$0-info;
+#X text 485 697 feedback about the window;
+#X obj 674 657 r \$0-info;
+#X obj 674 680 spigot;
+#X obj 721 682 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 407 45 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 85 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 125 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 165 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 205 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 245 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 285 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 325 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 365 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 405 cnv 15 470 30 empty empty empty 20 12 0 14 -260097 -66577
+0;
+#X obj 367 506 t a;
+#X obj 407 445 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X msg 421 51 create;
+#X msg 421 90 bang;
+#X msg 421 130 destroy;
+#X text 515 91 clear window \, activate openGL-context \, and send
+render-bang;
+#X text 515 132 destroy the window;
+#X text 515 51 create the window;
+#X text 515 171 single-buffered(1) or double-buffered(2) rendering
+;
+#X msg 421 170 buffer 2;
+#X msg 421 210 FSAA \$1;
+#X text 515 211 Full Screen Antia Aliasing mode;
+#X msg 421 250 title foo;
+#X text 515 251 title of the window;
+#X msg 421 290 dimen 640 460;
+#X text 515 291 change dimension of the window;
+#X msg 421 330 offset 100 100;
+#X text 515 331 change position of the window;
+#X text 515 411 turn on/off window borders;
+#X text 515 451 (don't) show cursorwhen it's on the window;
+#X obj 407 525 cnv 15 470 30 empty empty empty 20 12 0 14 -258113 -66577
+0;
+#X text 465 17 standard messages;
+#X msg 421 530 blurb;
+#X text 515 531 some random unknown message;
+#X obj 407 565 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#N canvas 413 484 890 395 specific 0;
+#X obj 88 303 outlet;
+#X msg 88 40 offset \$1 \$1;
+#X floatatom 88 21 5 0 0 0 - - -;
+#X floatatom 128 61 5 0 0 0 - - -;
+#X msg 128 80 dimen \$1 \$1;
+#X text 201 46 change window dimension/position on the fly;
+#X msg 173 272 glprofile 2 1;
+#X text 271 267 switch to openGL-profile (<major> <minor>) for newly
+created windows;
+#X connect 1 0 0 0;
+#X connect 2 0 1 0;
+#X connect 3 0 4 0;
+#X connect 4 0 0 0;
+#X connect 6 0 0 0;
+#X restore 411 571 pd specific messages;
+#X text 47 51 [gemglfw2window];
+#X text 18 79 part of Gem;
+#X obj 38 693 declare -lib Gem;
+#X text 24 669 last updated for Gem-0.94;
+#X msg 421 450 cursor \$1;
+#X obj 490 452 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X msg 421 410 border \$1;
+#X obj 490 412 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 501 372 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X text 515 371 switch fullscreen mode on/off;
+#X msg 421 370 fullscreen \$1;
+#X obj 235 348 metro 100;
+#X obj 235 326 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X text 765 411 (NOT IMPLEMENTED);
+#X text 13 145 [gemglfw2window] uses GLFW (version2) to create windows.
+;
+#X connect 0 0 2 0;
+#X connect 0 1 1 0;
+#X connect 2 0 3 0;
+#X connect 2 1 5 0;
+#X connect 7 0 8 0;
+#X connect 8 0 4 0;
+#X connect 9 0 8 1;
+#X connect 20 0 0 0;
+#X connect 22 0 20 0;
+#X connect 23 0 20 0;
+#X connect 24 0 20 0;
+#X connect 29 0 20 0;
+#X connect 30 0 20 0;
+#X connect 32 0 20 0;
+#X connect 34 0 20 0;
+#X connect 36 0 20 0;
+#X connect 42 0 0 0;
+#X connect 45 0 0 0;
+#X connect 50 0 20 0;
+#X connect 51 0 50 0;
+#X connect 52 0 20 0;
+#X connect 53 0 52 0;
+#X connect 54 0 56 0;
+#X connect 56 0 20 0;
+#X connect 57 0 20 0;
+#X connect 58 0 57 0;
diff --git a/Gem/gemglfw3window-help.pd b/Gem/gemglfw3window-help.pd
new file mode 100644
index 0000000..4f348ff
--- /dev/null
+++ b/Gem/gemglfw3window-help.pd
@@ -0,0 +1,132 @@
+#N canvas 70 90 957 728 10;
+#X declare -lib Gem;
+#X obj 367 612 gemglfw3window;
+#X obj 442 642 print unknown.message;
+#X obj 367 645 route bang;
+#X obj 367 668 bng 15 250 50 0 empty empty render! 17 7 0 10 -262144
+-4034 -1;
+#X obj 674 703 print info;
+#X obj 424 697 s \$0-info;
+#X text 485 697 feedback about the window;
+#X obj 674 657 r \$0-info;
+#X obj 674 680 spigot;
+#X obj 721 682 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 407 45 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 85 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 125 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 165 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 205 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 245 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 285 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 325 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 365 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 405 cnv 15 470 30 empty empty empty 20 12 0 14 -260097 -66577
+0;
+#X obj 367 506 t a;
+#X obj 407 445 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X msg 421 51 create;
+#X msg 421 90 bang;
+#X msg 421 130 destroy;
+#X text 515 91 clear window \, activate openGL-context \, and send
+render-bang;
+#X text 515 132 destroy the window;
+#X text 515 51 create the window;
+#X text 515 171 single-buffered(1) or double-buffered(2) rendering
+;
+#X msg 421 170 buffer 2;
+#X msg 421 210 FSAA \$1;
+#X text 515 211 Full Screen Antia Aliasing mode;
+#X msg 421 250 title foo;
+#X text 515 251 title of the window;
+#X msg 421 290 dimen 640 460;
+#X text 515 291 change dimension of the window;
+#X msg 421 330 offset 100 100;
+#X text 515 331 change position of the window;
+#X text 515 411 turn on/off window borders;
+#X text 515 451 (don't) show cursorwhen it's on the window;
+#X obj 407 525 cnv 15 470 30 empty empty empty 20 12 0 14 -258113 -66577
+0;
+#X text 465 17 standard messages;
+#X msg 421 530 blurb;
+#X text 515 531 some random unknown message;
+#X obj 407 565 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#N canvas 413 484 890 395 specific 0;
+#X obj 88 303 outlet;
+#X msg 88 40 offset \$1 \$1;
+#X floatatom 88 21 5 0 0 0 - - -;
+#X floatatom 128 61 5 0 0 0 - - -;
+#X msg 128 80 dimen \$1 \$1;
+#X text 201 46 change window dimension/position on the fly;
+#X obj 173 203 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X msg 173 222 gles \$1;
+#X text 233 226 switch to openGL-ES (for newly created windows);
+#X msg 173 272 glprofile 2 1;
+#X text 271 267 switch to openGL-profile (<major> <minor>) for newly
+created windows;
+#X connect 1 0 0 0;
+#X connect 2 0 1 0;
+#X connect 3 0 4 0;
+#X connect 4 0 0 0;
+#X connect 6 0 7 0;
+#X connect 7 0 0 0;
+#X connect 9 0 0 0;
+#X restore 411 571 pd specific messages;
+#X text 47 51 [gemglfw3window];
+#X text 18 79 part of Gem;
+#X obj 38 693 declare -lib Gem;
+#X text 24 669 last updated for Gem-0.94;
+#X msg 421 450 cursor \$1;
+#X obj 490 452 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X msg 421 410 border \$1;
+#X obj 490 412 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 501 372 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X text 515 371 switch fullscreen mode on/off;
+#X msg 421 370 fullscreen \$1;
+#X obj 235 348 metro 100;
+#X obj 235 326 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X text 765 411 (NOT IMPLEMENTED);
+#X text 13 145 [gemglfw3window] uses GLFW (version3) to create windows.
+;
+#X connect 0 0 2 0;
+#X connect 0 1 1 0;
+#X connect 2 0 3 0;
+#X connect 2 1 5 0;
+#X connect 7 0 8 0;
+#X connect 8 0 4 0;
+#X connect 9 0 8 1;
+#X connect 20 0 0 0;
+#X connect 22 0 20 0;
+#X connect 23 0 20 0;
+#X connect 24 0 20 0;
+#X connect 29 0 20 0;
+#X connect 30 0 20 0;
+#X connect 32 0 20 0;
+#X connect 34 0 20 0;
+#X connect 36 0 20 0;
+#X connect 42 0 0 0;
+#X connect 45 0 0 0;
+#X connect 50 0 20 0;
+#X connect 51 0 50 0;
+#X connect 52 0 20 0;
+#X connect 53 0 52 0;
+#X connect 54 0 56 0;
+#X connect 56 0 20 0;
+#X connect 57 0 20 0;
+#X connect 58 0 57 0;
diff --git a/Gem/gemglutwindow-help.pd b/Gem/gemglutwindow-help.pd
new file mode 100644
index 0000000..395198d
--- /dev/null
+++ b/Gem/gemglutwindow-help.pd
@@ -0,0 +1,145 @@
+#N canvas 30 105 957 728 10;
+#X declare -lib Gem;
+#X obj 367 612 gemglutwindow;
+#X obj 442 642 print unknown.message;
+#X obj 367 645 route bang;
+#X obj 367 668 bng 15 250 50 0 empty empty render! 17 7 0 10 -262144
+-4034 -1;
+#X obj 674 703 print info;
+#X obj 424 697 s \$0-info;
+#X text 485 697 feedback about the window;
+#X obj 674 657 r \$0-info;
+#X obj 674 680 spigot;
+#X obj 721 682 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 407 45 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 85 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 125 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 165 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 205 cnv 15 470 30 empty empty empty 20 12 0 14 -260097 -66577
+0;
+#X obj 407 245 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 285 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 325 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 365 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 405 cnv 15 470 30 empty empty empty 20 12 0 14 -260097 -66577
+0;
+#X obj 367 506 t a;
+#X obj 407 445 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X msg 421 51 create;
+#X msg 421 90 bang;
+#X msg 421 130 destroy;
+#X text 515 91 clear window \, activate openGL-context \, and send
+render-bang;
+#X text 515 132 destroy the window;
+#X text 515 51 create the window;
+#X text 515 171 single-buffered(1) or double-buffered(2) rendering
+;
+#X msg 421 170 buffer 2;
+#X msg 421 210 FSAA \$1;
+#X text 515 211 Full Screen Antia Aliasing mode;
+#X msg 421 250 title foo;
+#X text 515 251 title of the window;
+#X msg 421 290 dimen 640 460;
+#X text 515 291 change dimension of the window;
+#X msg 421 330 offset 100 100;
+#X text 515 331 change position of the window;
+#X text 515 411 turn on/off window borders;
+#X text 515 451 (don't) show cursorwhen it's on the window;
+#X obj 407 525 cnv 15 470 30 empty empty empty 20 12 0 14 -258113 -66577
+0;
+#X text 465 17 standard messages;
+#X msg 421 530 blurb;
+#X text 515 531 some random unknown message;
+#X obj 407 565 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#N canvas 76 289 890 395 specific 0;
+#X obj 88 303 outlet;
+#X msg 88 40 offset \$1 \$1;
+#X floatatom 88 21 5 0 0 0 - - -;
+#X floatatom 128 61 5 0 0 0 - - -;
+#X msg 128 80 dimen \$1 \$1;
+#X text 201 46 change window dimension/position on the fly;
+#X msg 288 97 menu;
+#X obj 289 127 r \$0-info;
+#X obj 289 150 route menu;
+#X floatatom 289 243 5 0 0 0 - - -;
+#X obj 289 264 i;
+#X msg 289 290 addMenu \$1 File 0 \, addMenu \$1 Gem 2 \, addMenu \$1
+Quit 1;
+#X obj 289 176 route new float;
+#X floatatom 416 212 5 0 0 1 menu - -;
+#X text 326 242 ID of the newly created menu;
+#X text 320 271 add entries to the new menu, f 62;
+#X text 625 290 addMenu <menuid> <title> <value>;
+#X text 510 212 <- selected menu;
+#X text 336 96 <- create a new right-click menu;
+#X connect 1 0 0 0;
+#X connect 2 0 1 0;
+#X connect 3 0 4 0;
+#X connect 4 0 0 0;
+#X connect 6 0 0 0;
+#X connect 7 0 8 0;
+#X connect 8 0 12 0;
+#X connect 9 0 10 0;
+#X connect 10 0 11 0;
+#X connect 11 0 0 0;
+#X connect 12 0 9 0;
+#X connect 12 1 13 0;
+#X restore 411 571 pd specific messages;
+#X text 47 51 [gemglutwindow];
+#X text 18 79 part of Gem;
+#X obj 38 693 declare -lib Gem;
+#X text 24 669 last updated for Gem-0.94;
+#X text 13 145 [gemglutwindow] uses GLUT (the openGL Utility Toolkit)
+to create windows.;
+#X msg 421 450 cursor \$1;
+#X obj 490 452 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X msg 421 410 border \$1;
+#X obj 490 412 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 501 372 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X text 515 371 switch fullscreen mode on/off;
+#X msg 421 370 fullscreen \$1;
+#X obj 235 348 metro 100;
+#X obj 235 326 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X text 765 411 (NOT IMPLEMENTED);
+#X text 765 211 (NOT IMPLEMENTED);
+#X connect 0 0 2 0;
+#X connect 0 1 1 0;
+#X connect 2 0 3 0;
+#X connect 2 1 5 0;
+#X connect 7 0 8 0;
+#X connect 8 0 4 0;
+#X connect 9 0 8 1;
+#X connect 20 0 0 0;
+#X connect 22 0 20 0;
+#X connect 23 0 20 0;
+#X connect 24 0 20 0;
+#X connect 29 0 20 0;
+#X connect 30 0 20 0;
+#X connect 32 0 20 0;
+#X connect 34 0 20 0;
+#X connect 36 0 20 0;
+#X connect 42 0 0 0;
+#X connect 45 0 0 0;
+#X connect 51 0 20 0;
+#X connect 52 0 51 0;
+#X connect 53 0 20 0;
+#X connect 54 0 53 0;
+#X connect 55 0 57 0;
+#X connect 57 0 20 0;
+#X connect 58 0 20 0;
+#X connect 59 0 58 0;
diff --git a/Gem/gemglutwindow.pd_darwin b/Gem/gemglutwindow.pd_darwin
index b1f4230..a1450a1 100755
--- a/Gem/gemglutwindow.pd_darwin
+++ b/Gem/gemglutwindow.pd_darwin
Binary files differ
diff --git a/Gem/gemglxwindow-help.pd b/Gem/gemglxwindow-help.pd
new file mode 100644
index 0000000..e2678cd
--- /dev/null
+++ b/Gem/gemglxwindow-help.pd
@@ -0,0 +1,118 @@
+#N canvas 30 105 957 735 10;
+#X declare -lib Gem;
+#X obj 367 612 gemglxwindow;
+#X obj 442 642 print unknown.message;
+#X obj 367 645 route bang;
+#X obj 367 668 bng 15 250 50 0 empty empty render! 17 7 0 10 -262144
+-4034 -1;
+#X obj 674 693 print info;
+#X obj 424 697 s \$0-info;
+#X text 485 697 feedback about the window;
+#X obj 674 647 r \$0-info;
+#X obj 674 670 spigot;
+#X obj 721 672 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 407 45 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 85 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 125 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 165 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 205 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 245 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 285 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 325 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 365 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 405 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 367 506 t a;
+#X obj 407 445 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X msg 421 51 create;
+#X msg 421 90 bang;
+#X msg 421 130 destroy;
+#X text 515 91 clear window \, activate openGL-context \, and send
+render-bang;
+#X text 515 132 destroy the window;
+#X text 515 51 create the window;
+#X text 515 171 single-buffered(1) or double-buffered(2) rendering
+;
+#X msg 421 170 buffer 2;
+#X msg 421 210 FSAA \$1;
+#X text 515 211 Full Screen Antia Aliasing mode;
+#X msg 421 250 title foo;
+#X text 515 251 title of the window;
+#X msg 421 290 dimen 640 460;
+#X text 515 291 change dimension of the window;
+#X msg 421 330 offset 100 100;
+#X text 515 331 change position of the window;
+#X text 515 411 turn on/off window borders;
+#X text 515 451 (don't) show cursorwhen it's on the window;
+#X obj 407 525 cnv 15 470 30 empty empty empty 20 12 0 14 -258113 -66577
+0;
+#X text 465 17 standard messages;
+#X msg 421 530 blurb;
+#X text 515 531 some random unknown message;
+#X obj 407 565 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#N canvas 76 289 890 395 specific 0;
+#X obj 88 303 outlet;
+#X text 182 261 allow the window to become transparent;
+#X obj 88 238 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X msg 88 260 transparent \$1;
+#X connect 2 0 3 0;
+#X connect 3 0 0 0;
+#X restore 411 571 pd specific messages;
+#X text 47 51 [gemglxwindow];
+#X text 18 79 part of Gem;
+#X obj 38 693 declare -lib Gem;
+#X text 24 669 last updated for Gem-0.94;
+#X msg 421 450 cursor \$1;
+#X obj 490 452 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X msg 421 410 border \$1;
+#X obj 490 412 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 501 372 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X text 515 371 switch fullscreen mode on/off;
+#X msg 421 370 fullscreen \$1;
+#X obj 235 348 metro 100;
+#X obj 235 326 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X text 13 145 [gemglxwindow] uses the X-window system directly (via
+GLX) to create windows.;
+#X connect 0 0 2 0;
+#X connect 0 1 1 0;
+#X connect 2 0 3 0;
+#X connect 2 1 5 0;
+#X connect 7 0 8 0;
+#X connect 8 0 4 0;
+#X connect 9 0 8 1;
+#X connect 20 0 0 0;
+#X connect 22 0 20 0;
+#X connect 23 0 20 0;
+#X connect 24 0 20 0;
+#X connect 29 0 20 0;
+#X connect 30 0 20 0;
+#X connect 32 0 20 0;
+#X connect 34 0 20 0;
+#X connect 36 0 20 0;
+#X connect 42 0 0 0;
+#X connect 45 0 0 0;
+#X connect 50 0 20 0;
+#X connect 51 0 50 0;
+#X connect 52 0 20 0;
+#X connect 53 0 52 0;
+#X connect 54 0 56 0;
+#X connect 56 0 20 0;
+#X connect 57 0 20 0;
+#X connect 58 0 57 0;
diff --git a/Gem/gemmacoswindow-help.pd b/Gem/gemmacoswindow-help.pd
new file mode 100644
index 0000000..ae90536
--- /dev/null
+++ b/Gem/gemmacoswindow-help.pd
@@ -0,0 +1,120 @@
+#N canvas 30 105 957 728 10;
+#X declare -lib Gem;
+#X obj 367 612 gemmacoswindow;
+#X obj 442 642 print unknown.message;
+#X obj 367 645 route bang;
+#X obj 367 668 bng 15 250 50 0 empty empty render! 17 7 0 10 -262144
+-4034 -1;
+#X obj 674 703 print info;
+#X obj 424 697 s \$0-info;
+#X text 485 697 feedback about the window;
+#X obj 674 657 r \$0-info;
+#X obj 674 680 spigot;
+#X obj 721 682 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 407 45 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 85 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 125 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 165 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 205 cnv 15 470 30 empty empty empty 20 12 0 14 -260097 -66577
+0;
+#X obj 407 245 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 285 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 325 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 365 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 405 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 367 506 t a;
+#X obj 407 445 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X msg 421 51 create;
+#X msg 421 90 bang;
+#X msg 421 130 destroy;
+#X text 515 91 clear window \, activate openGL-context \, and send
+render-bang;
+#X text 515 132 destroy the window;
+#X text 515 51 create the window;
+#X text 515 171 single-buffered(1) or double-buffered(2) rendering
+;
+#X msg 421 170 buffer 2;
+#X msg 421 210 FSAA \$1;
+#X text 515 211 Full Screen Antia Aliasing mode;
+#X msg 421 250 title foo;
+#X text 515 251 title of the window;
+#X msg 421 290 dimen 640 460;
+#X text 515 291 change dimension of the window;
+#X msg 421 330 offset 100 100;
+#X text 515 331 change position of the window;
+#X text 515 411 turn on/off window borders;
+#X text 515 451 (don't) show cursorwhen it's on the window;
+#X obj 407 525 cnv 15 470 30 empty empty empty 20 12 0 14 -258113 -66577
+0;
+#X text 465 17 standard messages;
+#X msg 421 530 blurb;
+#X text 515 531 some random unknown message;
+#X obj 407 565 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#N canvas 76 289 890 395 specific 0;
+#X obj 88 303 outlet;
+#X obj 88 153 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X msg 88 176 menubar \$1;
+#X text 173 178 show/hide the macOS menubar;
+#X connect 1 0 2 0;
+#X connect 2 0 0 0;
+#X restore 411 571 pd specific messages;
+#X text 47 51 [gemmacoswindow];
+#X text 18 79 part of Gem;
+#X obj 38 693 declare -lib Gem;
+#X text 24 669 last updated for Gem-0.94;
+#X msg 421 450 cursor \$1;
+#X obj 490 452 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X msg 421 410 border \$1;
+#X obj 490 412 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 501 372 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X text 515 371 switch fullscreen mode on/off;
+#X msg 421 370 fullscreen \$1;
+#X obj 235 348 metro 100;
+#X obj 235 326 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X text 765 211 (NOT IMPLEMENTED);
+#X text 13 145 [gemmacoswindow] uses Cocoa to create windows.;
+#X text 20 172 it's supposed to be the default window on modern macOS.
+;
+#X connect 0 0 2 0;
+#X connect 0 1 1 0;
+#X connect 2 0 3 0;
+#X connect 2 1 5 0;
+#X connect 7 0 8 0;
+#X connect 8 0 4 0;
+#X connect 9 0 8 1;
+#X connect 20 0 0 0;
+#X connect 22 0 20 0;
+#X connect 23 0 20 0;
+#X connect 24 0 20 0;
+#X connect 29 0 20 0;
+#X connect 30 0 20 0;
+#X connect 32 0 20 0;
+#X connect 34 0 20 0;
+#X connect 36 0 20 0;
+#X connect 42 0 0 0;
+#X connect 45 0 0 0;
+#X connect 50 0 20 0;
+#X connect 51 0 50 0;
+#X connect 52 0 20 0;
+#X connect 53 0 52 0;
+#X connect 54 0 56 0;
+#X connect 56 0 20 0;
+#X connect 57 0 20 0;
+#X connect 58 0 57 0;
diff --git a/Gem/gemmacoswindow.pd_darwin b/Gem/gemmacoswindow.pd_darwin
index 2c85475..8ce55cc 100755
--- a/Gem/gemmacoswindow.pd_darwin
+++ b/Gem/gemmacoswindow.pd_darwin
Binary files differ
diff --git a/Gem/gemmacwindow-help.pd b/Gem/gemmacwindow-help.pd
new file mode 100644
index 0000000..d82085c
--- /dev/null
+++ b/Gem/gemmacwindow-help.pd
@@ -0,0 +1,143 @@
+#N canvas 30 105 957 728 10;
+#X declare -lib Gem;
+#X obj 367 612 gemmacwindow;
+#X obj 442 642 print unknown.message;
+#X obj 367 645 route bang;
+#X obj 367 668 bng 15 250 50 0 empty empty render! 17 7 0 10 -262144
+-4034 -1;
+#X obj 674 703 print info;
+#X obj 424 697 s \$0-info;
+#X text 485 697 feedback about the window;
+#X obj 674 657 r \$0-info;
+#X obj 674 680 spigot;
+#X obj 721 682 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 407 45 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 85 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 125 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 165 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 205 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 245 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 285 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 325 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 365 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 405 cnv 15 470 30 empty empty empty 20 12 0 14 -260097 -66577
+0;
+#X obj 367 506 t a;
+#X obj 407 445 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X msg 421 51 create;
+#X msg 421 90 bang;
+#X msg 421 130 destroy;
+#X text 515 91 clear window \, activate openGL-context \, and send
+render-bang;
+#X text 515 132 destroy the window;
+#X text 515 51 create the window;
+#X text 515 171 single-buffered(1) or double-buffered(2) rendering
+;
+#X msg 421 170 buffer 2;
+#X msg 421 210 FSAA \$1;
+#X text 515 211 Full Screen Antia Aliasing mode;
+#X msg 421 250 title foo;
+#X text 515 251 title of the window;
+#X msg 421 290 dimen 640 460;
+#X text 515 291 change dimension of the window;
+#X msg 421 330 offset 100 100;
+#X text 515 331 change position of the window;
+#X text 515 411 turn on/off window borders;
+#X text 515 451 (don't) show cursorwhen it's on the window;
+#X obj 407 525 cnv 15 470 30 empty empty empty 20 12 0 14 -258113 -66577
+0;
+#X text 465 17 standard messages;
+#X msg 421 530 blurb;
+#X text 515 531 some random unknown message;
+#X obj 407 565 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#N canvas 76 289 890 395 specific 0;
+#X obj 88 303 outlet;
+#X msg 88 40 offset \$1 \$1;
+#X floatatom 88 21 5 0 0 0 - - -;
+#X floatatom 128 61 5 0 0 0 - - -;
+#X msg 128 80 dimen \$1 \$1;
+#X text 201 46 change window dimension/position on the fly;
+#X msg 288 97 menu;
+#X obj 289 127 r \$0-info;
+#X obj 289 150 route menu;
+#X floatatom 289 243 5 0 0 0 - - -;
+#X obj 289 264 i;
+#X msg 289 290 addMenu \$1 File 0 \, addMenu \$1 Gem 2 \, addMenu \$1
+Quit 1;
+#X obj 289 176 route new float;
+#X floatatom 416 212 5 0 0 1 menu - -;
+#X text 326 242 ID of the newly created menu;
+#X text 320 271 add entries to the new menu, f 62;
+#X text 625 290 addMenu <menuid> <title> <value>;
+#X text 510 212 <- selected menu;
+#X text 336 96 <- create a new right-click menu;
+#X connect 1 0 0 0;
+#X connect 2 0 1 0;
+#X connect 3 0 4 0;
+#X connect 4 0 0 0;
+#X connect 6 0 0 0;
+#X connect 7 0 8 0;
+#X connect 8 0 12 0;
+#X connect 9 0 10 0;
+#X connect 10 0 11 0;
+#X connect 11 0 0 0;
+#X connect 12 0 9 0;
+#X connect 12 1 13 0;
+#X restore 411 571 pd specific messages;
+#X text 47 51 [gemmacwindow];
+#X text 18 79 part of Gem;
+#X obj 38 693 declare -lib Gem;
+#X text 24 669 last updated for Gem-0.94;
+#X msg 421 450 cursor \$1;
+#X obj 490 452 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X msg 421 410 border \$1;
+#X obj 490 412 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 501 372 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X text 515 371 switch fullscreen mode on/off;
+#X msg 421 370 fullscreen \$1;
+#X obj 235 348 metro 100;
+#X obj 235 326 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X text 765 411 (NOT IMPLEMENTED);
+#X text 13 145 [gemmacwindow] uses Carbon to create windows.;
+#X connect 0 0 2 0;
+#X connect 0 1 1 0;
+#X connect 2 0 3 0;
+#X connect 2 1 5 0;
+#X connect 7 0 8 0;
+#X connect 8 0 4 0;
+#X connect 9 0 8 1;
+#X connect 20 0 0 0;
+#X connect 22 0 20 0;
+#X connect 23 0 20 0;
+#X connect 24 0 20 0;
+#X connect 29 0 20 0;
+#X connect 30 0 20 0;
+#X connect 32 0 20 0;
+#X connect 34 0 20 0;
+#X connect 36 0 20 0;
+#X connect 42 0 0 0;
+#X connect 45 0 0 0;
+#X connect 50 0 20 0;
+#X connect 51 0 50 0;
+#X connect 52 0 20 0;
+#X connect 53 0 52 0;
+#X connect 54 0 56 0;
+#X connect 56 0 20 0;
+#X connect 57 0 20 0;
+#X connect 58 0 57 0;
diff --git a/Gem/gemsdlwindow-help.pd b/Gem/gemsdlwindow-help.pd
new file mode 100644
index 0000000..1a694da
--- /dev/null
+++ b/Gem/gemsdlwindow-help.pd
@@ -0,0 +1,114 @@
+#N canvas 30 105 957 728 10;
+#X declare -lib Gem;
+#X obj 367 612 gemsdlwindow;
+#X obj 442 642 print unknown.message;
+#X obj 367 645 route bang;
+#X obj 367 668 bng 15 250 50 0 empty empty render! 17 7 0 10 -262144
+-4034 -1;
+#X obj 674 703 print info;
+#X obj 424 697 s \$0-info;
+#X text 485 697 feedback about the window;
+#X obj 674 657 r \$0-info;
+#X obj 674 680 spigot;
+#X obj 721 682 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 407 45 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 85 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 125 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 165 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 205 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 245 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 285 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 325 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 365 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 405 cnv 15 470 30 empty empty empty 20 12 0 14 -260097 -66577
+0;
+#X obj 367 506 t a;
+#X obj 407 445 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X msg 421 51 create;
+#X msg 421 90 bang;
+#X msg 421 130 destroy;
+#X text 515 91 clear window \, activate openGL-context \, and send
+render-bang;
+#X text 515 132 destroy the window;
+#X text 515 51 create the window;
+#X text 515 171 single-buffered(1) or double-buffered(2) rendering
+;
+#X msg 421 170 buffer 2;
+#X msg 421 210 FSAA \$1;
+#X text 515 211 Full Screen Antia Aliasing mode;
+#X msg 421 250 title foo;
+#X text 515 251 title of the window;
+#X msg 421 290 dimen 640 460;
+#X text 515 291 change dimension of the window;
+#X msg 421 330 offset 100 100;
+#X text 515 331 change position of the window;
+#X text 515 411 turn on/off window borders;
+#X text 515 451 (don't) show cursorwhen it's on the window;
+#X obj 407 525 cnv 15 470 30 empty empty empty 20 12 0 14 -258113 -66577
+0;
+#X text 465 17 standard messages;
+#X msg 421 530 blurb;
+#X text 515 531 some random unknown message;
+#X obj 407 565 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#N canvas 76 289 890 395 specific 0;
+#X obj 88 303 outlet;
+#X text 90 88 no special messages;
+#X restore 411 571 pd specific messages;
+#X text 47 51 [gemsdlwindow];
+#X text 18 79 part of Gem;
+#X obj 38 693 declare -lib Gem;
+#X text 24 669 last updated for Gem-0.94;
+#X text 13 145 [gemsdlwindow] uses the GLUT (openGL Utility Toolkit)
+to create windows.;
+#X msg 421 450 cursor \$1;
+#X obj 490 452 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X msg 421 410 border \$1;
+#X obj 490 412 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 501 372 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X text 515 371 switch fullscreen mode on/off;
+#X msg 421 370 fullscreen \$1;
+#X obj 235 348 metro 100;
+#X obj 235 326 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X text 765 411 (NOT IMPLEMENTED);
+#X connect 0 0 2 0;
+#X connect 0 1 1 0;
+#X connect 2 0 3 0;
+#X connect 2 1 5 0;
+#X connect 7 0 8 0;
+#X connect 8 0 4 0;
+#X connect 9 0 8 1;
+#X connect 20 0 0 0;
+#X connect 22 0 20 0;
+#X connect 23 0 20 0;
+#X connect 24 0 20 0;
+#X connect 29 0 20 0;
+#X connect 30 0 20 0;
+#X connect 32 0 20 0;
+#X connect 34 0 20 0;
+#X connect 36 0 20 0;
+#X connect 42 0 0 0;
+#X connect 45 0 0 0;
+#X connect 51 0 20 0;
+#X connect 52 0 51 0;
+#X connect 53 0 20 0;
+#X connect 54 0 53 0;
+#X connect 55 0 57 0;
+#X connect 57 0 20 0;
+#X connect 58 0 20 0;
+#X connect 59 0 58 0;
diff --git a/Gem/gemw32window-help.pd b/Gem/gemw32window-help.pd
new file mode 100644
index 0000000..8ac7134
--- /dev/null
+++ b/Gem/gemw32window-help.pd
@@ -0,0 +1,144 @@
+#N canvas 30 105 957 728 10;
+#X declare -lib Gem;
+#X obj 367 612 gemw32window;
+#X obj 442 642 print unknown.message;
+#X obj 367 645 route bang;
+#X obj 367 668 bng 15 250 50 0 empty empty render! 17 7 0 10 -262144
+-4034 -1;
+#X obj 674 703 print info;
+#X obj 424 697 s \$0-info;
+#X text 485 697 feedback about the window;
+#X obj 674 657 r \$0-info;
+#X obj 674 680 spigot;
+#X obj 721 682 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 407 45 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 85 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 125 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 165 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 205 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 245 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 285 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 325 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 365 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X obj 407 405 cnv 15 470 30 empty empty empty 20 12 0 14 -260097 -66577
+0;
+#X obj 367 506 t a;
+#X obj 407 445 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#X msg 421 51 create;
+#X msg 421 90 bang;
+#X msg 421 130 destroy;
+#X text 515 91 clear window \, activate openGL-context \, and send
+render-bang;
+#X text 515 132 destroy the window;
+#X text 515 51 create the window;
+#X text 515 171 single-buffered(1) or double-buffered(2) rendering
+;
+#X msg 421 170 buffer 2;
+#X msg 421 210 FSAA \$1;
+#X text 515 211 Full Screen Antia Aliasing mode;
+#X msg 421 250 title foo;
+#X text 515 251 title of the window;
+#X msg 421 290 dimen 640 460;
+#X text 515 291 change dimension of the window;
+#X msg 421 330 offset 100 100;
+#X text 515 331 change position of the window;
+#X text 515 411 turn on/off window borders;
+#X text 515 451 (don't) show cursorwhen it's on the window;
+#X obj 407 525 cnv 15 470 30 empty empty empty 20 12 0 14 -258113 -66577
+0;
+#X text 465 17 standard messages;
+#X msg 421 530 blurb;
+#X text 515 531 some random unknown message;
+#X obj 407 565 cnv 15 470 30 empty empty empty 20 12 0 14 -4034 -66577
+0;
+#N canvas 76 289 890 395 specific 0;
+#X obj 88 303 outlet;
+#X msg 88 40 offset \$1 \$1;
+#X floatatom 88 21 5 0 0 0 - - -;
+#X floatatom 128 61 5 0 0 0 - - -;
+#X msg 128 80 dimen \$1 \$1;
+#X text 201 46 change window dimension/position on the fly;
+#X msg 288 97 menu;
+#X obj 289 127 r \$0-info;
+#X obj 289 150 route menu;
+#X floatatom 289 243 5 0 0 0 - - -;
+#X obj 289 264 i;
+#X msg 289 290 addMenu \$1 File 0 \, addMenu \$1 Gem 2 \, addMenu \$1
+Quit 1;
+#X obj 289 176 route new float;
+#X floatatom 416 212 5 0 0 1 menu - -;
+#X text 326 242 ID of the newly created menu;
+#X text 320 271 add entries to the new menu, f 62;
+#X text 625 290 addMenu <menuid> <title> <value>;
+#X text 510 212 <- selected menu;
+#X text 336 96 <- create a new right-click menu;
+#X connect 1 0 0 0;
+#X connect 2 0 1 0;
+#X connect 3 0 4 0;
+#X connect 4 0 0 0;
+#X connect 6 0 0 0;
+#X connect 7 0 8 0;
+#X connect 8 0 12 0;
+#X connect 9 0 10 0;
+#X connect 10 0 11 0;
+#X connect 11 0 0 0;
+#X connect 12 0 9 0;
+#X connect 12 1 13 0;
+#X restore 411 571 pd specific messages;
+#X text 47 51 [gemw32window];
+#X text 18 79 part of Gem;
+#X obj 38 693 declare -lib Gem;
+#X text 24 669 last updated for Gem-0.94;
+#X text 13 145 [gemw32window] uses GLUT (the openGL Utility Toolkit)
+to create windows.;
+#X msg 421 450 cursor \$1;
+#X obj 490 452 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X msg 421 410 border \$1;
+#X obj 490 412 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X obj 501 372 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X text 515 371 switch fullscreen mode on/off;
+#X msg 421 370 fullscreen \$1;
+#X obj 235 348 metro 100;
+#X obj 235 326 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X text 765 411 (NOT IMPLEMENTED);
+#X connect 0 0 2 0;
+#X connect 0 1 1 0;
+#X connect 2 0 3 0;
+#X connect 2 1 5 0;
+#X connect 7 0 8 0;
+#X connect 8 0 4 0;
+#X connect 9 0 8 1;
+#X connect 20 0 0 0;
+#X connect 22 0 20 0;
+#X connect 23 0 20 0;
+#X connect 24 0 20 0;
+#X connect 29 0 20 0;
+#X connect 30 0 20 0;
+#X connect 32 0 20 0;
+#X connect 34 0 20 0;
+#X connect 36 0 20 0;
+#X connect 42 0 0 0;
+#X connect 45 0 0 0;
+#X connect 51 0 20 0;
+#X connect 52 0 51 0;
+#X connect 53 0 20 0;
+#X connect 54 0 53 0;
+#X connect 55 0 57 0;
+#X connect 57 0 20 0;
+#X connect 58 0 20 0;
+#X connect 59 0 58 0;
diff --git a/Gem/pix_drum.pd_darwin b/Gem/pix_drum.pd_darwin
index 1bc7892..6071e2c 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 b734625..2ea4041 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 d1f6439..f476b83 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 8512cf1..8dad6a1 100755
--- a/Gem/pix_mano.pd_darwin
+++ b/Gem/pix_mano.pd_darwin
Binary files differ