├── .gitignore ├── media ├── screenshot.png └── maxtoolbox-overview.gif ├── maxtoolbox.sublime-project ├── misc ├── mtb_shortcuts.txt └── toolbox_start.txt ├── package-info.json ├── javascript ├── toolbox_node.js ├── toolbox_config.js └── maxtoolbox.js ├── CHANGELOG.md ├── README.md ├── patchers └── keyctrl.maxpat ├── docs ├── docs.md └── Max ToolBox readme.rtf ├── help └── toolboxhelp.maxhelp └── extras └── ToolBox.maxpat /.gitignore: -------------------------------------------------------------------------------- 1 | *~ 2 | *.swp 3 | *.DS_Store 4 | *sublime-workspace -------------------------------------------------------------------------------- /media/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tmhglnd/maxtoolbox/HEAD/media/screenshot.png -------------------------------------------------------------------------------- /media/maxtoolbox-overview.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/tmhglnd/maxtoolbox/HEAD/media/maxtoolbox-overview.gif -------------------------------------------------------------------------------- /maxtoolbox.sublime-project: -------------------------------------------------------------------------------- 1 | { 2 | "folders": 3 | [ 4 | { 5 | "follow_symlinks": true, 6 | "path": "../maxtoolbox" 7 | } 8 | ] 9 | } 10 | -------------------------------------------------------------------------------- /misc/mtb_shortcuts.txt: -------------------------------------------------------------------------------- 1 | info, You can customize shortcuts here changing the letters; q, sm "connect single to multiple"; a, ms "connect multiple to single"; C, cc "connect cascade"; w, sr "connect single to row"; s, rs "connect row to single"; e, rr "connect row to row"; d, io "connect all inlets to all outlets"; ±, ss "show ToolBox shell"; x, hd "horizontal distributon"; y, vd "vetical distribution"; I, ii "define inlet"; O, oo "define outlet"; N, nn "define number of connections"; |, nw "new object with connection"; S, no "select next object"; W, po "select previous object"; u, undo "undo connections"; B, bn "send bang to selected objects"; K, ec "empty the console"; Å, dsp "turn on/off dsp"; ¯, as "open audio status"; -------------------------------------------------------------------------------- /package-info.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Max ToolBox", 3 | "type": "package", 4 | "author": "Nathanaël Lécaudé", 5 | "description": "The Max ToolBox is a tool that simplifies some aspects of patching within the Max/MSP environment.", 6 | "version": "16", 7 | "major_version": "16", 8 | "minor_version": "0", 9 | "min_max_version": "800", 10 | "min_osx_version": "None", 11 | "min_win_version": "None", 12 | "website": "https://github.com/natcl/maxtoolbox", 13 | "link_mac32": "https://github.com/natcl/maxtoolbox/archive/Version16.zip", 14 | "link_mac64": "https://github.com/natcl/maxtoolbox/archive/Version16.zip", 15 | "link_win32": "https://github.com/natcl/maxtoolbox/archive/Version16.zip", 16 | "link_win64": "https://github.com/natcl/maxtoolbox/archive/Version16.zip", 17 | "relative_path": "None" 18 | } 19 | -------------------------------------------------------------------------------- /javascript/toolbox_node.js: -------------------------------------------------------------------------------- 1 | const max = require('max-api'); 2 | const fs = require('fs'); 3 | const path = require('path'); 4 | 5 | let initpath; 6 | let toolbox; 7 | 8 | const handlers = { 9 | 'path' : (p) => { 10 | // set the max-startup path from the application folder 11 | // initpath = p.replace(/\/[^/]+$/g, '/max-startup/'); 12 | initpath = path.join(p, '/max-startup/'); 13 | }, 14 | 'create_file' : () => { 15 | max.post('ToolBox launches at startup'); 16 | 17 | let f = path.join(process.cwd(), '../misc/toolbox_start.txt'); 18 | let t = fs.readFileSync(f, 'utf-8'); 19 | // make folder max-startup if not already available 20 | if (!fs.existsSync(initpath)){ 21 | fs.mkdirSync(initpath); 22 | } 23 | // add toolbox_start to max startup 24 | toolbox = initpath + 'toolbox_start.maxpat'; 25 | fs.writeFileSync(toolbox, t); 26 | }, 27 | 'clear_file' : () => { 28 | max.post('ToolBox deactivated'); 29 | 30 | // remove the toolbox start from max-startup 31 | if (fs.existsSync(toolbox)){ 32 | fs.unlinkSync(toolbox); 33 | } 34 | } 35 | } 36 | max.addHandlers(handlers); -------------------------------------------------------------------------------- /javascript/toolbox_config.js: -------------------------------------------------------------------------------- 1 | autowatch = 1; 2 | 3 | var initpath; 4 | var initpath_sub; 5 | var f, tf; 6 | var toolbox = null; 7 | var thispatch = null; 8 | 9 | function anything() 10 | { 11 | initpath = messagename.replace(/\/[^/]+$/g, '/max-startup/'); 12 | } 13 | 14 | function create_file() 15 | { 16 | tf = new File("toolbox_start.txt","read"); 17 | f = new File(initpath + "toolbox-start.maxpat" , "write"); 18 | 19 | f.writebytes(tf.readbytes(tf.eof)); 20 | 21 | f.close(); 22 | tf.close(); 23 | } 24 | 25 | function clear_file() 26 | { 27 | f = new File(initpath + "toolbox-start.maxpat", "write"); 28 | for (var i = 0 ; i < 139 ; i++) 29 | { 30 | f.writeline(" "); 31 | } 32 | 33 | f.close(); 34 | } 35 | 36 | function open_toolbox() 37 | { 38 | if (toolbox == null) 39 | { 40 | toolbox = this.patcher.newdefault(350,350,"maxtoolbox.maxpat"); 41 | toolbox.varname = "toolbox"; 42 | } 43 | } 44 | 45 | function close_toolbox() 46 | { 47 | thispatch = this.patcher; 48 | if (this.patcher.getnamed("toolbox")) 49 | { 50 | this.patcher.remove(this.patcher.getnamed("toolbox")); 51 | } 52 | this.patcher.apply(delete_toolbox_apply); 53 | toolbox = null; 54 | 55 | } 56 | 57 | function delete_toolbox_apply(a) 58 | { 59 | if (a.maxclass == "patcher" && (a.rect[2]-a.rect[0]) == 72) 60 | { 61 | thispatch.remove(a); 62 | 63 | } 64 | return true; 65 | } 66 | 67 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Max ToolBox - CHANGELOG 2 | 3 | ## Version 16 4 | Jan 18th, 2022 5 | 6 | * No support for Max7 or older 7 | * Max8 'activate' bug fixed 8 | * Undo function with history (shortkey `u`) 9 | * Fixes where some objects where not connected 10 | * Smoother x/y alignment of objects with mouse (shortkey hold `x` `y`) 11 | * Create new empty object below selected object and connect (shortkey `shift-\`) 12 | * Shell shortkey changed to less used key (`shift-§`, or `±`) 13 | * Send a bang to all selected objects (`shift-b`) 14 | * Create scripting names via shell with number increment by `@name myParam$` 15 | * Select next or previous object (`shift-s` `shift-w`) 16 | * Use `n` in shell for `@cc` to set number of connects 17 | * Documentation updates 18 | 19 | ## Version 15 20 | April 27th, 2013 21 | 22 | * Changed folder structure, now packages compatible 23 | * General code cleanup 24 | * New undo function (press z) 25 | 26 | ## Version 14 27 | October 27th, 2009 28 | 29 | * Reworked colors in the help patch to make it compatible with object defaults (thanks to Pascal Baltazar) 30 | * Revamped the shortcut system, it's now possible to change all shortcuts and the letter. (not the ascii code) must be entered in the mtb_shortcuts.txt file, this should fix some compatibility issues with other third party packages. 31 | * Replaced the custom shell (shift-r function) by Max's dialog object. 32 | * Updated documentation 33 | 34 | ## Version b13 35 | September 25th, 2008 36 | 37 | * Changed the way the patch loads on startup : 38 | * There is now a single "Activate" checkbox in the ToolBox.maxpat patch (that is usually in the extras folder). Clicking the checkbox will activate the ToolBox. You can now close the ToolBox.maxpat patch and the ToolBox will remain active. To close the ToolBox, reopen the ToolBox.maxpat patch and deactivate the checkbox. If the checkbox is activated, the ToolBox will always load with Max, even if the ToolBox.maxpat patch is closed. 39 | 40 | ## Version b12 41 | May 17th, 2008 42 | 43 | * Distribute (x and y) now works in presentation mode 44 | -------------------------------------------------------------------------------- /misc/toolbox_start.txt: -------------------------------------------------------------------------------- 1 | { 2 | "patcher" : { 3 | "fileversion" : 1, 4 | "rect" : [ 29.0, 70.0, 400.0, 134.0 ], 5 | "bglocked" : 0, 6 | "defrect" : [ 29.0, 70.0, 400.0, 134.0 ], 7 | "openrect" : [ 0.0, 0.0, 0.0, 0.0 ], 8 | "openinpresentation" : 0, 9 | "default_fontsize" : 12.0, 10 | "default_fontface" : 0, 11 | "default_fontname" : "Arial", 12 | "gridonopen" : 0, 13 | "gridsize" : [ 15.0, 15.0 ], 14 | "gridsnaponopen" : 0, 15 | "toolbarvisible" : 1, 16 | "boxanimatetime" : 200, 17 | "imprint" : 0, 18 | "metadata" : [ ], 19 | "boxes" : [ { 20 | "box" : { 21 | "maxclass" : "message", 22 | "text" : "dispose", 23 | "numoutlets" : 1, 24 | "fontname" : "Arial", 25 | "outlettype" : [ "" ], 26 | "id" : "obj-6", 27 | "fontsize" : 12.0, 28 | "patching_rect" : [ 9.0, 42.0, 52.0, 18.0 ], 29 | "numinlets" : 2 30 | } 31 | 32 | } 33 | , { 34 | "box" : { 35 | "maxclass" : "newobj", 36 | "text" : "thispatcher", 37 | "numoutlets" : 2, 38 | "fontname" : "Arial", 39 | "outlettype" : [ "", "" ], 40 | "id" : "obj-3", 41 | "fontsize" : 12.0, 42 | "patching_rect" : [ 32.0, 104.0, 69.0, 20.0 ], 43 | "numinlets" : 1, 44 | "save" : [ "#N", "thispatcher", ";", "#Q", "end", ";" ] 45 | } 46 | 47 | } 48 | , { 49 | "box" : { 50 | "maxclass" : "newobj", 51 | "text" : "loadbang", 52 | "numoutlets" : 1, 53 | "fontname" : "Arial", 54 | "outlettype" : [ "bang" ], 55 | "id" : "obj-2", 56 | "fontsize" : 12.0, 57 | "patching_rect" : [ 33.0, 6.0, 60.0, 20.0 ], 58 | "numinlets" : 1 59 | } 60 | 61 | } 62 | , { 63 | "box" : { 64 | "maxclass" : "message", 65 | "text" : "shroud maxtoolbox.maxpat", 66 | "numoutlets" : 1, 67 | "fontname" : "Arial", 68 | "outlettype" : [ "" ], 69 | "id" : "obj-5", 70 | "fontsize" : 12.0, 71 | "patching_rect" : [ 114.0, 48.0, 155.0, 18.0 ], 72 | "numinlets" : 2 73 | } 74 | 75 | } 76 | , { 77 | "box" : { 78 | "maxclass" : "newobj", 79 | "text" : "pcontrol", 80 | "numoutlets" : 1, 81 | "fontname" : "Arial", 82 | "outlettype" : [ "" ], 83 | "id" : "obj-1", 84 | "fontsize" : 12.0, 85 | "patching_rect" : [ 32.0, 74.0, 53.0, 20.0 ], 86 | "numinlets" : 1 87 | } 88 | 89 | } 90 | ], 91 | "lines" : [ { 92 | "patchline" : { 93 | "source" : [ "obj-6", 0 ], 94 | "destination" : [ "obj-3", 0 ], 95 | "hidden" : 0, 96 | "midpoints" : [ ] 97 | } 98 | 99 | } 100 | , { 101 | "patchline" : { 102 | "source" : [ "obj-2", 0 ], 103 | "destination" : [ "obj-5", 0 ], 104 | "hidden" : 0, 105 | "midpoints" : [ ] 106 | } 107 | 108 | } 109 | , { 110 | "patchline" : { 111 | "source" : [ "obj-2", 0 ], 112 | "destination" : [ "obj-6", 0 ], 113 | "hidden" : 0, 114 | "midpoints" : [ ] 115 | } 116 | 117 | } 118 | , { 119 | "patchline" : { 120 | "source" : [ "obj-1", 0 ], 121 | "destination" : [ "obj-3", 0 ], 122 | "hidden" : 0, 123 | "midpoints" : [ ] 124 | } 125 | 126 | } 127 | , { 128 | "patchline" : { 129 | "source" : [ "obj-5", 0 ], 130 | "destination" : [ "obj-1", 0 ], 131 | "hidden" : 0, 132 | "midpoints" : [ ] 133 | } 134 | 135 | } 136 | ] 137 | } 138 | 139 | } 140 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Max ToolBox : Patch faster in Max/MSP 2 | 3 | The Max ToolBox is a tool that simplifies aspects of patching within the Max/MSP environment. The main feature is the ability to quickly connect objects using keyboard shortcuts. The Toolbox is for Mac and Windows. 4 | 5 | [Installation instructions below](#install-max-8) 6 | 7 | Below a short overview of what you can do: 8 | 9 | ![](media/maxtoolbox-overview.gif) 10 | 11 | ## Features Overview 12 | 13 | | function | shortkey | shell | 14 | | - | - | - | 15 | | connect multiple objects to a single | `a` | `@ms` | 16 | | connect single to multiple | `q` | `@sm` | 17 | | connect multiple objects to consecutive inlets of one object | `s` | `@rs` | 18 | | connect consecutive outlets of one object to a row | `w` | `@sr` | 19 | | connect rows of objects in parallel | `e` | `@rr` | 20 | | connect cascade | `C` (`shift` - `c`) | `@cc` | 21 | | connect multiple inlets of one object to multiple inlets of another | `d` | `@cc` | 22 | | choose number of inlet for next connection | `I` (`shift` - `i`) | `i` | 23 | | choose number of outlet for next connection | `O` (`shift` - `o`) | `o` | 24 | | choose number of connections to make from one object | `N` (`shift` - `n`) | `n` | 25 | | create new object(s) with connection to selected object(s) | `\|` (`shift` - `\`) | `@no` | 26 | | select next object down | `S` (`shift` - `s`) | | 27 | | select next object up | `W` (`shift` - `w`) | | 28 | | distribute objects horizontally with even spacing | hold `x` | | 29 | | distribute objects vertically with even spacing | hold `y` | | 30 | | distribute objects diagonally with even spacing | hold `x` & `y` | | 31 | | custom connections via shell-style interface | `±` (`shift` - `§`) | | 32 | | send bang to selected objects | `B` (`shift` - `b`) | | 33 | | clear the console | `K` (`shift-k`) | | 34 | | send messages to objects via the shell | `±` (`shift` - `§`) | | 35 | | set ascending scriptingnames for objects | | `@name myParam$` | 36 | | customize shortkeys | | | 37 | 38 | ## Documentation 39 | 40 | [Open documentation](/docs/docs.md) 41 | 42 | ## Install (Max 8) 43 | 44 | Install by downloading: 45 | 46 | Download the latest version of the package for [Max 8](https://github.com/tmhglnd/maxtoolbox/archive/refs/heads/master.zip) 47 | 48 | ``` 49 | 1. download latest code zip 50 | 2. unzip and place in Max Packages (eg. MacOS ~/Documents/Max 8/Packages) 51 | 3. restart Max8, open ToolBox from Menubar/Extras 52 | 4. click Activate 53 | ``` 54 | 55 | Or install via git clone: 56 | 57 | ``` 58 | 1. open terminal 59 | 2. $ cd ~/Documents/Max\ 8/Packages 60 | 3. $ git clone https://github.com/tmhglnd/maxtoolbox.git 61 | 4. restart Max8, open ToolBox from Menubar/Extras 62 | 4. click Activate 63 | ``` 64 | 65 | ### To re-install/update the ToolBox 66 | 67 | 1. Make sure you delete all files related to the ToolBox 68 | 2. Install as described above. 69 | 70 | ### For Max 7 and older 71 | 72 | ⚠️ **This version does not support Max 7 or older** ⚠️ 73 | 74 | - [**Please download the older commit**](https://github.com/tmhglnd/maxtoolbox/tree/8852b5a87e939a72f0dd8647bfffe05ed96106ba) 75 | 76 | 81 | 82 | 83 | 84 | 85 | -------------------------------------------------------------------------------- /patchers/keyctrl.maxpat: -------------------------------------------------------------------------------- 1 | { 2 | "patcher" : { 3 | "rect" : [ 66.0, 361.0, 609.0, 354.0 ], 4 | "bgcolor" : [ 1.0, 1.0, 1.0, 1.0 ], 5 | "bglocked" : 0, 6 | "defrect" : [ 66.0, 361.0, 609.0, 354.0 ], 7 | "openinpresentation" : 0, 8 | "default_fontsize" : 10.0, 9 | "default_fontface" : 0, 10 | "default_fontname" : "Arial", 11 | "gridonopen" : 0, 12 | "gridsize" : [ 15.0, 15.0 ], 13 | "gridsnaponopen" : 0, 14 | "toolbarvisible" : 1, 15 | "boxfadetime" : 200, 16 | "boxanimatetime" : 200, 17 | "scrollanimatetime" : 200, 18 | "imprint" : 0, 19 | "metadata" : [ ], 20 | "boxes" : [ { 21 | "box" : { 22 | "maxclass" : "newobj", 23 | "text" : "keyup", 24 | "outlettype" : [ "int", "int", "int" ], 25 | "patching_rect" : [ 317.0, 101.0, 40.0, 17.0 ], 26 | "fontname" : "Arial", 27 | "fontsize" : 7.9, 28 | "id" : "obj-1", 29 | "numinlets" : 0, 30 | "numoutlets" : 3 31 | } 32 | 33 | } 34 | , { 35 | "box" : { 36 | "maxclass" : "inlet", 37 | "outlettype" : [ "" ], 38 | "patching_rect" : [ 239.0, 48.0, 15.0, 15.0 ], 39 | "id" : "obj-2", 40 | "numinlets" : 0, 41 | "numoutlets" : 1, 42 | "comment" : "Key Code" 43 | } 44 | 45 | } 46 | , { 47 | "box" : { 48 | "maxclass" : "inlet", 49 | "outlettype" : [ "" ], 50 | "patching_rect" : [ 191.0, 48.0, 15.0, 15.0 ], 51 | "id" : "obj-3", 52 | "numinlets" : 0, 53 | "numoutlets" : 1, 54 | "comment" : "Mod: 1 None 2 Shift 3 Caps Lock 4 Option \/ Alt 5 Ctrl 6 Command \/ Fn" 55 | } 56 | 57 | } 58 | , { 59 | "box" : { 60 | "maxclass" : "newobj", 61 | "text" : "unpack 1", 62 | "outlettype" : [ "int" ], 63 | "patching_rect" : [ 20.0, 48.0, 46.0, 17.0 ], 64 | "fontname" : "Arial", 65 | "fontsize" : 7.9, 66 | "id" : "obj-5", 67 | "numinlets" : 1, 68 | "numoutlets" : 1 69 | } 70 | 71 | } 72 | , { 73 | "box" : { 74 | "maxclass" : "newobj", 75 | "text" : "sel", 76 | "outlettype" : [ "bang", "" ], 77 | "patching_rect" : [ 254.0, 126.0, 52.0, 17.0 ], 78 | "fontname" : "Arial", 79 | "fontsize" : 7.9, 80 | "id" : "obj-6", 81 | "numinlets" : 2, 82 | "numoutlets" : 2 83 | } 84 | 85 | } 86 | , { 87 | "box" : { 88 | "maxclass" : "message", 89 | "outlettype" : [ "" ], 90 | "patching_rect" : [ 224.0, 232.0, 51.0, 15.0 ], 91 | "fontname" : "Arial", 92 | "fontsize" : 7.9, 93 | "id" : "obj-7", 94 | "numinlets" : 2, 95 | "numoutlets" : 1 96 | } 97 | 98 | } 99 | , { 100 | "box" : { 101 | "maxclass" : "newobj", 102 | "text" : "t 1", 103 | "outlettype" : [ "int" ], 104 | "patching_rect" : [ 254.0, 154.0, 19.0, 17.0 ], 105 | "fontname" : "Arial", 106 | "fontsize" : 7.9, 107 | "id" : "obj-8", 108 | "numinlets" : 1, 109 | "numoutlets" : 1 110 | } 111 | 112 | } 113 | , { 114 | "box" : { 115 | "maxclass" : "newobj", 116 | "text" : "key", 117 | "outlettype" : [ "int", "int", "int" ], 118 | "patching_rect" : [ 254.0, 101.0, 40.0, 17.0 ], 119 | "fontname" : "Arial", 120 | "fontsize" : 7.9, 121 | "id" : "obj-9", 122 | "numinlets" : 0, 123 | "numoutlets" : 3 124 | } 125 | 126 | } 127 | , { 128 | "box" : { 129 | "maxclass" : "newobj", 130 | "text" : "route mod key", 131 | "outlettype" : [ "", "", "" ], 132 | "patching_rect" : [ 94.0, 48.0, 76.0, 17.0 ], 133 | "fontname" : "Arial", 134 | "fontsize" : 7.9, 135 | "id" : "obj-10", 136 | "numinlets" : 1, 137 | "numoutlets" : 3 138 | } 139 | 140 | } 141 | , { 142 | "box" : { 143 | "maxclass" : "newobj", 144 | "text" : "patcherargs @mod 1 @key", 145 | "outlettype" : [ "", "" ], 146 | "patching_rect" : [ 20.0, 21.0, 122.0, 17.0 ], 147 | "fontname" : "Arial", 148 | "fontsize" : 7.9, 149 | "id" : "obj-11", 150 | "numinlets" : 1, 151 | "numoutlets" : 2 152 | } 153 | 154 | } 155 | , { 156 | "box" : { 157 | "maxclass" : "newobj", 158 | "text" : "switch 6", 159 | "outlettype" : [ "" ], 160 | "patching_rect" : [ 191.0, 181.0, 391.0, 17.0 ], 161 | "fontname" : "Arial", 162 | "fontsize" : 7.9, 163 | "id" : "obj-12", 164 | "numinlets" : 7, 165 | "numoutlets" : 1 166 | } 167 | 168 | } 169 | , { 170 | "box" : { 171 | "maxclass" : "outlet", 172 | "patching_rect" : [ 224.0, 257.0, 15.0, 15.0 ], 173 | "id" : "obj-13", 174 | "numinlets" : 1, 175 | "numoutlets" : 0, 176 | "comment" : "Instance # output" 177 | } 178 | 179 | } 180 | , { 181 | "box" : { 182 | "maxclass" : "outlet", 183 | "patching_rect" : [ 191.0, 257.0, 15.0, 15.0 ], 184 | "id" : "obj-14", 185 | "numinlets" : 1, 186 | "numoutlets" : 0, 187 | "comment" : "Bang output" 188 | } 189 | 190 | } 191 | , { 192 | "box" : { 193 | "maxclass" : "newobj", 194 | "text" : "sel 1", 195 | "outlettype" : [ "bang", "" ], 196 | "patching_rect" : [ 191.0, 206.0, 28.0, 17.0 ], 197 | "fontname" : "Arial", 198 | "fontsize" : 7.9, 199 | "id" : "obj-15", 200 | "numinlets" : 2, 201 | "numoutlets" : 2 202 | } 203 | 204 | } 205 | , { 206 | "box" : { 207 | "maxclass" : "newobj", 208 | "text" : "modifiers", 209 | "outlettype" : [ "int", "int", "int", "int", "int" ], 210 | "patching_rect" : [ 317.0, 154.0, 263.0, 17.0 ], 211 | "fontname" : "Arial", 212 | "fontsize" : 7.9, 213 | "id" : "obj-16", 214 | "numinlets" : 1, 215 | "numoutlets" : 5 216 | } 217 | 218 | } 219 | , { 220 | "box" : { 221 | "maxclass" : "newobj", 222 | "text" : "sel", 223 | "outlettype" : [ "bang", "" ], 224 | "patching_rect" : [ 317.0, 126.0, 167.0, 17.0 ], 225 | "fontname" : "Arial", 226 | "fontsize" : 7.9, 227 | "id" : "obj-17", 228 | "numinlets" : 2, 229 | "numoutlets" : 2 230 | } 231 | 232 | } 233 | , { 234 | "box" : { 235 | "maxclass" : "comment", 236 | "text" : "1 None \r2 Shift \r3 Caps Lock \r4 Option \/ Alt \r5 Ctrl \r6 Command \/ Fn", 237 | "linecount" : 6, 238 | "patching_rect" : [ 39.0, 115.0, 182.0, 70.0 ], 239 | "fontname" : "Arial", 240 | "fontsize" : 7.9, 241 | "id" : "obj-18", 242 | "numinlets" : 1, 243 | "numoutlets" : 0 244 | } 245 | 246 | } 247 | ], 248 | "lines" : [ { 249 | "patchline" : { 250 | "source" : [ "obj-16", 4 ], 251 | "destination" : [ "obj-12", 6 ], 252 | "hidden" : 0 253 | } 254 | 255 | } 256 | , { 257 | "patchline" : { 258 | "source" : [ "obj-16", 3 ], 259 | "destination" : [ "obj-12", 5 ], 260 | "hidden" : 0 261 | } 262 | 263 | } 264 | , { 265 | "patchline" : { 266 | "source" : [ "obj-2", 0 ], 267 | "destination" : [ "obj-17", 1 ], 268 | "hidden" : 0, 269 | "midpoints" : [ 248.0, 76.0, 474.5, 76.0 ] 270 | } 271 | 272 | } 273 | , { 274 | "patchline" : { 275 | "source" : [ "obj-10", 1 ], 276 | "destination" : [ "obj-17", 1 ], 277 | "hidden" : 0, 278 | "midpoints" : [ 132.0, 76.0, 474.5, 76.0 ] 279 | } 280 | 281 | } 282 | , { 283 | "patchline" : { 284 | "source" : [ "obj-16", 2 ], 285 | "destination" : [ "obj-12", 4 ], 286 | "hidden" : 0 287 | } 288 | 289 | } 290 | , { 291 | "patchline" : { 292 | "source" : [ "obj-16", 1 ], 293 | "destination" : [ "obj-12", 3 ], 294 | "hidden" : 0 295 | } 296 | 297 | } 298 | , { 299 | "patchline" : { 300 | "source" : [ "obj-16", 0 ], 301 | "destination" : [ "obj-12", 2 ], 302 | "hidden" : 0 303 | } 304 | 305 | } 306 | , { 307 | "patchline" : { 308 | "source" : [ "obj-17", 0 ], 309 | "destination" : [ "obj-16", 0 ], 310 | "hidden" : 0 311 | } 312 | 313 | } 314 | , { 315 | "patchline" : { 316 | "source" : [ "obj-1", 0 ], 317 | "destination" : [ "obj-17", 0 ], 318 | "hidden" : 0 319 | } 320 | 321 | } 322 | , { 323 | "patchline" : { 324 | "source" : [ "obj-10", 1 ], 325 | "destination" : [ "obj-6", 1 ], 326 | "hidden" : 0, 327 | "midpoints" : [ 132.0, 76.0, 296.5, 76.0 ] 328 | } 329 | 330 | } 331 | , { 332 | "patchline" : { 333 | "source" : [ "obj-2", 0 ], 334 | "destination" : [ "obj-6", 1 ], 335 | "hidden" : 0, 336 | "midpoints" : [ 248.0, 76.0, 296.5, 76.0 ] 337 | } 338 | 339 | } 340 | , { 341 | "patchline" : { 342 | "source" : [ "obj-8", 0 ], 343 | "destination" : [ "obj-12", 1 ], 344 | "hidden" : 0 345 | } 346 | 347 | } 348 | , { 349 | "patchline" : { 350 | "source" : [ "obj-6", 0 ], 351 | "destination" : [ "obj-8", 0 ], 352 | "hidden" : 0 353 | } 354 | 355 | } 356 | , { 357 | "patchline" : { 358 | "source" : [ "obj-9", 0 ], 359 | "destination" : [ "obj-6", 0 ], 360 | "hidden" : 0 361 | } 362 | 363 | } 364 | , { 365 | "patchline" : { 366 | "source" : [ "obj-7", 0 ], 367 | "destination" : [ "obj-13", 0 ], 368 | "hidden" : 0 369 | } 370 | 371 | } 372 | , { 373 | "patchline" : { 374 | "source" : [ "obj-15", 0 ], 375 | "destination" : [ "obj-7", 0 ], 376 | "hidden" : 0, 377 | "midpoints" : [ 200.5, 231.0, 233.5, 231.0 ] 378 | } 379 | 380 | } 381 | , { 382 | "patchline" : { 383 | "source" : [ "obj-15", 0 ], 384 | "destination" : [ "obj-14", 0 ], 385 | "hidden" : 0 386 | } 387 | 388 | } 389 | , { 390 | "patchline" : { 391 | "source" : [ "obj-12", 0 ], 392 | "destination" : [ "obj-15", 0 ], 393 | "hidden" : 0 394 | } 395 | 396 | } 397 | , { 398 | "patchline" : { 399 | "source" : [ "obj-3", 0 ], 400 | "destination" : [ "obj-12", 0 ], 401 | "hidden" : 0 402 | } 403 | 404 | } 405 | , { 406 | "patchline" : { 407 | "source" : [ "obj-10", 0 ], 408 | "destination" : [ "obj-12", 0 ], 409 | "hidden" : 0, 410 | "midpoints" : [ 103.5, 76.0, 200.5, 76.0 ] 411 | } 412 | 413 | } 414 | , { 415 | "patchline" : { 416 | "source" : [ "obj-11", 1 ], 417 | "destination" : [ "obj-10", 0 ], 418 | "hidden" : 0 419 | } 420 | 421 | } 422 | , { 423 | "patchline" : { 424 | "source" : [ "obj-11", 0 ], 425 | "destination" : [ "obj-5", 0 ], 426 | "hidden" : 0 427 | } 428 | 429 | } 430 | , { 431 | "patchline" : { 432 | "source" : [ "obj-5", 0 ], 433 | "destination" : [ "obj-7", 1 ], 434 | "hidden" : 0, 435 | "midpoints" : [ 29.5, 226.0, 265.5, 226.0 ] 436 | } 437 | 438 | } 439 | ] 440 | } 441 | 442 | } 443 | -------------------------------------------------------------------------------- /docs/docs.md: -------------------------------------------------------------------------------- 1 | # Max ToolBox Manual 2 | 3 | By Nathanaël Lécaudé 4 | 5 | [maxtoolbox@studioimaginaire.com](mailto:maxtoolbox@studioimaginaire.com) 6 | 7 | Updated by Timo Hoogland 8 | 9 | [www.timohoogland.com](https://www.timohoogland.com) 10 | 11 | ## Table of content 12 | 13 | - [About](#about) 14 | - [Install](#install) 15 | - [Usage](#usage) 16 | - [Shell](#shell) 17 | - [Distribute](#distribute) 18 | - [Inlets & Outlets](#inlets--outlets) 19 | - [Shortkeys](#shortkeys) 20 | 21 | ## About 22 | 23 | The Max Toolbox was designed with the idea of automating and enhancing the process of patch editing within Max/MSP/Jitter. 24 | 25 | Here is a list of the features included in this package: 26 | 27 | - Distribute selected objects in space, horizontally and/or vertically 28 | - Connect an outlet (selectable) of an object to the inlets (selectable) of a row of objects located below 29 | - Connect the outlets (selectable) of a row of objects to the inlet (selectable) of an object located below 30 | - Connect all (or less) of the outlets of an object to the inlets (selectable) of a row of objects located below 31 | - Connect the outlets (selectable) of a row of objects to all (or less) of the inlets of a an object located below 32 | - Connect the outlets (selectable) of a row of objects to the inlets (selectable) of a row of objects located below 33 | - Connect a column of two or more objects in cascade 34 | - Send any message(s) to the selected object(s) by invoking a dialog window using a keyboard shortcut 35 | - Access most of the features of this ToolBox using the same dialog window 36 | - Quickly name a row or column of objects 37 | - Create objects at the cursor position using keyboard shortcuts (à la Pure Data) (objects shortcuts are customizable) 38 | - Create objects at the cursor position using keyboard shortcuts and connect them to a previously selected object, either to the inlet or from the outlet depending on the mouse position. 39 | 40 | ## Install 41 | 42 | Download the latest version of the package for [Max 8](https://github.com/tmhglnd/maxtoolbox/archive/refs/heads/master.zip) 43 | 44 | ``` 45 | 1. download latest code zip 46 | 2. unzip and place in Max Packages (on MacOS ~/Documents/Max 8/Packages) 47 | 3. restart Max8, open ToolBox from Menubar/Extras 48 | 4. click Activate 49 | ``` 50 | 51 | ``` 52 | 1. open terminal 53 | 2. $ cd ~/Documents/Max\ 8/Packages 54 | 3. $ git clone https://github.com/natcl/maxtoolbox.git 55 | 4. restart Max8, open ToolBox from Menubar/Extras 56 | 4. click Activate 57 | ``` 58 | 59 | Once the files are placed where they should go, load Max and select the ToolBox item in the Extas menu. You should see a small window appear. To start the Max ToolBox, click the "Activate" toggle. As long as this checkbox is checked, the ToolBox will start with Max. To unload the ToolBox (and prevent automatic startup), uncheck the checkbox. 60 | 61 | ## Usage 62 | 63 | There are usually two ways to access the functions of this ToolBox, either by pressing a key on the keyboard or by typing the name of the function in a dialog window. From now on, let's refer to this dialog window as the `shell`. 64 | 65 | The shell is the most powerful way to interact with the ToolBox and it is important to understand it well. 66 | 67 | ### Shell 68 | 69 | You can access the shell by pressing `±` (`shift-§`) (customizable). This will open a small window where you can enter text and process it by hitting enter. Depending on the function you want to execute you might need to select objects prior to hitting shift-r. 70 | 71 | #### What can the shell do? 72 | 73 | The shell is used to perform two different things: 74 | 75 | 1. Send messages to selected object(s) 76 | 2. Execute the ToolBox's different functions 77 | 78 | #### Sending messages to selected objects 79 | 80 | Sending messages to selected objects is the same as creating a message box, writing a message in it, connecting it to some object(s) and clicking the message box. The only difference is that it’s much faster to do so using the shell. Here is how you would do it: 81 | 82 | 1. Select one or several objects in your patch 83 | 2. Hit the shell shortcut key `±` (`shift-§`) 84 | 3. Type the message you want to send in the dialog box 85 | 4. Hit enter 86 | 87 | You can send separate messages the same way as in a message box by using a comma `,`. 88 | 89 | >Example: 90 | >You could select several number boxes and send them the following messages `min 40, max 50, bgcolor 0 1 0`. This would set all the selected number boxes to a minimum of 40 and a maximum of 50. You can also send simple messages such as “bang” or set values of common GUI objects. 91 | 92 | #### Executing ToolBox Functions 93 | 94 | While you can access most of the functions of this ToolBox using keyboard commands, (see reference below) you can also use the shell to access those functions. Certain functions will require the use of the shell because they need some arguments. Functions are always called with the `@` symbol. When arguments are used, they are typed after the function’s name. 95 | 96 | >Example: 97 | >To invoke the function that connects an outlet to the inlets of a row of objects you would first select the objects, hit `shift-r`, type “@sm” and hit enter. The function also accepts arguments to choose which inlets and outlets to connect. In order to connect outlet 3 of the top object to inlet 2 of the objects below, you would enter this in the shell instead: `@sm o 3 i 2`. You can also choose the amount of connections from one object for `@cc` with for example `n 5`. 98 | 99 | *NB: spaces and order are not necessary between the arguments, only after the `@`; `@sm o3i2` is also valid, so is `@sm i2 o3`* 100 | 101 | #### Functions that are not accessed by the shell 102 | 103 | Most of the ToolBox’s functions can be accessed by the shell with the exception of the “distribute” functions. These functions will be explained here while the shell functions will be explained in the reference below end of this document. 104 | 105 | ### Distribute 106 | 107 | The distribute function is accessed using keyboard shortcuts. This function includes vertical and/or horizontal distribution. To distribute a row of objects, select the row and press `x` on the keyboard. To distribute a column, press `y`. The row or column doesn’t need to be perfectly aligned to perform the distribution. 108 | 109 | #### Press and hold 110 | 111 | You can also dynamically distribute the objects by keeping your finger on the shortkey. Moving the mouse will space the objects in relation with the cursor position. You can use both “X” and “Y” shortcuts at the same time to form nice diagonals. 112 | 113 | 114 | 115 | 116 | 117 | ### Inlets & Outlets 118 | 119 | There are 2 ways of choosing inlets and outlets when connecting objects. If you are using the keyboard shortcuts you can use extra shortkeys to choose which inlet and/or outlet to connect. `shift-i` sets the inlet number, `shift-o` sets the outlet number. This number is also displayed in the Toolbox patcher. 120 | 121 | >Example: 122 | >Say you want to connect outlet `2` to inlet `3`, you would type the following shortkeys: 123 | > 124 | >`shift-o` `2` `shift-i` `3` followed by the keyboard shortcut of the connection you want to make. You can also type only `shift-o` `2` before connecting (the default is always 1). 125 | 126 | Note that this works almost the same as when using arguments, the order of the arguments provided to the shell is not important, you can type something like: `@sm o 2 i 3` or `@sm i 3 o 2`. You can also type only what is needed, if you want to connect outlet 2 to inlet 1, you can simply type `@sm o 2`. 127 | 128 | For the connect cascade (`shift-c`) function, you can specify a number of connections to make by pressing `shift-n` followed by a number. 129 | 130 | ### Shortkeys 131 | 132 | | | Connect single to multiple | 133 | | - | - | 134 | | Shortkey | `q` | 135 | | Shell command | `@sm` | 136 | | Arguments | `o` [n] `i` [n] (where n is the inlet or outlet number to connect) | 137 | | Description | Connect an outlet of one object to the inlets of a row of objects located below. You can choose which outlet or inlets to connect with arguments or shortkeys. | 138 | 139 | | | Connect multiple to single | 140 | | - | - | 141 | | Shortkey | `a` | 142 | | Shell command | `@ms` | 143 | | Arguments | `o` [n] `i` [n] (where n is the inlet or outlet number to connect, optional) | 144 | | Description | Connect the outlets of a row of objects to the inlet of one object located below. You can choose which outlet or inlets to connect with arguments or shortkeys. | 145 | 146 | | | Connect cascade | 147 | | - | - | 148 | | Shortkey | `C` (`shift-c`) 149 | | Shell command | `@cc` 150 | | Arguments | `o` [n] `i` [n] `n` [n] (where n is the inlet or outlet number to connect or number of connections, optional) 151 | | Description | Connect a selection of objects in cascade from top to bottom. You can choose which outlet or inlets to connect with arguments or `shift-i/o`. You can choose the number of inlets/outlets to connect with `shift-n` | 152 | 153 | | | Connect single to row 154 | | - | - | 155 | | Shortkey | `w` | 156 | | Shell command | `@sr` | 157 | | Arguments |`o` [n] `i` [n] (where n is the inlet or outlet number to connect, optional) 158 | | Description | Connect the consecutive outlets of one object to the inlets of a row of objects located below. You can choose which outlet or inlets to connect with arguments or `shift-i/o`. | 159 | 160 | | | Connect row to single 161 | | - | - | 162 | | Shortkey key | `s` | 163 | | Shell command | `@rs` | 164 | | Arguments | `o` [n] `i` [n] (where n is the inlet or outlet number to connect, optional) | 165 | | Description | Connect the outlets of a row of objects to the consecutive inlets of one object located below. You can choose which outlet or inlets to connect with arguments or `shift-i/o`. | 166 | 167 | | | Connect row to row | 168 | | - | - | 169 | | Shortkey | `e` | 170 | | Shell command | `@rr` | 171 | | Arguments | `o` [n] `i` [n] (where n is the inlet or outlet number to connect, optional) | 172 | | Description | This will connect the outlets of a row of objects to the inlets of a row of objects located below. You can choose which outlet or inlets to connect with arguments or `shift-i/o`. | 173 | 174 | | | New object and connect | 175 | | - | - | 176 | | Shortkey | `\|` (`shift-\`) | 177 | | Shell command | `none` | 178 | | Arguments | `none` | 179 | | Description | Create a new empty object below the selected object and connect the outlet of the selected object to the inlet of the new object. Automatically moves the selection to the new object. | 180 | 181 | | | Selection next object | 182 | | - | - | 183 | | Shortkey | `S` `W` (`shift-s` `shift-w`) | 184 | | Shell command | `none` | 185 | | Arguments | `none` | 186 | | Description | Select the next or previous object in the patcher. | 187 | 188 | | | Send a bang | 189 | | - | - | 190 | | Shortkey | `B` (`shift-b`) | 191 | | Shell command | `none` | 192 | | Arguments | `none` | 193 | | Description | Send a bang to all the selected objects. | 194 | 195 | | | Name a row or column of objects | 196 | | - | - | 197 | | Shortkey key | `none` | 198 | | Shell command | `@name` | 199 | | Arguments | `-v` (when naming a column) | 200 | | Description | This will name a row or column of objects. To use, select the row or column open the shell, type `@name name1 name2 ... name7` for amount of selected objects. When naming a column use the following syntax: `@name –v name1 name2 ...`. You can name objects ascending with a name that includes a `$`. For example: `@name myParam$` will result in `myParam0 myParam1 ... etc` | 201 | 202 | | | Clear console | 203 | | - | - | 204 | | Shortkey key | `K` (`shift-k`) | 205 | | Shell command | `none` | 206 | | Arguments | `none` | 207 | | Description | Clear all the prints in the console (max-window) | -------------------------------------------------------------------------------- /javascript/maxtoolbox.js: -------------------------------------------------------------------------------- 1 | autowatch = 1; 2 | 3 | if (max.version < "502") 4 | post("ToolBox: Your version of Max/MSP needs to be at least 5.0.2, please update it.\n"); 5 | else 6 | post("ToolBox v.18 - by Nathanaël Lécaudé - updated by Timo Hoogland\n"); 7 | 8 | // Constantes 9 | var X1 = 0; 10 | var Y1 = 1; 11 | var X2 = 2; 12 | var Y2 = 3; 13 | 14 | // Messages d'erreurs 15 | var NOTSELECTED = "MaxToolBox: Less than 2 objects are selected, please select more and try again\n"; 16 | var ARG_MISMATCH = "MaxToolBox: The number of arguments doesn't match the number of selected objects\n"; 17 | var NOT_SAVED = "MaxToolBox: Please save patcher to use this function\n"; 18 | var SELECTTWO = "MaxToolBox: Select only 2 objects to connect\n" 19 | var UNEVEN = "MaxToolBox: Uneven amount of objects selected, ignores last object\n" 20 | var UNDO_EMPTY = "MaxToolBox: Can't undo\n"; 21 | var DELETED = "MaxToolBox: Unloaded\n" 22 | 23 | // Variables globales 24 | var compteur = 0; 25 | var compteur_shell = 0; 26 | var valid = false; 27 | var objarray = []; 28 | var allobj = []; 29 | var undo_objarray = []; 30 | // 2d array of undo history 31 | var history = []; 32 | var history_size = 16; 33 | 34 | // error from console on patchcord out of range 35 | var out_of_range = false; 36 | 37 | // Variable temporaire servant à stocker Frontpatcher 38 | var temp_patch; 39 | // var patching_mode = "patching_rect"; 40 | var patching_mode = true; 41 | 42 | // Variable contenant les arguemnts à envoyer à la fonction send 43 | var argtosend = []; 44 | 45 | // Variable servant à stocker le choix du type de connexion 46 | var rowchoice; 47 | 48 | var delta_offset_x = 0; 49 | var delta_offset_y = 0; 50 | var delta_glob_x = 0; 51 | var delta_glob_y = 0; 52 | var titletemp; 53 | var titletemp_patcher; 54 | 55 | var g = new Global("glob"); 56 | g.mouse_x = 0; 57 | g.mouse_y = 0; 58 | g.key = 0; 59 | g.deltatime = false; 60 | g.in_offset = 1; 61 | g.out_offset = 1; 62 | g.num_connec = 1; 63 | g.distxy = 0; //Vérifie si X et Y sont pesé en même temps. 64 | g.loaded = 1; 65 | 66 | function loaded() 67 | { 68 | g.sendnamed("mtb_loaded","loaded"); 69 | } 70 | 71 | function clean_up() 72 | { 73 | undo_objarray = []; 74 | compteur = 0; 75 | objarray.length = 0; 76 | allobj.length = 0; 77 | valid = false; 78 | 79 | temp_patch = null; 80 | 81 | g.in_offset = 1; 82 | g.out_offset = 1; 83 | g.num_connec = 1; 84 | g.sendnamed("mtb_in","in_offset"); 85 | g.sendnamed("mtb_out","out_offset"); 86 | g.sendnamed("mtb_num","num_connec"); 87 | } 88 | 89 | function gather_io(arguments) 90 | { 91 | var args = arrayfromargs(arguments).join(""); 92 | 93 | if (args.match(/[ion]|bang/) || args === ''){ 94 | if (args.match(/i(\d+)/)){ 95 | g.in_offset = Number(args.match(/i(\d+)/)[1]); 96 | } 97 | if (args.match(/o(\d+)/)){ 98 | g.out_offset = Number(args.match(/o(\d+)/)[1]); 99 | } 100 | if (args.match(/n(\d+)/)){ 101 | g.num_connec = Number(args.match(/n(\d+)/)[1]); 102 | } 103 | // post('offsets', g.in_offset, g.out_offset, "\n"); 104 | return true; 105 | } else { 106 | post("Max ToolBox: Unkown arguments.\n"); 107 | return false; 108 | } 109 | } 110 | 111 | function applysend(a) 112 | { 113 | if (a.selected) 114 | { 115 | //Tous les arguments sont envoyés à l'objet 116 | a.message(argtosend); 117 | } 118 | return true; 119 | } 120 | 121 | function presend() 122 | { 123 | // get the patcher that is currently in front 124 | temp_patch = max.frontpatcher; 125 | } 126 | 127 | function send() 128 | { 129 | argtosend = arrayfromargs(arguments); 130 | temp_patch.apply(applysend); 131 | } 132 | 133 | function applycollect(b) 134 | { 135 | // figure out a way to have the toolbox also work 136 | // when using "show in parent patcher tab" 137 | // if (b.maxclass === 'patcher'){} 138 | 139 | if (b.selected){ 140 | objarray.push({ obj:b, xpos1:b.rect[X1], ypos1:b.rect[Y1] , xpos2:b.rect[X2], ypos2:b.rect[Y2], width:b.rect[X2]-b.rect[X1], height:b.rect[Y2]-b.rect[Y1] }); 141 | valid = true; 142 | } 143 | return true; 144 | } 145 | 146 | function applycollectall(b){ 147 | // collect all objects in the patcher 148 | allobj.push(b); 149 | } 150 | 151 | function change_shell_title() 152 | { 153 | temp_patch.apply(applytitle); 154 | max.frontpatcher.wind.title = "Shell | " + compteur_shell; 155 | compteur_shell = 0; 156 | } 157 | 158 | function applytitle(c) 159 | { 160 | if (c.selected) 161 | compteur_shell++; 162 | return true; 163 | } 164 | 165 | function alignsortx(a,b) 166 | { 167 | if (a.xpos1 < b.xpos1) return -1; 168 | else if (a.xpos1 > b.xpos1) return 1; 169 | else return 0; 170 | } 171 | 172 | function alignsorty(a,b) 173 | { 174 | if (a.ypos1 < b.ypos1) return -1; 175 | else if (a.ypos1 > b.ypos1) return 1; 176 | else return 0; 177 | } 178 | 179 | function alignsortrow(a,b) 180 | { 181 | if (a.rect[X1] < b.rect[X1]) return -1; 182 | else if (a.rect[X1] > b.rect[X1]) return 1; 183 | else return 0; 184 | } 185 | 186 | function alignsortcol(a,b) 187 | { 188 | if (a.rect[Y1] < b.rect[Y1]) return -1; 189 | else if (a.rect[Y1] > b.rect[Y2]) return 1; 190 | else return 0; 191 | } 192 | 193 | function findmax(maxarray) 194 | { 195 | var maximum = 0; 196 | 197 | for (var objs in maxarray) 198 | if (maxarray[objs] > maximum) 199 | maximum = maxarray[objs]; 200 | 201 | return maximum; 202 | } 203 | 204 | function findmin(maxarray) 205 | { 206 | var minimum = Math.pow(2,64); 207 | 208 | for (var objs in maxarray) 209 | if (maxarray[objs] < minimum) 210 | minimum = maxarray[objs]; 211 | 212 | return minimum; 213 | } 214 | 215 | function checkSelected(selected){ 216 | if (selected.length < 1){ 217 | // silently return if nothing is selected 218 | return false; 219 | } else if (selected.length < 2){ 220 | // print to select more objects 221 | post(NOTSELECTED); 222 | clean_up(); 223 | return false; 224 | } 225 | return true; 226 | } 227 | 228 | function alignhorz(mouseX) 229 | { 230 | if (max.frontpatcher.locked){ 231 | return; 232 | } 233 | // is patching mode or presentation mode? 1/0 234 | patching_mode = !max.frontpatcher.getattr("presentation"); 235 | // collect selected objects 236 | max.frontpatcher.apply(applycollect); 237 | // apply deep allows to use tabs and finds the selected 238 | // max.frontpatcher.applydeep(applycollect); 239 | 240 | // are enough objects selected? 241 | if (!checkSelected(objarray)){ 242 | return; 243 | } 244 | // sort on x axis 245 | objarray.sort(alignsorty); 246 | objarray.sort(alignsortx); 247 | 248 | var newpos = []; 249 | 250 | if (mouseX === 'no_mouse'){ 251 | // if no mouse movement then immediately reorder the objects 252 | var width = Math.max(0, objarray[objarray.length-1].obj.rect[X1] - objarray[0].obj.rect[X1]); 253 | } else { 254 | // width of total objects is mouseX - (1st object + window posX + toolbar width) 255 | var width = Math.max(0, mouseX - (objarray[0].obj.rect[X1] + max.frontpatcher.wind.location[X1] + 36)); 256 | } 257 | // distance between object is width divided by total objects 258 | var deltax = width / (objarray.length-1); 259 | 260 | if (patching_mode){ 261 | // adjust if in patching mode 262 | for (var i=1; i -1){ 429 | var l = allobj.length; 430 | var s = ((selected % l + l) + updown) % l; 431 | allobj[s].selected = true; 432 | clean_up(); 433 | } else { 434 | return; 435 | } 436 | } 437 | 438 | function next(){ 439 | select_next(1); 440 | } 441 | 442 | function previous(){ 443 | select_next(-1); 444 | } 445 | 446 | function connect_new_object(){ 447 | // return if the patcher is locked 448 | if (!gather_io(arguments) || max.frontpatcher.locked){ 449 | return; 450 | } 451 | // collect all selected objects 452 | temp_patch.apply(applycollect); 453 | // are enough objects selected? 454 | if (objarray.length < 1){ 455 | return; 456 | } 457 | 458 | for (objs in objarray){ 459 | var x = objarray[objs].obj.rect[X1]; 460 | var y = objarray[objs].obj.rect[Y1]; 461 | var n = max.frontpatcher.newdefault(x, y+45, "newobj"); 462 | 463 | objarray[0].obj.patcher.connect(objarray[objs].obj, 0 + g.out_offset - 1, n, 0 + g.in_offset - 1); 464 | undo_objarray.push([objarray[objs].obj , 0 + g.out_offset, n, 0 + g.in_offset]); 465 | n.selected = true; 466 | } 467 | // add to history 468 | history.push(undo_objarray); 469 | // remove if bigger than history size 470 | if (history.length > history_size){ 471 | history.shift(); 472 | } 473 | clean_up(); 474 | } 475 | 476 | function pre_row() 477 | { 478 | switch (arguments[0]) 479 | { 480 | case "rs" : 481 | rowchoice = arguments[0]; 482 | break; 483 | 484 | case "sr" : 485 | rowchoice = arguments[0]; 486 | break; 487 | 488 | case "rr" : 489 | rowchoice = arguments[0]; 490 | break; 491 | 492 | case "sm" : 493 | rowchoice = arguments[0]; 494 | break; 495 | 496 | case "ms" : 497 | rowchoice = arguments[0]; 498 | break; 499 | 500 | case "io" : 501 | rowchoice = arguments[0]; 502 | break; 503 | } 504 | } 505 | 506 | function connect_row_to_object() 507 | { 508 | // return if the patcher is locked 509 | if (!gather_io(arguments) || max.frontpatcher.locked){ 510 | return; 511 | } 512 | 513 | temp_patch.applydeep(applycollect); 514 | // apply deep allows to use tabs and finds the selected 515 | // temp_patch.applydeep(applycollect); 516 | 517 | // are enough objects selected? 518 | if (!checkSelected(objarray)){ 519 | return; 520 | } 521 | 522 | // sort object vertically 523 | objarray.sort(alignsorty); 524 | // store .obj direction into array 525 | for (objs in objarray){ 526 | objarray[objs] = objarray[objs].obj; 527 | } 528 | 529 | switch (rowchoice){ 530 | // connect all objects to lowest object 531 | case "rs" : 532 | // remove lowest object 533 | var lowObj = objarray.pop(); 534 | // resort objects horizontally 535 | objarray.sort(alignsortrow); 536 | // connect 537 | for (objs in objarray){ 538 | objarray[objs].patcher.connect(objarray[objs] , 0 + g.out_offset-1 , lowObj, parseInt(objs) + g.in_offset-1); 539 | undo_objarray.push([objarray[objs] , 0 + g.out_offset-1 , lowObj, parseInt(objs) + g.in_offset-1]); 540 | } 541 | break; 542 | 543 | // connect all objects to highest object 544 | case "sr" : 545 | // remove highest object 546 | var highObj = objarray.shift(); 547 | // resort objects horizontally 548 | objarray.sort(alignsortrow); 549 | // connect 550 | for (objs in objarray){ 551 | objarray[objs].patcher.connect(highObj, parseInt(objs) + g.out_offset-1, objarray[objs], 0 + g.in_offset-1); 552 | undo_objarray.push([highObj, parseInt(objs) + g.out_offset-1, objarray[objs], 0 + g.in_offset-1]); 553 | } 554 | break; 555 | 556 | case "rr" : 557 | if ((objarray.length % 2) != 0){ 558 | post(UNEVEN); 559 | } 560 | // split top and bottom 561 | var topArr = objarray.slice(0, objarray.length/2); 562 | var btmArr = objarray.slice(objarray.length/2, objarray.length); 563 | // sort horizontal objects 564 | topArr.sort(alignsortrow); 565 | btmArr.sort(alignsortrow); 566 | // connect 567 | for (objs in topArr){ 568 | topArr[objs].patcher.connect(topArr[objs] , 0 + g.out_offset-1 , btmArr[objs] , 0 + g.in_offset-1); 569 | undo_objarray.push([topArr[objs] , 0 + g.out_offset-1 , btmArr[objs] , 0 + g.in_offset-1]); 570 | } 571 | break; 572 | 573 | // connect all lower objects to the highest object 574 | // first inlet, instead of splitting selected objects in 575 | // half as in original implementation 576 | case "sm" : 577 | // remove highest object 578 | var highObj = objarray.shift(); 579 | // connect 580 | for (objs in objarray){ 581 | objarray[objs].patcher.connect(highObj, 0 + g.out_offset-1, objarray[objs], 0 + g.in_offset-1); 582 | undo_objarray.push([highObj, 0 + g.out_offset-1, objarray[objs], 0 + g.in_offset-1]); 583 | } 584 | break; 585 | 586 | // connect all higher objects to the lowest object 587 | // first inlet, instead of splitting selected objects in 588 | // half as in original implementation 589 | case "ms" : 590 | // remove lowest object 591 | var lowObj = objarray.pop(); 592 | // connect 593 | for (objs in objarray){ 594 | objarray[objs].patcher.connect(objarray[objs], 0 + g.out_offset-1, lowObj, 0 + g.in_offset-1); 595 | undo_objarray.push([objarray[objs], 0 + g.out_offset-1, lowObj, 0 + g.in_offset-1]); 596 | } 597 | break; 598 | 599 | // experimental 600 | // connects all outlets from one object to all inlets 601 | // from another object below it 602 | case "io" : 603 | if (objarray.length !== 2){ 604 | post(SELECTTWO); 605 | break; 606 | } 607 | // getInletsOutlets(objarray[0]); 608 | 609 | // basically like shift_c 610 | // defaults to max of 5 connections 611 | var cn = (g.num_connec < 2)? 5 : g.num_connec; 612 | for (var i=0; i history_size){ 622 | history.shift(); 623 | } 624 | clean_up(); 625 | } 626 | 627 | // attempt to get the number of inlets and outlets 628 | // based on the maxref.xml file from the reference 629 | // 630 | function getInletsOutlets(o){ 631 | var n = o.maxclass; 632 | var i = 0; 633 | var o = 0; 634 | 635 | post('object:', n, "\n"); 636 | 637 | var ref = new File(n + '.maxref.xml'); 638 | var f = ''; 639 | if (ref.isopen){ 640 | while (ref.position < ref.eof){ 641 | var l = ref.readline(); 642 | var inlet = l.match(/ 0){ 674 | undo_objarray = history.pop(); 675 | for (var obj in undo_objarray){ 676 | undo_objarray[obj][0].patcher.disconnect(undo_objarray[obj][0], undo_objarray[obj][1], undo_objarray[obj][2], undo_objarray[obj][3]); 677 | } 678 | undo_objarray = []; 679 | } else { 680 | post(UNDO_EMPTY); 681 | } 682 | } 683 | } 684 | 685 | function change_name() 686 | { 687 | var args = arrayfromargs(arguments); 688 | 689 | for (var objs in args) { 690 | if ((typeof args[objs]) === "number") { 691 | error("MaxToolBox: name can't be a number.\n"); 692 | return; 693 | } 694 | } 695 | temp_patch.apply(applycollect); 696 | // are enough objects selected? 697 | if (objarray.length < 1 || args[0] === 'bang'){ 698 | return; 699 | } 700 | 701 | if (args[0] == '-v'){ 702 | objarray.sort(alignsorty); 703 | // remove '-v' from arguments 704 | args.shift(); 705 | } else { 706 | objarray.sort(alignsortx); 707 | } 708 | // are enough arguments? 709 | if (args.length < 1){ 710 | return; 711 | } 712 | 713 | if (args.length === objarray.length || args[0].match(/\$/)){ 714 | for (var objs in objarray){ 715 | if (args[0].match(/\$/)){ 716 | objarray[objs].obj.varname = args[0].replace(/\$/, objs); 717 | } else { 718 | objarray[objs].obj.varname = args[objs]; 719 | } 720 | } 721 | } else { 722 | error(ARG_MISMATCH); 723 | } 724 | clean_up(); 725 | return; 726 | } 727 | 728 | function parse_patcher(){ 729 | 730 | if (max.frontpatcher.filepath == ""){ 731 | post(NOT_SAVED); 732 | return; 733 | } 734 | 735 | var lines = new String(); 736 | var patcher_file = new File(max.frontpatcher.filepath); 737 | 738 | while (patcher_file.position != patcher_file.eof){ 739 | lines += patcher_file.readline(); 740 | } 741 | patcher_file.close(); 742 | 743 | var parsed_patcher = JSON.parse(lines); 744 | 745 | var boxes = parsed_patcher["patcher"]["boxes"]; 746 | for (var box in boxes){ 747 | post("Inlets: " + boxes[box]["box"]["numinlets"]); 748 | post("Outlets: " + boxes[box]["box"]["numoutlets"]); 749 | post(); 750 | } 751 | } 752 | 753 | notifydeleted.local = 1; 754 | function notifydeleted() 755 | { 756 | post(DELETED); 757 | } 758 | -------------------------------------------------------------------------------- /help/toolboxhelp.maxhelp: -------------------------------------------------------------------------------- 1 | { 2 | "patcher" : { 3 | "fileversion" : 1, 4 | "appversion" : { 5 | "major" : 8, 6 | "minor" : 2, 7 | "revision" : 2, 8 | "architecture" : "x64", 9 | "modernui" : 1 10 | } 11 | , 12 | "classnamespace" : "box", 13 | "openrect" : [ 42.0, 92.0, 688.0, 433.0 ], 14 | "bglocked" : 0, 15 | "openinpresentation" : 0, 16 | "default_fontsize" : 11.595186999999999, 17 | "default_fontface" : 0, 18 | "default_fontname" : "Arial", 19 | "gridonopen" : 1, 20 | "gridsize" : [ 15.0, 15.0 ], 21 | "gridsnaponopen" : 1, 22 | "objectsnaponopen" : 1, 23 | "statusbarvisible" : 2, 24 | "toolbarvisible" : 1, 25 | "lefttoolbarpinned" : 0, 26 | "toptoolbarpinned" : 0, 27 | "righttoolbarpinned" : 0, 28 | "bottomtoolbarpinned" : 0, 29 | "toolbars_unpinned_last_save" : 0, 30 | "tallnewobj" : 0, 31 | "boxanimatetime" : 200, 32 | "enablehscroll" : 0, 33 | "enablevscroll" : 1, 34 | "devicewidth" : 0.0, 35 | "description" : "", 36 | "digest" : "", 37 | "tags" : "", 38 | "style" : "", 39 | "subpatcher_template" : "", 40 | "assistshowspatchername" : 0, 41 | "boxes" : [ { 42 | "box" : { 43 | "fontsize" : 11.0, 44 | "id" : "obj-78", 45 | "linecount" : 3, 46 | "maxclass" : "comment", 47 | "numinlets" : 1, 48 | "numoutlets" : 0, 49 | "patching_rect" : [ 230.0, 250.0, 132.0, 43.0 ], 50 | "text" : "- [shift - n] \nchange number of connections (default=1)" 51 | } 52 | 53 | } 54 | , { 55 | "box" : { 56 | "fontsize" : 11.0, 57 | "id" : "obj-77", 58 | "linecount" : 4, 59 | "maxclass" : "comment", 60 | "numinlets" : 1, 61 | "numoutlets" : 0, 62 | "patching_rect" : [ 565.0, 247.0, 100.0, 56.0 ], 63 | "text" : "- [shift - n] \nchange number of connections (default = 5)" 64 | } 65 | 66 | } 67 | , { 68 | "box" : { 69 | "fontname" : "Arial", 70 | "fontsize" : 9.160197999999999, 71 | "id" : "obj-96", 72 | "maxclass" : "newobj", 73 | "numinlets" : 2, 74 | "numoutlets" : 1, 75 | "outlettype" : [ "int" ], 76 | "patching_rect" : [ 595.0, 344.0, 27.0, 19.0 ], 77 | "text" : "+" 78 | } 79 | 80 | } 81 | , { 82 | "box" : { 83 | "fontname" : "Arial", 84 | "fontsize" : 9.160197999999999, 85 | "id" : "obj-95", 86 | "maxclass" : "newobj", 87 | "numinlets" : 2, 88 | "numoutlets" : 1, 89 | "outlettype" : [ "int" ], 90 | "patching_rect" : [ 534.0, 344.0, 27.0, 19.0 ], 91 | "text" : "+" 92 | } 93 | 94 | } 95 | , { 96 | "box" : { 97 | "fontname" : "Arial", 98 | "fontsize" : 9.160197999999999, 99 | "id" : "obj-92", 100 | "maxclass" : "newobj", 101 | "numinlets" : 2, 102 | "numoutlets" : 1, 103 | "outlettype" : [ "int" ], 104 | "patching_rect" : [ 595.0, 368.5, 27.0, 19.0 ], 105 | "text" : "+" 106 | } 107 | 108 | } 109 | , { 110 | "box" : { 111 | "fontname" : "Arial", 112 | "fontsize" : 9.160197999999999, 113 | "id" : "obj-93", 114 | "maxclass" : "newobj", 115 | "numinlets" : 2, 116 | "numoutlets" : 1, 117 | "outlettype" : [ "int" ], 118 | "patching_rect" : [ 595.0, 392.0, 27.0, 19.0 ], 119 | "text" : "+" 120 | } 121 | 122 | } 123 | , { 124 | "box" : { 125 | "fontname" : "Arial", 126 | "fontsize" : 14.249197000000001, 127 | "id" : "obj-91", 128 | "maxclass" : "comment", 129 | "numinlets" : 1, 130 | "numoutlets" : 0, 131 | "patching_rect" : [ 565.0, 368.5, 25.0, 22.0 ], 132 | "text" : "->" 133 | } 134 | 135 | } 136 | , { 137 | "box" : { 138 | "fontname" : "Arial", 139 | "fontsize" : 9.160197999999999, 140 | "id" : "obj-90", 141 | "maxclass" : "newobj", 142 | "numinlets" : 2, 143 | "numoutlets" : 1, 144 | "outlettype" : [ "int" ], 145 | "patching_rect" : [ 534.0, 368.5, 27.0, 19.0 ], 146 | "text" : "+" 147 | } 148 | 149 | } 150 | , { 151 | "box" : { 152 | "fontname" : "Arial", 153 | "fontsize" : 9.160197999999999, 154 | "id" : "obj-79", 155 | "maxclass" : "newobj", 156 | "numinlets" : 2, 157 | "numoutlets" : 1, 158 | "outlettype" : [ "int" ], 159 | "patching_rect" : [ 534.0, 392.0, 27.0, 19.0 ], 160 | "text" : "+" 161 | } 162 | 163 | } 164 | , { 165 | "box" : { 166 | "fontname" : "Arial", 167 | "fontsize" : 11.0, 168 | "id" : "obj-24", 169 | "linecount" : 2, 170 | "maxclass" : "comment", 171 | "numinlets" : 1, 172 | "numoutlets" : 0, 173 | "patching_rect" : [ 428.0, 332.0, 137.0, 31.0 ], 174 | "text" : "Undo connection\nup to 16 times" 175 | } 176 | 177 | } 178 | , { 179 | "box" : { 180 | "fontface" : 1, 181 | "fontname" : "Arial", 182 | "fontsize" : 16.0, 183 | "id" : "obj-13", 184 | "maxclass" : "comment", 185 | "numinlets" : 1, 186 | "numoutlets" : 0, 187 | "patching_rect" : [ 439.0, 388.0, 48.0, 24.0 ], 188 | "text" : "u" 189 | } 190 | 191 | } 192 | , { 193 | "box" : { 194 | "fontname" : "Arial", 195 | "fontsize" : 9.160197999999999, 196 | "id" : "obj-76", 197 | "maxclass" : "newobj", 198 | "numinlets" : 5, 199 | "numoutlets" : 1, 200 | "outlettype" : [ "" ], 201 | "patching_rect" : [ 484.75, 293.0, 61.0, 19.0 ], 202 | "text" : "join 5" 203 | } 204 | 205 | } 206 | , { 207 | "box" : { 208 | "fontname" : "Arial", 209 | "fontsize" : 9.160197999999999, 210 | "id" : "obj-75", 211 | "maxclass" : "newobj", 212 | "numinlets" : 1, 213 | "numoutlets" : 6, 214 | "outlettype" : [ "", "", "", "", "", "" ], 215 | "patching_rect" : [ 484.75, 260.0, 71.5, 19.0 ], 216 | "text" : "unjoin 5" 217 | } 218 | 219 | } 220 | , { 221 | "box" : { 222 | "fontface" : 1, 223 | "fontname" : "Arial", 224 | "fontsize" : 16.0, 225 | "id" : "obj-10", 226 | "maxclass" : "comment", 227 | "numinlets" : 1, 228 | "numoutlets" : 0, 229 | "patching_rect" : [ 439.0, 290.0, 22.0, 24.0 ], 230 | "text" : "d" 231 | } 232 | 233 | } 234 | , { 235 | "box" : { 236 | "fontname" : "Arial", 237 | "fontsize" : 11.0, 238 | "id" : "obj-25", 239 | "maxclass" : "comment", 240 | "numinlets" : 1, 241 | "numoutlets" : 0, 242 | "patching_rect" : [ 428.0, 234.0, 137.0, 19.0 ], 243 | "text" : "@io [parallel i/o]" 244 | } 245 | 246 | } 247 | , { 248 | "box" : { 249 | "comment" : "", 250 | "hidden" : 1, 251 | "id" : "obj-1", 252 | "index" : 1, 253 | "maxclass" : "inlet", 254 | "numinlets" : 0, 255 | "numoutlets" : 1, 256 | "outlettype" : [ "" ], 257 | "patching_rect" : [ 640.0, 385.5, 25.0, 25.0 ] 258 | } 259 | 260 | } 261 | , { 262 | "box" : { 263 | "fontface" : 1, 264 | "fontname" : "Arial", 265 | "fontsize" : 16.0, 266 | "id" : "obj-2", 267 | "maxclass" : "comment", 268 | "numinlets" : 1, 269 | "numoutlets" : 0, 270 | "patching_rect" : [ 230.0, 290.0, 88.0, 24.0 ], 271 | "text" : "shift -c (C)" 272 | } 273 | 274 | } 275 | , { 276 | "box" : { 277 | "fontname" : "Arial", 278 | "fontsize" : 12.0, 279 | "id" : "obj-3", 280 | "maxclass" : "comment", 281 | "numinlets" : 1, 282 | "numoutlets" : 0, 283 | "patching_rect" : [ 428.0, 12.0, 214.0, 20.0 ], 284 | "text" : "commandline : [ shift - § ]" 285 | } 286 | 287 | } 288 | , { 289 | "box" : { 290 | "angle" : 0.0, 291 | "bgcolor" : [ 1.0, 1.0, 1.0, 0.0 ], 292 | "border" : 1, 293 | "bordercolor" : [ 0.0, 0.0, 0.0, 1.0 ], 294 | "id" : "obj-4", 295 | "maxclass" : "panel", 296 | "mode" : 0, 297 | "numinlets" : 1, 298 | "numoutlets" : 0, 299 | "patching_rect" : [ 426.0, 12.0, 250.0, 17.0 ], 300 | "rounded" : 4 301 | } 302 | 303 | } 304 | , { 305 | "box" : { 306 | "fontface" : 1, 307 | "fontname" : "Arial", 308 | "fontsize" : 16.0, 309 | "id" : "obj-5", 310 | "maxclass" : "comment", 311 | "numinlets" : 1, 312 | "numoutlets" : 0, 313 | "patching_rect" : [ 22.0, 290.0, 48.0, 24.0 ], 314 | "text" : "e" 315 | } 316 | 317 | } 318 | , { 319 | "box" : { 320 | "fontface" : 1, 321 | "fontname" : "Arial", 322 | "fontsize" : 16.0, 323 | "id" : "obj-6", 324 | "maxclass" : "comment", 325 | "numinlets" : 1, 326 | "numoutlets" : 0, 327 | "patching_rect" : [ 22.0, 388.0, 48.0, 24.0 ], 328 | "text" : "x" 329 | } 330 | 331 | } 332 | , { 333 | "box" : { 334 | "fontface" : 1, 335 | "fontname" : "Arial", 336 | "fontsize" : 16.0, 337 | "id" : "obj-7", 338 | "maxclass" : "comment", 339 | "numinlets" : 1, 340 | "numoutlets" : 0, 341 | "patching_rect" : [ 231.0, 388.0, 48.0, 24.0 ], 342 | "text" : "y" 343 | } 344 | 345 | } 346 | , { 347 | "box" : { 348 | "fontname" : "Arial", 349 | "fontsize" : 11.0, 350 | "id" : "obj-8", 351 | "maxclass" : "comment", 352 | "numinlets" : 1, 353 | "numoutlets" : 0, 354 | "patching_rect" : [ 11.0, 12.0, 172.0, 19.0 ], 355 | "text" : "connection shortcuts:" 356 | } 357 | 358 | } 359 | , { 360 | "box" : { 361 | "angle" : 0.0, 362 | "bgcolor" : [ 1.0, 1.0, 1.0, 0.0 ], 363 | "border" : 1, 364 | "bordercolor" : [ 0.0, 0.0, 0.0, 1.0 ], 365 | "id" : "obj-9", 366 | "maxclass" : "panel", 367 | "mode" : 0, 368 | "numinlets" : 1, 369 | "numoutlets" : 0, 370 | "patching_rect" : [ 9.0, 12.0, 409.0, 17.0 ], 371 | "rounded" : 4 372 | } 373 | 374 | } 375 | , { 376 | "box" : { 377 | "fontname" : "Arial", 378 | "fontsize" : 11.0, 379 | "id" : "obj-12", 380 | "linecount" : 6, 381 | "maxclass" : "comment", 382 | "numinlets" : 1, 383 | "numoutlets" : 0, 384 | "patching_rect" : [ 429.0, 39.0, 287.0, 93.0 ], 385 | "text" : "- send messages to selected objects:\rmin 40, max 50\r\r- name selected objects:\r@name name1 name2 (to name a row)\r@name -v name1 name 2 (to name a column)\r" 386 | } 387 | 388 | } 389 | , { 390 | "box" : { 391 | "fontname" : "Arial", 392 | "fontsize" : 9.160197999999999, 393 | "id" : "obj-14", 394 | "maxclass" : "newobj", 395 | "numinlets" : 3, 396 | "numoutlets" : 1, 397 | "outlettype" : [ "" ], 398 | "patching_rect" : [ 617.0, 198.0, 55.0, 19.0 ], 399 | "text" : "pack 1 2 3" 400 | } 401 | 402 | } 403 | , { 404 | "box" : { 405 | "fontname" : "Arial", 406 | "fontsize" : 9.160197999999999, 407 | "id" : "obj-15", 408 | "maxclass" : "newobj", 409 | "numinlets" : 3, 410 | "numoutlets" : 1, 411 | "outlettype" : [ "" ], 412 | "patching_rect" : [ 557.0, 198.0, 55.0, 19.0 ], 413 | "text" : "pack 1 2 3" 414 | } 415 | 416 | } 417 | , { 418 | "box" : { 419 | "fontname" : "Arial", 420 | "fontsize" : 9.160197999999999, 421 | "id" : "obj-16", 422 | "maxclass" : "newobj", 423 | "numinlets" : 3, 424 | "numoutlets" : 1, 425 | "outlettype" : [ "" ], 426 | "patching_rect" : [ 499.0, 198.0, 55.0, 19.0 ], 427 | "text" : "pack 1 2 3" 428 | } 429 | 430 | } 431 | , { 432 | "box" : { 433 | "fontname" : "Arial", 434 | "fontsize" : 9.160197999999999, 435 | "id" : "obj-17", 436 | "maxclass" : "newobj", 437 | "numinlets" : 1, 438 | "numoutlets" : 3, 439 | "outlettype" : [ "int", "int", "int" ], 440 | "patching_rect" : [ 529.0, 163.0, 65.0, 19.0 ], 441 | "text" : "unpack 1 2 3" 442 | } 443 | 444 | } 445 | , { 446 | "box" : { 447 | "fontname" : "Arial", 448 | "fontsize" : 11.0, 449 | "id" : "obj-18", 450 | "linecount" : 2, 451 | "maxclass" : "comment", 452 | "numinlets" : 1, 453 | "numoutlets" : 0, 454 | "patching_rect" : [ 219.0, 332.0, 154.0, 31.0 ], 455 | "text" : "vertical distribution: (hold y to distribute with the mouse)" 456 | } 457 | 458 | } 459 | , { 460 | "box" : { 461 | "fontname" : "Arial", 462 | "fontsize" : 11.0, 463 | "id" : "obj-19", 464 | "maxclass" : "comment", 465 | "numinlets" : 1, 466 | "numoutlets" : 0, 467 | "patching_rect" : [ 10.0, 234.0, 171.0, 19.0 ], 468 | "text" : "@rr [row to row]" 469 | } 470 | 471 | } 472 | , { 473 | "box" : { 474 | "fontname" : "Arial", 475 | "fontsize" : 11.0, 476 | "id" : "obj-20", 477 | "maxclass" : "comment", 478 | "numinlets" : 1, 479 | "numoutlets" : 0, 480 | "patching_rect" : [ 219.0, 136.0, 174.0, 19.0 ], 481 | "text" : "@sr [single to row]" 482 | } 483 | 484 | } 485 | , { 486 | "box" : { 487 | "fontname" : "Arial", 488 | "fontsize" : 11.0, 489 | "id" : "obj-21", 490 | "maxclass" : "comment", 491 | "numinlets" : 1, 492 | "numoutlets" : 0, 493 | "patching_rect" : [ 10.0, 136.0, 174.0, 19.0 ], 494 | "text" : "@rs [row to single]" 495 | } 496 | 497 | } 498 | , { 499 | "box" : { 500 | "fontname" : "Arial", 501 | "fontsize" : 11.0, 502 | "id" : "obj-22", 503 | "linecount" : 2, 504 | "maxclass" : "comment", 505 | "numinlets" : 1, 506 | "numoutlets" : 0, 507 | "patching_rect" : [ 10.0, 332.0, 171.0, 31.0 ], 508 | "text" : "horizontal distribution: (hold x to distribute with the mouse)" 509 | } 510 | 511 | } 512 | , { 513 | "box" : { 514 | "fontname" : "Arial", 515 | "fontsize" : 11.0, 516 | "id" : "obj-23", 517 | "linecount" : 6, 518 | "maxclass" : "comment", 519 | "numinlets" : 1, 520 | "numoutlets" : 0, 521 | "patching_rect" : [ 429.0, 136.0, 246.0, 80.0 ], 522 | "text" : "- connect different inlets / outlets: \r@sm o 3 i 2\r(or key sequence \rbefore connecting :\ro 3 i 2 typed\rsequentially)" 523 | } 524 | 525 | } 526 | , { 527 | "box" : { 528 | "fontname" : "Arial", 529 | "fontsize" : 9.160197999999999, 530 | "id" : "obj-27", 531 | "maxclass" : "newobj", 532 | "numinlets" : 2, 533 | "numoutlets" : 1, 534 | "outlettype" : [ "int" ], 535 | "patching_rect" : [ 374.0, 293.0, 27.0, 19.0 ], 536 | "text" : "+" 537 | } 538 | 539 | } 540 | , { 541 | "box" : { 542 | "fontname" : "Arial", 543 | "fontsize" : 9.160197999999999, 544 | "id" : "obj-28", 545 | "maxclass" : "newobj", 546 | "numinlets" : 2, 547 | "numoutlets" : 1, 548 | "outlettype" : [ "int" ], 549 | "patching_rect" : [ 374.0, 270.0, 27.0, 19.0 ], 550 | "text" : "+" 551 | } 552 | 553 | } 554 | , { 555 | "box" : { 556 | "fontname" : "Arial", 557 | "fontsize" : 9.160197999999999, 558 | "id" : "obj-29", 559 | "maxclass" : "newobj", 560 | "numinlets" : 2, 561 | "numoutlets" : 1, 562 | "outlettype" : [ "int" ], 563 | "patching_rect" : [ 374.0, 247.0, 27.0, 19.0 ], 564 | "text" : "+" 565 | } 566 | 567 | } 568 | , { 569 | "box" : { 570 | "fontname" : "Arial", 571 | "fontsize" : 11.0, 572 | "id" : "obj-30", 573 | "maxclass" : "comment", 574 | "numinlets" : 1, 575 | "numoutlets" : 0, 576 | "patching_rect" : [ 219.0, 234.0, 122.0, 19.0 ], 577 | "text" : "@cc [connect cascade]" 578 | } 579 | 580 | } 581 | , { 582 | "box" : { 583 | "fontname" : "Arial", 584 | "fontsize" : 11.0, 585 | "id" : "obj-31", 586 | "maxclass" : "comment", 587 | "numinlets" : 1, 588 | "numoutlets" : 0, 589 | "patching_rect" : [ 10.0, 38.0, 171.0, 19.0 ], 590 | "text" : "@ms [multiple to single]" 591 | } 592 | 593 | } 594 | , { 595 | "box" : { 596 | "fontname" : "Arial", 597 | "fontsize" : 11.0, 598 | "id" : "obj-32", 599 | "maxclass" : "comment", 600 | "numinlets" : 1, 601 | "numoutlets" : 0, 602 | "patching_rect" : [ 219.0, 38.0, 171.0, 19.0 ], 603 | "text" : "@sm [single to multiple]" 604 | } 605 | 606 | } 607 | , { 608 | "box" : { 609 | "fontname" : "Arial", 610 | "fontsize" : 9.160197999999999, 611 | "id" : "obj-33", 612 | "maxclass" : "comment", 613 | "numinlets" : 1, 614 | "numoutlets" : 0, 615 | "patching_rect" : [ 129.0, 373.0, 21.0, 17.0 ], 616 | "text" : "l" 617 | } 618 | 619 | } 620 | , { 621 | "box" : { 622 | "fontname" : "Arial", 623 | "fontsize" : 14.249197000000001, 624 | "id" : "obj-34", 625 | "maxclass" : "comment", 626 | "numinlets" : 1, 627 | "numoutlets" : 0, 628 | "patching_rect" : [ 346.0, 373.0, 25.0, 22.0 ], 629 | "text" : "->" 630 | } 631 | 632 | } 633 | , { 634 | "box" : { 635 | "fontname" : "Arial", 636 | "fontsize" : 14.249197000000001, 637 | "id" : "obj-35", 638 | "maxclass" : "comment", 639 | "numinlets" : 1, 640 | "numoutlets" : 0, 641 | "patching_rect" : [ 127.0, 377.0, 25.0, 22.0 ], 642 | "text" : "v" 643 | } 644 | 645 | } 646 | , { 647 | "box" : { 648 | "fontname" : "Arial", 649 | "fontsize" : 9.160197999999999, 650 | "id" : "obj-36", 651 | "maxclass" : "newobj", 652 | "numinlets" : 2, 653 | "numoutlets" : 1, 654 | "outlettype" : [ "int" ], 655 | "patching_rect" : [ 374.0, 393.333333333333314, 27.0, 19.0 ], 656 | "text" : "+" 657 | } 658 | 659 | } 660 | , { 661 | "box" : { 662 | "fontname" : "Arial", 663 | "fontsize" : 9.160197999999999, 664 | "id" : "obj-37", 665 | "maxclass" : "newobj", 666 | "numinlets" : 2, 667 | "numoutlets" : 1, 668 | "outlettype" : [ "int" ], 669 | "patching_rect" : [ 374.0, 370.666666666666686, 27.0, 19.0 ], 670 | "text" : "+" 671 | } 672 | 673 | } 674 | , { 675 | "box" : { 676 | "fontname" : "Arial", 677 | "fontsize" : 9.160197999999999, 678 | "id" : "obj-38", 679 | "maxclass" : "newobj", 680 | "numinlets" : 2, 681 | "numoutlets" : 1, 682 | "outlettype" : [ "int" ], 683 | "patching_rect" : [ 374.0, 348.0, 27.0, 19.0 ], 684 | "text" : "+" 685 | } 686 | 687 | } 688 | , { 689 | "box" : { 690 | "fontface" : 1, 691 | "fontname" : "Arial", 692 | "fontsize" : 16.0, 693 | "id" : "obj-39", 694 | "maxclass" : "comment", 695 | "numinlets" : 1, 696 | "numoutlets" : 0, 697 | "patching_rect" : [ 21.0, 94.0, 41.0, 24.0 ], 698 | "text" : "a" 699 | } 700 | 701 | } 702 | , { 703 | "box" : { 704 | "fontname" : "Arial", 705 | "fontsize" : 9.160197999999999, 706 | "id" : "obj-40", 707 | "maxclass" : "newobj", 708 | "numinlets" : 2, 709 | "numoutlets" : 1, 710 | "outlettype" : [ "int" ], 711 | "patching_rect" : [ 166.0, 61.0, 27.0, 19.0 ], 712 | "text" : "+" 713 | } 714 | 715 | } 716 | , { 717 | "box" : { 718 | "fontname" : "Arial", 719 | "fontsize" : 9.160197999999999, 720 | "id" : "obj-41", 721 | "maxclass" : "newobj", 722 | "numinlets" : 2, 723 | "numoutlets" : 1, 724 | "outlettype" : [ "int" ], 725 | "patching_rect" : [ 133.0, 61.0, 27.0, 19.0 ], 726 | "text" : "+" 727 | } 728 | 729 | } 730 | , { 731 | "box" : { 732 | "fontname" : "Arial", 733 | "fontsize" : 9.160197999999999, 734 | "id" : "obj-42", 735 | "maxclass" : "newobj", 736 | "numinlets" : 2, 737 | "numoutlets" : 1, 738 | "outlettype" : [ "int" ], 739 | "patching_rect" : [ 102.0, 61.0, 27.0, 19.0 ], 740 | "text" : "+" 741 | } 742 | 743 | } 744 | , { 745 | "box" : { 746 | "fontname" : "Arial", 747 | "fontsize" : 9.160197999999999, 748 | "id" : "obj-43", 749 | "maxclass" : "newobj", 750 | "numinlets" : 2, 751 | "numoutlets" : 1, 752 | "outlettype" : [ "int" ], 753 | "patching_rect" : [ 133.0, 97.0, 27.0, 19.0 ], 754 | "text" : "+" 755 | } 756 | 757 | } 758 | , { 759 | "box" : { 760 | "fontname" : "Arial", 761 | "fontsize" : 9.160197999999999, 762 | "id" : "obj-44", 763 | "maxclass" : "newobj", 764 | "numinlets" : 2, 765 | "numoutlets" : 1, 766 | "outlettype" : [ "int" ], 767 | "patching_rect" : [ 175.0, 394.0, 27.0, 19.0 ], 768 | "text" : "+" 769 | } 770 | 771 | } 772 | , { 773 | "box" : { 774 | "fontname" : "Arial", 775 | "fontsize" : 9.160197999999999, 776 | "id" : "obj-45", 777 | "maxclass" : "newobj", 778 | "numinlets" : 2, 779 | "numoutlets" : 1, 780 | "outlettype" : [ "int" ], 781 | "patching_rect" : [ 139.0, 394.0, 27.0, 19.0 ], 782 | "text" : "+" 783 | } 784 | 785 | } 786 | , { 787 | "box" : { 788 | "fontname" : "Arial", 789 | "fontsize" : 9.160197999999999, 790 | "id" : "obj-46", 791 | "maxclass" : "newobj", 792 | "numinlets" : 2, 793 | "numoutlets" : 1, 794 | "outlettype" : [ "int" ], 795 | "patching_rect" : [ 101.0, 394.0, 27.0, 19.0 ], 796 | "text" : "+" 797 | } 798 | 799 | } 800 | , { 801 | "box" : { 802 | "fontname" : "Arial", 803 | "fontsize" : 9.160197999999999, 804 | "id" : "obj-47", 805 | "maxclass" : "newobj", 806 | "numinlets" : 2, 807 | "numoutlets" : 1, 808 | "outlettype" : [ "int" ], 809 | "patching_rect" : [ 314.0, 388.0, 27.0, 19.0 ], 810 | "text" : "+" 811 | } 812 | 813 | } 814 | , { 815 | "box" : { 816 | "fontname" : "Arial", 817 | "fontsize" : 9.160197999999999, 818 | "id" : "obj-48", 819 | "maxclass" : "newobj", 820 | "numinlets" : 2, 821 | "numoutlets" : 1, 822 | "outlettype" : [ "int" ], 823 | "patching_rect" : [ 314.0, 378.0, 27.0, 19.0 ], 824 | "text" : "+" 825 | } 826 | 827 | } 828 | , { 829 | "box" : { 830 | "fontname" : "Arial", 831 | "fontsize" : 9.160197999999999, 832 | "id" : "obj-49", 833 | "maxclass" : "newobj", 834 | "numinlets" : 2, 835 | "numoutlets" : 1, 836 | "outlettype" : [ "int" ], 837 | "patching_rect" : [ 314.0, 368.0, 27.0, 19.0 ], 838 | "text" : "+" 839 | } 840 | 841 | } 842 | , { 843 | "box" : { 844 | "fontname" : "Arial", 845 | "fontsize" : 9.160197999999999, 846 | "id" : "obj-50", 847 | "maxclass" : "newobj", 848 | "numinlets" : 2, 849 | "numoutlets" : 1, 850 | "outlettype" : [ "int" ], 851 | "patching_rect" : [ 132.0, 360.0, 27.0, 19.0 ], 852 | "text" : "+" 853 | } 854 | 855 | } 856 | , { 857 | "box" : { 858 | "fontname" : "Arial", 859 | "fontsize" : 9.160197999999999, 860 | "id" : "obj-51", 861 | "maxclass" : "newobj", 862 | "numinlets" : 2, 863 | "numoutlets" : 1, 864 | "outlettype" : [ "int" ], 865 | "patching_rect" : [ 118.0, 360.0, 27.0, 19.0 ], 866 | "text" : "+" 867 | } 868 | 869 | } 870 | , { 871 | "box" : { 872 | "fontname" : "Arial", 873 | "fontsize" : 9.160197999999999, 874 | "id" : "obj-52", 875 | "maxclass" : "newobj", 876 | "numinlets" : 2, 877 | "numoutlets" : 1, 878 | "outlettype" : [ "int" ], 879 | "patching_rect" : [ 102.0, 360.0, 27.0, 19.0 ], 880 | "text" : "+" 881 | } 882 | 883 | } 884 | , { 885 | "box" : { 886 | "fontface" : 1, 887 | "fontname" : "Arial", 888 | "fontsize" : 16.0, 889 | "id" : "obj-53", 890 | "maxclass" : "comment", 891 | "numinlets" : 1, 892 | "numoutlets" : 0, 893 | "patching_rect" : [ 230.0, 94.0, 41.0, 24.0 ], 894 | "text" : "q" 895 | } 896 | 897 | } 898 | , { 899 | "box" : { 900 | "fontname" : "Arial", 901 | "fontsize" : 9.160197999999999, 902 | "id" : "obj-54", 903 | "maxclass" : "newobj", 904 | "numinlets" : 2, 905 | "numoutlets" : 1, 906 | "outlettype" : [ "int" ], 907 | "patching_rect" : [ 374.0, 97.0, 27.0, 19.0 ], 908 | "text" : "+" 909 | } 910 | 911 | } 912 | , { 913 | "box" : { 914 | "fontname" : "Arial", 915 | "fontsize" : 9.160197999999999, 916 | "id" : "obj-55", 917 | "maxclass" : "newobj", 918 | "numinlets" : 2, 919 | "numoutlets" : 1, 920 | "outlettype" : [ "int" ], 921 | "patching_rect" : [ 335.0, 97.0, 27.0, 19.0 ], 922 | "text" : "+" 923 | } 924 | 925 | } 926 | , { 927 | "box" : { 928 | "fontname" : "Arial", 929 | "fontsize" : 9.160197999999999, 930 | "id" : "obj-56", 931 | "maxclass" : "newobj", 932 | "numinlets" : 2, 933 | "numoutlets" : 1, 934 | "outlettype" : [ "int" ], 935 | "patching_rect" : [ 297.0, 97.0, 27.0, 19.0 ], 936 | "text" : "+" 937 | } 938 | 939 | } 940 | , { 941 | "box" : { 942 | "fontname" : "Arial", 943 | "fontsize" : 9.160197999999999, 944 | "id" : "obj-57", 945 | "maxclass" : "newobj", 946 | "numinlets" : 2, 947 | "numoutlets" : 1, 948 | "outlettype" : [ "int" ], 949 | "patching_rect" : [ 335.0, 61.0, 27.0, 19.0 ], 950 | "text" : "+" 951 | } 952 | 953 | } 954 | , { 955 | "box" : { 956 | "fontface" : 1, 957 | "fontname" : "Arial", 958 | "fontsize" : 16.0, 959 | "id" : "obj-58", 960 | "maxclass" : "comment", 961 | "numinlets" : 1, 962 | "numoutlets" : 0, 963 | "patching_rect" : [ 230.0, 192.0, 41.0, 24.0 ], 964 | "text" : "w" 965 | } 966 | 967 | } 968 | , { 969 | "box" : { 970 | "fontface" : 1, 971 | "fontname" : "Arial", 972 | "fontsize" : 16.0, 973 | "id" : "obj-59", 974 | "maxclass" : "comment", 975 | "numinlets" : 1, 976 | "numoutlets" : 0, 977 | "patching_rect" : [ 21.0, 192.0, 41.0, 24.0 ], 978 | "text" : "s" 979 | } 980 | 981 | } 982 | , { 983 | "box" : { 984 | "fontname" : "Arial", 985 | "fontsize" : 9.160197999999999, 986 | "id" : "obj-60", 987 | "maxclass" : "newobj", 988 | "numinlets" : 2, 989 | "numoutlets" : 1, 990 | "outlettype" : [ "int" ], 991 | "patching_rect" : [ 171.0, 295.0, 27.0, 19.0 ], 992 | "text" : "+" 993 | } 994 | 995 | } 996 | , { 997 | "box" : { 998 | "fontname" : "Arial", 999 | "fontsize" : 9.160197999999999, 1000 | "id" : "obj-61", 1001 | "maxclass" : "newobj", 1002 | "numinlets" : 2, 1003 | "numoutlets" : 1, 1004 | "outlettype" : [ "int" ], 1005 | "patching_rect" : [ 136.0, 295.0, 27.0, 19.0 ], 1006 | "text" : "+" 1007 | } 1008 | 1009 | } 1010 | , { 1011 | "box" : { 1012 | "fontname" : "Arial", 1013 | "fontsize" : 9.160197999999999, 1014 | "id" : "obj-62", 1015 | "maxclass" : "newobj", 1016 | "numinlets" : 2, 1017 | "numoutlets" : 1, 1018 | "outlettype" : [ "int" ], 1019 | "patching_rect" : [ 102.0, 295.0, 27.0, 19.0 ], 1020 | "text" : "+" 1021 | } 1022 | 1023 | } 1024 | , { 1025 | "box" : { 1026 | "fontname" : "Arial", 1027 | "fontsize" : 9.160197999999999, 1028 | "id" : "obj-63", 1029 | "maxclass" : "newobj", 1030 | "numinlets" : 2, 1031 | "numoutlets" : 1, 1032 | "outlettype" : [ "int" ], 1033 | "patching_rect" : [ 171.0, 262.0, 27.0, 19.0 ], 1034 | "text" : "+" 1035 | } 1036 | 1037 | } 1038 | , { 1039 | "box" : { 1040 | "fontname" : "Arial", 1041 | "fontsize" : 9.160197999999999, 1042 | "id" : "obj-64", 1043 | "maxclass" : "newobj", 1044 | "numinlets" : 2, 1045 | "numoutlets" : 1, 1046 | "outlettype" : [ "int" ], 1047 | "patching_rect" : [ 136.0, 262.0, 27.0, 19.0 ], 1048 | "text" : "+" 1049 | } 1050 | 1051 | } 1052 | , { 1053 | "box" : { 1054 | "fontname" : "Arial", 1055 | "fontsize" : 9.160197999999999, 1056 | "id" : "obj-65", 1057 | "maxclass" : "newobj", 1058 | "numinlets" : 2, 1059 | "numoutlets" : 1, 1060 | "outlettype" : [ "int" ], 1061 | "patching_rect" : [ 102.0, 262.0, 27.0, 19.0 ], 1062 | "text" : "+" 1063 | } 1064 | 1065 | } 1066 | , { 1067 | "box" : { 1068 | "fontname" : "Arial", 1069 | "fontsize" : 9.160197999999999, 1070 | "id" : "obj-66", 1071 | "maxclass" : "newobj", 1072 | "numinlets" : 2, 1073 | "numoutlets" : 1, 1074 | "outlettype" : [ "int" ], 1075 | "patching_rect" : [ 374.0, 196.0, 27.0, 19.0 ], 1076 | "text" : "+" 1077 | } 1078 | 1079 | } 1080 | , { 1081 | "box" : { 1082 | "fontname" : "Arial", 1083 | "fontsize" : 9.160197999999999, 1084 | "id" : "obj-67", 1085 | "maxclass" : "newobj", 1086 | "numinlets" : 2, 1087 | "numoutlets" : 1, 1088 | "outlettype" : [ "int" ], 1089 | "patching_rect" : [ 335.0, 196.0, 27.0, 19.0 ], 1090 | "text" : "+" 1091 | } 1092 | 1093 | } 1094 | , { 1095 | "box" : { 1096 | "fontname" : "Arial", 1097 | "fontsize" : 9.160197999999999, 1098 | "id" : "obj-68", 1099 | "maxclass" : "newobj", 1100 | "numinlets" : 2, 1101 | "numoutlets" : 1, 1102 | "outlettype" : [ "int" ], 1103 | "patching_rect" : [ 297.0, 196.0, 27.0, 19.0 ], 1104 | "text" : "+" 1105 | } 1106 | 1107 | } 1108 | , { 1109 | "box" : { 1110 | "fontname" : "Arial", 1111 | "fontsize" : 9.160197999999999, 1112 | "id" : "obj-69", 1113 | "maxclass" : "newobj", 1114 | "numinlets" : 3, 1115 | "numoutlets" : 1, 1116 | "outlettype" : [ "" ], 1117 | "patching_rect" : [ 115.0, 196.0, 55.0, 19.0 ], 1118 | "text" : "pack 1 2 3" 1119 | } 1120 | 1121 | } 1122 | , { 1123 | "box" : { 1124 | "fontname" : "Arial", 1125 | "fontsize" : 9.160197999999999, 1126 | "id" : "obj-70", 1127 | "maxclass" : "newobj", 1128 | "numinlets" : 2, 1129 | "numoutlets" : 1, 1130 | "outlettype" : [ "int" ], 1131 | "patching_rect" : [ 171.0, 163.0, 27.0, 19.0 ], 1132 | "text" : "+" 1133 | } 1134 | 1135 | } 1136 | , { 1137 | "box" : { 1138 | "fontname" : "Arial", 1139 | "fontsize" : 9.160197999999999, 1140 | "id" : "obj-71", 1141 | "maxclass" : "newobj", 1142 | "numinlets" : 2, 1143 | "numoutlets" : 1, 1144 | "outlettype" : [ "int" ], 1145 | "patching_rect" : [ 133.0, 163.0, 27.0, 19.0 ], 1146 | "text" : "+" 1147 | } 1148 | 1149 | } 1150 | , { 1151 | "box" : { 1152 | "fontname" : "Arial", 1153 | "fontsize" : 9.160197999999999, 1154 | "id" : "obj-72", 1155 | "maxclass" : "newobj", 1156 | "numinlets" : 2, 1157 | "numoutlets" : 1, 1158 | "outlettype" : [ "int" ], 1159 | "patching_rect" : [ 102.0, 163.0, 27.0, 19.0 ], 1160 | "text" : "+" 1161 | } 1162 | 1163 | } 1164 | , { 1165 | "box" : { 1166 | "fontname" : "Arial", 1167 | "fontsize" : 9.160197999999999, 1168 | "id" : "obj-73", 1169 | "maxclass" : "newobj", 1170 | "numinlets" : 1, 1171 | "numoutlets" : 3, 1172 | "outlettype" : [ "int", "int", "int" ], 1173 | "patching_rect" : [ 312.0, 163.0, 65.0, 19.0 ], 1174 | "text" : "unpack 1 2 3" 1175 | } 1176 | 1177 | } 1178 | , { 1179 | "box" : { 1180 | "angle" : 0.0, 1181 | "background" : 1, 1182 | "bgcolor" : [ 1.0, 1.0, 1.0, 0.0 ], 1183 | "border" : 1, 1184 | "bordercolor" : [ 0.0, 0.0, 0.0, 1.0 ], 1185 | "id" : "obj-11", 1186 | "maxclass" : "panel", 1187 | "mode" : 0, 1188 | "numinlets" : 1, 1189 | "numoutlets" : 0, 1190 | "patching_rect" : [ 426.0, 329.0, 250.0, 90.0 ], 1191 | "rounded" : 4 1192 | } 1193 | 1194 | } 1195 | , { 1196 | "box" : { 1197 | "angle" : 0.0, 1198 | "background" : 1, 1199 | "bgcolor" : [ 1.0, 1.0, 1.0, 0.0 ], 1200 | "border" : 1, 1201 | "bordercolor" : [ 0.0, 0.0, 0.0, 1.0 ], 1202 | "id" : "obj-80", 1203 | "maxclass" : "panel", 1204 | "mode" : 0, 1205 | "numinlets" : 1, 1206 | "numoutlets" : 0, 1207 | "patching_rect" : [ 426.0, 35.0, 250.0, 90.0 ], 1208 | "rounded" : 4 1209 | } 1210 | 1211 | } 1212 | , { 1213 | "box" : { 1214 | "angle" : 0.0, 1215 | "background" : 1, 1216 | "bgcolor" : [ 1.0, 1.0, 1.0, 0.0 ], 1217 | "border" : 1, 1218 | "bordercolor" : [ 0.0, 0.0, 0.0, 1.0 ], 1219 | "id" : "obj-81", 1220 | "maxclass" : "panel", 1221 | "mode" : 0, 1222 | "numinlets" : 1, 1223 | "numoutlets" : 0, 1224 | "patching_rect" : [ 426.0, 133.0, 250.0, 90.0 ], 1225 | "rounded" : 4 1226 | } 1227 | 1228 | } 1229 | , { 1230 | "box" : { 1231 | "angle" : 0.0, 1232 | "background" : 1, 1233 | "bgcolor" : [ 1.0, 1.0, 1.0, 0.0 ], 1234 | "border" : 1, 1235 | "bordercolor" : [ 0.0, 0.0, 0.0, 1.0 ], 1236 | "id" : "obj-82", 1237 | "maxclass" : "panel", 1238 | "mode" : 0, 1239 | "numinlets" : 1, 1240 | "numoutlets" : 0, 1241 | "patching_rect" : [ 217.0, 329.0, 200.0, 90.0 ], 1242 | "rounded" : 4 1243 | } 1244 | 1245 | } 1246 | , { 1247 | "box" : { 1248 | "angle" : 0.0, 1249 | "background" : 1, 1250 | "bgcolor" : [ 1.0, 1.0, 1.0, 0.0 ], 1251 | "border" : 1, 1252 | "bordercolor" : [ 0.0, 0.0, 0.0, 1.0 ], 1253 | "id" : "obj-83", 1254 | "maxclass" : "panel", 1255 | "mode" : 0, 1256 | "numinlets" : 1, 1257 | "numoutlets" : 0, 1258 | "patching_rect" : [ 217.0, 231.0, 200.0, 90.0 ], 1259 | "rounded" : 4 1260 | } 1261 | 1262 | } 1263 | , { 1264 | "box" : { 1265 | "angle" : 0.0, 1266 | "background" : 1, 1267 | "bgcolor" : [ 1.0, 1.0, 1.0, 0.0 ], 1268 | "border" : 1, 1269 | "bordercolor" : [ 0.0, 0.0, 0.0, 1.0 ], 1270 | "id" : "obj-84", 1271 | "maxclass" : "panel", 1272 | "mode" : 0, 1273 | "numinlets" : 1, 1274 | "numoutlets" : 0, 1275 | "patching_rect" : [ 217.0, 133.0, 200.0, 90.0 ], 1276 | "rounded" : 4 1277 | } 1278 | 1279 | } 1280 | , { 1281 | "box" : { 1282 | "angle" : 0.0, 1283 | "background" : 1, 1284 | "bgcolor" : [ 1.0, 1.0, 1.0, 0.0 ], 1285 | "border" : 1, 1286 | "bordercolor" : [ 0.0, 0.0, 0.0, 1.0 ], 1287 | "id" : "obj-26", 1288 | "maxclass" : "panel", 1289 | "mode" : 0, 1290 | "numinlets" : 1, 1291 | "numoutlets" : 0, 1292 | "patching_rect" : [ 426.0, 231.0, 250.0, 90.0 ], 1293 | "rounded" : 4 1294 | } 1295 | 1296 | } 1297 | , { 1298 | "box" : { 1299 | "angle" : 0.0, 1300 | "background" : 1, 1301 | "bgcolor" : [ 1.0, 1.0, 1.0, 0.0 ], 1302 | "border" : 1, 1303 | "bordercolor" : [ 0.0, 0.0, 0.0, 1.0 ], 1304 | "id" : "obj-85", 1305 | "maxclass" : "panel", 1306 | "mode" : 0, 1307 | "numinlets" : 1, 1308 | "numoutlets" : 0, 1309 | "patching_rect" : [ 217.0, 35.0, 200.0, 90.0 ], 1310 | "rounded" : 4 1311 | } 1312 | 1313 | } 1314 | , { 1315 | "box" : { 1316 | "angle" : 0.0, 1317 | "background" : 1, 1318 | "bgcolor" : [ 1.0, 1.0, 1.0, 0.0 ], 1319 | "border" : 1, 1320 | "bordercolor" : [ 0.0, 0.0, 0.0, 1.0 ], 1321 | "id" : "obj-86", 1322 | "maxclass" : "panel", 1323 | "mode" : 0, 1324 | "numinlets" : 1, 1325 | "numoutlets" : 0, 1326 | "patching_rect" : [ 8.0, 329.0, 200.0, 90.0 ], 1327 | "rounded" : 4 1328 | } 1329 | 1330 | } 1331 | , { 1332 | "box" : { 1333 | "angle" : 0.0, 1334 | "background" : 1, 1335 | "bgcolor" : [ 1.0, 1.0, 1.0, 0.0 ], 1336 | "border" : 1, 1337 | "bordercolor" : [ 0.0, 0.0, 0.0, 1.0 ], 1338 | "id" : "obj-87", 1339 | "maxclass" : "panel", 1340 | "mode" : 0, 1341 | "numinlets" : 1, 1342 | "numoutlets" : 0, 1343 | "patching_rect" : [ 8.0, 231.0, 200.0, 90.0 ], 1344 | "rounded" : 4 1345 | } 1346 | 1347 | } 1348 | , { 1349 | "box" : { 1350 | "angle" : 0.0, 1351 | "background" : 1, 1352 | "bgcolor" : [ 1.0, 1.0, 1.0, 0.0 ], 1353 | "border" : 1, 1354 | "bordercolor" : [ 0.0, 0.0, 0.0, 1.0 ], 1355 | "id" : "obj-88", 1356 | "maxclass" : "panel", 1357 | "mode" : 0, 1358 | "numinlets" : 1, 1359 | "numoutlets" : 0, 1360 | "patching_rect" : [ 8.0, 133.0, 200.0, 90.0 ], 1361 | "rounded" : 4 1362 | } 1363 | 1364 | } 1365 | , { 1366 | "box" : { 1367 | "angle" : 0.0, 1368 | "background" : 1, 1369 | "bgcolor" : [ 1.0, 1.0, 1.0, 0.0 ], 1370 | "border" : 1, 1371 | "bordercolor" : [ 0.0, 0.0, 0.0, 1.0 ], 1372 | "id" : "obj-89", 1373 | "maxclass" : "panel", 1374 | "mode" : 0, 1375 | "numinlets" : 1, 1376 | "numoutlets" : 0, 1377 | "patching_rect" : [ 8.0, 35.0, 200.0, 90.0 ], 1378 | "rounded" : 4 1379 | } 1380 | 1381 | } 1382 | ], 1383 | "lines" : [ { 1384 | "patchline" : { 1385 | "destination" : [ "obj-14", 1 ], 1386 | "order" : 0, 1387 | "source" : [ "obj-17", 2 ] 1388 | } 1389 | 1390 | } 1391 | , { 1392 | "patchline" : { 1393 | "destination" : [ "obj-15", 1 ], 1394 | "order" : 1, 1395 | "source" : [ "obj-17", 2 ] 1396 | } 1397 | 1398 | } 1399 | , { 1400 | "patchline" : { 1401 | "destination" : [ "obj-16", 1 ], 1402 | "order" : 2, 1403 | "source" : [ "obj-17", 2 ] 1404 | } 1405 | 1406 | } 1407 | , { 1408 | "patchline" : { 1409 | "destination" : [ "obj-27", 0 ], 1410 | "source" : [ "obj-28", 0 ] 1411 | } 1412 | 1413 | } 1414 | , { 1415 | "patchline" : { 1416 | "destination" : [ "obj-28", 0 ], 1417 | "source" : [ "obj-29", 0 ] 1418 | } 1419 | 1420 | } 1421 | , { 1422 | "patchline" : { 1423 | "destination" : [ "obj-43", 0 ], 1424 | "source" : [ "obj-40", 0 ] 1425 | } 1426 | 1427 | } 1428 | , { 1429 | "patchline" : { 1430 | "destination" : [ "obj-43", 0 ], 1431 | "source" : [ "obj-41", 0 ] 1432 | } 1433 | 1434 | } 1435 | , { 1436 | "patchline" : { 1437 | "destination" : [ "obj-43", 0 ], 1438 | "source" : [ "obj-42", 0 ] 1439 | } 1440 | 1441 | } 1442 | , { 1443 | "patchline" : { 1444 | "destination" : [ "obj-54", 0 ], 1445 | "order" : 0, 1446 | "source" : [ "obj-57", 0 ] 1447 | } 1448 | 1449 | } 1450 | , { 1451 | "patchline" : { 1452 | "destination" : [ "obj-55", 0 ], 1453 | "order" : 1, 1454 | "source" : [ "obj-57", 0 ] 1455 | } 1456 | 1457 | } 1458 | , { 1459 | "patchline" : { 1460 | "destination" : [ "obj-56", 0 ], 1461 | "order" : 2, 1462 | "source" : [ "obj-57", 0 ] 1463 | } 1464 | 1465 | } 1466 | , { 1467 | "patchline" : { 1468 | "destination" : [ "obj-60", 0 ], 1469 | "source" : [ "obj-63", 0 ] 1470 | } 1471 | 1472 | } 1473 | , { 1474 | "patchline" : { 1475 | "destination" : [ "obj-61", 0 ], 1476 | "source" : [ "obj-64", 0 ] 1477 | } 1478 | 1479 | } 1480 | , { 1481 | "patchline" : { 1482 | "destination" : [ "obj-62", 0 ], 1483 | "source" : [ "obj-65", 0 ] 1484 | } 1485 | 1486 | } 1487 | , { 1488 | "patchline" : { 1489 | "destination" : [ "obj-69", 2 ], 1490 | "source" : [ "obj-70", 0 ] 1491 | } 1492 | 1493 | } 1494 | , { 1495 | "patchline" : { 1496 | "destination" : [ "obj-69", 1 ], 1497 | "source" : [ "obj-71", 0 ] 1498 | } 1499 | 1500 | } 1501 | , { 1502 | "patchline" : { 1503 | "destination" : [ "obj-69", 0 ], 1504 | "source" : [ "obj-72", 0 ] 1505 | } 1506 | 1507 | } 1508 | , { 1509 | "patchline" : { 1510 | "destination" : [ "obj-66", 0 ], 1511 | "source" : [ "obj-73", 2 ] 1512 | } 1513 | 1514 | } 1515 | , { 1516 | "patchline" : { 1517 | "destination" : [ "obj-67", 0 ], 1518 | "source" : [ "obj-73", 1 ] 1519 | } 1520 | 1521 | } 1522 | , { 1523 | "patchline" : { 1524 | "destination" : [ "obj-68", 0 ], 1525 | "source" : [ "obj-73", 0 ] 1526 | } 1527 | 1528 | } 1529 | , { 1530 | "patchline" : { 1531 | "destination" : [ "obj-76", 4 ], 1532 | "source" : [ "obj-75", 4 ] 1533 | } 1534 | 1535 | } 1536 | , { 1537 | "patchline" : { 1538 | "destination" : [ "obj-76", 3 ], 1539 | "source" : [ "obj-75", 3 ] 1540 | } 1541 | 1542 | } 1543 | , { 1544 | "patchline" : { 1545 | "destination" : [ "obj-76", 2 ], 1546 | "source" : [ "obj-75", 2 ] 1547 | } 1548 | 1549 | } 1550 | , { 1551 | "patchline" : { 1552 | "destination" : [ "obj-76", 1 ], 1553 | "source" : [ "obj-75", 1 ] 1554 | } 1555 | 1556 | } 1557 | , { 1558 | "patchline" : { 1559 | "destination" : [ "obj-76", 0 ], 1560 | "source" : [ "obj-75", 0 ] 1561 | } 1562 | 1563 | } 1564 | , { 1565 | "patchline" : { 1566 | "destination" : [ "obj-79", 0 ], 1567 | "source" : [ "obj-90", 0 ] 1568 | } 1569 | 1570 | } 1571 | , { 1572 | "patchline" : { 1573 | "destination" : [ "obj-90", 0 ], 1574 | "source" : [ "obj-95", 0 ] 1575 | } 1576 | 1577 | } 1578 | ] 1579 | } 1580 | 1581 | } 1582 | -------------------------------------------------------------------------------- /docs/Max ToolBox readme.rtf: -------------------------------------------------------------------------------- 1 | {\rtf1\ansi\ansicpg1252\cocoartf1038\cocoasubrtf110 2 | {\fonttbl\f0\fnil\fcharset0 Tahoma;} 3 | {\colortbl;\red255\green255\blue255;\red0\green0\blue255;\red191\green191\blue191;} 4 | {\*\listtable{\list\listtemplateid1\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat0\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid1\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid1} 5 | {\list\listtemplateid2\listhybrid{\listlevel\levelnfc23\levelnfcn23\leveljc0\leveljcn0\levelfollow0\levelstartat0\levelspace360\levelindent0{\*\levelmarker \{disc\}}{\leveltext\leveltemplateid101\'01\uc0\u8226 ;}{\levelnumbers;}\fi-360\li720\lin720 }{\listname ;}\listid2} 6 | {\list\listtemplateid3\listhybrid{\listlevel\levelnfc0\levelnfcn0\leveljc0\leveljcn0\levelfollow0\levelstartat1\levelspace360\levelindent0{\*\levelmarker \{decimal\}.}{\leveltext\leveltemplateid201\'02\'00.;}{\levelnumbers\'01;}\fi-360\li720\lin720 }{\listname ;}\listid3}} 7 | {\*\listoverridetable{\listoverride\listid1\listoverridecount0\ls1}{\listoverride\listid2\listoverridecount0\ls2}{\listoverride\listid3\listoverridecount0\ls3}} 8 | {\info 9 | {\title Max ToolBox readme - 17/06/2005} 10 | {\author Nathana\'ebl L\'e9caud\'e9} 11 | {\*\company Studio Imaginaire}}\vieww12240\viewh15840\viewkind1\viewscale80 12 | \deftab720 13 | \pard\pardeftab720\ri0 14 | 15 | \f0\b\fs24 \cf0 Max ToolBox manual - 27/10/2009\ 16 | \pard\pardeftab720\ri0 17 | 18 | \b0\fs20 \cf0 \ 19 | By Nathana\'ebl L\'e9caud\'e9\ 20 | \pard\pardeftab720\ri0 21 | {\field{\*\fldinst{HYPERLINK "mailto:maxtoolbox@studioimaginaire.com"}}{\fldrslt \cf2 \ul \ulc2 maxtoolbox@studioimaginaire.com}}\ 22 | \ 23 | The Max Toolbox was designed with the idea of automating and enhancing the process of patch editing within Max/MSP/Jitter. \ 24 | \ 25 | Here is a list of the features included in this package :\ 26 | \ 27 | \pard\pardeftab720\li360\fi-360\ri0 28 | \ls1\ilvl0\cf0 Distribute selected objects in space, horizontally or vertically ;\ 29 | Connect an outlet (selectable) of an object to the inlets (selectable) of a row of objects located below ;\ 30 | Connect the outlets (selectable) of a row of objects to the inlet (selectable) of an object located below ;\ 31 | Connect all (or less) of the outlets of an object to the inlets (selectable) of a row of objects located below ;\ 32 | Connect the outlets (selectable) of a row of objects to all (or less) of the inlets of a an object located below ;\ 33 | Connect the outlets (selectable) of a row of objects to the inlets (selectable) of a row of objects located below ;\ 34 | Connect a column of two or more objects in cascade ;\ 35 | Send any message(s) to the selected object(s) by invoking a dialog window using a keyboard shortcut ;\ 36 | Access most of the features of this ToolBox using the same dialog window ;\ 37 | Quickly name a row or column of objects ;\ 38 | Create objects at the cursor position using keyboard shortcuts (\'e0 la Pure Data) (objects shortcuts are customizable) ;\ 39 | Create objects at the cursor position using keyboard shortcuts and connect them to a previously selected object, either to the inlet or from the outlet depending on the mouse position.\ 40 | \pard\pardeftab720\ri0 41 | \cf0 \ 42 | \pard\pardeftab720\ri0 43 | 44 | \b \cf0 Installing the ToolBox\ 45 | \pard\pardeftab720\ri0 46 | 47 | \b0 \cf0 \ 48 | The ToolBox contains the following files :\ 49 | \ 50 | 51 | \itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrt\brdrs\brdrw10\brdrcf3 \trbrdrl\brdrs\brdrw10\brdrcf3 \trbrdrr\brdrs\brdrw10\brdrcf3 52 | \clvertalt \clshdrawnil \clwWidth2280\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx4320 53 | \clvertalt \clshdrawnil \clwWidth5880\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx8640 54 | \pard\intbl\itap1\pardeftab720\ri0 55 | 56 | \b \cf0 ToolBox.maxpat\cell 57 | \pard\intbl\itap1\pardeftab720\ri0 58 | 59 | \b0 \cf0 This file should be placed in your extras folder.\cell \row 60 | 61 | \itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrs\brdrw10\brdrcf3 \trbrdrr\brdrs\brdrw10\brdrcf3 62 | \clvertalt \clshdrawnil \clwWidth2280\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx4320 63 | \clvmgf \clvertalt \clshdrawnil \clwWidth5880\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx8640 64 | \pard\intbl\itap1\pardeftab720\ri0 65 | 66 | \b \cf0 maxtoolbox.maxpat\cell 67 | \pard\intbl\itap1\pardeftab720\ri0 68 | 69 | \b0 \cf0 These files should be placed in the same folder in your search path.\cell \row 70 | 71 | \itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrs\brdrw10\brdrcf3 \trbrdrr\brdrs\brdrw10\brdrcf3 72 | \clvertalt \clshdrawnil \clwWidth2280\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx4320 73 | \clvmrg \clvertalt \clshdrawnil \clwWidth5880\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx8640 74 | \pard\intbl\itap1\pardeftab720\ri0 75 | 76 | \b \cf0 toolboxhelp.maxpat\cell 77 | \pard\intbl\itap1\cell \row 78 | 79 | \itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrs\brdrw10\brdrcf3 \trbrdrr\brdrs\brdrw10\brdrcf3 80 | \clvertalt \clshdrawnil \clwWidth2280\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx4320 81 | \clvertalc \clshdrawnil \clwWidth5880\clftsWidth3 \clbrdrt\brdrs\brdrw20\brdrcf3 \clbrdrl\brdrs\brdrw20\brdrcf3 \clbrdrb\brdrs\brdrw20\brdrcf3 \clbrdrr\brdrs\brdrw20\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx8640 82 | \pard\intbl\itap1\pardeftab720\ri0 83 | \cf0 keyctrl.maxpat\cell 84 | \pard\intbl\itap1\pardeftab720\ri0 85 | 86 | \b0 \cf0 \cell \row 87 | 88 | \itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrs\brdrw10\brdrcf3 \trbrdrr\brdrs\brdrw10\brdrcf3 89 | \clvertalt \clshdrawnil \clwWidth2280\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx4320 90 | \clvertalc \clshdrawnil \clwWidth5880\clftsWidth3 \clbrdrt\brdrs\brdrw20\brdrcf3 \clbrdrl\brdrs\brdrw20\brdrcf3 \clbrdrb\brdrs\brdrw20\brdrcf3 \clbrdrr\brdrs\brdrw20\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx8640 91 | \pard\intbl\itap1\pardeftab720\ri0 92 | 93 | \b \cf0 maxtoolbox.js\cell 94 | \pard\intbl\itap1\pardeftab720\ri0 95 | 96 | \b0 \cf0 \cell \row 97 | 98 | \itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrs\brdrw10\brdrcf3 \trbrdrr\brdrs\brdrw10\brdrcf3 99 | \clvertalt \clshdrawnil \clwWidth2280\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx4320 100 | \clvertalc \clshdrawnil \clwWidth5880\clftsWidth3 \clbrdrt\brdrs\brdrw20\brdrcf3 \clbrdrl\brdrs\brdrw20\brdrcf3 \clbrdrb\brdrs\brdrw20\brdrcf3 \clbrdrr\brdrs\brdrw20\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx8640 101 | \pard\intbl\itap1\pardeftab720\ri0 102 | 103 | \b \cf0 toolbox_config.js\cell 104 | \pard\intbl\itap1\pardeftab720\ri0 105 | 106 | \b0 \cf0 \cell \row 107 | 108 | \itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrs\brdrw10\brdrcf3 \trbrdrr\brdrs\brdrw10\brdrcf3 109 | \clvertalt \clshdrawnil \clwWidth2280\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx4320 110 | \clvertalc \clshdrawnil \clwWidth5880\clftsWidth3 \clbrdrt\brdrs\brdrw20\brdrcf3 \clbrdrl\brdrs\brdrw20\brdrcf3 \clbrdrb\brdrs\brdrw20\brdrcf3 \clbrdrr\brdrs\brdrw20\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx8640 111 | \pard\intbl\itap1\pardeftab720\ri0 112 | 113 | \b \cf0 mtb_shortcuts.txt\cell 114 | \pard\intbl\itap1\pardeftab720\ri0 115 | 116 | \b0 \cf0 \cell \row 117 | 118 | \itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrs\brdrw10\brdrcf3 \trbrdrb\brdrs\brdrw10\brdrcf3 \trbrdrr\brdrs\brdrw10\brdrcf3 119 | \clvertalt \clshdrawnil \clwWidth2280\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx4320 120 | \clvertalc \clshdrawnil \clwWidth5880\clftsWidth3 \clbrdrt\brdrs\brdrw20\brdrcf3 \clbrdrl\brdrs\brdrw20\brdrcf3 \clbrdrb\brdrs\brdrw20\brdrcf3 \clbrdrr\brdrs\brdrw20\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx8640 121 | \pard\intbl\itap1\pardeftab720\ri0 122 | 123 | \b \cf0 mtb_objects.txt\cell 124 | \pard\intbl\itap1\pardeftab720\ri0 125 | 126 | \b0 \cf0 \cell \lastrow\row 127 | \pard\pardeftab720\ri0 128 | \cf0 \ 129 | You will need to take all the files except ToolBox.pat and put them in a directory that is listed in your search paths. It is strongly recommended to put the ToolBox.pat file in your Extras directory so you have a quick access to it. \ 130 | \ 131 | Once the files are placed where they should go, load Max/MSP and select the ToolBox item in the Extas menu. You should see a small window appear. To start the Max ToolBox, click the "Load" button. As long as this checkbox is checked, the ToolBox will start with Max. To unload the ToolBox (and prevent automatic startup), uncheck the checkbox.\ 132 | \ 133 | \pard\pardeftab720\ri0 134 | 135 | \b \cf0 First steps\ 136 | \pard\pardeftab720\ri0 137 | 138 | \b0 \cf0 \ 139 | There are usually two ways to access the functions of this ToolBox, either by pressing a key on the keyboard or by typing the name of the function in a dialog window. From now on, let's refer to this dialog window as the \'93shell\'94. \ 140 | \ 141 | The shell is the most powerful way to interact with the ToolBox and it is important to understand it well.\ 142 | \ 143 | \pard\pardeftab720\ri0 144 | 145 | \b \cf0 Accessing the shell\ 146 | \pard\pardeftab720\ri0 147 | 148 | \b0 \cf0 You can access the shell by pressing shift-r : this will open a small window where you can enter text and process it by hitting enter. Depending on the function you want to execute you might need to select objects prior to hitting shift-r.\ 149 | \ 150 | \pard\pardeftab720\ri0 151 | 152 | \b \cf0 What the shell can do\ 153 | \pard\pardeftab720\ri0 154 | 155 | \b0 \cf0 The shell is used to perform two different things :\ 156 | \pard\pardeftab720\li360\fi-360\ri0 157 | \ls2\ilvl0\cf0 Send messages to selected object(s) ;\ 158 | Execute the ToolBox's different functions.\ 159 | \pard\pardeftab720\ri0 160 | \cf0 \ 161 | \pard\pardeftab720\ri0 162 | 163 | \b \cf0 Sending messages to selected objects using the shell\ 164 | \pard\pardeftab720\ri0 165 | 166 | \b0 \cf0 Sending messages to selected objects is the same as creating a message box, writing a message in it, connecting it to some object(s) and clicking the message box. The only difference is that it\'92s much faster to do so using the shell. Here is how you would do it : \ 167 | \pard\tx720\pardeftab720\li720\fi-360\ri0 168 | \ls3\ilvl0\cf0 1. Select one or several objects in your patch ;\ 169 | 2. Hit the shell shortcut key (shift-r) ;\ 170 | 3. Type the message you want to send in the dialog box ;\ 171 | 4. Hit enter.\ 172 | \pard\pardeftab720\ri0 173 | \cf0 \ 174 | Note that you can also send separated messages the same way as in a message box using a comma. You could therefore select several number boxes and send them the following messages without the quotes : \'93min 40, max 50\'94. This would set all the selected number boxes to a minimum of 40 and a maximum of 50. You can also send simple messages such as \'93bang\'94 or set values of common GUI objects. \ 175 | \ 176 | \pard\pardeftab720\ri0 177 | 178 | \b \cf0 Executing ToolBox functions using the shell\ 179 | \pard\pardeftab720\ri0 180 | 181 | \b0 \cf0 While you can access most of the functions of this ToolBox using keyboard commands, (see reference) you can also use the shell to access those functions. Certain functions will require the use of the shell because they need to be provided some arguments. Functions are always called by preceding them with the \'93@\'94 symbol to differentiate them from normal messages you send to objects. When arguments are used, they are typed after the function\'92s name. Here is an example :\ 182 | \ 183 | To invoke the function that connects an outlet to the inlets of a row of objects you would first select the objects, hit shift-r, type \'93@sm\'94 and finally hit enter. The connection functions can also accept arguments to choose which inlet and outlet to connect. To connect outlet 3 of the top object to inlet 2 of the objects below, you would enter this in the shell instead : \'93@sm o 3 i 2\'94.\ 184 | \ 185 | \pard\pardeftab720\ri0 186 | 187 | \b \cf0 Functions that are not accessed by the shell\ 188 | \pard\pardeftab720\ri0 189 | 190 | \b0 \cf0 Most of the ToolBox\'92s functions can be accessed by the shell with the exception of the \'93Distribute\'94 functions. These functions will be explained here while the shell functions will be explained in the reference at this end of this document.\ 191 | \ 192 | \pard\pardeftab720\ri0 193 | 194 | \b \cf0 The \'93Distribute\'94 function :\ 195 | \pard\pardeftab720\ri0 196 | 197 | \b0 \cf0 The distribute function can currently only be accessed using keyboard shortcuts. This function includes vertical and horizontal distribution. To distribute a row of objects, select the row and press \'93X\'94 on the keyboard. To distribute a column, press \'93Y\'94. The row or column doesn\'92t need to be perfectly aligned to perform the distribution. You can also dynamically distribute the objects by keeping your finger on the shortcut key. After about half a second, moving the mouse horizontally for the horizontal distribution and vertically for the vertical distribution will space the objects in relation with the cursor position. Notice that the title bar of the window shows the amount of pixels between each object. You can use both \'93X\'94 and \'93Y\'94 shortcuts at the same time to form nice diagonals.\ 198 | \ 199 | Notes : The distribution functions will work best with objects of the same size. Diagonal distribution (by pressing and holding both shortcut keys) works best if the objects are already grossly aligned in a diagonal manner. \ 200 | \ 201 | \pard\pardeftab720\ri0 202 | 203 | \b \cf0 Choosing inlets and outlets for the connection functions\ 204 | \pard\pardeftab720\ri0 205 | 206 | \b0 \cf0 \ 207 | There are 2 ways of choosing inlets and outlets when connecting objects. If you are using the keyboard shortcut to execute the function, you can type a sequence of keystrokes to choose which inlet and/or outlet to connect.\ 208 | \ 209 | Let\'92s say you want to connect outlet 2 to inlet 3, you would type the following sequentially :\ 210 | \ 211 | \'93shift-o 2 shift-i 3\'94 and then the keyboard shortcut of the connection you want to make. You could also type only \'93shift-o 2\'94 before connecting if the first inlet is the destination (the default is always 1).\ 212 | \ 213 | Note that this works almost the same as when using arguments, the order of the arguments provided to the shell is not important, you can type something like this : \'93@sm o 2 i 3\'94 or \'93@sm i 3 o 2\'94 which would give the same result. You can also type only what is needed, if you want to connect outlet 2 to inlet 1, you can simply type \'93@sm o 2\'94.\ 214 | \ 215 | For the connect cascade (shift-c) function, you can specify a number of connections to make by pressing shift-n with a number.\ 216 | \ 217 | \ 218 | \ 219 | \pard\pardeftab720\ri0 220 | 221 | \b\fs24 \cf0 \ 222 | \ 223 | \ 224 | \ 225 | \ 226 | \ 227 | \ 228 | \ 229 | \ 230 | \ 231 | \ 232 | \ 233 | \ 234 | \ 235 | \ 236 | \ 237 | Reference\ 238 | \pard\pardeftab720\ri0 239 | 240 | \b0\fs20 \cf0 \ 241 | 242 | \itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrt\brdrs\brdrw10\brdrcf3 \trbrdrl\brdrs\brdrw10\brdrcf3 \trbrdrr\brdrs\brdrw10\brdrcf3 243 | \clvertalt \clshdrawnil \clwWidth8780\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx4320 244 | \clmrg \clvertalt \clshdrawnil \clwWidth8780\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx8640 245 | \pard\intbl\itap1\pardeftab720\ri0 246 | 247 | \b \cf0 Connect single to multiple\cell 248 | \pard\intbl\itap1\cell \row 249 | 250 | \itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrs\brdrw10\brdrcf3 \trbrdrr\brdrs\brdrw10\brdrcf3 251 | \clvertalt \clshdrawnil \clwWidth1668\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx4320 252 | \clvertalt \clshdrawnil \clwWidth7112\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx8640 253 | \pard\intbl\itap1\pardeftab720\ri0 254 | 255 | \b0 \cf0 Shortcut key\cell 256 | \pard\intbl\itap1\pardeftab720\ri0 257 | \cf0 q\cell \row 258 | 259 | \itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrs\brdrw10\brdrcf3 \trbrdrr\brdrs\brdrw10\brdrcf3 260 | \clvertalt \clshdrawnil \clwWidth1668\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx4320 261 | \clvertalt \clshdrawnil \clwWidth7112\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx8640 262 | \pard\intbl\itap1\pardeftab720\ri0 263 | \cf0 Shell command\cell 264 | \pard\intbl\itap1\pardeftab720\ri0 265 | \cf0 @sm\cell \row 266 | 267 | \itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrs\brdrw10\brdrcf3 \trbrdrr\brdrs\brdrw10\brdrcf3 268 | \clvertalt \clshdrawnil \clwWidth1668\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx4320 269 | \clvertalt \clshdrawnil \clwWidth7112\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx8640 270 | \pard\intbl\itap1\pardeftab720\ri0 271 | \cf0 Arguments\cell 272 | \pard\intbl\itap1\pardeftab720\ri0 273 | \cf0 o n i n (where n is the inlet or outlet number to connect, optional)\cell \row 274 | 275 | \itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrs\brdrw10\brdrcf3 \trbrdrr\brdrs\brdrw10\brdrcf3 276 | \clvertalt \clshdrawnil \clwWidth8780\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx4320 277 | \clmrg \clvertalt \clshdrawnil \clwWidth8780\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx8640 278 | \pard\intbl\itap1\pardeftab720\ri0 279 | 280 | \b \cf0 Description\cell 281 | \pard\intbl\itap1\cell \row 282 | 283 | \itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrs\brdrw10\brdrcf3 \trbrdrb\brdrs\brdrw10\brdrcf3 \trbrdrr\brdrs\brdrw10\brdrcf3 284 | \clvertalt \clshdrawnil \clwWidth8780\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx4320 285 | \clmrg \clvertalt \clshdrawnil \clwWidth8780\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx8640 286 | \pard\intbl\itap1\pardeftab720\ri0 287 | 288 | \b0 \cf0 This will connect an outlet of an object to the inlets of a row of objects located below. You can choose which outlet or inlets to connect by typing a key sequence before hitting Q (see explanation at the end of this document). \cell 289 | \pard\intbl\itap1\cell \lastrow\row 290 | \pard\pardeftab720\ri0 291 | \cf0 \ 292 | 293 | \itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrt\brdrs\brdrw10\brdrcf3 \trbrdrl\brdrs\brdrw10\brdrcf3 \trbrdrr\brdrs\brdrw10\brdrcf3 294 | \clvertalt \clshdrawnil \clwWidth8780\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx4320 295 | \clmrg \clvertalt \clshdrawnil \clwWidth8780\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx8640 296 | \pard\intbl\itap1\pardeftab720\ri0 297 | 298 | \b \cf0 Connect multiple to single\cell 299 | \pard\intbl\itap1\cell \row 300 | 301 | \itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrs\brdrw10\brdrcf3 \trbrdrr\brdrs\brdrw10\brdrcf3 302 | \clvertalt \clshdrawnil \clwWidth1668\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx4320 303 | \clvertalt \clshdrawnil \clwWidth7112\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx8640 304 | \pard\intbl\itap1\pardeftab720\ri0 305 | 306 | \b0 \cf0 Shortcut key\cell 307 | \pard\intbl\itap1\pardeftab720\ri0 308 | \cf0 a\cell \row 309 | 310 | \itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrs\brdrw10\brdrcf3 \trbrdrr\brdrs\brdrw10\brdrcf3 311 | \clvertalt \clshdrawnil \clwWidth1668\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx4320 312 | \clvertalt \clshdrawnil \clwWidth7112\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx8640 313 | \pard\intbl\itap1\pardeftab720\ri0 314 | \cf0 Shell command\cell 315 | \pard\intbl\itap1\pardeftab720\ri0 316 | \cf0 @ms\cell \row 317 | 318 | \itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrs\brdrw10\brdrcf3 \trbrdrr\brdrs\brdrw10\brdrcf3 319 | \clvertalt \clshdrawnil \clwWidth1668\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx4320 320 | \clvertalt \clshdrawnil \clwWidth7112\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx8640 321 | \pard\intbl\itap1\pardeftab720\ri0 322 | \cf0 Arguments\cell 323 | \pard\intbl\itap1\pardeftab720\ri0 324 | \cf0 o n i n (where n is the inlet or outlet number to connect, optional)\cell \row 325 | 326 | \itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrs\brdrw10\brdrcf3 \trbrdrr\brdrs\brdrw10\brdrcf3 327 | \clvertalt \clshdrawnil \clwWidth8780\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx4320 328 | \clmrg \clvertalt \clshdrawnil \clwWidth8780\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx8640 329 | \pard\intbl\itap1\pardeftab720\ri0 330 | 331 | \b \cf0 Description\cell 332 | \pard\intbl\itap1\cell \row 333 | 334 | \itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrs\brdrw10\brdrcf3 \trbrdrb\brdrs\brdrw10\brdrcf3 \trbrdrr\brdrs\brdrw10\brdrcf3 335 | \clvertalt \clshdrawnil \clwWidth8780\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx4320 336 | \clmrg \clvertalt \clshdrawnil \clwWidth8780\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx8640 337 | \pard\intbl\itap1\pardeftab720\ri0 338 | 339 | \b0 \cf0 This will connect the outlets of a row of objects to the inlet of an object located below. You can choose which outlet or inlets to connect by typing a key sequence before hitting A (see explanation at the end of this document). \cell 340 | \pard\intbl\itap1\cell \lastrow\row 341 | \pard\pardeftab720\ri0 342 | \cf0 \ 343 | 344 | \itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrt\brdrs\brdrw10\brdrcf3 \trbrdrl\brdrs\brdrw10\brdrcf3 \trbrdrr\brdrs\brdrw10\brdrcf3 345 | \clvertalt \clshdrawnil \clwWidth8780\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx4320 346 | \clmrg \clvertalt \clshdrawnil \clwWidth8780\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx8640 347 | \pard\intbl\itap1\pardeftab720\ri0 348 | 349 | \b \cf0 Connect cascade\cell 350 | \pard\intbl\itap1\cell \row 351 | 352 | \itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrs\brdrw10\brdrcf3 \trbrdrr\brdrs\brdrw10\brdrcf3 353 | \clvertalt \clshdrawnil \clwWidth1668\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx4320 354 | \clvertalt \clshdrawnil \clwWidth7112\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx8640 355 | \pard\intbl\itap1\pardeftab720\ri0 356 | 357 | \b0 \cf0 Shortcut key\cell 358 | \pard\intbl\itap1\pardeftab720\ri0 359 | \cf0 shift-c\cell \row 360 | 361 | \itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrs\brdrw10\brdrcf3 \trbrdrr\brdrs\brdrw10\brdrcf3 362 | \clvertalt \clshdrawnil \clwWidth1668\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx4320 363 | \clvertalt \clshdrawnil \clwWidth7112\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx8640 364 | \pard\intbl\itap1\pardeftab720\ri0 365 | \cf0 Shell command\cell 366 | \pard\intbl\itap1\pardeftab720\ri0 367 | \cf0 @cc\cell \row 368 | 369 | \itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrs\brdrw10\brdrcf3 \trbrdrr\brdrs\brdrw10\brdrcf3 370 | \clvertalt \clshdrawnil \clwWidth1668\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx4320 371 | \clvertalt \clshdrawnil \clwWidth7112\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx8640 372 | \pard\intbl\itap1\pardeftab720\ri0 373 | \cf0 Arguments\cell 374 | \pard\intbl\itap1\pardeftab720\ri0 375 | \cf0 o n i n (where n is the inlet or outlet number to connect, optional)\cell \row 376 | 377 | \itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrs\brdrw10\brdrcf3 \trbrdrr\brdrs\brdrw10\brdrcf3 378 | \clvertalt \clshdrawnil \clwWidth8780\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx4320 379 | \clmrg \clvertalt \clshdrawnil \clwWidth8780\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx8640 380 | \pard\intbl\itap1\pardeftab720\ri0 381 | 382 | \b \cf0 Description\cell 383 | \pard\intbl\itap1\cell \row 384 | 385 | \itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrs\brdrw10\brdrcf3 \trbrdrb\brdrs\brdrw10\brdrcf3 \trbrdrr\brdrs\brdrw10\brdrcf3 386 | \clvertalt \clshdrawnil \clwWidth8780\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx4320 387 | \clmrg \clvertalt \clshdrawnil \clwWidth8780\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx8640 388 | \pard\intbl\itap1\pardeftab720\ri0 389 | 390 | \b0 \cf0 This will connect a column of objects in cascade. You can choose which outlet or inlets to connect by typing a key sequence before hitting C (see explanation at the end of this document). \cell 391 | \pard\intbl\itap1\cell \lastrow\row 392 | \pard\pardeftab720\ri0 393 | \cf0 \ 394 | 395 | \itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrt\brdrs\brdrw10\brdrcf3 \trbrdrl\brdrs\brdrw10\brdrcf3 \trbrdrr\brdrs\brdrw10\brdrcf3 396 | \clvertalt \clshdrawnil \clwWidth8780\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx4320 397 | \clmrg \clvertalt \clshdrawnil \clwWidth8780\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx8640 398 | \pard\intbl\itap1\pardeftab720\ri0 399 | 400 | \b \cf0 Connect single to row\cell 401 | \pard\intbl\itap1\cell \row 402 | 403 | \itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrs\brdrw10\brdrcf3 \trbrdrr\brdrs\brdrw10\brdrcf3 404 | \clvertalt \clshdrawnil \clwWidth1668\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx4320 405 | \clvertalt \clshdrawnil \clwWidth7112\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx8640 406 | \pard\intbl\itap1\pardeftab720\ri0 407 | 408 | \b0 \cf0 Shortcut key\cell 409 | \pard\intbl\itap1\pardeftab720\ri0 410 | \cf0 w\cell \row 411 | 412 | \itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrs\brdrw10\brdrcf3 \trbrdrr\brdrs\brdrw10\brdrcf3 413 | \clvertalt \clshdrawnil \clwWidth1668\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx4320 414 | \clvertalt \clshdrawnil \clwWidth7112\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx8640 415 | \pard\intbl\itap1\pardeftab720\ri0 416 | \cf0 Shell command\cell 417 | \pard\intbl\itap1\pardeftab720\ri0 418 | \cf0 @sr\cell \row 419 | 420 | \itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrs\brdrw10\brdrcf3 \trbrdrr\brdrs\brdrw10\brdrcf3 421 | \clvertalt \clshdrawnil \clwWidth1668\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx4320 422 | \clvertalt \clshdrawnil \clwWidth7112\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx8640 423 | \pard\intbl\itap1\pardeftab720\ri0 424 | \cf0 Arguments\cell 425 | \pard\intbl\itap1\pardeftab720\ri0 426 | \cf0 o n i n (where n is the inlet or outlet number to connect, optional)\cell \row 427 | 428 | \itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrs\brdrw10\brdrcf3 \trbrdrr\brdrs\brdrw10\brdrcf3 429 | \clvertalt \clshdrawnil \clwWidth8780\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx4320 430 | \clmrg \clvertalt \clshdrawnil \clwWidth8780\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx8640 431 | \pard\intbl\itap1\pardeftab720\ri0 432 | 433 | \b \cf0 Description\cell 434 | \pard\intbl\itap1\cell \row 435 | 436 | \itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrs\brdrw10\brdrcf3 \trbrdrb\brdrs\brdrw10\brdrcf3 \trbrdrr\brdrs\brdrw10\brdrcf3 437 | \clvertalt \clshdrawnil \clwWidth8780\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx4320 438 | \clmrg \clvertalt \clshdrawnil \clwWidth8780\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx8640 439 | \pard\intbl\itap1\pardeftab720\ri0 440 | 441 | \b0 \cf0 This will connect the outlets of an object to the inlets of a row of objects located below. You can choose which outlet or inlets to connect by typing a key sequence before hitting S (see explanation at the end of this document). \cell 442 | \pard\intbl\itap1\cell \lastrow\row 443 | \pard\pardeftab720\ri0 444 | \cf0 \ 445 | 446 | \itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrt\brdrs\brdrw10\brdrcf3 \trbrdrl\brdrs\brdrw10\brdrcf3 \trbrdrr\brdrs\brdrw10\brdrcf3 447 | \clvertalt \clshdrawnil \clwWidth8780\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx4320 448 | \clmrg \clvertalt \clshdrawnil \clwWidth8780\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx8640 449 | \pard\intbl\itap1\pardeftab720\ri0 450 | 451 | \b \cf0 Connect row to single\cell 452 | \pard\intbl\itap1\cell \row 453 | 454 | \itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrs\brdrw10\brdrcf3 \trbrdrr\brdrs\brdrw10\brdrcf3 455 | \clvertalt \clshdrawnil \clwWidth1668\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx4320 456 | \clvertalt \clshdrawnil \clwWidth7112\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx8640 457 | \pard\intbl\itap1\pardeftab720\ri0 458 | 459 | \b0 \cf0 Shortcut key\cell 460 | \pard\intbl\itap1\pardeftab720\ri0 461 | \cf0 S\cell \row 462 | 463 | \itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrs\brdrw10\brdrcf3 \trbrdrr\brdrs\brdrw10\brdrcf3 464 | \clvertalt \clshdrawnil \clwWidth1668\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx4320 465 | \clvertalt \clshdrawnil \clwWidth7112\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx8640 466 | \pard\intbl\itap1\pardeftab720\ri0 467 | \cf0 Shell command\cell 468 | \pard\intbl\itap1\pardeftab720\ri0 469 | \cf0 @rs\cell \row 470 | 471 | \itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrs\brdrw10\brdrcf3 \trbrdrr\brdrs\brdrw10\brdrcf3 472 | \clvertalt \clshdrawnil \clwWidth1668\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx4320 473 | \clvertalt \clshdrawnil \clwWidth7112\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx8640 474 | \pard\intbl\itap1\pardeftab720\ri0 475 | \cf0 Arguments\cell 476 | \pard\intbl\itap1\pardeftab720\ri0 477 | \cf0 o n i n (where n is the inlet or outlet number to connect, optional)\cell \row 478 | 479 | \itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrs\brdrw10\brdrcf3 \trbrdrr\brdrs\brdrw10\brdrcf3 480 | \clvertalt \clshdrawnil \clwWidth8780\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx4320 481 | \clmrg \clvertalt \clshdrawnil \clwWidth8780\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx8640 482 | \pard\intbl\itap1\pardeftab720\ri0 483 | 484 | \b \cf0 Description\cell 485 | \pard\intbl\itap1\cell \row 486 | 487 | \itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrs\brdrw10\brdrcf3 \trbrdrb\brdrs\brdrw10\brdrcf3 \trbrdrr\brdrs\brdrw10\brdrcf3 488 | \clvertalt \clshdrawnil \clwWidth8780\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx4320 489 | \clmrg \clvertalt \clshdrawnil \clwWidth8780\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx8640 490 | \pard\intbl\itap1\pardeftab720\ri0 491 | 492 | \b0 \cf0 This will connect the outlets of a row of objects to the inlets of an object located below. You can choose which outlet or inlets to connect by typing a key sequence before hitting W (see explanation at the end of this document). \cell 493 | \pard\intbl\itap1\cell \lastrow\row 494 | \pard\pardeftab720\ri0 495 | \cf0 \ 496 | \ 497 | \ 498 | \ 499 | 500 | \itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrt\brdrs\brdrw10\brdrcf3 \trbrdrl\brdrs\brdrw10\brdrcf3 \trbrdrr\brdrs\brdrw10\brdrcf3 501 | \clvertalt \clshdrawnil \clwWidth8780\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx4320 502 | \clmrg \clvertalt \clshdrawnil \clwWidth8780\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx8640 503 | \pard\intbl\itap1\pardeftab720\ri0 504 | 505 | \b \cf0 Connect row to row\cell 506 | \pard\intbl\itap1\cell \row 507 | 508 | \itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrs\brdrw10\brdrcf3 \trbrdrr\brdrs\brdrw10\brdrcf3 509 | \clvertalt \clshdrawnil \clwWidth1668\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx4320 510 | \clvertalt \clshdrawnil \clwWidth7112\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx8640 511 | \pard\intbl\itap1\pardeftab720\ri0 512 | 513 | \b0 \cf0 Shortcut key\cell 514 | \pard\intbl\itap1\pardeftab720\ri0 515 | \cf0 e\cell \row 516 | 517 | \itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrs\brdrw10\brdrcf3 \trbrdrr\brdrs\brdrw10\brdrcf3 518 | \clvertalt \clshdrawnil \clwWidth1668\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx4320 519 | \clvertalt \clshdrawnil \clwWidth7112\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx8640 520 | \pard\intbl\itap1\pardeftab720\ri0 521 | \cf0 Shell command\cell 522 | \pard\intbl\itap1\pardeftab720\ri0 523 | \cf0 @rr\cell \row 524 | 525 | \itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrs\brdrw10\brdrcf3 \trbrdrr\brdrs\brdrw10\brdrcf3 526 | \clvertalt \clshdrawnil \clwWidth1668\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx4320 527 | \clvertalt \clshdrawnil \clwWidth7112\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx8640 528 | \pard\intbl\itap1\pardeftab720\ri0 529 | \cf0 Arguments\cell 530 | \pard\intbl\itap1\pardeftab720\ri0 531 | \cf0 o n i n (where n is the inlet or outlet number to connect, optional)\cell \row 532 | 533 | \itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrs\brdrw10\brdrcf3 \trbrdrr\brdrs\brdrw10\brdrcf3 534 | \clvertalt \clshdrawnil \clwWidth8780\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx4320 535 | \clmrg \clvertalt \clshdrawnil \clwWidth8780\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx8640 536 | \pard\intbl\itap1\pardeftab720\ri0 537 | 538 | \b \cf0 Description\cell 539 | \pard\intbl\itap1\cell \row 540 | 541 | \itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrs\brdrw10\brdrcf3 \trbrdrb\brdrs\brdrw10\brdrcf3 \trbrdrr\brdrs\brdrw10\brdrcf3 542 | \clvertalt \clshdrawnil \clwWidth8780\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx4320 543 | \clmrg \clvertalt \clshdrawnil \clwWidth8780\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx8640 544 | \pard\intbl\itap1\pardeftab720\ri0 545 | 546 | \b0 \cf0 This will connect the outlets of a row of objects to the inlets of a row of objects located below. You can choose which outlet or inlets to connect by typing a key sequence before hitting E (see explanation at the end of this document). \cell 547 | \pard\intbl\itap1\cell \lastrow\row 548 | \pard\pardeftab720\ri0 549 | \cf0 \ 550 | 551 | \itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrt\brdrs\brdrw10\brdrcf3 \trbrdrl\brdrs\brdrw10\brdrcf3 \trbrdrr\brdrs\brdrw10\brdrcf3 552 | \clvertalt \clshdrawnil \clwWidth8780\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx4320 553 | \clmrg \clvertalt \clshdrawnil \clwWidth8780\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx8640 554 | \pard\intbl\itap1\pardeftab720\ri0 555 | 556 | \b \cf0 Name a row or column of objects\cell 557 | \pard\intbl\itap1\cell \row 558 | 559 | \itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrs\brdrw10\brdrcf3 \trbrdrr\brdrs\brdrw10\brdrcf3 560 | \clvertalt \clshdrawnil \clwWidth1668\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx4320 561 | \clvertalt \clshdrawnil \clwWidth7112\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx8640 562 | \pard\intbl\itap1\pardeftab720\ri0 563 | 564 | \b0 \cf0 Shortcut key\cell 565 | \pard\intbl\itap1\pardeftab720\ri0 566 | \cf0 None\cell \row 567 | 568 | \itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrs\brdrw10\brdrcf3 \trbrdrr\brdrs\brdrw10\brdrcf3 569 | \clvertalt \clshdrawnil \clwWidth1668\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx4320 570 | \clvertalt \clshdrawnil \clwWidth7112\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx8640 571 | \pard\intbl\itap1\pardeftab720\ri0 572 | \cf0 Shell command\cell 573 | \pard\intbl\itap1\pardeftab720\ri0 574 | \cf0 @name\cell \row 575 | 576 | \itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrs\brdrw10\brdrcf3 \trbrdrr\brdrs\brdrw10\brdrcf3 577 | \clvertalt \clshdrawnil \clwWidth1668\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx4320 578 | \clvertalt \clshdrawnil \clwWidth7112\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx8640 579 | \pard\intbl\itap1\pardeftab720\ri0 580 | \cf0 Arguments\cell 581 | \pard\intbl\itap1\pardeftab720\ri0 582 | \cf0 -v (when naming a column)\cell \row 583 | 584 | \itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrs\brdrw10\brdrcf3 \trbrdrr\brdrs\brdrw10\brdrcf3 585 | \clvertalt \clshdrawnil \clwWidth8780\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx4320 586 | \clmrg \clvertalt \clshdrawnil \clwWidth8780\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx8640 587 | \pard\intbl\itap1\pardeftab720\ri0 588 | 589 | \b \cf0 Description\cell 590 | \pard\intbl\itap1\cell \row 591 | 592 | \itap1\trowd \taflags1 \trgaph108\trleft-108 \trbrdrl\brdrs\brdrw10\brdrcf3 \trbrdrb\brdrs\brdrw10\brdrcf3 \trbrdrr\brdrs\brdrw10\brdrcf3 593 | \clvertalt \clshdrawnil \clwWidth8780\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx4320 594 | \clmrg \clvertalt \clshdrawnil \clwWidth8780\clftsWidth3 \clbrdrt\brdrs\brdrw10\brdrcf3 \clbrdrl\brdrs\brdrw10\brdrcf3 \clbrdrb\brdrs\brdrw10\brdrcf3 \clbrdrr\brdrs\brdrw10\brdrcf3 \clpadl100 \clpadr100 \gaph\cellx8640 595 | \pard\intbl\itap1\pardeftab720\ri0 596 | 597 | \b0 \cf0 This will name a row or column of objects. To use, select the row or column and press cmd/ctrl-r to open the shell, type \'93@name nameofobject1 nameofobject2 nameofobject 3 \'85\'94 When naming a column you need to use this syntax instead : \'93@name \'96v nameofobject1 nameofobject2 nameofobject 3 \'85\'94.\cell 598 | \pard\intbl\itap1\cell \lastrow\row 599 | \pard\pardeftab720\ri0 600 | \cf0 \ 601 | \pard\pardeftab720\ri0 602 | 603 | \b \cf0 \ 604 | \pard\pardeftab720\ri0 605 | 606 | \b0 \cf0 \ 607 | \ 608 | } -------------------------------------------------------------------------------- /extras/ToolBox.maxpat: -------------------------------------------------------------------------------- 1 | { 2 | "patcher" : { 3 | "fileversion" : 1, 4 | "appversion" : { 5 | "major" : 8, 6 | "minor" : 6, 7 | "revision" : 3, 8 | "architecture" : "x64", 9 | "modernui" : 1 10 | } 11 | , 12 | "classnamespace" : "box", 13 | "openrect" : [ 749.0, 46.0, 197.0, 145.0 ], 14 | "bglocked" : 0, 15 | "openinpresentation" : 1, 16 | "default_fontsize" : 11.595186999999999, 17 | "default_fontface" : 0, 18 | "default_fontname" : "Arial", 19 | "gridonopen" : 1, 20 | "gridsize" : [ 15.0, 15.0 ], 21 | "gridsnaponopen" : 1, 22 | "objectsnaponopen" : 1, 23 | "statusbarvisible" : 2, 24 | "toolbarvisible" : 0, 25 | "lefttoolbarpinned" : 0, 26 | "toptoolbarpinned" : 0, 27 | "righttoolbarpinned" : 0, 28 | "bottomtoolbarpinned" : 0, 29 | "toolbars_unpinned_last_save" : 0, 30 | "tallnewobj" : 0, 31 | "boxanimatetime" : 200, 32 | "enablehscroll" : 1, 33 | "enablevscroll" : 1, 34 | "devicewidth" : 0.0, 35 | "description" : "", 36 | "digest" : "", 37 | "tags" : "", 38 | "style" : "", 39 | "subpatcher_template" : "", 40 | "assistshowspatchername" : 0, 41 | "title" : "ToolBox", 42 | "boxes" : [ { 43 | "box" : { 44 | "id" : "obj-55", 45 | "maxclass" : "newobj", 46 | "numinlets" : 1, 47 | "numoutlets" : 1, 48 | "outlettype" : [ "C74:" ], 49 | "patching_rect" : [ 449.0, 88.0, 39.0, 21.0 ], 50 | "text" : "t C74:" 51 | } 52 | 53 | } 54 | , { 55 | "box" : { 56 | "id" : "obj-54", 57 | "maxclass" : "newobj", 58 | "numinlets" : 3, 59 | "numoutlets" : 3, 60 | "outlettype" : [ "", "", "" ], 61 | "patching_rect" : [ 449.0, 58.0, 105.0, 21.0 ], 62 | "text" : "route loadend start" 63 | } 64 | 65 | } 66 | , { 67 | "box" : { 68 | "id" : "obj-50", 69 | "maxclass" : "comment", 70 | "numinlets" : 1, 71 | "numoutlets" : 0, 72 | "patching_rect" : [ 622.0, 444.0, 113.0, 19.0 ], 73 | "text" : "deprecated" 74 | } 75 | 76 | } 77 | , { 78 | "box" : { 79 | "fontname" : "Arial", 80 | "fontsize" : 12.0, 81 | "id" : "obj-43", 82 | "maxclass" : "newobj", 83 | "numinlets" : 1, 84 | "numoutlets" : 2, 85 | "outlettype" : [ "", "int" ], 86 | "patching_rect" : [ 449.0, 180.0, 128.0, 22.0 ], 87 | "text" : "conformpath max boot" 88 | } 89 | 90 | } 91 | , { 92 | "box" : { 93 | "id" : "obj-40", 94 | "maxclass" : "message", 95 | "numinlets" : 2, 96 | "numoutlets" : 1, 97 | "outlettype" : [ "" ], 98 | "patching_rect" : [ 375.0, 225.0, 62.0, 21.0 ], 99 | "text" : "script start" 100 | } 101 | 102 | } 103 | , { 104 | "box" : { 105 | "id" : "obj-29", 106 | "maxclass" : "newobj", 107 | "numinlets" : 1, 108 | "numoutlets" : 1, 109 | "outlettype" : [ "" ], 110 | "patching_rect" : [ 449.0, 225.0, 77.0, 21.0 ], 111 | "text" : "prepend path" 112 | } 113 | 114 | } 115 | , { 116 | "box" : { 117 | "id" : "obj-16", 118 | "linecount" : 2, 119 | "maxclass" : "newobj", 120 | "numinlets" : 1, 121 | "numoutlets" : 2, 122 | "outlettype" : [ "", "" ], 123 | "patching_rect" : [ 449.0, 285.0, 153.0, 34.0 ], 124 | "saved_object_attributes" : { 125 | "autostart" : 1, 126 | "defer" : 0, 127 | "node_bin_path" : "", 128 | "npm_bin_path" : "", 129 | "watch" : 1 130 | } 131 | , 132 | "text" : "node.script toolbox_node.js @autostart 1 @watch 1" 133 | } 134 | 135 | } 136 | , { 137 | "box" : { 138 | "bgcolor" : [ 0.098039209842682, 0.098039194941521, 0.098039209842682, 1.0 ], 139 | "checkedcolor" : [ 0.999999284744263, 0.999974429607391, 0.999991297721863, 1.0 ], 140 | "id" : "obj-42", 141 | "maxclass" : "toggle", 142 | "numinlets" : 1, 143 | "numoutlets" : 1, 144 | "outlettype" : [ "int" ], 145 | "parameter_enable" : 0, 146 | "patching_rect" : [ 140.0, 109.5, 24.0, 24.0 ], 147 | "presentation" : 1, 148 | "presentation_rect" : [ 73.0, 51.346152999999994, 24.0, 24.0 ], 149 | "varname" : "loadstartup" 150 | } 151 | 152 | } 153 | , { 154 | "box" : { 155 | "id" : "obj-17", 156 | "maxclass" : "message", 157 | "numinlets" : 2, 158 | "numoutlets" : 1, 159 | "outlettype" : [ "" ], 160 | "patching_rect" : [ 705.0, 360.0, 169.0, 21.0 ], 161 | "text" : "loadunique maxtoolbox.maxpat" 162 | } 163 | 164 | } 165 | , { 166 | "box" : { 167 | "fontname" : "Arial", 168 | "fontsize" : 11.595186999999999, 169 | "id" : "obj-38", 170 | "maxclass" : "newobj", 171 | "numinlets" : 1, 172 | "numoutlets" : 0, 173 | "patching_rect" : [ 622.0, 60.0, 79.0, 21.0 ], 174 | "text" : "s maxtoolbox" 175 | } 176 | 177 | } 178 | , { 179 | "box" : { 180 | "fontname" : "Arial", 181 | "fontsize" : 11.595186999999999, 182 | "id" : "obj-37", 183 | "maxclass" : "newobj", 184 | "numinlets" : 1, 185 | "numoutlets" : 1, 186 | "outlettype" : [ "" ], 187 | "patching_rect" : [ 622.0, 27.0, 98.0, 21.0 ], 188 | "text" : "loadmess loaded" 189 | } 190 | 191 | } 192 | , { 193 | "box" : { 194 | "fontname" : "Arial", 195 | "fontsize" : 11.595186999999999, 196 | "id" : "obj-36", 197 | "maxclass" : "newobj", 198 | "numinlets" : 1, 199 | "numoutlets" : 1, 200 | "outlettype" : [ "" ], 201 | "patching_rect" : [ 622.0, 120.0, 72.0, 21.0 ], 202 | "text" : "prepend set" 203 | } 204 | 205 | } 206 | , { 207 | "box" : { 208 | "fontname" : "Arial", 209 | "fontsize" : 11.595186999999999, 210 | "id" : "obj-28", 211 | "maxclass" : "newobj", 212 | "numinlets" : 0, 213 | "numoutlets" : 1, 214 | "outlettype" : [ "" ], 215 | "patching_rect" : [ 622.0, 89.0, 78.0, 21.0 ], 216 | "text" : "r mtb_loaded" 217 | } 218 | 219 | } 220 | , { 221 | "box" : { 222 | "fontface" : 0, 223 | "fontname" : "Arial", 224 | "fontsize" : 12.0, 225 | "id" : "obj-33", 226 | "maxclass" : "comment", 227 | "numinlets" : 1, 228 | "numoutlets" : 0, 229 | "patching_rect" : [ 35.5, 88.0, 97.0, 20.0 ], 230 | "presentation" : 1, 231 | "presentation_rect" : [ 12.0, 84.346153000000001, 59.0, 20.0 ], 232 | "text" : "Shortcuts", 233 | "textcolor" : [ 1.0, 1.0, 1.0, 1.0 ] 234 | } 235 | 236 | } 237 | , { 238 | "box" : { 239 | "fontname" : "Arial", 240 | "fontsize" : 12.0, 241 | "id" : "obj-35", 242 | "maxclass" : "newobj", 243 | "numinlets" : 1, 244 | "numoutlets" : 0, 245 | "patching_rect" : [ 664.5, 270.0, 76.0, 22.0 ], 246 | "text" : "s mtb_close" 247 | } 248 | 249 | } 250 | , { 251 | "box" : { 252 | "fontname" : "Arial", 253 | "fontsize" : 12.0, 254 | "id" : "obj-34", 255 | "maxclass" : "message", 256 | "numinlets" : 2, 257 | "numoutlets" : 1, 258 | "outlettype" : [ "" ], 259 | "patching_rect" : [ 622.0, 315.0, 156.0, 22.0 ], 260 | "text" : "shroud maxtoolbox.maxpat" 261 | } 262 | 263 | } 264 | , { 265 | "box" : { 266 | "fontname" : "Arial", 267 | "fontsize" : 12.0, 268 | "id" : "obj-13", 269 | "maxclass" : "newobj", 270 | "numinlets" : 1, 271 | "numoutlets" : 1, 272 | "outlettype" : [ "" ], 273 | "patching_rect" : [ 622.0, 360.0, 54.0, 22.0 ], 274 | "text" : "pcontrol" 275 | } 276 | 277 | } 278 | , { 279 | "box" : { 280 | "fontface" : 3, 281 | "fontname" : "Arial", 282 | "fontsize" : 22.0, 283 | "id" : "obj-31", 284 | "linecount" : 2, 285 | "maxclass" : "comment", 286 | "numinlets" : 1, 287 | "numoutlets" : 0, 288 | "patching_rect" : [ 38.0, 27.0, 136.0, 56.0 ], 289 | "presentation" : 1, 290 | "presentation_rect" : [ 10.0, 10.241379999999999, 164.0, 31.0 ], 291 | "text" : "Max ToolBox", 292 | "textcolor" : [ 1.0, 1.0, 1.0, 1.0 ] 293 | } 294 | 295 | } 296 | , { 297 | "box" : { 298 | "hidden" : 1, 299 | "id" : "obj-19", 300 | "maxclass" : "toggle", 301 | "numinlets" : 1, 302 | "numoutlets" : 1, 303 | "outlettype" : [ "int" ], 304 | "parameter_enable" : 0, 305 | "patching_rect" : [ 86.0, 229.0, 18.0, 18.0 ], 306 | "presentation" : 1, 307 | "presentation_rect" : [ 116.0, 57.5, 18.0, 18.0 ], 308 | "prototypename" : "Arial9" 309 | } 310 | 311 | } 312 | , { 313 | "box" : { 314 | "fontname" : "Arial Bold Italic", 315 | "fontsize" : 12.754706000000001, 316 | "hidden" : 1, 317 | "id" : "obj-20", 318 | "maxclass" : "comment", 319 | "numinlets" : 1, 320 | "numoutlets" : 0, 321 | "patching_rect" : [ 75.0, 204.0, 56.0, 21.0 ], 322 | "presentation" : 1, 323 | "presentation_rect" : [ 136.0, 56.0, 58.0, 21.0 ], 324 | "text" : "NoFloat", 325 | "textcolor" : [ 1.0, 0.501961, 0.0, 1.0 ] 326 | } 327 | 328 | } 329 | , { 330 | "box" : { 331 | "hidden" : 1, 332 | "id" : "obj-32", 333 | "maxclass" : "toggle", 334 | "numinlets" : 1, 335 | "numoutlets" : 1, 336 | "outlettype" : [ "int" ], 337 | "parameter_enable" : 0, 338 | "patching_rect" : [ 49.0, 229.0, 18.0, 18.0 ], 339 | "presentation" : 1, 340 | "presentation_rect" : [ 116.0, 34.5, 18.0, 18.0 ], 341 | "prototypename" : "Arial9" 342 | } 343 | 344 | } 345 | , { 346 | "box" : { 347 | "fontname" : "Arial Bold Italic", 348 | "fontsize" : 12.754706000000001, 349 | "hidden" : 1, 350 | "id" : "obj-71", 351 | "maxclass" : "comment", 352 | "numinlets" : 1, 353 | "numoutlets" : 0, 354 | "patching_rect" : [ 38.0, 204.0, 41.0, 21.0 ], 355 | "presentation" : 1, 356 | "presentation_rect" : [ 136.0, 33.0, 41.0, 21.0 ], 357 | "text" : "View", 358 | "textcolor" : [ 1.0, 0.501961, 0.0, 1.0 ] 359 | } 360 | 361 | } 362 | , { 363 | "box" : { 364 | "fontname" : "Arial", 365 | "fontsize" : 12.0, 366 | "id" : "obj-72", 367 | "maxclass" : "newobj", 368 | "numinlets" : 1, 369 | "numoutlets" : 2, 370 | "outlettype" : [ "", "" ], 371 | "patching_rect" : [ 49.0, 275.0, 70.0, 22.0 ], 372 | "save" : [ "#N", "thispatcher", ";", "#Q", "window", "flags", "nogrow", "close", "nozoom", "float", "menu", "minimize", ";", "#Q", "window", "constrain", 50, 50, 32768, 32768, ";", "#Q", "window", "size", 576, 70, 744, 220, ";", "#Q", "window", "title", ";", "#Q", "window", "exec", ";", "#Q", "savewindow", 1, ";", "#Q", "end", ";" ], 373 | "text" : "thispatcher" 374 | } 375 | 376 | } 377 | , { 378 | "box" : { 379 | "fontname" : "Arial", 380 | "fontsize" : 12.0, 381 | "id" : "obj-18", 382 | "maxclass" : "newobj", 383 | "numinlets" : 2, 384 | "numoutlets" : 1, 385 | "outlettype" : [ "" ], 386 | "patcher" : { 387 | "fileversion" : 1, 388 | "appversion" : { 389 | "major" : 8, 390 | "minor" : 6, 391 | "revision" : 3, 392 | "architecture" : "x64", 393 | "modernui" : 1 394 | } 395 | , 396 | "classnamespace" : "box", 397 | "rect" : [ 663.0, 294.0, 657.0, 488.0 ], 398 | "bglocked" : 0, 399 | "openinpresentation" : 0, 400 | "default_fontsize" : 9.0, 401 | "default_fontface" : 0, 402 | "default_fontname" : "Arial", 403 | "gridonopen" : 1, 404 | "gridsize" : [ 15.0, 15.0 ], 405 | "gridsnaponopen" : 1, 406 | "objectsnaponopen" : 1, 407 | "statusbarvisible" : 2, 408 | "toolbarvisible" : 1, 409 | "lefttoolbarpinned" : 0, 410 | "toptoolbarpinned" : 0, 411 | "righttoolbarpinned" : 0, 412 | "bottomtoolbarpinned" : 0, 413 | "toolbars_unpinned_last_save" : 0, 414 | "tallnewobj" : 0, 415 | "boxanimatetime" : 200, 416 | "enablehscroll" : 1, 417 | "enablevscroll" : 1, 418 | "devicewidth" : 0.0, 419 | "description" : "", 420 | "digest" : "", 421 | "tags" : "", 422 | "style" : "", 423 | "subpatcher_template" : "", 424 | "assistshowspatchername" : 0, 425 | "boxes" : [ { 426 | "box" : { 427 | "fontname" : "Arial", 428 | "fontsize" : 10.435669000000001, 429 | "id" : "obj-13", 430 | "maxclass" : "newobj", 431 | "numinlets" : 1, 432 | "numoutlets" : 1, 433 | "outlettype" : [ "" ], 434 | "patching_rect" : [ 466.0, 378.0, 19.0, 20.0 ], 435 | "text" : "t l" 436 | } 437 | 438 | } 439 | , { 440 | "box" : { 441 | "comment" : "", 442 | "id" : "obj-5", 443 | "index" : 2, 444 | "maxclass" : "inlet", 445 | "numinlets" : 0, 446 | "numoutlets" : 1, 447 | "outlettype" : [ "int" ], 448 | "patching_rect" : [ 466.0, 257.0, 18.0, 18.0 ], 449 | "prototypename" : "Arial9" 450 | } 451 | 452 | } 453 | , { 454 | "box" : { 455 | "id" : "obj-6", 456 | "maxclass" : "toggle", 457 | "numinlets" : 1, 458 | "numoutlets" : 1, 459 | "outlettype" : [ "int" ], 460 | "parameter_enable" : 0, 461 | "patching_rect" : [ 466.0, 279.0, 18.0, 18.0 ], 462 | "prototypename" : "Arial9" 463 | } 464 | 465 | } 466 | , { 467 | "box" : { 468 | "fontname" : "Arial", 469 | "fontsize" : 10.435669000000001, 470 | "id" : "obj-8", 471 | "maxclass" : "newobj", 472 | "numinlets" : 3, 473 | "numoutlets" : 3, 474 | "outlettype" : [ "bang", "bang", "" ], 475 | "patching_rect" : [ 466.0, 301.0, 46.0, 20.0 ], 476 | "text" : "sel 1 0" 477 | } 478 | 479 | } 480 | , { 481 | "box" : { 482 | "fontname" : "Arial", 483 | "fontsize" : 10.435669000000001, 484 | "id" : "obj-1", 485 | "maxclass" : "message", 486 | "numinlets" : 2, 487 | "numoutlets" : 1, 488 | "outlettype" : [ "" ], 489 | "patching_rect" : [ 362.0, 428.0, 76.0, 20.0 ], 490 | "text" : "savewindow 1" 491 | } 492 | 493 | } 494 | , { 495 | "box" : { 496 | "fontname" : "Arial", 497 | "fontsize" : 10.435669000000001, 498 | "id" : "obj-63", 499 | "maxclass" : "newobj", 500 | "numinlets" : 2, 501 | "numoutlets" : 1, 502 | "outlettype" : [ "" ], 503 | "patching_rect" : [ 43.0, 301.0, 32.5, 20.0 ], 504 | "text" : "qlim" 505 | } 506 | 507 | } 508 | , { 509 | "box" : { 510 | "fontname" : "Arial", 511 | "fontsize" : 10.435669000000001, 512 | "id" : "obj-62", 513 | "maxclass" : "newobj", 514 | "numinlets" : 2, 515 | "numoutlets" : 1, 516 | "outlettype" : [ "" ], 517 | "patching_rect" : [ 283.0, 301.0, 32.5, 20.0 ], 518 | "text" : "qlim" 519 | } 520 | 521 | } 522 | , { 523 | "box" : { 524 | "fontname" : "Arial", 525 | "fontsize" : 10.435669000000001, 526 | "id" : "obj-37", 527 | "maxclass" : "newobj", 528 | "numinlets" : 1, 529 | "numoutlets" : 1, 530 | "outlettype" : [ "" ], 531 | "patching_rect" : [ 43.0, 378.0, 19.0, 20.0 ], 532 | "text" : "t l" 533 | } 534 | 535 | } 536 | , { 537 | "box" : { 538 | "fontname" : "Arial", 539 | "fontsize" : 10.435669000000001, 540 | "id" : "obj-38", 541 | "maxclass" : "message", 542 | "numinlets" : 2, 543 | "numoutlets" : 1, 544 | "outlettype" : [ "" ], 545 | "patching_rect" : [ 466.0, 323.0, 170.0, 20.0 ], 546 | "text" : "window flags nofloat, window exec" 547 | } 548 | 549 | } 550 | , { 551 | "box" : { 552 | "fontname" : "Arial", 553 | "fontsize" : 10.435669000000001, 554 | "id" : "obj-39", 555 | "maxclass" : "message", 556 | "numinlets" : 2, 557 | "numoutlets" : 1, 558 | "outlettype" : [ "" ], 559 | "patching_rect" : [ 43.0, 323.0, 70.0, 20.0 ], 560 | "text" : "window exec" 561 | } 562 | 563 | } 564 | , { 565 | "box" : { 566 | "fontname" : "Arial", 567 | "fontsize" : 10.435669000000001, 568 | "id" : "obj-40", 569 | "maxclass" : "newobj", 570 | "numinlets" : 1, 571 | "numoutlets" : 3, 572 | "outlettype" : [ "bang", "", "bang" ], 573 | "patching_rect" : [ 43.0, 279.0, 46.0, 20.0 ], 574 | "text" : "t b l b" 575 | } 576 | 577 | } 578 | , { 579 | "box" : { 580 | "fontname" : "Arial", 581 | "fontsize" : 10.435669000000001, 582 | "id" : "obj-42", 583 | "linecount" : 2, 584 | "maxclass" : "message", 585 | "numinlets" : 2, 586 | "numoutlets" : 1, 587 | "outlettype" : [ "" ], 588 | "patching_rect" : [ 70.0, 343.0, 100.0, 32.0 ], 589 | "text" : "window flags grow, window flags zoom" 590 | } 591 | 592 | } 593 | , { 594 | "box" : { 595 | "fontname" : "Arial", 596 | "fontsize" : 10.435669000000001, 597 | "id" : "obj-43", 598 | "maxclass" : "newobj", 599 | "numinlets" : 1, 600 | "numoutlets" : 1, 601 | "outlettype" : [ "" ], 602 | "patching_rect" : [ 43.0, 257.0, 108.0, 20.0 ], 603 | "text" : "prepend window size" 604 | } 605 | 606 | } 607 | , { 608 | "box" : { 609 | "fontname" : "Arial", 610 | "fontsize" : 10.435669000000001, 611 | "id" : "obj-45", 612 | "maxclass" : "comment", 613 | "numinlets" : 1, 614 | "numoutlets" : 0, 615 | "patching_rect" : [ 208.0, 186.0, 37.0, 18.0 ], 616 | "text" : "Ymax" 617 | } 618 | 619 | } 620 | , { 621 | "box" : { 622 | "fontname" : "Arial", 623 | "fontsize" : 10.435669000000001, 624 | "id" : "obj-46", 625 | "maxclass" : "comment", 626 | "numinlets" : 1, 627 | "numoutlets" : 0, 628 | "patching_rect" : [ 157.0, 186.0, 37.0, 18.0 ], 629 | "text" : "Xmax" 630 | } 631 | 632 | } 633 | , { 634 | "box" : { 635 | "fontname" : "Arial", 636 | "fontsize" : 10.435669000000001, 637 | "id" : "obj-47", 638 | "maxclass" : "comment", 639 | "numinlets" : 1, 640 | "numoutlets" : 0, 641 | "patching_rect" : [ 105.0, 186.0, 34.0, 18.0 ], 642 | "text" : "Ymin" 643 | } 644 | 645 | } 646 | , { 647 | "box" : { 648 | "fontname" : "Arial", 649 | "fontsize" : 10.435669000000001, 650 | "id" : "obj-48", 651 | "maxclass" : "comment", 652 | "numinlets" : 1, 653 | "numoutlets" : 0, 654 | "patching_rect" : [ 54.0, 186.0, 34.0, 18.0 ], 655 | "text" : "Xmin" 656 | } 657 | 658 | } 659 | , { 660 | "box" : { 661 | "fontname" : "Arial", 662 | "fontsize" : 10.435669000000001, 663 | "id" : "obj-49", 664 | "maxclass" : "comment", 665 | "numinlets" : 1, 666 | "numoutlets" : 0, 667 | "patching_rect" : [ 180.0, 147.0, 31.0, 18.0 ], 668 | "text" : "pref." 669 | } 670 | 671 | } 672 | , { 673 | "box" : { 674 | "fontname" : "Arial", 675 | "fontsize" : 10.435669000000001, 676 | "id" : "obj-51", 677 | "maxclass" : "newobj", 678 | "numinlets" : 1, 679 | "numoutlets" : 4, 680 | "outlettype" : [ "int", "int", "int", "int" ], 681 | "patching_rect" : [ 43.0, 167.0, 173.0, 20.0 ], 682 | "text" : "unpack 0 0 0 0" 683 | } 684 | 685 | } 686 | , { 687 | "box" : { 688 | "fontname" : "Arial", 689 | "fontsize" : 10.435669000000001, 690 | "id" : "obj-52", 691 | "maxclass" : "message", 692 | "numinlets" : 2, 693 | "numoutlets" : 1, 694 | "outlettype" : [ "" ], 695 | "patching_rect" : [ 43.0, 147.0, 89.0, 20.0 ], 696 | "text" : "10 50 800 770" 697 | } 698 | 699 | } 700 | , { 701 | "box" : { 702 | "fontname" : "Arial", 703 | "fontsize" : 10.435669000000001, 704 | "id" : "obj-53", 705 | "maxclass" : "number", 706 | "numinlets" : 1, 707 | "numoutlets" : 2, 708 | "outlettype" : [ "", "bang" ], 709 | "parameter_enable" : 0, 710 | "patching_rect" : [ 197.0, 205.0, 50.0, 20.0 ] 711 | } 712 | 713 | } 714 | , { 715 | "box" : { 716 | "fontname" : "Arial", 717 | "fontsize" : 10.435669000000001, 718 | "id" : "obj-54", 719 | "maxclass" : "number", 720 | "numinlets" : 1, 721 | "numoutlets" : 2, 722 | "outlettype" : [ "", "bang" ], 723 | "parameter_enable" : 0, 724 | "patching_rect" : [ 146.0, 205.0, 50.0, 20.0 ] 725 | } 726 | 727 | } 728 | , { 729 | "box" : { 730 | "fontname" : "Arial", 731 | "fontsize" : 10.435669000000001, 732 | "id" : "obj-55", 733 | "maxclass" : "newobj", 734 | "numinlets" : 4, 735 | "numoutlets" : 1, 736 | "outlettype" : [ "" ], 737 | "patching_rect" : [ 43.0, 227.0, 173.0, 20.0 ], 738 | "text" : "pak 0 0 0 0" 739 | } 740 | 741 | } 742 | , { 743 | "box" : { 744 | "fontname" : "Arial", 745 | "fontsize" : 10.435669000000001, 746 | "id" : "obj-56", 747 | "maxclass" : "number", 748 | "numinlets" : 1, 749 | "numoutlets" : 2, 750 | "outlettype" : [ "", "bang" ], 751 | "parameter_enable" : 0, 752 | "patching_rect" : [ 94.0, 205.0, 51.0, 20.0 ] 753 | } 754 | 755 | } 756 | , { 757 | "box" : { 758 | "fontname" : "Arial", 759 | "fontsize" : 10.435669000000001, 760 | "id" : "obj-57", 761 | "maxclass" : "number", 762 | "numinlets" : 1, 763 | "numoutlets" : 2, 764 | "outlettype" : [ "", "bang" ], 765 | "parameter_enable" : 0, 766 | "patching_rect" : [ 43.0, 205.0, 50.0, 20.0 ] 767 | } 768 | 769 | } 770 | , { 771 | "box" : { 772 | "fontname" : "Arial", 773 | "fontsize" : 10.435669000000001, 774 | "id" : "obj-35", 775 | "maxclass" : "newobj", 776 | "numinlets" : 1, 777 | "numoutlets" : 1, 778 | "outlettype" : [ "" ], 779 | "patching_rect" : [ 283.0, 378.0, 19.0, 20.0 ], 780 | "text" : "t l" 781 | } 782 | 783 | } 784 | , { 785 | "box" : { 786 | "fontname" : "Arial", 787 | "fontsize" : 10.435669000000001, 788 | "id" : "obj-32", 789 | "maxclass" : "message", 790 | "numinlets" : 2, 791 | "numoutlets" : 1, 792 | "outlettype" : [ "" ], 793 | "patching_rect" : [ 480.0, 343.0, 158.0, 20.0 ], 794 | "text" : "window flags float, window exec" 795 | } 796 | 797 | } 798 | , { 799 | "box" : { 800 | "fontname" : "Arial", 801 | "fontsize" : 10.435669000000001, 802 | "id" : "obj-31", 803 | "maxclass" : "message", 804 | "numinlets" : 2, 805 | "numoutlets" : 1, 806 | "outlettype" : [ "" ], 807 | "patching_rect" : [ 283.0, 323.0, 70.0, 20.0 ], 808 | "text" : "window exec" 809 | } 810 | 811 | } 812 | , { 813 | "box" : { 814 | "fontname" : "Arial", 815 | "fontsize" : 10.435669000000001, 816 | "id" : "obj-30", 817 | "maxclass" : "newobj", 818 | "numinlets" : 1, 819 | "numoutlets" : 3, 820 | "outlettype" : [ "bang", "", "bang" ], 821 | "patching_rect" : [ 283.0, 279.0, 46.0, 20.0 ], 822 | "text" : "t b l b" 823 | } 824 | 825 | } 826 | , { 827 | "box" : { 828 | "fontname" : "Arial", 829 | "fontsize" : 10.435669000000001, 830 | "id" : "obj-29", 831 | "linecount" : 2, 832 | "maxclass" : "message", 833 | "numinlets" : 2, 834 | "numoutlets" : 1, 835 | "outlettype" : [ "" ], 836 | "patching_rect" : [ 310.0, 343.0, 113.0, 32.0 ], 837 | "text" : "window flags nogrow, window flags nozoom" 838 | } 839 | 840 | } 841 | , { 842 | "box" : { 843 | "fontname" : "Arial", 844 | "fontsize" : 10.435669000000001, 845 | "id" : "obj-28", 846 | "maxclass" : "newobj", 847 | "numinlets" : 1, 848 | "numoutlets" : 1, 849 | "outlettype" : [ "" ], 850 | "patching_rect" : [ 283.0, 257.0, 108.0, 20.0 ], 851 | "text" : "prepend window size" 852 | } 853 | 854 | } 855 | , { 856 | "box" : { 857 | "fontname" : "Arial", 858 | "fontsize" : 10.435669000000001, 859 | "id" : "obj-27", 860 | "maxclass" : "comment", 861 | "numinlets" : 1, 862 | "numoutlets" : 0, 863 | "patching_rect" : [ 448.0, 186.0, 37.0, 18.0 ], 864 | "text" : "Ymax" 865 | } 866 | 867 | } 868 | , { 869 | "box" : { 870 | "fontname" : "Arial", 871 | "fontsize" : 10.435669000000001, 872 | "id" : "obj-26", 873 | "maxclass" : "comment", 874 | "numinlets" : 1, 875 | "numoutlets" : 0, 876 | "patching_rect" : [ 397.0, 186.0, 37.0, 18.0 ], 877 | "text" : "Xmax" 878 | } 879 | 880 | } 881 | , { 882 | "box" : { 883 | "fontname" : "Arial", 884 | "fontsize" : 10.435669000000001, 885 | "id" : "obj-23", 886 | "maxclass" : "comment", 887 | "numinlets" : 1, 888 | "numoutlets" : 0, 889 | "patching_rect" : [ 345.0, 186.0, 34.0, 18.0 ], 890 | "text" : "Ymin" 891 | } 892 | 893 | } 894 | , { 895 | "box" : { 896 | "fontname" : "Arial", 897 | "fontsize" : 10.435669000000001, 898 | "id" : "obj-22", 899 | "maxclass" : "comment", 900 | "numinlets" : 1, 901 | "numoutlets" : 0, 902 | "patching_rect" : [ 294.0, 186.0, 34.0, 18.0 ], 903 | "text" : "Xmin" 904 | } 905 | 906 | } 907 | , { 908 | "box" : { 909 | "fontname" : "Arial", 910 | "fontsize" : 10.435669000000001, 911 | "id" : "obj-20", 912 | "maxclass" : "comment", 913 | "numinlets" : 1, 914 | "numoutlets" : 0, 915 | "patching_rect" : [ 411.0, 147.0, 31.0, 18.0 ], 916 | "text" : "pref." 917 | } 918 | 919 | } 920 | , { 921 | "box" : { 922 | "fontname" : "Arial", 923 | "fontsize" : 10.435669000000001, 924 | "id" : "obj-18", 925 | "maxclass" : "newobj", 926 | "numinlets" : 1, 927 | "numoutlets" : 4, 928 | "outlettype" : [ "int", "int", "int", "int" ], 929 | "patching_rect" : [ 283.0, 167.0, 173.0, 20.0 ], 930 | "text" : "unpack 0 0 0 0" 931 | } 932 | 933 | } 934 | , { 935 | "box" : { 936 | "fontname" : "Arial", 937 | "fontsize" : 10.435669000000001, 938 | "id" : "obj-16", 939 | "maxclass" : "message", 940 | "numinlets" : 2, 941 | "numoutlets" : 1, 942 | "outlettype" : [ "" ], 943 | "patching_rect" : [ 282.0, 145.0, 83.0, 20.0 ], 944 | "text" : "576 70 744 220" 945 | } 946 | 947 | } 948 | , { 949 | "box" : { 950 | "fontname" : "Arial", 951 | "fontsize" : 10.435669000000001, 952 | "id" : "obj-12", 953 | "maxclass" : "number", 954 | "numinlets" : 1, 955 | "numoutlets" : 2, 956 | "outlettype" : [ "", "bang" ], 957 | "parameter_enable" : 0, 958 | "patching_rect" : [ 437.0, 205.0, 50.0, 20.0 ] 959 | } 960 | 961 | } 962 | , { 963 | "box" : { 964 | "fontname" : "Arial", 965 | "fontsize" : 10.435669000000001, 966 | "id" : "obj-15", 967 | "maxclass" : "number", 968 | "numinlets" : 1, 969 | "numoutlets" : 2, 970 | "outlettype" : [ "", "bang" ], 971 | "parameter_enable" : 0, 972 | "patching_rect" : [ 386.0, 205.0, 50.0, 20.0 ] 973 | } 974 | 975 | } 976 | , { 977 | "box" : { 978 | "fontname" : "Arial", 979 | "fontsize" : 10.435669000000001, 980 | "id" : "obj-7", 981 | "maxclass" : "newobj", 982 | "numinlets" : 4, 983 | "numoutlets" : 1, 984 | "outlettype" : [ "" ], 985 | "patching_rect" : [ 283.0, 227.0, 173.0, 20.0 ], 986 | "text" : "pak 0 0 0 0" 987 | } 988 | 989 | } 990 | , { 991 | "box" : { 992 | "fontname" : "Arial", 993 | "fontsize" : 10.435669000000001, 994 | "id" : "obj-4", 995 | "maxclass" : "number", 996 | "numinlets" : 1, 997 | "numoutlets" : 2, 998 | "outlettype" : [ "", "bang" ], 999 | "parameter_enable" : 0, 1000 | "patching_rect" : [ 334.0, 205.0, 51.0, 20.0 ] 1001 | } 1002 | 1003 | } 1004 | , { 1005 | "box" : { 1006 | "fontname" : "Arial", 1007 | "fontsize" : 10.435669000000001, 1008 | "id" : "obj-3", 1009 | "maxclass" : "number", 1010 | "numinlets" : 1, 1011 | "numoutlets" : 2, 1012 | "outlettype" : [ "", "bang" ], 1013 | "parameter_enable" : 0, 1014 | "patching_rect" : [ 283.0, 205.0, 50.0, 20.0 ] 1015 | } 1016 | 1017 | } 1018 | , { 1019 | "box" : { 1020 | "fontname" : "Arial", 1021 | "fontsize" : 10.435669000000001, 1022 | "id" : "obj-11", 1023 | "maxclass" : "comment", 1024 | "numinlets" : 1, 1025 | "numoutlets" : 0, 1026 | "patching_rect" : [ 284.0, 69.0, 31.0, 18.0 ], 1027 | "text" : "view" 1028 | } 1029 | 1030 | } 1031 | , { 1032 | "box" : { 1033 | "fontname" : "Arial", 1034 | "fontsize" : 10.435669000000001, 1035 | "id" : "obj-10", 1036 | "maxclass" : "message", 1037 | "numinlets" : 2, 1038 | "numoutlets" : 1, 1039 | "outlettype" : [ "" ], 1040 | "patching_rect" : [ 250.0, 90.0, 82.0, 20.0 ], 1041 | "text" : "presentation $1" 1042 | } 1043 | 1044 | } 1045 | , { 1046 | "box" : { 1047 | "fontname" : "Arial", 1048 | "fontsize" : 10.435669000000001, 1049 | "id" : "obj-9", 1050 | "maxclass" : "newobj", 1051 | "numinlets" : 2, 1052 | "numoutlets" : 1, 1053 | "outlettype" : [ "int" ], 1054 | "patching_rect" : [ 250.0, 69.0, 32.5, 20.0 ], 1055 | "text" : "== 0" 1056 | } 1057 | 1058 | } 1059 | , { 1060 | "box" : { 1061 | "comment" : "", 1062 | "id" : "obj-44", 1063 | "index" : 1, 1064 | "maxclass" : "inlet", 1065 | "numinlets" : 0, 1066 | "numoutlets" : 1, 1067 | "outlettype" : [ "int" ], 1068 | "patching_rect" : [ 153.0, 17.0, 18.0, 18.0 ], 1069 | "prototypename" : "Arial9" 1070 | } 1071 | 1072 | } 1073 | , { 1074 | "box" : { 1075 | "id" : "obj-41", 1076 | "maxclass" : "toggle", 1077 | "numinlets" : 1, 1078 | "numoutlets" : 1, 1079 | "outlettype" : [ "int" ], 1080 | "parameter_enable" : 0, 1081 | "patching_rect" : [ 153.0, 50.0, 18.0, 18.0 ], 1082 | "prototypename" : "Arial9" 1083 | } 1084 | 1085 | } 1086 | , { 1087 | "box" : { 1088 | "fontname" : "Arial", 1089 | "fontsize" : 10.435669000000001, 1090 | "id" : "obj-25", 1091 | "maxclass" : "newobj", 1092 | "numinlets" : 3, 1093 | "numoutlets" : 3, 1094 | "outlettype" : [ "bang", "bang", "" ], 1095 | "patching_rect" : [ 153.0, 74.0, 46.0, 20.0 ], 1096 | "text" : "sel 1 0" 1097 | } 1098 | 1099 | } 1100 | , { 1101 | "box" : { 1102 | "comment" : "", 1103 | "id" : "obj-21", 1104 | "index" : 1, 1105 | "maxclass" : "outlet", 1106 | "numinlets" : 1, 1107 | "numoutlets" : 0, 1108 | "patching_rect" : [ 250.0, 443.0, 18.0, 18.0 ], 1109 | "prototypename" : "Arial9" 1110 | } 1111 | 1112 | } 1113 | ], 1114 | "lines" : [ { 1115 | "patchline" : { 1116 | "destination" : [ "obj-21", 0 ], 1117 | "source" : [ "obj-1", 0 ] 1118 | } 1119 | 1120 | } 1121 | , { 1122 | "patchline" : { 1123 | "destination" : [ "obj-21", 0 ], 1124 | "source" : [ "obj-10", 0 ] 1125 | } 1126 | 1127 | } 1128 | , { 1129 | "patchline" : { 1130 | "destination" : [ "obj-7", 3 ], 1131 | "source" : [ "obj-12", 0 ] 1132 | } 1133 | 1134 | } 1135 | , { 1136 | "patchline" : { 1137 | "destination" : [ "obj-21", 0 ], 1138 | "source" : [ "obj-13", 0 ] 1139 | } 1140 | 1141 | } 1142 | , { 1143 | "patchline" : { 1144 | "destination" : [ "obj-7", 2 ], 1145 | "source" : [ "obj-15", 0 ] 1146 | } 1147 | 1148 | } 1149 | , { 1150 | "patchline" : { 1151 | "destination" : [ "obj-18", 0 ], 1152 | "source" : [ "obj-16", 0 ] 1153 | } 1154 | 1155 | } 1156 | , { 1157 | "patchline" : { 1158 | "destination" : [ "obj-12", 0 ], 1159 | "source" : [ "obj-18", 3 ] 1160 | } 1161 | 1162 | } 1163 | , { 1164 | "patchline" : { 1165 | "destination" : [ "obj-15", 0 ], 1166 | "source" : [ "obj-18", 2 ] 1167 | } 1168 | 1169 | } 1170 | , { 1171 | "patchline" : { 1172 | "destination" : [ "obj-3", 0 ], 1173 | "source" : [ "obj-18", 0 ] 1174 | } 1175 | 1176 | } 1177 | , { 1178 | "patchline" : { 1179 | "destination" : [ "obj-4", 0 ], 1180 | "source" : [ "obj-18", 1 ] 1181 | } 1182 | 1183 | } 1184 | , { 1185 | "patchline" : { 1186 | "destination" : [ "obj-16", 0 ], 1187 | "source" : [ "obj-25", 1 ] 1188 | } 1189 | 1190 | } 1191 | , { 1192 | "patchline" : { 1193 | "destination" : [ "obj-52", 0 ], 1194 | "source" : [ "obj-25", 0 ] 1195 | } 1196 | 1197 | } 1198 | , { 1199 | "patchline" : { 1200 | "destination" : [ "obj-30", 0 ], 1201 | "source" : [ "obj-28", 0 ] 1202 | } 1203 | 1204 | } 1205 | , { 1206 | "patchline" : { 1207 | "destination" : [ "obj-35", 0 ], 1208 | "source" : [ "obj-29", 0 ] 1209 | } 1210 | 1211 | } 1212 | , { 1213 | "patchline" : { 1214 | "destination" : [ "obj-7", 0 ], 1215 | "source" : [ "obj-3", 0 ] 1216 | } 1217 | 1218 | } 1219 | , { 1220 | "patchline" : { 1221 | "destination" : [ "obj-29", 0 ], 1222 | "source" : [ "obj-30", 2 ] 1223 | } 1224 | 1225 | } 1226 | , { 1227 | "patchline" : { 1228 | "destination" : [ "obj-35", 0 ], 1229 | "source" : [ "obj-30", 1 ] 1230 | } 1231 | 1232 | } 1233 | , { 1234 | "patchline" : { 1235 | "destination" : [ "obj-62", 0 ], 1236 | "source" : [ "obj-30", 0 ] 1237 | } 1238 | 1239 | } 1240 | , { 1241 | "patchline" : { 1242 | "destination" : [ "obj-35", 0 ], 1243 | "source" : [ "obj-31", 0 ] 1244 | } 1245 | 1246 | } 1247 | , { 1248 | "patchline" : { 1249 | "destination" : [ "obj-13", 0 ], 1250 | "source" : [ "obj-32", 0 ] 1251 | } 1252 | 1253 | } 1254 | , { 1255 | "patchline" : { 1256 | "destination" : [ "obj-21", 0 ], 1257 | "source" : [ "obj-35", 0 ] 1258 | } 1259 | 1260 | } 1261 | , { 1262 | "patchline" : { 1263 | "destination" : [ "obj-21", 0 ], 1264 | "source" : [ "obj-37", 0 ] 1265 | } 1266 | 1267 | } 1268 | , { 1269 | "patchline" : { 1270 | "destination" : [ "obj-13", 0 ], 1271 | "source" : [ "obj-38", 0 ] 1272 | } 1273 | 1274 | } 1275 | , { 1276 | "patchline" : { 1277 | "destination" : [ "obj-37", 0 ], 1278 | "source" : [ "obj-39", 0 ] 1279 | } 1280 | 1281 | } 1282 | , { 1283 | "patchline" : { 1284 | "destination" : [ "obj-7", 1 ], 1285 | "source" : [ "obj-4", 0 ] 1286 | } 1287 | 1288 | } 1289 | , { 1290 | "patchline" : { 1291 | "destination" : [ "obj-37", 0 ], 1292 | "source" : [ "obj-40", 1 ] 1293 | } 1294 | 1295 | } 1296 | , { 1297 | "patchline" : { 1298 | "destination" : [ "obj-42", 0 ], 1299 | "source" : [ "obj-40", 2 ] 1300 | } 1301 | 1302 | } 1303 | , { 1304 | "patchline" : { 1305 | "destination" : [ "obj-63", 0 ], 1306 | "source" : [ "obj-40", 0 ] 1307 | } 1308 | 1309 | } 1310 | , { 1311 | "patchline" : { 1312 | "destination" : [ "obj-25", 0 ], 1313 | "order" : 1, 1314 | "source" : [ "obj-41", 0 ] 1315 | } 1316 | 1317 | } 1318 | , { 1319 | "patchline" : { 1320 | "destination" : [ "obj-9", 0 ], 1321 | "order" : 0, 1322 | "source" : [ "obj-41", 0 ] 1323 | } 1324 | 1325 | } 1326 | , { 1327 | "patchline" : { 1328 | "destination" : [ "obj-37", 0 ], 1329 | "source" : [ "obj-42", 0 ] 1330 | } 1331 | 1332 | } 1333 | , { 1334 | "patchline" : { 1335 | "destination" : [ "obj-40", 0 ], 1336 | "source" : [ "obj-43", 0 ] 1337 | } 1338 | 1339 | } 1340 | , { 1341 | "patchline" : { 1342 | "destination" : [ "obj-41", 0 ], 1343 | "source" : [ "obj-44", 0 ] 1344 | } 1345 | 1346 | } 1347 | , { 1348 | "patchline" : { 1349 | "destination" : [ "obj-6", 0 ], 1350 | "source" : [ "obj-5", 0 ] 1351 | } 1352 | 1353 | } 1354 | , { 1355 | "patchline" : { 1356 | "destination" : [ "obj-53", 0 ], 1357 | "source" : [ "obj-51", 3 ] 1358 | } 1359 | 1360 | } 1361 | , { 1362 | "patchline" : { 1363 | "destination" : [ "obj-54", 0 ], 1364 | "source" : [ "obj-51", 2 ] 1365 | } 1366 | 1367 | } 1368 | , { 1369 | "patchline" : { 1370 | "destination" : [ "obj-56", 0 ], 1371 | "source" : [ "obj-51", 1 ] 1372 | } 1373 | 1374 | } 1375 | , { 1376 | "patchline" : { 1377 | "destination" : [ "obj-57", 0 ], 1378 | "source" : [ "obj-51", 0 ] 1379 | } 1380 | 1381 | } 1382 | , { 1383 | "patchline" : { 1384 | "destination" : [ "obj-51", 0 ], 1385 | "source" : [ "obj-52", 0 ] 1386 | } 1387 | 1388 | } 1389 | , { 1390 | "patchline" : { 1391 | "destination" : [ "obj-55", 3 ], 1392 | "source" : [ "obj-53", 0 ] 1393 | } 1394 | 1395 | } 1396 | , { 1397 | "patchline" : { 1398 | "destination" : [ "obj-55", 2 ], 1399 | "source" : [ "obj-54", 0 ] 1400 | } 1401 | 1402 | } 1403 | , { 1404 | "patchline" : { 1405 | "destination" : [ "obj-43", 0 ], 1406 | "order" : 1, 1407 | "source" : [ "obj-55", 0 ] 1408 | } 1409 | 1410 | } 1411 | , { 1412 | "patchline" : { 1413 | "destination" : [ "obj-52", 1 ], 1414 | "midpoints" : [ 52.5, 251.0, 34.0, 251.0, 34.0, 139.0, 122.5, 139.0 ], 1415 | "order" : 0, 1416 | "source" : [ "obj-55", 0 ] 1417 | } 1418 | 1419 | } 1420 | , { 1421 | "patchline" : { 1422 | "destination" : [ "obj-55", 1 ], 1423 | "source" : [ "obj-56", 0 ] 1424 | } 1425 | 1426 | } 1427 | , { 1428 | "patchline" : { 1429 | "destination" : [ "obj-55", 0 ], 1430 | "source" : [ "obj-57", 0 ] 1431 | } 1432 | 1433 | } 1434 | , { 1435 | "patchline" : { 1436 | "destination" : [ "obj-8", 0 ], 1437 | "source" : [ "obj-6", 0 ] 1438 | } 1439 | 1440 | } 1441 | , { 1442 | "patchline" : { 1443 | "destination" : [ "obj-31", 0 ], 1444 | "source" : [ "obj-62", 0 ] 1445 | } 1446 | 1447 | } 1448 | , { 1449 | "patchline" : { 1450 | "destination" : [ "obj-39", 0 ], 1451 | "source" : [ "obj-63", 0 ] 1452 | } 1453 | 1454 | } 1455 | , { 1456 | "patchline" : { 1457 | "destination" : [ "obj-16", 1 ], 1458 | "midpoints" : [ 292.5, 251.0, 274.0, 251.0, 274.0, 139.0, 355.5, 139.0 ], 1459 | "order" : 0, 1460 | "source" : [ "obj-7", 0 ] 1461 | } 1462 | 1463 | } 1464 | , { 1465 | "patchline" : { 1466 | "destination" : [ "obj-28", 0 ], 1467 | "order" : 1, 1468 | "source" : [ "obj-7", 0 ] 1469 | } 1470 | 1471 | } 1472 | , { 1473 | "patchline" : { 1474 | "destination" : [ "obj-32", 0 ], 1475 | "source" : [ "obj-8", 1 ] 1476 | } 1477 | 1478 | } 1479 | , { 1480 | "patchline" : { 1481 | "destination" : [ "obj-38", 0 ], 1482 | "source" : [ "obj-8", 0 ] 1483 | } 1484 | 1485 | } 1486 | , { 1487 | "patchline" : { 1488 | "destination" : [ "obj-10", 0 ], 1489 | "source" : [ "obj-9", 0 ] 1490 | } 1491 | 1492 | } 1493 | ] 1494 | } 1495 | , 1496 | "patching_rect" : [ 49.0, 251.0, 58.0, 22.0 ], 1497 | "saved_object_attributes" : { 1498 | "description" : "", 1499 | "digest" : "", 1500 | "fontsize" : 9.0, 1501 | "globalpatchername" : "", 1502 | "tags" : "" 1503 | } 1504 | , 1505 | "text" : "p View" 1506 | } 1507 | 1508 | } 1509 | , { 1510 | "box" : { 1511 | "bgcolor" : [ 0.0, 0.0, 0.0, 0.0 ], 1512 | "cantchange" : 1, 1513 | "fontface" : 1, 1514 | "fontname" : "Arial", 1515 | "fontsize" : 12.0, 1516 | "htricolor" : [ 0.87, 0.82, 0.24, 1.0 ], 1517 | "id" : "obj-1", 1518 | "ignoreclick" : 1, 1519 | "maxclass" : "number", 1520 | "minimum" : 1, 1521 | "numinlets" : 1, 1522 | "numoutlets" : 2, 1523 | "outlettype" : [ "", "bang" ], 1524 | "parameter_enable" : 0, 1525 | "patching_rect" : [ 153.0, 141.0, 48.0, 22.0 ], 1526 | "presentation" : 1, 1527 | "presentation_rect" : [ 132.833333551883698, 116.0, 41.0, 22.0 ], 1528 | "textcolor" : [ 1.0, 1.0, 1.0, 1.0 ], 1529 | "triangle" : 0, 1530 | "tricolor" : [ 0.75, 0.75, 0.75, 1.0 ], 1531 | "triscale" : 0.9, 1532 | "varname" : "num" 1533 | } 1534 | 1535 | } 1536 | , { 1537 | "box" : { 1538 | "fontface" : 1, 1539 | "fontname" : "Arial", 1540 | "fontsize" : 12.0, 1541 | "id" : "obj-2", 1542 | "maxclass" : "comment", 1543 | "numinlets" : 1, 1544 | "numoutlets" : 0, 1545 | "patching_rect" : [ 140.0, 141.0, 23.0, 20.0 ], 1546 | "presentation" : 1, 1547 | "presentation_rect" : [ 111.333333253860474, 117.0, 23.0, 20.0 ], 1548 | "text" : "n |", 1549 | "textcolor" : [ 1.0, 1.0, 1.0, 1.0 ] 1550 | } 1551 | 1552 | } 1553 | , { 1554 | "box" : { 1555 | "bgcolor" : [ 0.0, 0.0, 0.0, 0.0 ], 1556 | "cantchange" : 1, 1557 | "fontface" : 1, 1558 | "fontname" : "Arial", 1559 | "fontsize" : 12.0, 1560 | "htricolor" : [ 0.87, 0.82, 0.24, 1.0 ], 1561 | "id" : "obj-3", 1562 | "ignoreclick" : 1, 1563 | "maxclass" : "number", 1564 | "minimum" : 1, 1565 | "numinlets" : 1, 1566 | "numoutlets" : 2, 1567 | "outlettype" : [ "", "bang" ], 1568 | "parameter_enable" : 0, 1569 | "patching_rect" : [ 101.0, 141.0, 48.0, 22.0 ], 1570 | "presentation" : 1, 1571 | "presentation_rect" : [ 81.333333551883698, 116.0, 41.0, 22.0 ], 1572 | "textcolor" : [ 1.0, 1.0, 1.0, 1.0 ], 1573 | "triangle" : 0, 1574 | "tricolor" : [ 0.75, 0.75, 0.75, 1.0 ], 1575 | "triscale" : 0.9, 1576 | "varname" : "out" 1577 | } 1578 | 1579 | } 1580 | , { 1581 | "box" : { 1582 | "fontface" : 1, 1583 | "fontname" : "Arial", 1584 | "fontsize" : 12.0, 1585 | "id" : "obj-4", 1586 | "maxclass" : "comment", 1587 | "numinlets" : 1, 1588 | "numoutlets" : 0, 1589 | "patching_rect" : [ 88.0, 141.0, 23.0, 20.0 ], 1590 | "presentation" : 1, 1591 | "presentation_rect" : [ 61.333333551883698, 117.0, 23.0, 20.0 ], 1592 | "text" : "o |", 1593 | "textcolor" : [ 1.0, 1.0, 1.0, 1.0 ] 1594 | } 1595 | 1596 | } 1597 | , { 1598 | "box" : { 1599 | "fontname" : "Arial", 1600 | "fontsize" : 12.0, 1601 | "id" : "obj-5", 1602 | "maxclass" : "newobj", 1603 | "numinlets" : 0, 1604 | "numoutlets" : 1, 1605 | "outlettype" : [ "" ], 1606 | "patching_rect" : [ 184.0, 453.0, 68.0, 22.0 ], 1607 | "text" : "r mtb_num" 1608 | } 1609 | 1610 | } 1611 | , { 1612 | "box" : { 1613 | "fontname" : "Arial", 1614 | "fontsize" : 12.0, 1615 | "id" : "obj-6", 1616 | "maxclass" : "newobj", 1617 | "numinlets" : 0, 1618 | "numoutlets" : 1, 1619 | "outlettype" : [ "" ], 1620 | "patching_rect" : [ 111.0, 453.0, 61.0, 22.0 ], 1621 | "text" : "r mtb_out" 1622 | } 1623 | 1624 | } 1625 | , { 1626 | "box" : { 1627 | "fontname" : "Arial", 1628 | "fontsize" : 12.0, 1629 | "id" : "obj-7", 1630 | "maxclass" : "newobj", 1631 | "numinlets" : 0, 1632 | "numoutlets" : 1, 1633 | "outlettype" : [ "" ], 1634 | "patching_rect" : [ 49.0, 453.0, 54.0, 22.0 ], 1635 | "text" : "r mtb_in" 1636 | } 1637 | 1638 | } 1639 | , { 1640 | "box" : { 1641 | "fontname" : "Arial", 1642 | "fontsize" : 12.0, 1643 | "id" : "obj-8", 1644 | "maxclass" : "newobj", 1645 | "numinlets" : 1, 1646 | "numoutlets" : 1, 1647 | "outlettype" : [ "" ], 1648 | "patching_rect" : [ 184.0, 485.0, 61.0, 22.0 ], 1649 | "text" : "pvar num" 1650 | } 1651 | 1652 | } 1653 | , { 1654 | "box" : { 1655 | "fontname" : "Arial", 1656 | "fontsize" : 12.0, 1657 | "id" : "obj-9", 1658 | "maxclass" : "newobj", 1659 | "numinlets" : 1, 1660 | "numoutlets" : 1, 1661 | "outlettype" : [ "" ], 1662 | "patching_rect" : [ 111.0, 485.0, 54.0, 22.0 ], 1663 | "text" : "pvar out" 1664 | } 1665 | 1666 | } 1667 | , { 1668 | "box" : { 1669 | "fontname" : "Arial", 1670 | "fontsize" : 12.0, 1671 | "id" : "obj-10", 1672 | "maxclass" : "newobj", 1673 | "numinlets" : 1, 1674 | "numoutlets" : 1, 1675 | "outlettype" : [ "" ], 1676 | "patching_rect" : [ 49.0, 485.0, 47.0, 22.0 ], 1677 | "text" : "pvar in" 1678 | } 1679 | 1680 | } 1681 | , { 1682 | "box" : { 1683 | "bgcolor" : [ 0.0, 0.0, 0.0, 0.0 ], 1684 | "cantchange" : 1, 1685 | "fontface" : 1, 1686 | "fontname" : "Arial", 1687 | "fontsize" : 12.0, 1688 | "htricolor" : [ 0.87, 0.82, 0.24, 1.0 ], 1689 | "id" : "obj-11", 1690 | "ignoreclick" : 1, 1691 | "maxclass" : "number", 1692 | "minimum" : 1, 1693 | "numinlets" : 1, 1694 | "numoutlets" : 2, 1695 | "outlettype" : [ "", "bang" ], 1696 | "parameter_enable" : 0, 1697 | "patching_rect" : [ 48.0, 141.0, 48.0, 22.0 ], 1698 | "presentation" : 1, 1699 | "presentation_rect" : [ 27.000000238418579, 116.0, 41.0, 22.0 ], 1700 | "textcolor" : [ 1.0, 1.0, 1.0, 1.0 ], 1701 | "triangle" : 0, 1702 | "tricolor" : [ 0.75, 0.75, 0.75, 1.0 ], 1703 | "triscale" : 0.9, 1704 | "varname" : "in" 1705 | } 1706 | 1707 | } 1708 | , { 1709 | "box" : { 1710 | "fontface" : 1, 1711 | "fontname" : "Arial", 1712 | "fontsize" : 12.0, 1713 | "id" : "obj-12", 1714 | "maxclass" : "comment", 1715 | "numinlets" : 1, 1716 | "numoutlets" : 0, 1717 | "patching_rect" : [ 38.0, 141.0, 32.0, 20.0 ], 1718 | "presentation" : 1, 1719 | "presentation_rect" : [ 12.0, 117.0, 27.0, 20.0 ], 1720 | "text" : "i |", 1721 | "textcolor" : [ 1.0, 1.0, 1.0, 1.0 ] 1722 | } 1723 | 1724 | } 1725 | , { 1726 | "box" : { 1727 | "fontname" : "Arial", 1728 | "fontsize" : 12.0, 1729 | "id" : "obj-14", 1730 | "maxclass" : "message", 1731 | "numinlets" : 2, 1732 | "numoutlets" : 1, 1733 | "outlettype" : [ "" ], 1734 | "patching_rect" : [ 102.0, 361.0, 63.0, 22.0 ], 1735 | "text" : "writeagain" 1736 | } 1737 | 1738 | } 1739 | , { 1740 | "box" : { 1741 | "fontname" : "Arial", 1742 | "fontsize" : 12.0, 1743 | "id" : "obj-15", 1744 | "maxclass" : "newobj", 1745 | "numinlets" : 1, 1746 | "numoutlets" : 1, 1747 | "outlettype" : [ "bang" ], 1748 | "patching_rect" : [ 102.0, 325.0, 63.0, 22.0 ], 1749 | "text" : "closebang" 1750 | } 1751 | 1752 | } 1753 | , { 1754 | "box" : { 1755 | "fontname" : "Arial", 1756 | "fontsize" : 12.0, 1757 | "id" : "obj-21", 1758 | "maxclass" : "newobj", 1759 | "numinlets" : 1, 1760 | "numoutlets" : 4, 1761 | "outlettype" : [ "", "", "", "" ], 1762 | "patching_rect" : [ 49.0, 405.0, 127.0, 22.0 ], 1763 | "saved_object_attributes" : { 1764 | "embed" : 0, 1765 | "precision" : 6 1766 | } 1767 | , 1768 | "text" : "coll mtb_shortcuts.txt" 1769 | } 1770 | 1771 | } 1772 | , { 1773 | "box" : { 1774 | "fontname" : "Arial", 1775 | "fontsize" : 12.0, 1776 | "hidden" : 1, 1777 | "id" : "obj-22", 1778 | "maxclass" : "newobj", 1779 | "numinlets" : 1, 1780 | "numoutlets" : 1, 1781 | "outlettype" : [ "open" ], 1782 | "patching_rect" : [ 277.5, 88.0, 42.0, 22.0 ], 1783 | "text" : "t open" 1784 | } 1785 | 1786 | } 1787 | , { 1788 | "box" : { 1789 | "fontname" : "Arial", 1790 | "fontsize" : 12.0, 1791 | "hidden" : 1, 1792 | "id" : "obj-23", 1793 | "maxclass" : "newobj", 1794 | "numinlets" : 1, 1795 | "numoutlets" : 0, 1796 | "patching_rect" : [ 277.5, 150.0, 122.0, 22.0 ], 1797 | "text" : "toolboxhelp.maxhelp" 1798 | } 1799 | 1800 | } 1801 | , { 1802 | "box" : { 1803 | "fontname" : "Arial", 1804 | "fontsize" : 12.0, 1805 | "hidden" : 1, 1806 | "id" : "obj-24", 1807 | "maxclass" : "newobj", 1808 | "numinlets" : 1, 1809 | "numoutlets" : 1, 1810 | "outlettype" : [ "" ], 1811 | "patching_rect" : [ 277.5, 120.0, 51.0, 22.0 ], 1812 | "text" : "pcontrol" 1813 | } 1814 | 1815 | } 1816 | , { 1817 | "box" : { 1818 | "bgcolor" : [ 0.368627, 0.360784, 0.501961, 0.74902 ], 1819 | "bgcolor2" : [ 0.368627, 0.360784, 0.501961, 0.74902 ], 1820 | "bgfillcolor_angle" : 270.0, 1821 | "bgfillcolor_autogradient" : 0.0, 1822 | "bgfillcolor_color" : [ 0.19999997317791, 0.199999943375587, 0.19999997317791, 1.0 ], 1823 | "bgfillcolor_color1" : [ 0.368627, 0.360784, 0.501961, 0.74902 ], 1824 | "bgfillcolor_color2" : [ 0.685, 0.685, 0.685, 1.0 ], 1825 | "bgfillcolor_proportion" : 0.5, 1826 | "bgfillcolor_type" : "color", 1827 | "fontface" : 0, 1828 | "fontname" : "Arial", 1829 | "fontsize" : 12.0, 1830 | "gradient" : 1, 1831 | "id" : "obj-25", 1832 | "maxclass" : "message", 1833 | "numinlets" : 2, 1834 | "numoutlets" : 1, 1835 | "outlettype" : [ "" ], 1836 | "patching_rect" : [ 179.0, 32.0, 18.0, 22.0 ], 1837 | "presentation" : 1, 1838 | "presentation_rect" : [ 136.0, 82.346153000000001, 18.5, 22.0 ], 1839 | "text" : "?", 1840 | "textcolor" : [ 0.999999284744263, 0.999974429607391, 0.999991297721863, 1.0 ] 1841 | } 1842 | 1843 | } 1844 | , { 1845 | "box" : { 1846 | "fontname" : "Arial", 1847 | "fontsize" : 12.0, 1848 | "id" : "obj-26", 1849 | "maxclass" : "message", 1850 | "numinlets" : 2, 1851 | "numoutlets" : 1, 1852 | "outlettype" : [ "" ], 1853 | "patching_rect" : [ 49.0, 361.0, 38.0, 22.0 ], 1854 | "text" : "open" 1855 | } 1856 | 1857 | } 1858 | , { 1859 | "box" : { 1860 | "bgcolor" : [ 0.098039209842682, 0.098039194941521, 0.098039209842682, 1.0 ], 1861 | "blinkcolor" : [ 0.999999284744263, 0.999974429607391, 0.999991297721863, 1.0 ], 1862 | "id" : "obj-27", 1863 | "maxclass" : "button", 1864 | "numinlets" : 1, 1865 | "numoutlets" : 1, 1866 | "outlettype" : [ "bang" ], 1867 | "outlinecolor" : [ 0.701960921287537, 0.701960802078247, 0.701960742473602, 1.0 ], 1868 | "parameter_enable" : 0, 1869 | "patching_rect" : [ 49.0, 325.0, 26.0, 26.0 ], 1870 | "presentation" : 1, 1871 | "presentation_rect" : [ 73.0, 82.346153000000001, 24.0, 24.0 ] 1872 | } 1873 | 1874 | } 1875 | , { 1876 | "box" : { 1877 | "fontname" : "Arial", 1878 | "fontsize" : 12.0, 1879 | "id" : "obj-52", 1880 | "maxclass" : "newobj", 1881 | "numinlets" : 3, 1882 | "numoutlets" : 3, 1883 | "outlettype" : [ "bang", "bang", "" ], 1884 | "patching_rect" : [ 622.0, 180.0, 104.0, 22.0 ], 1885 | "text" : "select 1 0" 1886 | } 1887 | 1888 | } 1889 | , { 1890 | "box" : { 1891 | "fontname" : "Arial", 1892 | "fontsize" : 12.0, 1893 | "id" : "obj-53", 1894 | "maxclass" : "newobj", 1895 | "numinlets" : 1, 1896 | "numoutlets" : 1, 1897 | "outlettype" : [ "" ], 1898 | "patching_rect" : [ 622.0, 150.0, 95.0, 22.0 ], 1899 | "text" : "pvar loadstartup" 1900 | } 1901 | 1902 | } 1903 | , { 1904 | "box" : { 1905 | "fontname" : "Arial", 1906 | "fontsize" : 12.0, 1907 | "id" : "obj-58", 1908 | "maxclass" : "newobj", 1909 | "numinlets" : 1, 1910 | "numoutlets" : 0, 1911 | "patching_rect" : [ 277.5, 27.0, 54.0, 22.0 ], 1912 | "text" : "onecopy" 1913 | } 1914 | 1915 | } 1916 | , { 1917 | "box" : { 1918 | "fontname" : "Arial", 1919 | "fontsize" : 12.0, 1920 | "id" : "obj-59", 1921 | "maxclass" : "message", 1922 | "numinlets" : 2, 1923 | "numoutlets" : 1, 1924 | "outlettype" : [ "" ], 1925 | "patching_rect" : [ 683.5, 225.0, 57.0, 22.0 ], 1926 | "text" : "clear_file" 1927 | } 1928 | 1929 | } 1930 | , { 1931 | "box" : { 1932 | "fontname" : "Arial", 1933 | "fontsize" : 12.0, 1934 | "id" : "obj-60", 1935 | "maxclass" : "message", 1936 | "numinlets" : 2, 1937 | "numoutlets" : 1, 1938 | "outlettype" : [ "" ], 1939 | "patching_rect" : [ 555.0, 225.0, 64.0, 22.0 ], 1940 | "text" : "create_file" 1941 | } 1942 | 1943 | } 1944 | , { 1945 | "box" : { 1946 | "fontname" : "Arial", 1947 | "fontsize" : 12.0, 1948 | "id" : "obj-61", 1949 | "maxclass" : "newobj", 1950 | "numinlets" : 1, 1951 | "numoutlets" : 1, 1952 | "outlettype" : [ "" ], 1953 | "patching_rect" : [ 449.0, 27.0, 79.0, 22.0 ], 1954 | "text" : "loadmess init" 1955 | } 1956 | 1957 | } 1958 | , { 1959 | "box" : { 1960 | "fontname" : "Arial", 1961 | "fontsize" : 12.0, 1962 | "id" : "obj-62", 1963 | "maxclass" : "newobj", 1964 | "numinlets" : 1, 1965 | "numoutlets" : 1, 1966 | "outlettype" : [ "" ], 1967 | "patching_rect" : [ 622.0, 420.0, 113.0, 22.0 ], 1968 | "saved_object_attributes" : { 1969 | "filename" : "toolbox_config.js", 1970 | "parameter_enable" : 0 1971 | } 1972 | , 1973 | "text" : "js toolbox_config.js" 1974 | } 1975 | 1976 | } 1977 | , { 1978 | "box" : { 1979 | "fontname" : "Arial", 1980 | "fontsize" : 12.0, 1981 | "id" : "obj-63", 1982 | "maxclass" : "newobj", 1983 | "numinlets" : 1, 1984 | "numoutlets" : 1, 1985 | "outlettype" : [ "" ], 1986 | "patching_rect" : [ 449.0, 120.0, 77.0, 22.0 ], 1987 | "text" : "absolutepath" 1988 | } 1989 | 1990 | } 1991 | , { 1992 | "box" : { 1993 | "fontface" : 0, 1994 | "fontname" : "Arial", 1995 | "fontsize" : 12.0, 1996 | "id" : "obj-66", 1997 | "maxclass" : "comment", 1998 | "numinlets" : 1, 1999 | "numoutlets" : 0, 2000 | "patching_rect" : [ 38.0, 111.5, 99.0, 20.0 ], 2001 | "presentation" : 1, 2002 | "presentation_rect" : [ 12.0, 53.346153000000001, 59.0, 20.0 ], 2003 | "text" : "Activate", 2004 | "textcolor" : [ 1.0, 1.0, 1.0, 1.0 ] 2005 | } 2006 | 2007 | } 2008 | , { 2009 | "box" : { 2010 | "angle" : 0.0, 2011 | "background" : 1, 2012 | "bgcolor" : [ 0.19999997317791, 0.199999943375587, 0.19999997317791, 1.0 ], 2013 | "id" : "obj-30", 2014 | "maxclass" : "panel", 2015 | "mode" : 0, 2016 | "numinlets" : 1, 2017 | "numoutlets" : 0, 2018 | "patching_rect" : [ 12.0, 10.0, 251.0, 169.0 ], 2019 | "proportion" : 0.5 2020 | } 2021 | 2022 | } 2023 | ], 2024 | "lines" : [ { 2025 | "patchline" : { 2026 | "destination" : [ "obj-21", 0 ], 2027 | "source" : [ "obj-14", 0 ] 2028 | } 2029 | 2030 | } 2031 | , { 2032 | "patchline" : { 2033 | "destination" : [ "obj-14", 0 ], 2034 | "source" : [ "obj-15", 0 ] 2035 | } 2036 | 2037 | } 2038 | , { 2039 | "patchline" : { 2040 | "destination" : [ "obj-54", 0 ], 2041 | "midpoints" : [ 592.5, 333.0, 433.0, 333.0, 433.0, 47.0, 458.5, 47.0 ], 2042 | "source" : [ "obj-16", 1 ] 2043 | } 2044 | 2045 | } 2046 | , { 2047 | "patchline" : { 2048 | "destination" : [ "obj-13", 0 ], 2049 | "source" : [ "obj-17", 0 ] 2050 | } 2051 | 2052 | } 2053 | , { 2054 | "patchline" : { 2055 | "destination" : [ "obj-72", 0 ], 2056 | "source" : [ "obj-18", 0 ] 2057 | } 2058 | 2059 | } 2060 | , { 2061 | "patchline" : { 2062 | "destination" : [ "obj-18", 1 ], 2063 | "source" : [ "obj-19", 0 ] 2064 | } 2065 | 2066 | } 2067 | , { 2068 | "patchline" : { 2069 | "destination" : [ "obj-24", 0 ], 2070 | "hidden" : 1, 2071 | "source" : [ "obj-22", 0 ] 2072 | } 2073 | 2074 | } 2075 | , { 2076 | "patchline" : { 2077 | "destination" : [ "obj-23", 0 ], 2078 | "hidden" : 1, 2079 | "source" : [ "obj-24", 0 ] 2080 | } 2081 | 2082 | } 2083 | , { 2084 | "patchline" : { 2085 | "destination" : [ "obj-22", 0 ], 2086 | "hidden" : 1, 2087 | "source" : [ "obj-25", 0 ] 2088 | } 2089 | 2090 | } 2091 | , { 2092 | "patchline" : { 2093 | "destination" : [ "obj-21", 0 ], 2094 | "source" : [ "obj-26", 0 ] 2095 | } 2096 | 2097 | } 2098 | , { 2099 | "patchline" : { 2100 | "destination" : [ "obj-26", 0 ], 2101 | "source" : [ "obj-27", 0 ] 2102 | } 2103 | 2104 | } 2105 | , { 2106 | "patchline" : { 2107 | "destination" : [ "obj-36", 0 ], 2108 | "source" : [ "obj-28", 0 ] 2109 | } 2110 | 2111 | } 2112 | , { 2113 | "patchline" : { 2114 | "destination" : [ "obj-16", 0 ], 2115 | "source" : [ "obj-29", 0 ] 2116 | } 2117 | 2118 | } 2119 | , { 2120 | "patchline" : { 2121 | "destination" : [ "obj-18", 0 ], 2122 | "hidden" : 1, 2123 | "source" : [ "obj-32", 0 ] 2124 | } 2125 | 2126 | } 2127 | , { 2128 | "patchline" : { 2129 | "destination" : [ "obj-13", 0 ], 2130 | "source" : [ "obj-34", 0 ] 2131 | } 2132 | 2133 | } 2134 | , { 2135 | "patchline" : { 2136 | "destination" : [ "obj-53", 0 ], 2137 | "source" : [ "obj-36", 0 ] 2138 | } 2139 | 2140 | } 2141 | , { 2142 | "patchline" : { 2143 | "destination" : [ "obj-38", 0 ], 2144 | "source" : [ "obj-37", 0 ] 2145 | } 2146 | 2147 | } 2148 | , { 2149 | "patchline" : { 2150 | "destination" : [ "obj-16", 0 ], 2151 | "source" : [ "obj-40", 0 ] 2152 | } 2153 | 2154 | } 2155 | , { 2156 | "patchline" : { 2157 | "destination" : [ "obj-29", 0 ], 2158 | "source" : [ "obj-43", 0 ] 2159 | } 2160 | 2161 | } 2162 | , { 2163 | "patchline" : { 2164 | "destination" : [ "obj-8", 0 ], 2165 | "source" : [ "obj-5", 0 ] 2166 | } 2167 | 2168 | } 2169 | , { 2170 | "patchline" : { 2171 | "destination" : [ "obj-34", 0 ], 2172 | "order" : 0, 2173 | "source" : [ "obj-52", 0 ] 2174 | } 2175 | 2176 | } 2177 | , { 2178 | "patchline" : { 2179 | "destination" : [ "obj-35", 0 ], 2180 | "order" : 1, 2181 | "source" : [ "obj-52", 1 ] 2182 | } 2183 | 2184 | } 2185 | , { 2186 | "patchline" : { 2187 | "destination" : [ "obj-59", 0 ], 2188 | "order" : 0, 2189 | "source" : [ "obj-52", 1 ] 2190 | } 2191 | 2192 | } 2193 | , { 2194 | "patchline" : { 2195 | "destination" : [ "obj-60", 0 ], 2196 | "order" : 1, 2197 | "source" : [ "obj-52", 0 ] 2198 | } 2199 | 2200 | } 2201 | , { 2202 | "patchline" : { 2203 | "destination" : [ "obj-52", 0 ], 2204 | "source" : [ "obj-53", 0 ] 2205 | } 2206 | 2207 | } 2208 | , { 2209 | "patchline" : { 2210 | "destination" : [ "obj-55", 0 ], 2211 | "source" : [ "obj-54", 1 ] 2212 | } 2213 | 2214 | } 2215 | , { 2216 | "patchline" : { 2217 | "destination" : [ "obj-55", 0 ], 2218 | "source" : [ "obj-54", 0 ] 2219 | } 2220 | 2221 | } 2222 | , { 2223 | "patchline" : { 2224 | "destination" : [ "obj-63", 0 ], 2225 | "source" : [ "obj-55", 0 ] 2226 | } 2227 | 2228 | } 2229 | , { 2230 | "patchline" : { 2231 | "destination" : [ "obj-16", 0 ], 2232 | "source" : [ "obj-59", 0 ] 2233 | } 2234 | 2235 | } 2236 | , { 2237 | "patchline" : { 2238 | "destination" : [ "obj-9", 0 ], 2239 | "source" : [ "obj-6", 0 ] 2240 | } 2241 | 2242 | } 2243 | , { 2244 | "patchline" : { 2245 | "destination" : [ "obj-16", 0 ], 2246 | "source" : [ "obj-60", 0 ] 2247 | } 2248 | 2249 | } 2250 | , { 2251 | "patchline" : { 2252 | "destination" : [ "obj-43", 0 ], 2253 | "source" : [ "obj-63", 0 ] 2254 | } 2255 | 2256 | } 2257 | , { 2258 | "patchline" : { 2259 | "destination" : [ "obj-10", 0 ], 2260 | "source" : [ "obj-7", 0 ] 2261 | } 2262 | 2263 | } 2264 | ], 2265 | "dependency_cache" : [ { 2266 | "name" : "mtb_shortcuts.txt", 2267 | "bootpath" : "~/Documents/Max 8/Packages/maxtoolbox/misc", 2268 | "patcherrelativepath" : "../misc", 2269 | "type" : "TEXT", 2270 | "implicit" : 1 2271 | } 2272 | , { 2273 | "name" : "toolbox_config.js", 2274 | "bootpath" : "~/Documents/Max 8/Packages/maxtoolbox/javascript", 2275 | "patcherrelativepath" : "../javascript", 2276 | "type" : "TEXT", 2277 | "implicit" : 1 2278 | } 2279 | , { 2280 | "name" : "toolbox_node.js", 2281 | "bootpath" : "~/Documents/Max 8/Packages/maxtoolbox/javascript", 2282 | "patcherrelativepath" : "../javascript", 2283 | "type" : "TEXT", 2284 | "implicit" : 1 2285 | } 2286 | , { 2287 | "name" : "toolboxhelp.maxhelp", 2288 | "bootpath" : "~/Documents/Max 8/Packages/maxtoolbox/help", 2289 | "patcherrelativepath" : "../help", 2290 | "type" : "JSON", 2291 | "implicit" : 1 2292 | } 2293 | ], 2294 | "autosave" : 0, 2295 | "bgcolor" : [ 0.098039209842682, 0.098039194941521, 0.098039209842682, 1.0 ] 2296 | } 2297 | 2298 | } 2299 | --------------------------------------------------------------------------------