From 90c6c5fe1f1eabcdd900b9927452327b88410cae Mon Sep 17 00:00:00 2001
From: Sojourner Truth <jon.w.wilkes@gmail.com>
Date: Fri, 19 Aug 2016 14:04:02 -0400
Subject: [PATCH] bump jmmmp to version 0.47

---
 abstractions/jmmmp/README.txt          |   7 +-
 abstractions/jmmmp/f+.pd               |  24 +-
 abstractions/jmmmp/jmmmp-meta.pd       |  16 +-
 abstractions/jmmmp/jp.menu-help.pd     | 283 ++++----
 abstractions/jmmmp/jp.menu.pd          | 860 ++++++++++++++-----------
 abstractions/jmmmp/jp.preset-help.pd   | 234 +++++++
 abstractions/jmmmp/jp.preset-test1.txt |   5 +
 abstractions/jmmmp/jp.preset-test2.txt |   5 +
 abstractions/jmmmp/jp.preset.pd        | 597 +++++++++++++++++
 abstractions/jmmmp/mat-~.pd            |  20 +-
 10 files changed, 1494 insertions(+), 557 deletions(-)
 create mode 100644 abstractions/jmmmp/jp.preset-help.pd
 create mode 100644 abstractions/jmmmp/jp.preset-test1.txt
 create mode 100644 abstractions/jmmmp/jp.preset-test2.txt
 create mode 100644 abstractions/jmmmp/jp.preset.pd

diff --git a/abstractions/jmmmp/README.txt b/abstractions/jmmmp/README.txt
index 92c896903..3437c9002 100644
--- a/abstractions/jmmmp/README.txt
+++ b/abstractions/jmmmp/README.txt
@@ -1,6 +1,6 @@
 Abstractions from João Pais
 
-Version 0.46
+Version 0.47
 
 (c) 2005-2016 João Pais - jmmmpais@gmail.com
 Released under the BSD license (more information in each abstraction).
@@ -25,6 +25,7 @@ dsp01 - DSP switch
 f+ - Counter with variable increment
 gui-edit - edit standard GUI objects fast
 jp.menu - Dropdown menu programmed with data structures
+jp.preset - Dropdown preset saver programmed with data structures
 lbang - loadbang which can be triggered more often
 liner~ - practical implementation of [line~]
 liner+~ - practical implementation of signal envelopping
@@ -53,9 +54,9 @@ tastin - Gate for keyboard input
 uhr - Shows the time
 
 
-It is recomended to use these abstractions with Pd-extended, since I don't keep track of which externals are used. Some abstractions use other ones of this package, so it is also better to have always the whole package together.
+The jmmmp library is dependent from the following libraries: cyclone, ext13, ggee, iemlib, iemmatrix, jmmmp, zexy 2.2.6.
 
-2016.05.27
+2016.06.30
 
 
 Non-working or discarded abstractions:
diff --git a/abstractions/jmmmp/f+.pd b/abstractions/jmmmp/f+.pd
index 0fcf725aa..e0d271728 100644
--- a/abstractions/jmmmp/f+.pd
+++ b/abstractions/jmmmp/f+.pd
@@ -1,11 +1,11 @@
 #N canvas 457 189 505 304 10;
-#X obj 15 72 inlet;
-#X obj 15 222 outlet;
-#X obj 34 92 inlet;
-#X obj 58 112 inlet;
-#X obj 15 182 f \$1;
-#X obj 72 192 +;
-#X obj 108 152 expr if($f1 == 0 \, 1 \, $f1);
+#X obj 15 52 inlet;
+#X obj 15 202 outlet;
+#X obj 34 72 inlet;
+#X obj 58 92 inlet;
+#X obj 15 162 f \$1;
+#X obj 72 172 +;
+#X obj 108 132 expr if($f1 == 0 \, 1 \, $f1);
 #N canvas 0 0 426 446 license 0;
 #X text 8 47 All rights reserved.;
 #X text 8 227 The names of its contributors may not be used to endorse
@@ -39,15 +39,15 @@ in the documentation and/or other materials provided with the distribution.
 #X text 279 168 - Set increment;
 #X text 279 198 Outlets;
 #X text 279 218 - Float;
-#X obj 34 162 \$1;
-#X obj 34 132 route bang;
+#X obj 34 142 \$1;
+#X obj 34 112 route bang;
 #X text 279 148 - Bang reset / Float (next count);
-#X obj 15 202 t f f;
+#X obj 15 182 t f f;
 #X text 12 257 (C) 2006-2012 João Pais - jmmmpais@googlemail.com;
 #X text 278 58 - Initial number (default 0);
 #X text 279 78 - Increment (default 1);
-#X obj 108 132 \$2;
-#X obj 108 112 initbang;
+#X obj 108 112 \$2;
+#X obj 108 92 iemlib/init;
 #X connect 0 0 4 0;
 #X connect 2 0 16 0;
 #X connect 3 0 5 1;
diff --git a/abstractions/jmmmp/jmmmp-meta.pd b/abstractions/jmmmp/jmmmp-meta.pd
index c45d77228..dbdb85e8a 100644
--- a/abstractions/jmmmp/jmmmp-meta.pd
+++ b/abstractions/jmmmp/jmmmp-meta.pd
@@ -1,7 +1,9 @@
-#N canvas 268 142 382 289 10;
-#X text 16 6 NAME jmmmp;
-#X text 16 26 AUTHOR João Pais <jmmmpais@googlemail.com>;
-#X text 16 76 LICENSE GPL;
-#X text 16 96 VERSION 0.46;
-#X text 16 46 DESCRIPTION this library has several utilities with different
-functions. It is composed of abstractions only.;
+#N canvas 10 10 200 164 10;
+#N canvas 20 20 420 300 META 0;
+#X text 10 10 META this is a prototype of a libdir meta file;
+#X text 10 30 NAME jmmmp;
+#X text 10 90 LICENSE BSD;
+#X text 10 110 VERSION 0.47;
+#X text 10 50 AUTHOR João Pais <jmmmpais@googlemail.com>;
+#X text 10 70 DESCRIPTION Several useful abstractions;
+#X restore 10 10 pd META;
diff --git a/abstractions/jmmmp/jp.menu-help.pd b/abstractions/jmmmp/jp.menu-help.pd
index c4b2d626a..b38721ac4 100644
--- a/abstractions/jmmmp/jp.menu-help.pd
+++ b/abstractions/jmmmp/jp.menu-help.pd
@@ -1,18 +1,18 @@
-#N struct 1012-color float x float y float farbe;
-#N struct 1012-color-display float x float y float farbe;
-#N struct 1015-color float x float y float farbe;
-#N struct 1015-color-display float x float y float farbe;
-#N struct 1007-element float x float y symbol menu float lenght float
+#N struct 1087-color float x float y float farbe;
+#N struct 1087-color-display float x float y float farbe;
+#N struct 1090-color float x float y float farbe;
+#N struct 1090-color-display float x float y float farbe;
+#N struct 1082-element float x float y symbol menu float lenght float
 height float selection float ypos float col-back float col-lab;
-#N struct 1025-color float x float y float farbe;
-#N struct 1025-color-display float x float y float farbe;
-#N struct 1028-color float x float y float farbe;
-#N struct 1028-color-display float x float y float farbe;
-#N struct 1020-element float x float y symbol menu float lenght float
+#N struct 1183-color float x float y float farbe;
+#N struct 1183-color-display float x float y float farbe;
+#N struct 1186-color float x float y float farbe;
+#N struct 1186-color-display float x float y float farbe;
+#N struct 1178-element float x float y symbol menu float lenght float
 height float selection float ypos float col-back float col-lab;
-#N canvas 40 80 738 476 10;
-#X floatatom 19 206 5 0 0 0 - - -;
-#N canvas 0 0 426 446 license 0;
+#N canvas 106 113 779 512 10;
+#X floatatom 19 216 5 0 0 0 - - -;
+#N canvas 0 0 393 422 license 0;
 #X text 8 47 All rights reserved.;
 #X text 8 227 The names of its contributors may not be used to endorse
 or promote products derived from this software without specific prior
@@ -37,9 +37,9 @@ in the documentation and/or other materials provided with the distribution.
 ;
 #X text 8 7 Copyright 2016 \, João Pais;
 #X text 8 27 jmmmpais@gmail.com;
-#X restore 431 446 pd license;
-#X text 429 341 Outlets;
-#X text 429 251 - bang - outputs current setting;
+#X restore 421 486 pd license;
+#X text 419 401 Outlets;
+#X text 419 291 - bang - outputs current setting;
 #N canvas 564 268 494 344 META 0;
 #X text 12 95 LICENSE BSD;
 #X text 12 75 LIBRARY jmmmp;
@@ -49,139 +49,154 @@ in the documentation and/or other materials provided with the distribution.
 #X text 12 36 KEYWORDS menu GOP data-structures;
 #X text 12 55 AUTHOR João Pais <jmmmpais@gmail.com>;
 #X text 12 135 VERSION 2016;
-#X restore 521 446 pd META;
+#X restore 511 486 pd META;
 #X text 11 11 [jp.menu] - Dropdown menu programmed with data structures
 ;
-#X text 429 41 Arguments - ALWAYS USE THE FIRST THREE ARGUMENTS;
-#X text 429 61 - name of configuration file;
-#X text 428 81 - lenght (pixels);
-#X text 429 101 - height (pixels);
-#N canvas 451 243 394 363 configuration 0;
-#X text 19 17 HOW TO FORMAT THE CONFIGURATION FILE FOR [jp.menu];
-#X text 19 87 Name;
-#X text 19 167 Content;
-#X text 19 187 The content consists of as many lines as items in the
-menu. In each line is be the label that appears.;
-#X text 19 47 The configuration file must be a .txt file \, stored
-in the same folder as the main patch where [jp.menu] is being used.
-;
-#X text 19 227 Load new file;
-#X text 19 247 To load a new file \, send the message "load \$1" with
+#X text 419 61 - name of configuration file;
+#N canvas 312 426 384 356 configuration 0;
+#X text 9 7 HOW TO FORMAT THE CONFIGURATION FILE FOR [jp.menu];
+#X text 9 77 Name;
+#X text 9 157 Content;
+#X text 9 37 The configuration file must be a .txt file \, stored in
+the same folder as the main patch where [jp.menu] is being used.;
+#X text 9 217 Load new file;
+#X text 9 237 To load a new file \, send the message "load \$1" with
 the symbol as argument.;
-#X obj 19 337 s \$0-country-i;
-#X msg 19 288 load audio;
-#X msg 29 308 load country;
-#X text 19 107 The file must be named jp.menu-NAME.txt.;
-#X text 19 127 The NAME will be used as the first argument for [jp.menu].
+#X obj 9 327 s \$0-country-i;
+#X msg 9 278 load audio;
+#X msg 19 298 load country;
+#X text 9 97 The file must be named jp.menu-NAME.txt.;
+#X text 9 117 The NAME will be used as the first argument for [jp.menu].
 ;
-#X connect 8 0 7 0;
-#X connect 9 0 7 0;
-#X restore 222 251 pd configuration;
-#X text 430 426 (C) 2016 João Pais - jmmmpais@gmail.com;
-#X text 429 211 - integer - select item number. From 0 upwards.;
-#X obj 19 111 hradio 15 1 0 4 empty empty empty 0 -8 0 10 -262144 -1
+#X text 9 177 The content consists of as many lines as items in the
+menu. In each line is be the label that appears in the menu.;
+#X connect 7 0 6 0;
+#X connect 8 0 6 0;
+#X restore 262 281 pd configuration;
+#X text 420 466 (C) 2016 João Pais - jmmmpais@gmail.com;
+#X text 419 211 - integer - select item number. From 0 upwards.;
+#X obj 19 121 hradio 15 1 0 4 empty empty empty 0 -8 0 10 -262144 -1
 -1 0;
-#X text 429 121 - identifier for receive/send names;
-#X text 15 91 This menu has 4 items;
-#X text 429 361 - integer - chosen item number;
-#X msg 29 131 open;
-#X text 429 191 Input messages;
-#X text 429 231 - open - opens full menu;
-#X text 12 356 Limitations of data structures;
-#X text 12 416 - the message "drawnumber_motion: symbol" appears in
+#X text 439 121 - identifier for receive/send names;
+#X text 419 421 - integer - chosen item number;
+#X msg 29 141 open;
+#X text 419 191 Input messages;
+#X text 419 271 - open - opens full menu;
+#X text 12 416 Limitations of data structures;
+#X text 12 476 - the message "drawnumber_motion: symbol" appears in
 the console when instead of clicking \, the user drags the menu;
-#X text 12 396 - the size of the text can't be changed;
-#N canvas 467 689 450 300 zutun 0;
-#X text 25 215 ## dizer ao puckette para eliminar drawnumbermotion
-das mensagens;
-#X text 26 174 ## saida da direita com símbolo de label. para isso
-\, só tem que apanhar o símbolo apenas quando entra float \, nao
-quando há open.;
-#X text 17 138 ## editar e gravar configuracao usando mensagens? funciona
-com text \, ou tem que se usar a nova versao?;
-#X text 21 244 ## modo and \, com várias opcoes ligadas/desligadas?
-;
-#X text 26 48 ## depois de load \, tamanho volta ao normal;
-#X restore 584 446 pd zutun;
-#X text 14 251 Formatting the configuration file;
-#X text 14 291 Color configuration;
-#X text 14 271 You can use send/receive variables;
-#N canvas 497 71 396 209 send/receive 0;
-#X text 19 17 SEND/RECEIVE VARIABLES;
-#X text 19 47 [jp.menu] lets you define an internal variable to use
-with send and receive objects. You can send and receive any messages
-to it.;
-#X text 19 87 The variables are formated as:;
-#X text 19 107 - the 3rd argument gives the send name;
-#X text 19 127 - the receive name adds "-i" to the 3rd argument;
-#X text 19 157 For example \, if the 3rd argument is "menusend" \,
-the receive name will be "menusend-i". You can use also dollarsigns
-as symbols: \$0 \, \$1 \, etc. \, as in the following example:;
-#X restore 228 271 pd send/receive;
 #X text 12 41 [jp.menu] creates a dropdown menu based on a text file.
 This abstraction is a development of the concept used by Gilberto Bernardes
 in his earGram software.;
-#X msg 199 131 open;
-#X obj 189 151 s \$0-country-i;
-#X obj 189 181 r \$0-country;
-#X floatatom 189 111 5 0 0 0 - - -;
-#X floatatom 189 201 5 0 0 0 - - -;
-#X obj 169 131 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
+#X msg 299 171 open;
+#X obj 289 191 s \$0-country-i;
+#X obj 289 221 r \$0-country;
+#X floatatom 289 151 5 0 0 0 - - -;
+#X floatatom 289 241 5 0 0 0 - - -;
+#X obj 269 171 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
 -1 -1;
-#X text 429 271 - color \$1 \$2 - change colors;
-#X text 170 91 Use send/receive to control the menu;
-#X text 429 141 - background color;
-#X text 429 161 - label / border color;
-#X obj 289 111 jp.menu country 100 22 \$0-country 89 9;
-#X text 429 291 - size x y - change menu size;
-#N canvas 331 210 386 167 size 0;
-#X msg 29 47 size 60 70;
-#X msg 39 67 size 120 20;
-#X msg 19 27 size 80 15;
-#X text 19 7 Change menu size;
-#X obj 19 97 s \$0-country-i;
-#X text 19 127 !! Mind \, for "size" the object doesn't get saved with
+#X text 419 311 - color \$1 \$2 - change colors;
+#X text 150 131 Use send/receive to control the menu;
+#X text 439 141 - background color;
+#X text 439 161 - label / border color;
+#X text 419 351 - size x y - change menu size;
+#X text 12 436 The following limitations are built in to Pure Data:
+;
+#X text 15 91 This menu has 4 items \, Click on it or send a number
+or message.;
+#X text 419 31 Arguments - Always use the first argument \, others
+are facultative;
+#X text 14 281 Formatting/loading a configuration file;
+#N canvas 38 162 445 466 display 0;
+#X msg 19 47 size 60 70;
+#X msg 29 67 size 120 20;
+#X msg 9 27 size 80 15;
+#X text 9 7 Change menu size;
+#X obj 9 87 s \$0-country-i;
+#X text 9 107 !! Mind \, for "size" the object doesn't get saved with
 the new parameters !! You must edit the object itself.;
-#X connect 0 0 4 0;
-#X connect 1 0 4 0;
-#X connect 2 0 4 0;
-#X restore 121 311 pd size;
-#X text 14 311 Change menu size;
-#N canvas 438 53 442 335 color 0;
-#X msg 21 157 color 57 600;
-#X text 10 7 Change colors:;
-#X obj 373 67 pd-colors;
-#X msg 11 257 color;
-#X text 11 237 Or send only the message "color" to open a color selector.
+#X msg 20 307 color 57 600;
+#X text 9 167 Change colors:;
+#X obj 372 227 pd-colors;
+#X msg 10 387 color;
+#X text 10 367 Or send only the message "color" to open a color selector.
 ;
-#X text 11 67 The colors follow the data structures color scheme. Look
-at;
-#X text 11 81 for a complete palette.;
-#X text 11 97 If both color arguments are 0 \, default colors will
+#X text 10 227 The colors follow the data structures color scheme.
+Look at;
+#X text 10 241 for a complete palette.;
+#X text 10 257 If both color arguments are 0 \, default colors will
 be used.;
-#X obj 11 206 s \$0-country-i;
-#X obj 11 277 s \$0-country-i;
-#X msg 11 127 color 999 0;
-#X text 91 127 default values;
-#X text 11 47 \$1 = background color \, \$2 = label+border color;
-#X text 11 27 Send the message "color \$1 \$2" to set the menu colors.
+#X obj 10 347 s \$0-country-i;
+#X obj 10 407 s \$0-country-i;
+#X msg 10 287 color 999 0;
+#X text 90 287 default values;
+#X text 10 207 \$1 = background color \, \$2 = label+border color;
+#X text 10 187 Send the message "color \$1 \$2" to set the menu colors.
 ;
-#X msg 31 177 color 60 999;
-#X text 11 297 !! Mind \, for "color" the object doesn't get saved
+#X msg 30 327 color 60 999;
+#X text 10 427 !! Mind \, for "color" the object doesn't get saved
 with the new parameters !! You must edit the object itself.;
-#X connect 0 0 8 0;
-#X connect 3 0 9 0;
-#X connect 10 0 8 0;
-#X connect 14 0 8 0;
-#X restore 138 290 pd color;
-#X text 429 311 - load \$1 - load other configuration;
-#X obj 19 151 jp.menu audio 85 13 \$0-aud;
-#X text 12 376 The following limitations are built in to Pure Data:
+#X connect 0 0 4 0;
+#X connect 1 0 4 0;
+#X connect 2 0 4 0;
+#X connect 6 0 14 0;
+#X connect 9 0 15 0;
+#X connect 16 0 14 0;
+#X connect 20 0 14 0;
+#X restore 164 361 pd display;
+#X text 14 361 Display configuration;
+#N canvas 38 28 396 209 send/receive 0;
+#X text 9 7 SEND/RECEIVE VARIABLES;
+#X text 9 77 The variables are formated as:;
+#X text 9 147 For example \, if the 3rd argument is "menusend" \, the
+receive name will be "menusend-i". You can use also dollarsigns as
+symbols: \$0 \, \$1 \, etc. \, as in the example in the main patch.
 ;
+#X text 9 97 - the 4th argument gives the send name;
+#X text 9 117 - the receive name adds "-i" to the 4th argument;
+#X text 9 37 [jp.menu] lets you define an internal variable to use
+with send and receive objects. You can send and receive any messages
+to it.;
+#X restore 164 341 pd send/receive;
+#X text 14 341 Send/receive variables;
+#X text 14 321 Select items;
+#N canvas 500 61 386 239 select 0;
+#X msg 22 91 next;
+#X msg 32 111 previous;
+#X floatatom 12 71 5 0 0 0 - - -;
+#X text 12 7 To select an item;
+#X text 12 27 You can send an integer to select an item. The strings
+"next" and "previous" also move between the elements of the menu.;
+#X text 12 167 The message "open" shows the full menu.;
+#X msg 12 187 open;
+#X obj 12 131 s \$0-country-i;
+#X obj 12 207 s \$0-country-i;
+#X connect 0 0 7 0;
+#X connect 1 0 7 0;
+#X connect 2 0 7 0;
+#X connect 6 0 8 0;
+#X restore 164 321 pd select;
+#X text 12 456 - the size and font of the label can't be changed;
+#X text 419 231 - next - outputs next item;
+#X text 419 251 - previous - outputs previous item;
+#X text 419 331 - color - open color selector;
+#X text 419 371 - load \$1 - load other configuration from the same
+folder;
+#X obj 19 161 jp.menu audio;
+#X text 438 81 - lenght (pixels) \, set to 100 if not used;
+#X text 439 101 - height (pixels) \, set to 17 if not used;
+#X obj 149 151 jp.menu country 100 22 \$0-country 89 9;
+#N canvas 491 72 386 146 edit 0;
+#X text 12 7 For now \, the only way to delete a preset is by editing
+the text file with the data. At a later point \, it might be possible
+to integrate editing features into this abstraction. For a more powerful
+abstraction \, check out [jmmmp/jp.preset].;
+#X restore 164 301 pd edit;
+#X text 14 301 Edit presets;
+#X connect 10 0 45 0;
 #X connect 13 0 45 0;
-#X connect 17 0 45 0;
-#X connect 29 0 30 0;
-#X connect 31 0 33 0;
-#X connect 32 0 30 0;
-#X connect 34 0 30 0;
+#X connect 19 0 20 0;
+#X connect 21 0 23 0;
+#X connect 22 0 20 0;
+#X connect 24 0 20 0;
 #X connect 45 0 0 0;
diff --git a/abstractions/jmmmp/jp.menu.pd b/abstractions/jmmmp/jp.menu.pd
index 2c3c3de51..d45fddf9c 100644
--- a/abstractions/jmmmp/jp.menu.pd
+++ b/abstractions/jmmmp/jp.menu.pd
@@ -1,391 +1,469 @@
-#N struct 1008-color float x float y float farbe;
-#N struct 1008-color-display float x float y float farbe;
-#N struct 1011-color float x float y float farbe;
-#N struct 1011-color-display float x float y float farbe;
-#N canvas 628 409 330 217 10;
-#N canvas 1088 161 379 353 \$0-element 0;
-#X obj 8 94 route click;
-#X obj 35 134 tgl 15 0 \$0-open/close \$0-open/close-i empty 17 7 0
-10 -262144 -1 -1 1 1;
-#X obj 8 182 unpack pointer f;
-#X obj 8 242 / 1;
-#X obj 23 222 r \$0-ypos;
-#X obj 8 262 outlet;
-#X obj 8 152 spigot;
-#X obj 8 114 t l b;
-#X text 8 14 Data structures template and click interaction;
-#X obj 8 202 get \$0-element ypos;
-#X obj 8 44 struct \$0-element float x float y symbol menu float lenght
-float height float selection float ypos float col-back float col-lab
-;
-#X obj 8 313 filledpolygon -v selection col-back col-lab 1 0 0 0 height
-lenght height lenght 0;
-#X obj 8 293 drawsymbol -v selection menu 4 2 col-lab;
-#X connect 0 0 7 0;
-#X connect 1 0 6 1;
-#X connect 2 0 9 0;
-#X connect 3 0 5 0;
-#X connect 4 0 3 1;
-#X connect 6 0 2 0;
-#X connect 7 0 6 0;
-#X connect 7 1 1 0;
-#X connect 9 0 3 0;
-#X connect 10 0 0 0;
-#X restore 128 40 pd \$0-element;
-#X obj 128 20 namecanvas \$0-menu;
-#N canvas 299 122 616 576 patch 0;
-#X obj 286 250 textfile;
-#X obj 306 230 until;
-#X msg 424 90 clear;
-#X obj 424 110 s pd-\$0-paint;
-#X obj 315 510 s pd-\$0-paint;
-#X obj 353 150 symbol \$0-element;
-#X obj 358 320 l2s;
-#X obj 192 360 + 0;
-#X obj 161 550 s \$0-menu;
-#X msg 171 480 donecanvasdialog 1 1 2 0 0 \$3 \$2 \$3 \$2 0 0 \, dirty
-0;
-#X msg 17 400 0 \$1;
-#X obj 351 250 0;
-#X obj 17 340 r \$0-open/close;
-#X obj 387 130 s \$0-ypos;
-#X obj 99 360 r \$0-ypos;
-#X obj 330 370 r \$0-ypos;
-#X obj 207 340 r \$0-ypos;
-#X obj 17 380 expr if ($f1 == 1 \, $f2 \, $f3);
-#X obj 161 430 pack f f \$2;
-#X obj 387 110 \$3;
-#X msg 286 210 read \$1 cr \, rewind;
-#X msg 161 530 donecanvasdialog 1 -1 2 0 -1 1 1 \$3 \$2 0 0 \, dirty
-0;
-#X obj 315 390 * 1;
-#X obj 315 340 f+ 0 1;
-#X obj 405 390 s \$0-sellist;
-#X obj 405 370 f;
-#X obj 326 30 loadbang;
-#X text 18 10 Reads configuration file and creates the menu scalars.
-;
-#X msg 315 430 scalar \$2 0 0 \$3 \$4 \$5 0 \$1 \$6 \$7;
-#X obj 315 410 pack f s s \$2 \$3 \$5 \$6;
-#X obj 422 290 sel 1;
-#X obj 422 320 999;
-#X obj 450 320 0;
-#X text 432 230 Sets default colors;
-#X obj 422 270 expr if($i1 + $i2 == 0 \, 1 \, 0);
-#X obj 422 250 list \$5 \$6;
-#X obj 351 270 outlet;
-#X obj 222 410 r \$0-lenght;
-#X obj 315 300 t b a;
-#X text 253 450 scalar parameters: x y menu lenght height selection
-ypos col-back col-lab;
-#X obj 182 300 r \$0-gop-height;
-#X text 153 280 New height after "size";
-#X obj 326 50 t b b;
-#X obj 353 70 t b b b b;
-#X obj 306 90 t b b b;
-#X obj 257 130 r \$0-load;
-#X obj 257 150 t b s b;
-#N canvas 424 551 297 172 path+file 0;
-#X obj 12 66 symbol jp.menu-\$1.txt;
-#X obj 12 106 list;
-#X msg 12 126 read \$2/\$1 cr \, rewind;
-#X obj 12 46 t b b;
-#X obj 12 26 inlet;
-#X obj 12 146 outlet;
-#X text 12 6 Gets path of parent patch and opens file;
-#X obj 33 86 getdir 3;
-#X connect 0 0 1 0;
-#X connect 1 0 2 0;
-#X connect 2 0 5 0;
-#X connect 3 0 0 0;
-#X connect 3 1 7 0;
-#X connect 4 0 3 0;
-#X connect 7 0 1 1;
-#X restore 325 180 pd path+file;
-#X connect 0 0 38 0;
-#X connect 0 1 1 1;
-#X connect 0 1 11 0;
-#X connect 0 1 25 0;
-#X connect 1 0 0 0;
-#X connect 2 0 3 0;
-#X connect 5 0 29 1;
-#X connect 6 0 29 2;
-#X connect 7 0 17 2;
-#X connect 7 0 18 1;
-#X connect 9 0 4 0;
-#X connect 10 0 18 0;
-#X connect 11 0 36 0;
-#X connect 12 0 17 0;
-#X connect 14 0 17 1;
-#X connect 15 0 22 1;
-#X connect 16 0 7 1;
-#X connect 17 0 10 0;
-#X connect 18 0 9 0;
-#X connect 18 0 21 0;
-#X connect 19 0 13 0;
-#X connect 20 0 0 0;
-#X connect 21 0 8 0;
-#X connect 22 0 7 0;
-#X connect 22 0 29 0;
-#X connect 23 0 22 0;
-#X connect 23 0 25 1;
-#X connect 25 0 24 0;
-#X connect 26 0 42 0;
-#X connect 28 0 4 0;
-#X connect 29 0 28 0;
-#X connect 30 0 32 0;
-#X connect 30 0 31 0;
-#X connect 31 0 29 5;
-#X connect 32 0 29 6;
-#X connect 34 0 30 0;
-#X connect 35 0 34 0;
-#X connect 37 0 18 2;
-#X connect 38 0 23 0;
-#X connect 38 1 6 0;
-#X connect 40 0 17 2;
-#X connect 42 0 44 0;
-#X connect 42 1 43 0;
-#X connect 43 0 5 0;
-#X connect 43 1 35 0;
-#X connect 43 2 19 0;
-#X connect 43 3 2 0;
-#X connect 44 0 1 0;
-#X connect 44 1 47 0;
-#X connect 44 2 23 1;
-#X connect 45 0 46 0;
-#X connect 46 0 1 0;
-#X connect 46 1 20 0;
-#X connect 46 2 23 1;
-#X connect 47 0 0 0;
-#X restore 197 110 pd patch;
-#X obj 138 70 inlet;
-#X obj 128 180 outlet;
-#N canvas 537 83 484 364 selection 0;
-#X obj 202 22 inlet;
-#X obj 301 212 symbol \$0-paint;
-#X obj 301 272 pointer;
-#X msg 252 252 next;
-#X msg 301 232 traverse pd-\$1;
-#X msg 265 102 1 0;
-#X obj 265 142 list-rot;
-#X obj 310 122 * -1;
-#X obj 265 162 list-drip;
-#X obj 225 232 t f b;
-#X msg 158 212 1 1;
-#X obj 275 62 outlet;
-#X obj 265 82 t b f b b;
-#X obj 225 332 set \$0-element selection y;
-#X obj 356 162 s \$0-open/close-i;
-#X obj 158 122 r \$0-open/close;
-#X obj 158 182 t b b;
-#X obj 158 142 t f f;
-#X msg 356 142 1;
-#X obj 301 312 expr if ($f2 == 0 \, $f1 \, 0);
-#X obj 158 162 sel 0;
-#X obj 14 48 r \$0-sellist;
-#X msg 68 108 set \, add2 1;
-#X obj 41 128 until;
-#X msg 51 148 add2 1;
-#X msg 41 168 add2 0;
-#X obj 41 88 t f b;
-#X obj 14 68 sel 0;
-#N canvas 927 111 288 144 messages 0;
-#X obj 11 27 inlet;
-#X text 12 7 Messages accepted by [jp.menu];
-#X obj 11 87 outlet;
-#X obj 58 107 outlet;
-#X obj 11 67 0;
-#N canvas 843 386 300 290 color 0;
-#X obj 16 52 route bang;
-#X obj 16 242 s pd-\$0-color-selector;
-#X msg 16 222 vis 1;
-#N canvas 423 741 518 243 \$0-color-selector 0;
-#N canvas 298 464 528 328 color-sel-gui 0;
-#X obj 12 59 ds-color-sel;
-#X obj 12 154 ds-color-sel;
-#X obj 425 25 bng 15 250 50 0 \$0-send-colors \$0-send-colors-i empty
-17 7 0 10 -228856 -1 -1;
-#X text 442 23 Send colors;
-#X obj 12 258 pack s f f;
-#X msg 12 238 symbol color;
-#X obj 12 298 s \$0-color-reset;
-#X msg 12 278 \$2 \$3;
-#X text 12 41 Background color;
-#X text 12 136 Label and border color;
-#X text 12 13 Click the desired color for the fields \, and click the
-"send" button when you're finished.;
-#X connect 0 0 4 1;
-#X connect 1 0 4 2;
-#X connect 2 0 5 0;
-#X connect 4 0 7 0;
-#X connect 5 0 4 0;
-#X connect 7 0 6 0;
-#X coords 0 -1 1 1 506 217 2 10 10;
-#X restore 5 14 pd color-sel-gui;
-#X restore 16 262 pd \$0-color-selector;
-#X obj 83 72 r \$0-color-reset;
-#X obj 16 32 inlet;
-#X msg 92 142 traverse \$1;
-#X obj 92 122 symbol pd-\$0-paint;
-#X obj 92 162 pointer \$0-element;
-#X msg 54 142 next;
-#X obj 54 122 until;
-#X obj 92 202 set \$0-element col-back col-lab;
-#X obj 92 182 list prepend;
-#X obj 73 92 t b b a;
-#X text 17 12 Sets color scheme;
-#X connect 0 0 2 0;
-#X connect 0 1 13 0;
-#X connect 2 0 1 0;
-#X connect 4 0 13 0;
-#X connect 5 0 0 0;
-#X connect 6 0 8 0;
-#X connect 7 0 6 0;
-#X connect 8 0 12 0;
-#X connect 8 2 10 1;
-#X connect 9 0 8 0;
-#X connect 10 0 9 0;
-#X connect 12 0 11 0;
-#X connect 13 0 10 0;
-#X connect 13 1 7 0;
-#X connect 13 2 12 1;
-#X restore 120 87 pd color;
-#X obj 58 87 i;
-#N canvas 949 107 426 490 size 0;
-#X obj 99 74 s pd-\$0-paint;
-#X obj 82 114 s \$0-menu;
-#X obj 48 14 inlet;
-#X msg 99 54 donecanvasdialog 1 1 2 0 0 \$1 \$2 \$1 \$2 0 0 \, dirty
-0;
-#X msg 82 94 donecanvasdialog 1 -1 2 0 -1 1 1 \$1 \$2 0 0 \, dirty
-0;
-#X msg 65 374 traverse \$1;
-#X obj 65 234 symbol pd-\$0-paint;
-#X obj 65 394 pointer \$0-element;
-#X msg 27 374 next;
-#X obj 27 234 until;
-#X obj 65 464 set \$0-element lenght height ypos;
-#X obj 122 154 s \$0-ypos;
-#X obj 65 134 unpack f f;
-#X obj 65 174 s \$0-lenght;
-#X obj 103 304 r \$0-ypos;
-#X obj 88 324 * 1;
-#X obj 88 284 f+ 0 1;
-#X obj 48 204 t b b b a;
-#X obj 27 254 t b b;
-#X obj 65 424 pack p f f f;
-#X msg 65 444 \$3 \$4 \$2 \$1;
-#X obj 48 34 t l l l l;
-#X obj 111 254 unpack f f;
-#X obj 98 344 s \$0-gop-height;
-#X connect 2 0 21 0;
-#X connect 3 0 0 0;
-#X connect 4 0 1 0;
-#X connect 5 0 7 0;
-#X connect 6 0 5 0;
-#X connect 7 0 19 0;
-#X connect 7 2 9 1;
-#X connect 8 0 7 0;
-#X connect 9 0 18 0;
-#X connect 12 0 13 0;
-#X connect 12 1 11 0;
-#X connect 14 0 15 1;
-#X connect 15 0 19 1;
-#X connect 15 0 23 0;
-#X connect 16 0 15 0;
-#X connect 17 0 9 0;
-#X connect 17 1 6 0;
-#X connect 17 2 16 1;
-#X connect 17 3 22 0;
-#X connect 18 0 8 0;
-#X connect 18 1 16 0;
-#X connect 19 0 20 0;
-#X connect 20 0 10 0;
-#X connect 21 0 17 0;
-#X connect 21 1 12 0;
-#X connect 21 2 4 0;
-#X connect 21 3 3 0;
-#X connect 22 0 19 2;
-#X connect 22 1 19 3;
-#X restore 157 67 pd size;
-#X obj 11 47 route open float bang color size load;
-#N canvas 1157 204 292 160 load 0;
-#X obj 14 13 inlet;
-#X msg 41 53 clear;
-#X obj 41 73 s pd-\$0-paint;
-#X obj 14 133 s \$0-load;
-#X obj 14 33 t a b;
-#X msg 14 113 symbol jp.menu-\$1.txt;
-#X obj 14 93 symbol;
-#X connect 0 0 4 0;
-#X connect 1 0 2 0;
-#X connect 4 0 6 0;
-#X connect 4 1 1 0;
-#X connect 5 0 3 0;
-#X connect 6 0 5 0;
-#X restore 193 87 pd load;
-#X connect 0 0 8 0;
-#X connect 4 0 2 0;
-#X connect 6 0 3 0;
-#X connect 8 0 4 0;
-#X connect 8 1 6 0;
-#X connect 8 2 6 0;
-#X connect 8 3 5 0;
-#X connect 8 4 7 0;
-#X connect 8 5 9 0;
-#X restore 202 42 pd messages;
-#X obj 301 292 get \$0-element ypos menu;
-#X obj 282 22 inlet;
-#X connect 0 0 28 0;
-#X connect 1 0 4 0;
-#X connect 2 0 13 2;
-#X connect 2 0 29 0;
-#X connect 3 0 2 0;
-#X connect 4 0 2 0;
-#X connect 5 0 6 0;
-#X connect 6 0 8 0;
-#X connect 7 0 6 1;
-#X connect 8 0 9 0;
-#X connect 9 0 13 0;
-#X connect 9 1 3 0;
-#X connect 10 0 8 0;
-#X connect 12 0 5 0;
-#X connect 12 1 7 0;
-#X connect 12 2 1 0;
-#X connect 12 3 18 0;
-#X connect 15 0 17 0;
-#X connect 16 0 10 0;
-#X connect 16 1 1 0;
-#X connect 17 0 20 0;
-#X connect 17 1 19 1;
-#X connect 18 0 14 0;
-#X connect 19 0 13 1;
-#X connect 20 0 16 0;
-#X connect 21 0 27 0;
-#X connect 22 0 5 0;
-#X connect 22 0 10 0;
-#X connect 23 0 24 0;
-#X connect 23 0 25 0;
-#X connect 24 0 10 0;
-#X connect 25 0 5 0;
-#X connect 26 0 23 0;
-#X connect 26 1 22 0;
-#X connect 27 1 26 0;
-#X connect 28 0 14 0;
-#X connect 28 1 12 0;
-#X connect 28 1 11 0;
-#X connect 29 0 19 0;
-#X connect 30 0 12 0;
-#X restore 128 130 pd selection;
-#X obj 147 90 receive \$4-i;
-#X obj 137 160 send \$4;
-#N canvas 125 353 450 300 \$0-paint 0;
-#X coords 0 0 80 16 80 16 2 0 0;
-#X restore 0 0 pd \$0-paint;
-#X connect 0 0 5 0;
-#X connect 2 0 5 1;
-#X connect 3 0 5 0;
-#X connect 5 0 4 0;
-#X connect 5 0 7 0;
-#X connect 6 0 5 0;
-#X coords 0 -1 1 1 80 16 2 0 0;
+#N struct 1087-color float x float y float farbe;
+#N struct 1087-color-display float x float y float farbe;
+#N struct 1090-color float x float y float farbe;
+#N struct 1090-color-display float x float y float farbe;
+#N struct 1082-element float x float y symbol menu float lenght float
+height float selection float ypos float col-back float col-lab;
+#N canvas 628 409 330 217 10;
+#N canvas 1088 161 379 353 \$0-element 0;
+#X obj 8 94 route click;
+#X obj 35 134 tgl 15 0 \$0-open/close \$0-open/close-i empty 17 7 0
+10 -262144 -1 -1 1 1;
+#X obj 8 182 unpack pointer f;
+#X obj 8 242 / 1;
+#X obj 23 222 r \$0-ypos;
+#X obj 8 262 outlet;
+#X obj 8 152 spigot;
+#X obj 8 114 t l b;
+#X text 8 14 Data structures template and click interaction;
+#X obj 8 202 get \$0-element ypos;
+#X obj 8 44 struct \$0-element float x float y symbol menu float lenght
+float height float selection float ypos float col-back float col-lab
+;
+#X obj 8 313 filledpolygon -v selection col-back col-lab 1 0 0 0 height
+lenght height lenght 0;
+#X obj 8 293 drawsymbol -v selection menu 4 2 col-lab;
+#X connect 0 0 7 0;
+#X connect 1 0 6 1;
+#X connect 2 0 9 0;
+#X connect 3 0 5 0;
+#X connect 4 0 3 1;
+#X connect 6 0 2 0;
+#X connect 7 0 6 0;
+#X connect 7 1 1 0;
+#X connect 9 0 3 0;
+#X connect 10 0 0 0;
+#X restore 128 40 pd \$0-element;
+#X obj 128 20 namecanvas \$0-menu;
+#N canvas 110 254 616 633 patch 0;
+#X obj 286 250 textfile;
+#X obj 306 230 until;
+#X msg 424 90 clear;
+#X obj 424 110 s pd-\$0-paint;
+#X obj 315 560 s pd-\$0-paint;
+#X obj 353 150 symbol \$0-element;
+#X obj 358 320 l2s;
+#X obj 192 410 + 0;
+#X obj 161 600 s \$0-menu;
+#X msg 171 530 donecanvasdialog 1 1 2 0 0 \$3 \$2 \$3 \$2 0 0 \, dirty
+0;
+#X msg 17 450 0 \$1;
+#X obj 351 250 0;
+#X obj 17 390 r \$0-open/close;
+#X obj 99 410 r \$0-ypos;
+#X obj 340 420 r \$0-ypos;
+#X obj 207 390 r \$0-ypos;
+#X obj 17 430 expr if ($f1 == 1 \, $f2 \, $f3);
+#X obj 161 480 pack f f \$2;
+#X msg 286 210 read \$1 cr \, rewind;
+#X msg 161 580 donecanvasdialog 1 -1 2 0 -1 1 1 \$3 \$2 0 0 \, dirty
+0;
+#X obj 315 440 * 1;
+#X obj 315 340 f+ 0 1;
+#X obj 405 390 s \$0-sellist;
+#X obj 405 370 f;
+#X obj 326 30 loadbang;
+#X text 18 10 Reads configuration file and creates the menu scalars.
+;
+#X msg 315 480 scalar \$2 0 0 \$3 \$4 \$5 0 \$1 \$6 \$7;
+#X obj 422 290 sel 1;
+#X obj 422 320 999;
+#X obj 450 320 0;
+#X text 432 230 Sets default colors;
+#X obj 422 270 expr if($i1 + $i2 == 0 \, 1 \, 0);
+#X obj 422 250 list \$5 \$6;
+#X obj 351 270 outlet;
+#X obj 222 460 r \$0-lenght;
+#X obj 315 300 t b a;
+#X text 233 500 scalar parameters: x y menu lenght height selection
+ypos col-back col-lab;
+#X obj 182 350 r \$0-gop-height;
+#X text 153 330 New height after "size";
+#X obj 326 50 t b b;
+#X obj 353 70 t b b b b;
+#X obj 306 90 t b b b;
+#X obj 257 130 r \$0-load;
+#X obj 257 150 t b s b;
+#N canvas 424 551 297 172 path+file 0;
+#X obj 12 66 symbol jp.menu-\$1.txt;
+#X obj 12 106 list;
+#X msg 12 126 read \$2/\$1 cr \, rewind;
+#X obj 12 46 t b b;
+#X obj 12 26 inlet;
+#X obj 12 146 outlet;
+#X text 12 6 Gets path of parent patch and opens file;
+#X obj 33 86 getdir 3;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 2 0 5 0;
+#X connect 3 0 0 0;
+#X connect 3 1 7 0;
+#X connect 4 0 3 0;
+#X connect 7 0 1 1;
+#X restore 325 180 pd path+file;
+#N canvas 75 90 370 149 dimensions 0;
+#X obj 11 109 s \$0-ypos;
+#X obj 11 39 inlet;
+#X obj 11 69 f \$3;
+#X obj 11 89 expr if($i1 == 0 \, 17 \, $i1);
+#X text 11 9 Checks if arguments for lenght and height are there. If
+not \, takes 100 + 17 as default values.;
+#X obj 181 69 f \$2;
+#X obj 181 89 expr if($i1 == 0 \, 100 \, $i1);
+#X obj 181 109 s \$0-lenght;
+#X connect 1 0 2 0;
+#X connect 1 0 5 0;
+#X connect 2 0 3 0;
+#X connect 3 0 0 0;
+#X connect 5 0 6 0;
+#X connect 6 0 7 0;
+#X restore 387 130 pd dimensions;
+#X obj 315 460 pack f s s f f \$5 \$6;
+#X obj 373 440 r \$0-lenght;
+#X connect 0 0 35 0;
+#X connect 0 1 1 1;
+#X connect 0 1 11 0;
+#X connect 0 1 23 0;
+#X connect 1 0 0 0;
+#X connect 2 0 3 0;
+#X connect 5 0 46 1;
+#X connect 6 0 46 2;
+#X connect 7 0 16 2;
+#X connect 7 0 17 1;
+#X connect 9 0 4 0;
+#X connect 10 0 17 0;
+#X connect 11 0 33 0;
+#X connect 12 0 16 0;
+#X connect 13 0 16 1;
+#X connect 14 0 20 1;
+#X connect 14 0 46 4;
+#X connect 15 0 7 1;
+#X connect 16 0 10 0;
+#X connect 17 0 9 0;
+#X connect 17 0 19 0;
+#X connect 18 0 0 0;
+#X connect 19 0 8 0;
+#X connect 20 0 7 0;
+#X connect 20 0 46 0;
+#X connect 21 0 20 0;
+#X connect 21 0 23 1;
+#X connect 23 0 22 0;
+#X connect 24 0 39 0;
+#X connect 26 0 4 0;
+#X connect 27 0 29 0;
+#X connect 27 0 28 0;
+#X connect 28 0 46 5;
+#X connect 29 0 46 6;
+#X connect 31 0 27 0;
+#X connect 32 0 31 0;
+#X connect 34 0 17 2;
+#X connect 35 0 21 0;
+#X connect 35 1 6 0;
+#X connect 37 0 16 2;
+#X connect 39 0 41 0;
+#X connect 39 1 40 0;
+#X connect 40 0 5 0;
+#X connect 40 1 32 0;
+#X connect 40 2 45 0;
+#X connect 40 3 2 0;
+#X connect 41 0 1 0;
+#X connect 41 1 44 0;
+#X connect 41 2 21 1;
+#X connect 42 0 43 0;
+#X connect 43 0 1 0;
+#X connect 43 1 18 0;
+#X connect 43 2 21 1;
+#X connect 44 0 0 0;
+#X connect 46 0 26 0;
+#X connect 47 0 46 3;
+#X restore 197 110 pd patch;
+#X obj 138 70 inlet;
+#X obj 128 180 outlet;
+#N canvas 537 83 484 364 selection 0;
+#X obj 202 22 inlet;
+#X obj 301 212 symbol \$0-paint;
+#X obj 301 272 pointer;
+#X msg 252 252 next;
+#X msg 301 232 traverse pd-\$1;
+#X msg 265 102 1 0 0 0;
+#X obj 265 142 list-rot;
+#X obj 310 122 * -1;
+#X obj 265 162 list-drip;
+#X obj 225 232 t f b;
+#X msg 158 212 1 1 1 1;
+#X obj 275 62 outlet;
+#X obj 265 82 t b f b b;
+#X obj 225 332 set \$0-element selection y;
+#X obj 356 162 s \$0-open/close-i;
+#X obj 158 122 r \$0-open/close;
+#X obj 158 182 t b b;
+#X obj 158 142 t f f;
+#X msg 356 142 1;
+#X obj 301 312 expr if ($f2 == 0 \, $f1 \, 0);
+#X obj 158 162 sel 0;
+#X obj 14 48 r \$0-sellist;
+#X msg 68 108 set \, add2 1;
+#X obj 41 128 until;
+#X msg 51 148 add2 1;
+#X msg 41 168 add2 0;
+#X obj 41 88 t f b;
+#X obj 14 68 sel 0;
+#N canvas 927 111 462 171 messages 0;
+#X obj 11 27 inlet;
+#X text 12 7 Messages accepted by [jp.menu];
+#X obj 11 87 outlet;
+#X obj 58 147 outlet;
+#X obj 11 67 0;
+#N canvas 843 386 300 290 color 0;
+#X obj 16 52 route bang;
+#X obj 16 242 s pd-\$0-color-selector;
+#X msg 16 222 vis 1;
+#N canvas 423 741 518 243 \$0-color-selector 0;
+#N canvas 298 464 528 328 color-sel-gui 0;
+#X obj 12 59 ds-color-sel;
+#X obj 12 154 ds-color-sel;
+#X obj 425 25 bng 15 250 50 0 \$0-send-colors \$0-send-colors-i empty
+17 7 0 10 -228856 -1 -1;
+#X text 442 23 Send colors;
+#X obj 12 258 pack s f f;
+#X msg 12 238 symbol color;
+#X obj 12 298 s \$0-color-reset;
+#X msg 12 278 \$2 \$3;
+#X text 12 41 Background color;
+#X text 12 136 Label and border color;
+#X text 12 13 Click the desired color for the fields \, and click the
+"send" button when you're finished.;
+#X connect 0 0 4 1;
+#X connect 1 0 4 2;
+#X connect 2 0 5 0;
+#X connect 4 0 7 0;
+#X connect 5 0 4 0;
+#X connect 7 0 6 0;
+#X coords 0 -1 1 1 506 217 2 10 10;
+#X restore 5 14 pd color-sel-gui;
+#X restore 16 262 pd \$0-color-selector;
+#X obj 83 72 r \$0-color-reset;
+#X obj 16 32 inlet;
+#X msg 92 142 traverse \$1;
+#X obj 92 122 symbol pd-\$0-paint;
+#X obj 92 162 pointer \$0-element;
+#X msg 54 142 next;
+#X obj 54 122 until;
+#X obj 92 202 set \$0-element col-back col-lab;
+#X obj 92 182 list prepend;
+#X obj 73 92 t b b a;
+#X text 17 12 Sets color scheme;
+#X connect 0 0 2 0;
+#X connect 0 1 13 0;
+#X connect 2 0 1 0;
+#X connect 4 0 13 0;
+#X connect 5 0 0 0;
+#X connect 6 0 8 0;
+#X connect 7 0 6 0;
+#X connect 8 0 12 0;
+#X connect 8 2 10 1;
+#X connect 9 0 8 0;
+#X connect 10 0 9 0;
+#X connect 12 0 11 0;
+#X connect 13 0 10 0;
+#X connect 13 1 7 0;
+#X connect 13 2 12 1;
+#X restore 120 87 pd color;
+#N canvas 949 107 426 490 size 0;
+#X obj 99 74 s pd-\$0-paint;
+#X obj 82 114 s \$0-menu;
+#X obj 48 14 inlet;
+#X msg 99 54 donecanvasdialog 1 1 2 0 0 \$1 \$2 \$1 \$2 0 0 \, dirty
+0;
+#X msg 82 94 donecanvasdialog 1 -1 2 0 -1 1 1 \$1 \$2 0 0 \, dirty
+0;
+#X msg 65 374 traverse \$1;
+#X obj 65 234 symbol pd-\$0-paint;
+#X obj 65 394 pointer \$0-element;
+#X msg 27 374 next;
+#X obj 27 234 until;
+#X obj 65 464 set \$0-element lenght height ypos;
+#X obj 122 154 s \$0-ypos;
+#X obj 65 134 unpack f f;
+#X obj 65 174 s \$0-lenght;
+#X obj 103 304 r \$0-ypos;
+#X obj 88 324 * 1;
+#X obj 88 284 f+ 0 1;
+#X obj 48 204 t b b b a;
+#X obj 27 254 t b b;
+#X obj 65 424 pack p f f f;
+#X msg 65 444 \$3 \$4 \$2 \$1;
+#X obj 48 34 t l l l l;
+#X obj 111 254 unpack f f;
+#X obj 98 344 s \$0-gop-height;
+#X connect 2 0 21 0;
+#X connect 3 0 0 0;
+#X connect 4 0 1 0;
+#X connect 5 0 7 0;
+#X connect 6 0 5 0;
+#X connect 7 0 19 0;
+#X connect 7 2 9 1;
+#X connect 8 0 7 0;
+#X connect 9 0 18 0;
+#X connect 12 0 13 0;
+#X connect 12 1 11 0;
+#X connect 14 0 15 1;
+#X connect 15 0 19 1;
+#X connect 15 0 23 0;
+#X connect 16 0 15 0;
+#X connect 17 0 9 0;
+#X connect 17 1 6 0;
+#X connect 17 2 16 1;
+#X connect 17 3 22 0;
+#X connect 18 0 8 0;
+#X connect 18 1 16 0;
+#X connect 19 0 20 0;
+#X connect 20 0 10 0;
+#X connect 21 0 17 0;
+#X connect 21 1 12 0;
+#X connect 21 2 4 0;
+#X connect 21 3 3 0;
+#X connect 22 0 19 2;
+#X connect 22 1 19 3;
+#X restore 157 67 pd size;
+#N canvas 1157 204 292 160 load 0;
+#X obj 14 13 inlet;
+#X msg 41 53 clear;
+#X obj 41 73 s pd-\$0-paint;
+#X obj 14 133 s \$0-load;
+#X obj 14 33 t a b;
+#X msg 14 113 symbol jp.menu-\$1.txt;
+#X obj 14 93 symbol;
+#X connect 0 0 4 0;
+#X connect 1 0 2 0;
+#X connect 4 0 6 0;
+#X connect 4 1 1 0;
+#X connect 5 0 3 0;
+#X connect 6 0 5 0;
+#X restore 193 87 pd load;
+#X msg 314 87 Error: wrong command;
+#X obj 314 107 print jp.menu-\$1;
+#N canvas 517 402 403 243 input 0;
+#X obj 10 50 inlet;
+#X obj 10 70 i;
+#X obj 10 140 moses 0;
+#X obj 49 210 outlet;
+#X text 9 11 Filters selection input. Selecting last element creates
+new preset.;
+#X msg 109 170 Error - outside preset range;
+#X obj 70 50 inlet;
+#X obj 210 50 inlet;
+#X obj 70 100 +;
+#X obj 70 70 1;
+#X obj 210 100 +;
+#X obj 210 70 -1;
+#X obj 210 120 moses 0;
+#X obj 70 120 moses 0;
+#X obj 109 50 r \$0-sellist;
+#X obj 109 190 print jp.menu-\$1;
+#X obj 109 100 + 1;
+#X obj 49 190 moses;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 1 0 8 1;
+#X connect 1 0 10 1;
+#X connect 2 0 5 0;
+#X connect 2 1 17 0;
+#X connect 5 0 15 0;
+#X connect 6 0 9 0;
+#X connect 7 0 11 0;
+#X connect 8 0 13 0;
+#X connect 9 0 8 0;
+#X connect 10 0 12 0;
+#X connect 11 0 10 0;
+#X connect 12 0 5 0;
+#X connect 12 1 1 0;
+#X connect 13 0 1 0;
+#X connect 13 1 5 0;
+#X connect 14 0 16 0;
+#X connect 16 0 13 1;
+#X connect 16 0 17 1;
+#X connect 17 0 3 0;
+#X connect 17 1 5 0;
+#X restore 58 127 pd input;
+#X obj 11 47 route open float bang color size load next previous;
+#X connect 0 0 11 0;
+#X connect 4 0 2 0;
+#X connect 8 0 9 0;
+#X connect 10 0 3 0;
+#X connect 11 0 4 0;
+#X connect 11 1 10 0;
+#X connect 11 2 10 0;
+#X connect 11 3 5 0;
+#X connect 11 4 6 0;
+#X connect 11 5 7 0;
+#X connect 11 6 10 1;
+#X connect 11 7 10 2;
+#X connect 11 8 8 0;
+#X restore 202 42 pd messages;
+#X obj 301 292 get \$0-element ypos menu;
+#X obj 282 22 inlet;
+#X connect 0 0 28 0;
+#X connect 1 0 4 0;
+#X connect 2 0 13 2;
+#X connect 2 0 29 0;
+#X connect 3 0 2 0;
+#X connect 4 0 2 0;
+#X connect 5 0 6 0;
+#X connect 6 0 8 0;
+#X connect 7 0 6 1;
+#X connect 8 0 9 0;
+#X connect 9 0 13 0;
+#X connect 9 1 3 0;
+#X connect 10 0 8 0;
+#X connect 12 0 5 0;
+#X connect 12 1 7 0;
+#X connect 12 2 1 0;
+#X connect 12 3 18 0;
+#X connect 15 0 17 0;
+#X connect 16 0 10 0;
+#X connect 16 1 1 0;
+#X connect 17 0 20 0;
+#X connect 17 1 19 1;
+#X connect 18 0 14 0;
+#X connect 19 0 13 1;
+#X connect 20 0 16 0;
+#X connect 21 0 27 0;
+#X connect 22 0 5 0;
+#X connect 22 0 10 0;
+#X connect 23 0 24 0;
+#X connect 23 0 25 0;
+#X connect 24 0 10 0;
+#X connect 25 0 5 0;
+#X connect 26 0 23 0;
+#X connect 26 1 22 0;
+#X connect 27 1 26 0;
+#X connect 28 0 14 0;
+#X connect 28 1 12 0;
+#X connect 28 1 11 0;
+#X connect 29 0 19 0;
+#X connect 30 0 12 0;
+#X restore 128 130 pd selection;
+#X obj 147 90 receive \$4-i;
+#X obj 137 160 send \$4;
+#N canvas 125 353 450 300 \$0-paint 0;
+#X scalar 1082-element 0 0 Click 100 17 1 0 999 0 \;;
+#X scalar 1082-element 0 0 Voice + Click 100 17 0 17 999 0 \;;
+#X scalar 1082-element 0 0 Voice 100 17 0 34 999 0 \;;
+#X scalar 1082-element 0 0 Voice B+B 100 17 0 51 999 0 \;;
+#X coords 0 0 100 17 100 17 2 0 0;
+#X restore 0 0 pd \$0-paint;
+#N canvas 436 171 450 300 zutun 0;
+#X text 26 88 ## saida da direita com símbolo de label. para isso
+\, só tem que apanhar o símbolo apenas quando entra float \, nao
+quando há open.;
+#X text 26 58 ## editar e gravar configuracao usando mensagens? funciona
+com text \, ou tem que se usar a nova versao?;
+#X restore 258 180 pd zutun;
+#X connect 0 0 5 0;
+#X connect 2 0 5 1;
+#X connect 3 0 5 0;
+#X connect 5 0 4 0;
+#X connect 5 0 7 0;
+#X connect 6 0 5 0;
+#X coords 0 -1 1 1 100 17 2 0 0;
diff --git a/abstractions/jmmmp/jp.preset-help.pd b/abstractions/jmmmp/jp.preset-help.pd
new file mode 100644
index 000000000..b35d27795
--- /dev/null
+++ b/abstractions/jmmmp/jp.preset-help.pd
@@ -0,0 +1,234 @@
+#N struct 1036-color float x float y float farbe;
+#N struct 1036-color-display float x float y float farbe;
+#N struct 1039-color float x float y float farbe;
+#N struct 1039-color-display float x float y float farbe;
+#N struct 1034-element float x float y symbol menu float lenght float
+height float selection float ypos float col-back float col-lab;
+#N struct 1132-color float x float y float farbe;
+#N struct 1132-color-display float x float y float farbe;
+#N struct 1135-color float x float y float farbe;
+#N struct 1135-color-display float x float y float farbe;
+#N struct 1130-element float x float y symbol menu float lenght float
+height float selection float ypos float col-back float col-lab;
+#N canvas 217 63 770 565 10;
+#N canvas 0 0 396 419 license 0;
+#X text 8 47 All rights reserved.;
+#X text 8 227 The names of its contributors may not be used to endorse
+or promote products derived from this software without specific prior
+written permission.;
+#X text 8 87 Redistribution and use in source and binary forms \, with
+or without modification \, are permitted provided that the following
+conditions are met:;
+#X text 8 127 Redistributions of source code must retain the above
+copyright notice \, this list of conditions and the following disclaimer.
+;
+#X text 8 297 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
+CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES \, INCLUDING
+\, BUT NOT LIMITED TO \, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
+THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT \, INDIRECT
+\, INCIDENTAL \, SPECIAL \, EXEMPLARY \, OR CONSEQUENTIAL DAMAGES (INCLUDING
+\, BUT NOT LIMITED TO \, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES
+;
+#X text 8 167 Redistributions in binary form must reproduce the above
+copyright notice \, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the distribution.
+;
+#X text 8 7 Copyright 2016 \, João Pais;
+#X text 8 27 jmmmpais@gmail.com;
+#X restore 411 536 pd license;
+#X text 409 441 Outlets;
+#X text 409 291 - bang - outputs current setting;
+#N canvas 564 268 494 344 META 0;
+#X text 12 95 LICENSE BSD;
+#X text 12 75 LIBRARY jmmmp;
+#X text 13 115 WEBSITE http://puredata.info/Members/jmmmp;
+#X text 12 6 DESCRIPTION Dropdown menu programmed with data structures
+;
+#X text 12 36 KEYWORDS menu GOP data-structures;
+#X text 12 55 AUTHOR João Pais <jmmmpais@gmail.com>;
+#X text 12 135 VERSION 2016;
+#X restore 501 536 pd META;
+#X text 409 61 - name of configuration file;
+#N canvas 403 54 381 365 configuration 0;
+#X text 9 87 Name;
+#X text 9 157 Content;
+#X text 9 227 Load new file;
+#X text 9 247 To load a new file \, send the message "load \$1" with
+the symbol as argument.;
+#X text 9 7 HOW TO FORMAT THE CONFIGURATION FILE FOR [jp.preset];
+#X text 9 37 The configuration file must be a .txt file \, stored in
+the same folder as the main patch where [jp.preset] is being used.
+;
+#X text 9 107 The file must be named jp.preset-NAME.txt.;
+#X text 9 127 The NAME will be used as the first argument for [jp.preset].
+;
+#X text 9 177 The content consists of as many lines as items in the
+menu. At the start of each line is the preset's label \, followed by
+the parameters.;
+#X msg 9 288 load test1;
+#X msg 19 308 load test2;
+#X obj 9 337 s \$0-test2-i;
+#X connect 9 0 11 0;
+#X connect 10 0 11 0;
+#X restore 262 341 pd configuration;
+#X text 410 516 (C) 2016 João Pais - jmmmpais@gmail.com;
+#X text 409 211 - integer - select item number. From 0 upwards.;
+#X obj 18 111 hradio 15 1 0 4 empty empty empty 0 -8 0 10 -262144 -1
+-1 0;
+#X text 429 121 - identifier for receive/send names;
+#X msg 28 131 open;
+#X text 409 191 Input messages;
+#X text 409 271 - open - opens full menu;
+#X text 12 466 Limitations of data structures;
+#X text 12 526 - the message "drawnumber_motion: symbol" appears in
+the console when instead of clicking \, the user drags the menu;
+#N canvas 204 57 396 209 send/receive 0;
+#X text 9 7 SEND/RECEIVE VARIABLES;
+#X text 9 77 The variables are formated as:;
+#X text 9 147 For example \, if the 3rd argument is "menusend" \, the
+receive name will be "menusend-i". You can use also dollarsigns as
+symbols: \$0 \, \$1 \, etc. \, as in the example in the main patch.
+;
+#X text 9 37 [jp.preset] lets you define an internal variable to use
+with send and receive objects. You can send and receive any messages
+to it.;
+#X text 9 97 - the 4th argument gives the send name;
+#X text 9 117 - the receive name adds "-i" to the 4th argument;
+#X restore 164 401 pd send/receive;
+#X text 409 351 - color \$1 \$2 - change colors;
+#X text 429 141 - background color;
+#X text 429 161 - label / border color;
+#X text 409 391 - size x y - change menu size;
+#X text 12 486 The following limitations are built in to Pure Data:
+;
+#X obj 18 171 print PRESET;
+#X msg 238 301 1 2 3;
+#X obj 238 281 prepend set;
+#X text 409 311 - save \$1 ... - replaces current preset;
+#X text 409 331 - rename - open input window to rename current preset
+;
+#X text 409 371 - color - open color selector;
+#X text 409 411 - load \$1 - load other configuration from the same
+folder;
+#X text 14 381 Select items;
+#N canvas 500 61 386 239 select 0;
+#X msg 22 91 next;
+#X msg 32 111 previous;
+#X floatatom 12 71 5 0 0 0 - - -;
+#X text 12 7 To select an item;
+#X text 12 27 You can send an integer to select an item. The strings
+"next" and "previous" also move between the elements of the menu.;
+#X text 12 167 The message "open" shows the full menu.;
+#X msg 12 187 open;
+#X obj 12 131 s \$0-test2-i;
+#X obj 12 207 s \$0-test2-i;
+#X connect 0 0 7 0;
+#X connect 1 0 7 0;
+#X connect 2 0 7 0;
+#X connect 6 0 8 0;
+#X restore 164 381 pd select;
+#X text 409 231 - next - outputs next item;
+#X text 409 251 - previous - outputs previous item;
+#X text 14 401 Send/receive variables;
+#N canvas 491 72 386 554 edit 0;
+#X text 12 337 You can edit the configuration file in anyway you want.
+Or you can use the GUI:;
+#X text 12 387 - the name window appears \, you will be prompted to
+give it a name;
+#X text 12 417 - the new preset slot is created. You can write data
+to it by sending the message "save \$1 ...";
+#X text 12 367 - click the last preset slot \, called "NEW";
+#X text 12 447 - the preset file is automatically saved after you add
+some content to it.;
+#X text 12 317 To add a new preset;
+#X text 12 37 To write a preset;
+#X text 12 57 - select a preset \, making it active;
+#X text 12 77 - send the message "save \$1 ..." to [jp.preset]. It
+overwrites the active preset and saves the file.;
+#X text 12 207 - select a preset \, making it active;
+#X text 12 227 - send the message "save \$1 ..." to [jp.preset]. It
+overwrites the active preset and saves the file.;
+#X text 12 187 To rename a preset;
+#X msg 11 107 save ano soa apdp aospd;
+#X msg 21 127 save 1 23 aa xpto -5;
+#X msg 11 257 rename;
+#X text 12 7 All content operations save the preset file immediately.
+;
+#X text 12 497 To delete a preset;
+#X text 12 517 For now \, the only way to delete a preset is by editing
+the text file with the data.;
+#X obj 11 147 s \$0-test2-i;
+#X obj 11 277 s \$0-test2-i;
+#X connect 12 0 18 0;
+#X connect 13 0 18 0;
+#X connect 14 0 19 0;
+#X restore 164 361 pd edit;
+#X text 14 361 Edit presets;
+#X text 14 421 Display configuration;
+#N canvas 509 163 442 464 display 0;
+#X msg 21 307 color 57 600;
+#X text 10 167 Change colors:;
+#X obj 373 227 pd-colors;
+#X msg 11 387 color;
+#X text 11 367 Or send only the message "color" to open a color selector.
+;
+#X text 11 227 The colors follow the data structures color scheme.
+Look at;
+#X text 11 241 for a complete palette.;
+#X text 11 257 If both color arguments are 0 \, default colors will
+be used.;
+#X msg 11 287 color 999 0;
+#X text 91 287 default values;
+#X text 11 207 \$1 = background color \, \$2 = label+border color;
+#X text 11 187 Send the message "color \$1 \$2" to set the menu colors.
+;
+#X msg 31 327 color 60 999;
+#X text 11 427 !! Mind \, for "color" the object doesn't get saved
+with the new parameters !! You must edit the object itself.;
+#X msg 20 47 size 60 70;
+#X msg 30 67 size 120 20;
+#X msg 10 27 size 80 15;
+#X text 10 7 Change menu size;
+#X text 10 107 !! Mind \, for "size" the object doesn't get saved with
+the new parameters !! You must edit the object itself.;
+#X obj 10 87 s \$0-test2-i;
+#X obj 11 347 s \$0-test2-i;
+#X obj 11 407 s \$0-test2-i;
+#X connect 0 0 20 0;
+#X connect 3 0 21 0;
+#X connect 8 0 20 0;
+#X connect 12 0 20 0;
+#X connect 14 0 19 0;
+#X connect 15 0 19 0;
+#X connect 16 0 19 0;
+#X restore 164 421 pd display;
+#X text 19 211 This object is controlled by the send/receive variables
+defined as arguments.;
+#X text 14 91 This preset has 4 items;
+#X text 428 81 - lenght (pixels) \, set to 100 if not used;
+#X text 429 101 - height (pixels) \, set to 17 if not used;
+#X text 409 31 Arguments - Always use the first argument \, others
+are facultative;
+#X obj 138 261 hradio 15 1 0 5 empty empty empty 0 -8 0 10 -262144
+-1 -1 0;
+#X text 139 241 Send:;
+#X text 239 241 Receive:;
+#X text 12 41 [jp.preset] can be used to store and recall lists of
+values. You can connect it with another object \, or use configurable
+send/receive variables.;
+#X text 11 11 [jp.preset] - Dropdown preset saver programmed with data
+structures;
+#X text 409 461 - list of elements;
+#X obj 18 151 jp.preset test1;
+#X obj 138 281 s \$0-test2-i;
+#X obj 238 261 r \$0-test2;
+#X text 14 341 Formatting/loading a configuration file;
+#X text 12 506 - the size and font of the label can't be changed;
+#X obj 18 241 jp.preset test2 100 22 \$0-test2 89 9;
+#X connect 8 0 48 0;
+#X connect 10 0 48 0;
+#X connect 23 0 22 0;
+#X connect 42 0 49 0;
+#X connect 48 0 21 0;
+#X connect 50 0 23 0;
diff --git a/abstractions/jmmmp/jp.preset-test1.txt b/abstractions/jmmmp/jp.preset-test1.txt
new file mode 100644
index 000000000..46f3e01df
--- /dev/null
+++ b/abstractions/jmmmp/jp.preset-test1.txt
@@ -0,0 +1,5 @@
+test1 1 2 3 
+test2 -1 -2 -3 -4 -5
+test3 0.1 0.2 0.3 0.4 
+othertest a b 1 2 c 3 d e f -4 -5 -6
+ 
diff --git a/abstractions/jmmmp/jp.preset-test2.txt b/abstractions/jmmmp/jp.preset-test2.txt
new file mode 100644
index 000000000..3fbb6a1df
--- /dev/null
+++ b/abstractions/jmmmp/jp.preset-test2.txt
@@ -0,0 +1,5 @@
+item1 1 2 3 
+something -1 -2 -3 -4 -5
+else 0.1 0.2 0.3 0.4 
+list a b 1 2 c 3 d e f -4 -5 -6
+a_symbol symb
\ No newline at end of file
diff --git a/abstractions/jmmmp/jp.preset.pd b/abstractions/jmmmp/jp.preset.pd
new file mode 100644
index 000000000..bb0ee229c
--- /dev/null
+++ b/abstractions/jmmmp/jp.preset.pd
@@ -0,0 +1,597 @@
+#N struct 1036-color float x float y float farbe;
+#N struct 1036-color-display float x float y float farbe;
+#N struct 1039-color float x float y float farbe;
+#N struct 1039-color-display float x float y float farbe;
+#N canvas 558 47 375 250 10;
+#X declare -stdlib zexy;
+#N canvas 156 50 442 365 \$0-element 0;
+#X obj 8 94 route click;
+#X obj 35 134 tgl 15 0 \$0-open/close \$0-open/close-i empty 17 7 0
+10 -262144 -1 -1 1 1;
+#X obj 8 182 unpack pointer f;
+#X obj 8 242 / 1;
+#X obj 23 222 r \$0-ypos;
+#X obj 8 262 outlet;
+#X obj 8 152 spigot;
+#X obj 8 114 t l b;
+#X text 8 14 Data structures template and click interaction;
+#X obj 8 202 get \$0-element ypos;
+#X obj 8 44 struct \$0-element float x float y symbol menu float lenght
+float height float selection float ypos float col-back float col-lab
+;
+#X obj 8 313 filledpolygon -v selection col-back col-lab 1 0 0 0 height
+lenght height lenght 0;
+#X obj 8 293 drawsymbol -v selection menu 4 2 col-lab;
+#X connect 0 0 7 0;
+#X connect 1 0 6 1;
+#X connect 2 0 9 0;
+#X connect 3 0 5 0;
+#X connect 4 0 3 1;
+#X connect 6 0 2 0;
+#X connect 7 0 6 0;
+#X connect 7 1 1 0;
+#X connect 9 0 3 0;
+#X connect 10 0 0 0;
+#X restore 128 40 pd \$0-element;
+#X obj 128 20 namecanvas \$0-menu;
+#N canvas 800 113 691 659 patch 0;
+#X msg 408 90 clear;
+#X obj 408 110 s pd-\$0-paint;
+#X obj 309 590 s pd-\$0-paint;
+#X obj 357 150 symbol \$0-element;
+#X obj 352 360 l2s;
+#X obj 183 440 + 0;
+#X obj 155 630 s \$0-menu;
+#X msg 165 560 donecanvasdialog 1 1 2 0 0 \$3 \$2 \$3 \$2 0 0 \, dirty
+0;
+#X msg 8 480 0 \$1;
+#X obj 350 250 0;
+#X obj 8 420 r \$0-open/close;
+#X obj 90 440 r \$0-ypos;
+#X obj 198 420 r \$0-ypos;
+#X obj 8 460 expr if ($f1 == 1 \, $f2 \, $f3);
+#X msg 155 610 donecanvasdialog 1 -1 2 0 -1 1 1 \$3 \$2 0 0 \, dirty
+0;
+#X obj 309 470 * 1;
+#X obj 309 380 f+ 0 1;
+#X obj 401 430 s \$0-sellist;
+#X obj 401 410 f;
+#X text 22 10 Reads configuration file and creates the menu scalars.
+;
+#X msg 309 510 scalar \$2 0 0 \$3 \$4 \$5 0 \$1 \$6 \$7;
+#X obj 496 270 sel 1;
+#X obj 496 300 999;
+#X obj 524 300 0;
+#X text 496 210 Sets default colors;
+#X obj 350 270 outlet;
+#X obj 212 490 r \$0-lenght;
+#X obj 309 340 t b a;
+#X text 317 530 scalar parameters: x y menu lenght height selection
+ypos col-back col-lab;
+#X obj 173 400 r \$0-gop-height;
+#X text 124 380 New height after "size";
+#X obj 330 50 t b b;
+#X obj 357 70 t b b b b;
+#X obj 261 150 r \$0-load;
+#X obj 261 170 t b s b;
+#N canvas 133 417 276 172 path+file 0;
+#X obj 12 106 list;
+#X obj 12 46 t b b;
+#X obj 12 26 inlet;
+#X text 12 6 Gets path of parent patch and opens file;
+#X obj 12 66 symbol jp.preset-\$1.txt;
+#X msg 12 126 symbol \$2/\$1;
+#X obj 12 146 s \$0-load;
+#X obj 33 86 ggee/getdir 3;
+#X connect 0 0 5 0;
+#X connect 1 0 4 0;
+#X connect 1 1 7 0;
+#X connect 2 0 1 0;
+#X connect 4 0 0 0;
+#X connect 5 0 6 0;
+#X connect 7 0 0 1;
+#X restore 280 90 pd path+file;
+#X obj 280 300 list split 1;
+#X obj 280 230 msgfile;
+#X obj 261 210 until;
+#X msg 280 190 read \$1 cr \, rewind;
+#X obj 303 35 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 401 290 symbol NEW;
+#X obj 350 230 t b b b b;
+#X obj 411 270 r \$0-addNEW;
+#X obj 401 310 t b s;
+#X obj 330 30 loadbang;
+#X obj 496 230 pack \$5 \$6;
+#X obj 496 250 expr if($i1 + $i2 == 0 \, 1 \, 0);
+#X text 436 491 pack f s s \$2 \$3 \$5 \$6;
+#X obj 309 490 pack f s s f f \$5 \$6;
+#X obj 155 510 pack f f f;
+#X obj 337 440 r \$0-ypos;
+#X obj 367 470 r \$0-lenght;
+#N canvas 75 90 370 149 dimensions 0;
+#X obj 11 109 s \$0-ypos;
+#X obj 11 39 inlet;
+#X obj 11 69 f \$3;
+#X obj 11 89 expr if($i1 == 0 \, 17 \, $i1);
+#X text 11 9 Checks if arguments for lenght and height are there. If
+not \, takes 100 + 17 as default values.;
+#X obj 181 69 f \$2;
+#X obj 181 89 expr if($i1 == 0 \, 100 \, $i1);
+#X obj 181 109 s \$0-lenght;
+#X connect 1 0 2 0;
+#X connect 1 0 5 0;
+#X connect 2 0 3 0;
+#X connect 3 0 0 0;
+#X connect 5 0 6 0;
+#X connect 6 0 7 0;
+#X restore 391 130 pd dimensions;
+#X connect 0 0 1 0;
+#X connect 3 0 49 1;
+#X connect 4 0 49 2;
+#X connect 5 0 13 2;
+#X connect 5 0 50 1;
+#X connect 7 0 2 0;
+#X connect 8 0 50 0;
+#X connect 9 0 25 0;
+#X connect 10 0 13 0;
+#X connect 11 0 13 1;
+#X connect 12 0 5 1;
+#X connect 13 0 8 0;
+#X connect 14 0 6 0;
+#X connect 15 0 5 0;
+#X connect 15 0 49 0;
+#X connect 16 0 15 0;
+#X connect 16 0 18 1;
+#X connect 18 0 17 0;
+#X connect 20 0 2 0;
+#X connect 21 0 23 0;
+#X connect 21 0 22 0;
+#X connect 22 0 49 5;
+#X connect 23 0 49 6;
+#X connect 26 0 50 2;
+#X connect 27 0 16 0;
+#X connect 27 1 4 0;
+#X connect 29 0 13 2;
+#X connect 31 0 35 0;
+#X connect 31 1 32 0;
+#X connect 32 0 3 0;
+#X connect 32 1 46 0;
+#X connect 32 2 53 0;
+#X connect 32 3 0 0;
+#X connect 33 0 34 0;
+#X connect 34 0 38 0;
+#X connect 34 1 39 0;
+#X connect 34 2 16 1;
+#X connect 36 0 27 0;
+#X connect 37 0 36 0;
+#X connect 37 1 42 0;
+#X connect 38 0 37 0;
+#X connect 39 0 37 0;
+#X connect 40 0 31 0;
+#X connect 41 0 44 0;
+#X connect 42 0 9 0;
+#X connect 42 2 38 1;
+#X connect 42 3 41 0;
+#X connect 43 0 41 0;
+#X connect 44 0 18 0;
+#X connect 44 1 27 0;
+#X connect 45 0 31 0;
+#X connect 46 0 47 0;
+#X connect 47 0 21 0;
+#X connect 49 0 20 0;
+#X connect 50 0 7 0;
+#X connect 50 0 14 0;
+#X connect 51 0 49 4;
+#X connect 51 0 15 1;
+#X connect 52 0 49 3;
+#X restore 197 110 pd patch;
+#X obj 138 70 inlet;
+#X obj 128 180 outlet;
+#N canvas 77 301 547 364 selection 0;
+#X obj 234 22 inlet;
+#X obj 301 212 symbol \$0-paint;
+#X obj 301 272 pointer;
+#X msg 252 252 next;
+#X msg 301 232 traverse pd-\$1;
+#X msg 265 102 1 0 0 0 0;
+#X obj 364 122 * -1;
+#X obj 225 232 t f b;
+#X msg 158 212 1 1 1 1 1;
+#X obj 297 62 outlet;
+#X obj 265 82 t b f b b;
+#X obj 225 332 set \$0-element selection y;
+#X obj 396 162 s \$0-open/close-i;
+#X obj 158 122 r \$0-open/close;
+#X obj 158 182 t b b;
+#X obj 158 142 t f f;
+#X msg 396 142 1;
+#X obj 301 312 expr if ($f2 == 0 \, $f1 \, 0);
+#X obj 158 162 sel 0;
+#X obj 14 48 r \$0-sellist;
+#X msg 68 108 set \, add2 1;
+#X obj 41 128 until;
+#X msg 51 148 add2 1;
+#X msg 41 168 add2 0;
+#X obj 41 88 t f b;
+#X obj 14 68 sel 0;
+#N canvas 184 50 479 211 messages 0;
+#X obj 11 27 inlet;
+#X obj 11 107 outlet;
+#X obj 170 177 outlet;
+#X obj 11 87 0;
+#N canvas 506 305 300 290 color 0;
+#X obj 16 52 route bang;
+#X obj 16 242 s pd-\$0-color-selector;
+#X msg 16 222 vis 1;
+#N canvas 423 741 518 243 \$0-color-selector 0;
+#N canvas 298 464 528 328 color-sel-gui 0;
+#X obj 12 59 ds-color-sel;
+#X obj 12 154 ds-color-sel;
+#X obj 425 25 bng 15 250 50 0 \$0-send-colors \$0-send-colors-i empty
+17 7 0 10 -228856 -1 -1;
+#X text 442 23 Send colors;
+#X obj 12 258 pack s f f;
+#X msg 12 238 symbol color;
+#X obj 12 298 s \$0-color-reset;
+#X msg 12 278 \$2 \$3;
+#X text 12 41 Background color;
+#X text 12 136 Label and border color;
+#X text 12 13 Click the desired color for the fields \, and click the
+"send" button when you're finished.;
+#X connect 0 0 4 1;
+#X connect 1 0 4 2;
+#X connect 2 0 5 0;
+#X connect 4 0 7 0;
+#X connect 5 0 4 0;
+#X connect 7 0 6 0;
+#X coords 0 -1 1 1 506 217 2 10 10;
+#X restore 5 14 pd color-sel-gui;
+#X restore 16 262 pd \$0-color-selector;
+#X obj 83 72 r \$0-color-reset;
+#X obj 16 32 inlet;
+#X msg 92 142 traverse \$1;
+#X obj 92 122 symbol pd-\$0-paint;
+#X obj 92 162 pointer \$0-element;
+#X msg 54 142 next;
+#X obj 54 122 until;
+#X obj 92 202 set \$0-element col-back col-lab;
+#X obj 92 182 list prepend;
+#X obj 73 92 t b b a;
+#X text 17 12 Sets color scheme;
+#X connect 0 0 2 0;
+#X connect 0 1 13 0;
+#X connect 2 0 1 0;
+#X connect 4 0 13 0;
+#X connect 5 0 0 0;
+#X connect 6 0 8 0;
+#X connect 7 0 6 0;
+#X connect 8 0 12 0;
+#X connect 8 2 10 1;
+#X connect 9 0 8 0;
+#X connect 10 0 9 0;
+#X connect 12 0 11 0;
+#X connect 13 0 10 0;
+#X connect 13 1 7 0;
+#X connect 13 2 12 1;
+#X restore 100 107 pd color;
+#N canvas 471 174 426 490 size 0;
+#X obj 99 74 s pd-\$0-paint;
+#X obj 82 114 s \$0-menu;
+#X obj 48 14 inlet;
+#X msg 99 54 donecanvasdialog 1 1 2 0 0 \$1 \$2 \$1 \$2 0 0 \, dirty
+0;
+#X msg 82 94 donecanvasdialog 1 -1 2 0 -1 1 1 \$1 \$2 0 0 \, dirty
+0;
+#X msg 65 374 traverse \$1;
+#X obj 65 234 symbol pd-\$0-paint;
+#X obj 65 394 pointer \$0-element;
+#X msg 27 374 next;
+#X obj 27 234 until;
+#X obj 65 464 set \$0-element lenght height ypos;
+#X obj 122 154 s \$0-ypos;
+#X obj 65 134 unpack f f;
+#X obj 65 174 s \$0-lenght;
+#X obj 103 304 r \$0-ypos;
+#X obj 88 324 * 1;
+#X obj 88 284 f+ 0 1;
+#X obj 48 204 t b b b a;
+#X obj 27 254 t b b;
+#X obj 65 424 pack p f f f;
+#X msg 65 444 \$3 \$4 \$2 \$1;
+#X obj 48 34 t l l l l;
+#X obj 111 254 unpack f f;
+#X obj 98 344 s \$0-gop-height;
+#X connect 2 0 21 0;
+#X connect 3 0 0 0;
+#X connect 4 0 1 0;
+#X connect 5 0 7 0;
+#X connect 6 0 5 0;
+#X connect 7 0 19 0;
+#X connect 7 2 9 1;
+#X connect 8 0 7 0;
+#X connect 9 0 18 0;
+#X connect 12 0 13 0;
+#X connect 12 1 11 0;
+#X connect 14 0 15 1;
+#X connect 15 0 19 1;
+#X connect 15 0 23 0;
+#X connect 16 0 15 0;
+#X connect 17 0 9 0;
+#X connect 17 1 6 0;
+#X connect 17 2 16 1;
+#X connect 17 3 22 0;
+#X connect 18 0 8 0;
+#X connect 18 1 16 0;
+#X connect 19 0 20 0;
+#X connect 20 0 10 0;
+#X connect 21 0 17 0;
+#X connect 21 1 12 0;
+#X connect 21 2 4 0;
+#X connect 21 3 3 0;
+#X connect 22 0 19 2;
+#X connect 22 1 19 3;
+#X restore 126 87 pd size;
+#N canvas 129 204 270 175 load 0;
+#X obj 14 13 inlet;
+#X msg 41 53 clear;
+#X obj 41 73 s pd-\$0-paint;
+#X obj 14 133 s \$0-load;
+#X obj 14 33 t a b;
+#X obj 14 93 symbol;
+#X msg 14 113 symbol jp.preset-\$1.txt;
+#X connect 0 0 4 0;
+#X connect 1 0 2 0;
+#X connect 4 0 5 0;
+#X connect 4 1 1 0;
+#X connect 5 0 6 0;
+#X connect 6 0 3 0;
+#X restore 162 107 pd load;
+#X text 12 7 Messages accepted by [jp.preset];
+#X obj 57 157 outlet;
+#N canvas 347 312 450 300 store 0;
+#X obj 16 28 inlet;
+#X text 67 28 guarda um outro preset \, primeiro envia-se o nr;
+#X restore 297 21 pd store;
+#N canvas 517 402 493 387 input 0;
+#X obj 10 50 inlet;
+#X obj 10 70 i;
+#X obj 10 180 moses 0;
+#X obj 49 200 moses;
+#X obj 96 170 r \$0-sellist;
+#X obj 106 200 + 1;
+#X obj 29 330 outlet;
+#X text 9 11 Filters selection input. Selecting last element creates
+new preset.;
+#X obj 79 220 moses;
+#X msg 106 240 Error - outside preset range;
+#X obj 106 260 print jp.preset-\$1;
+#X msg 98 320 vis 1;
+#X obj 98 340 s pd-RENAME-\$0;
+#X text 138 289 clicking on "NEW" selects it \, renames it and makes
+a new "NEW" preset;
+#X obj 79 290 t b b f;
+#X obj 79 360 s \$0-addNEW;
+#X obj 70 50 inlet;
+#X obj 210 50 inlet;
+#X obj 70 100 +;
+#X obj 70 70 1;
+#X obj 210 100 +;
+#X obj 210 70 -1;
+#X obj 210 120 moses 0;
+#X obj 70 120 moses 0;
+#X obj 109 100 r \$0-sellist;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 1 0 18 1;
+#X connect 1 0 20 1;
+#X connect 2 0 9 0;
+#X connect 2 1 3 0;
+#X connect 3 0 6 0;
+#X connect 3 1 8 0;
+#X connect 4 0 5 0;
+#X connect 4 0 3 1;
+#X connect 5 0 8 1;
+#X connect 8 0 14 0;
+#X connect 8 1 9 0;
+#X connect 9 0 10 0;
+#X connect 11 0 12 0;
+#X connect 14 0 15 0;
+#X connect 14 1 11 0;
+#X connect 14 2 6 0;
+#X connect 16 0 19 0;
+#X connect 17 0 21 0;
+#X connect 18 0 23 0;
+#X connect 19 0 18 0;
+#X connect 20 0 22 0;
+#X connect 21 0 20 0;
+#X connect 22 0 9 0;
+#X connect 22 1 1 0;
+#X connect 23 0 1 0;
+#X connect 23 1 9 0;
+#X connect 24 0 23 1;
+#X restore 57 127 pd input;
+#N canvas 56 193 582 437 edit 0;
+#X obj 61 307 outlet;
+#X obj 37 137 r \$0-load;
+#X msg 37 157 read \$1 cr;
+#X obj 27 267 list split 1;
+#X obj 27 247 msgfile;
+#X msg 27 117 goto \$1 \, this;
+#X obj 206 117 list prepend;
+#X obj 206 137 list prepend replace;
+#X obj 206 157 list trim;
+#X obj 179 177 symbol;
+#X msg 179 197 write \$1 cr;
+#X obj 179 97 t b l;
+#X obj 61 287 demux 0 1;
+#X obj 356 247 1;
+#X msg 322 267 this;
+#X obj 305 227 t b b s b;
+#X obj 305 247 0;
+#X obj 454 337 symbol \$0-paint;
+#X obj 454 377 pointer;
+#X msg 405 357 next;
+#X msg 454 357 traverse pd-\$1;
+#X obj 295 397 set -symbol \$0-element menu;
+#X obj 405 337 until;
+#X obj 405 317 + 1;
+#X obj 405 297 t f b;
+#N canvas 494 50 387 83 RENAME-\$0 0;
+#X symbolatom 9 56 50 0 0 0 - #0-renamesymb-i #0-renamesymb;
+#X text 8 6 Click on the field below to input the new name for the
+current preset. Must be a symbol (in one word) \, with any characters.
+To finish typing \, press return.;
+#X restore 395 267 pd RENAME-\$0;
+#X obj 295 197 r \$0-renamesymb;
+#X msg 395 227 vis 1;
+#X obj 395 247 s pd-RENAME-\$0;
+#X msg 435 227 vis 0;
+#X obj 27 357 s \$0-renamesymb-i;
+#X msg 27 337 set \$1;
+#X text 70 337 updates name window;
+#X obj 27 57 inlet;
+#X text 7 97 stores file for edition;
+#X obj 179 57 inlet;
+#X text 178 37 saves preset;
+#X obj 395 197 inlet;
+#X text 324 177 renames preset;
+#X text 28 17 Commands for edition \, saving \, rename;
+#X obj 179 77 list prepend list;
+#X text 231 57 to make sure that lists beginning with symbols are read
+;
+#X msg 228 315 add \$1;
+#X connect 1 0 2 0;
+#X connect 1 0 9 1;
+#X connect 2 0 4 0;
+#X connect 3 0 6 1;
+#X connect 3 0 31 0;
+#X connect 3 1 12 0;
+#X connect 4 0 3 0;
+#X connect 5 0 4 0;
+#X connect 6 0 7 0;
+#X connect 7 0 8 0;
+#X connect 8 0 4 0;
+#X connect 9 0 10 0;
+#X connect 10 0 4 0;
+#X connect 11 0 9 0;
+#X connect 11 1 6 0;
+#X connect 12 0 0 0;
+#X connect 12 1 11 0;
+#X connect 13 0 12 1;
+#X connect 14 0 4 0;
+#X connect 15 0 16 0;
+#X connect 15 1 14 0;
+#X connect 15 2 6 1;
+#X connect 15 3 13 0;
+#X connect 16 0 12 1;
+#X connect 17 0 20 0;
+#X connect 18 0 21 1;
+#X connect 19 0 18 0;
+#X connect 20 0 18 0;
+#X connect 22 0 19 0;
+#X connect 23 0 22 0;
+#X connect 24 0 23 0;
+#X connect 24 1 17 0;
+#X connect 26 0 15 0;
+#X connect 26 0 21 0;
+#X connect 26 0 29 0;
+#X connect 27 0 28 0;
+#X connect 29 0 28 0;
+#X connect 31 0 30 0;
+#X connect 33 0 5 0;
+#X connect 33 0 24 0;
+#X connect 35 0 40 0;
+#X connect 37 0 27 0;
+#X connect 40 0 11 0;
+#X restore 170 157 pd edit;
+#X obj 11 47 route open float bang color size load save rename store
+next previous;
+#X msg 338 80 Error: wrong command;
+#X obj 338 100 print jp.preset-\$1;
+#X connect 0 0 12 0;
+#X connect 3 0 1 0;
+#X connect 10 0 8 0;
+#X connect 10 0 11 0;
+#X connect 11 0 2 0;
+#X connect 12 0 3 0;
+#X connect 12 1 10 0;
+#X connect 12 2 10 0;
+#X connect 12 3 4 0;
+#X connect 12 4 5 0;
+#X connect 12 5 6 0;
+#X connect 12 6 11 1;
+#X connect 12 7 11 2;
+#X connect 12 9 10 1;
+#X connect 12 10 10 2;
+#X connect 12 11 13 0;
+#X connect 13 0 14 0;
+#X restore 234 42 pd messages;
+#X obj 301 292 get \$0-element ypos menu;
+#X obj 314 22 inlet;
+#X obj 265 142 list-abs/list-rot;
+#X obj 265 162 list-abs/list-drip;
+#X connect 0 0 26 0;
+#X connect 1 0 4 0;
+#X connect 2 0 11 2;
+#X connect 2 0 27 0;
+#X connect 3 0 2 0;
+#X connect 4 0 2 0;
+#X connect 5 0 29 0;
+#X connect 6 0 29 1;
+#X connect 7 0 11 0;
+#X connect 7 1 3 0;
+#X connect 8 0 30 0;
+#X connect 10 0 5 0;
+#X connect 10 1 6 0;
+#X connect 10 2 1 0;
+#X connect 10 3 16 0;
+#X connect 13 0 15 0;
+#X connect 14 0 8 0;
+#X connect 14 1 1 0;
+#X connect 15 0 18 0;
+#X connect 15 1 17 1;
+#X connect 16 0 12 0;
+#X connect 17 0 11 1;
+#X connect 18 0 14 0;
+#X connect 19 0 25 0;
+#X connect 20 0 5 0;
+#X connect 20 0 8 0;
+#X connect 21 0 22 0;
+#X connect 21 0 23 0;
+#X connect 22 0 8 0;
+#X connect 23 0 5 0;
+#X connect 24 0 21 0;
+#X connect 24 1 20 0;
+#X connect 25 1 24 0;
+#X connect 26 0 12 0;
+#X connect 26 1 10 0;
+#X connect 26 2 9 0;
+#X connect 27 0 17 0;
+#X connect 28 0 10 0;
+#X connect 29 0 30 0;
+#X connect 30 0 7 0;
+#X restore 128 130 pd selection;
+#X obj 147 90 receive \$4-i;
+#X obj 137 160 send \$4;
+#N canvas 125 353 450 300 \$0-paint 0;
+#X coords 0 0 100 17 100 17 2 0 0;
+#X restore 0 0 pd \$0-paint;
+#N canvas 322 55 450 240 zutun 0;
+#X text 26 18 ## ver questoes em aberto em jp.menu;
+#X text 28 48 suggestion for commands;
+#X text 28 68 - reload;
+#X text 28 108 - flush (right outlet);
+#X text 28 88 - delete;
+#X text 28 128 - close (oposto de open);
+#X text 28 148 - enviar comandos através do ficheiro de config (tamanho
+\, cor \, etc);
+#X restore 248 180 pd zutun;
+#X obj 128 201 declare -stdlib zexy;
+#X connect 0 0 5 0;
+#X connect 2 0 5 1;
+#X connect 3 0 5 0;
+#X connect 5 0 4 0;
+#X connect 5 0 7 0;
+#X connect 6 0 5 0;
+#X coords 0 -1 1 1 100 17 2 0 0;
diff --git a/abstractions/jmmmp/mat-~.pd b/abstractions/jmmmp/mat-~.pd
index 5b898c3cb..ea81c45ac 100644
--- a/abstractions/jmmmp/mat-~.pd
+++ b/abstractions/jmmmp/mat-~.pd
@@ -13,7 +13,7 @@
 #X obj 29 352 env~ 8820;
 #X obj 39 87 inlet mute;
 #X obj 48 144 bang;
-#X obj 48 164 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1 1
+#X obj 48 164 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 1
 ;
 #X obj 48 242 *;
 #X obj 48 182 t b f;
@@ -54,7 +54,7 @@ in the documentation and/or other materials provided with the distribution.
 #X text 266 136 - Mute / Unmute (bang);
 #X obj 29 372 dbtofad;
 #X obj 36 125 hsl 119 10 0 127 0 0 empty empty empty -2 -8 0 10 -191407
--1 -33289 9100 0;
+-1 -33289 0 0;
 #X obj 36 112 hsl 119 10 -100 12 0 0 empty empty empty -2 -8 0 10 -195568
 -1 -1 0 1;
 #X obj 128 127 cnv 1 2 6 empty empty empty 20 12 0 14 -262144 -262144
@@ -65,7 +65,6 @@ in the documentation and/or other materials provided with the distribution.
 #X text 266 46 Arguments;
 #X text 266 66 - Level (0-127);
 #X obj 170 67 \$1;
-#X obj 170 47 initbang;
 #X obj 78 144 1;
 #X obj 118 385 change;
 #X msg 118 405 color \$1 22 22;
@@ -74,6 +73,7 @@ if ($f1 < -22 \, 15 \, if ($f1 < -16 \, 14 \, 13))));
 #X text 11 8 [met~] - Level meter with amplitude control and color
 display;
 #X text 12 437 (C) 2009-2014 João Pais - jmmmpais@googlemail.com;
+#X obj 170 47 iemlib/init;
 #X connect 1 0 6 0;
 #X connect 1 0 10 0;
 #X connect 2 0 1 1;
@@ -83,7 +83,7 @@ display;
 #X connect 7 0 3 0;
 #X connect 7 0 8 0;
 #X connect 9 0 28 0;
-#X connect 9 0 39 0;
+#X connect 9 0 38 0;
 #X connect 10 0 26 0;
 #X connect 11 0 12 0;
 #X connect 12 0 13 0;
@@ -98,10 +98,10 @@ display;
 #X connect 27 0 14 0;
 #X connect 31 1 27 0;
 #X connect 34 0 31 0;
-#X connect 35 0 34 0;
-#X connect 35 0 36 0;
-#X connect 36 0 13 0;
-#X connect 37 0 38 0;
-#X connect 38 0 28 0;
-#X connect 39 0 37 0;
+#X connect 35 0 13 0;
+#X connect 36 0 37 0;
+#X connect 37 0 28 0;
+#X connect 38 0 36 0;
+#X connect 41 0 34 0;
+#X connect 41 0 35 0;
 #X coords 0 -1 1 1 130 31 1 30 108;
-- 
GitLab