├── .gitignore ├── M4L-rhythm-can └── M4L-rhythm-can.maxproj ├── README.md ├── images ├── abletonlive.png ├── bg.png ├── logo.png └── ui_screenshot_ise.png ├── package-lock.json ├── package.json ├── releases ├── M4L-rhythm-can.amxd └── models │ ├── conditional_generator │ ├── group1-shard1of1.bin │ └── model.json │ └── creative_gan_generator │ ├── group1-shard1of1.bin │ └── model.json ├── rhythm-gan.js ├── rhythm-gan.maxpat ├── src └── constants.js └── subpatches ├── count_for_me.maxpat ├── makenote_for_me.maxpat ├── setup_1_16.maxpat └── shuffle_metro.maxpat /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | node_modules/* -------------------------------------------------------------------------------- /M4L-rhythm-can/M4L-rhythm-can.maxproj: -------------------------------------------------------------------------------- 1 | { 2 | "name" : "M4L-rhythm-can", 3 | "version" : 1, 4 | "creationdate" : 3689165166, 5 | "modificationdate" : 3697368409, 6 | "viewrect" : [ 25.0, 104.0, 300.0, 500.0 ], 7 | "autoorganize" : 1, 8 | "hideprojectwindow" : 0, 9 | "showdependencies" : 1, 10 | "autolocalize" : 0, 11 | "contents" : { 12 | "patchers" : { 13 | "rhythm-gan.maxpat" : { 14 | "kind" : "patcher", 15 | "toplevel" : 1 16 | } 17 | , 18 | "makenote_for_me.maxpat" : { 19 | "kind" : "patcher", 20 | "local" : 1 21 | } 22 | , 23 | "setup_1_16.maxpat" : { 24 | "kind" : "patcher" 25 | } 26 | , 27 | "shuffle_metro.maxpat" : { 28 | "kind" : "patcher", 29 | "local" : 1 30 | } 31 | , 32 | "count_for_me.maxpat" : { 33 | "kind" : "patcher" 34 | } 35 | 36 | } 37 | , 38 | "code" : { 39 | "rhythm-gan.js" : { 40 | "kind" : "javascript", 41 | "local" : 1, 42 | "singleton" : { 43 | "bootpath" : "~/git/_Public/M4L-x-rhythm-can", 44 | "projectrelativepath" : ".." 45 | } 46 | 47 | } 48 | 49 | } 50 | 51 | } 52 | , 53 | "layout" : { 54 | 55 | } 56 | , 57 | "searchpath" : { 58 | "0" : { 59 | "bootpath" : "~/git/_Public/M4L-x-rhythm-can/node_modules", 60 | "projectrelativepath" : "../node_modules", 61 | "label" : "", 62 | "recursive" : 1, 63 | "enabled" : 1, 64 | "includeincollective" : 1 65 | } 66 | , 67 | "1" : { 68 | "bootpath" : "~/git/_Public/M4L-x-rhythm-can/subpatches", 69 | "projectrelativepath" : "../subpatches", 70 | "label" : "", 71 | "recursive" : 1, 72 | "enabled" : 1, 73 | "includeincollective" : 1 74 | } 75 | , 76 | "2" : { 77 | "bootpath" : "~/git/_Public/M4L-x-rhythm-can/src", 78 | "projectrelativepath" : "../src", 79 | "label" : "", 80 | "recursive" : 1, 81 | "enabled" : 1, 82 | "includeincollective" : 1 83 | } 84 | 85 | } 86 | , 87 | "detailsvisible" : 0, 88 | "amxdtype" : 1835887981, 89 | "readonly" : 0, 90 | "devpathtype" : 0, 91 | "devpath" : ".", 92 | "sortmode" : 0, 93 | "viewmode" : 0 94 | } 95 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # M4L-CreativeGAN-Rhythm 2 | 3 | An Ableton Live Device for Creative-GAN-based rhythm generation models trained with [CreativeGAN-Rhythm repository](https://github.com/naotokui/CreativeGAN-Rhythm). 4 | 5 | 6 | 7 | # Download Ableton Live Device(M4L) and pre-trained tfjs models 8 | You can find an exported M4L device and models [here](https://github.com/naotokui/M4L-CreativeGAN-Rhythm/tree/master/releases). 9 | 10 | # How it works 11 | 12 | 13 | 14 | # Project Page 15 | https://cclab.sfc.keio.ac.jp/projects/rhythmcan/ 16 | 17 | # Design 18 | Title logo, Background Texture: [Naoki Ise](http://naokiise.com/) -------------------------------------------------------------------------------- /images/abletonlive.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/naotokui/M4L-CreativeGAN-Rhythm/e1cb5b27e798166330624fbd7622a76a0448f2b2/images/abletonlive.png -------------------------------------------------------------------------------- /images/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/naotokui/M4L-CreativeGAN-Rhythm/e1cb5b27e798166330624fbd7622a76a0448f2b2/images/bg.png -------------------------------------------------------------------------------- /images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/naotokui/M4L-CreativeGAN-Rhythm/e1cb5b27e798166330624fbd7622a76a0448f2b2/images/logo.png -------------------------------------------------------------------------------- /images/ui_screenshot_ise.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/naotokui/M4L-CreativeGAN-Rhythm/e1cb5b27e798166330624fbd7622a76a0448f2b2/images/ui_screenshot_ise.png -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "M4L-x-rhythm-can", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@tensorflow/tfjs": { 8 | "version": "1.5.1", 9 | "resolved": "https://registry.npmjs.org/@tensorflow/tfjs/-/tfjs-1.5.1.tgz", 10 | "integrity": "sha512-WiE+JQ3ibr5LibGiBz6HWUqLJW8HiX6ywUSCA7ehZ67vFsw4mPuVjv0WEEUfD/l47PkXYVAmWd+RYOJiuZC7Eg==", 11 | "requires": { 12 | "@tensorflow/tfjs-converter": "1.5.1", 13 | "@tensorflow/tfjs-core": "1.5.1", 14 | "@tensorflow/tfjs-data": "1.5.1", 15 | "@tensorflow/tfjs-layers": "1.5.1" 16 | } 17 | }, 18 | "@tensorflow/tfjs-converter": { 19 | "version": "1.5.1", 20 | "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-converter/-/tfjs-converter-1.5.1.tgz", 21 | "integrity": "sha512-M9tl2/ep8ntcZpmncHwKuvThsS7TaUWqJ9vJSgJmkazwTfAvlAJmZ8/p1miJ+m5sH1EJO4oTjiEmch6g8IA5IQ==" 22 | }, 23 | "@tensorflow/tfjs-core": { 24 | "version": "1.5.1", 25 | "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-core/-/tfjs-core-1.5.1.tgz", 26 | "integrity": "sha512-N4fsi8mLsRwRs8UJN2cARB1rYFxyVXkLyZ4wOusiR976BwwZbCwQrTTSIPzPqYT3rwiexEUzm7sM6ZaDl5dpXA==", 27 | "requires": { 28 | "@types/offscreencanvas": "~2019.3.0", 29 | "@types/seedrandom": "2.4.27", 30 | "@types/webgl-ext": "0.0.30", 31 | "@types/webgl2": "0.0.4", 32 | "node-fetch": "~2.1.2", 33 | "seedrandom": "2.4.3" 34 | } 35 | }, 36 | "@tensorflow/tfjs-data": { 37 | "version": "1.5.1", 38 | "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-data/-/tfjs-data-1.5.1.tgz", 39 | "integrity": "sha512-eu4X0tHS1Tng+cvMO9gkMhUWX/UZQ//VpiaZfQJfa3zvUgxw6s1MHJFb0JC1T1FOnEgDVriZ8G758ysJZOybog==", 40 | "requires": { 41 | "@types/node-fetch": "^2.1.2", 42 | "node-fetch": "~2.1.2" 43 | } 44 | }, 45 | "@tensorflow/tfjs-layers": { 46 | "version": "1.5.1", 47 | "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-layers/-/tfjs-layers-1.5.1.tgz", 48 | "integrity": "sha512-DyuhifqflK+bdpBRLAj3RuWm1eTVe8yNX2+WH+W+wmhpjGg7Yagnar6/66JdS2h3WUFoiplCpZRAVMVw631E5g==" 49 | }, 50 | "@tensorflow/tfjs-node": { 51 | "version": "1.5.1", 52 | "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-node/-/tfjs-node-1.5.1.tgz", 53 | "integrity": "sha512-gtIVn5zTLSgHlJUThN3knzKjycXOezmgL0W5MtxunJPznGmUZQive9efuCsgKcs5YKizTG+KprTILTSbi/2Owg==", 54 | "requires": { 55 | "@tensorflow/tfjs": "1.5.1", 56 | "adm-zip": "^0.4.11", 57 | "google-protobuf": "^3.9.2", 58 | "https-proxy-agent": "^2.2.1", 59 | "node-pre-gyp": "0.14.0", 60 | "progress": "^2.0.0", 61 | "rimraf": "^2.6.2", 62 | "tar": "^4.4.6" 63 | } 64 | }, 65 | "@types/node": { 66 | "version": "13.1.4", 67 | "resolved": "https://registry.npmjs.org/@types/node/-/node-13.1.4.tgz", 68 | "integrity": "sha512-Lue/mlp2egZJoHXZr4LndxDAd7i/7SQYhV0EjWfb/a4/OZ6tuVwMCVPiwkU5nsEipxEf7hmkSU7Em5VQ8P5NGA==" 69 | }, 70 | "@types/node-fetch": { 71 | "version": "2.5.4", 72 | "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.4.tgz", 73 | "integrity": "sha512-Oz6id++2qAOFuOlE1j0ouk1dzl3mmI1+qINPNBhi9nt/gVOz0G+13Ao6qjhdF0Ys+eOkhu6JnFmt38bR3H0POQ==", 74 | "requires": { 75 | "@types/node": "*" 76 | } 77 | }, 78 | "@types/offscreencanvas": { 79 | "version": "2019.3.0", 80 | "resolved": "https://registry.npmjs.org/@types/offscreencanvas/-/offscreencanvas-2019.3.0.tgz", 81 | "integrity": "sha512-esIJx9bQg+QYF0ra8GnvfianIY8qWB0GBx54PK5Eps6m+xTj86KLavHv6qDhzKcu5UUOgNfJ2pWaIIV7TRUd9Q==" 82 | }, 83 | "@types/seedrandom": { 84 | "version": "2.4.27", 85 | "resolved": "https://registry.npmjs.org/@types/seedrandom/-/seedrandom-2.4.27.tgz", 86 | "integrity": "sha1-nbVjk33YaRX2kJK8QyWdL0hXjkE=" 87 | }, 88 | "@types/webgl-ext": { 89 | "version": "0.0.30", 90 | "resolved": "https://registry.npmjs.org/@types/webgl-ext/-/webgl-ext-0.0.30.tgz", 91 | "integrity": "sha512-LKVgNmBxN0BbljJrVUwkxwRYqzsAEPcZOe6S2T6ZaBDIrFp0qu4FNlpc5sM1tGbXUYFgdVQIoeLk1Y1UoblyEg==" 92 | }, 93 | "@types/webgl2": { 94 | "version": "0.0.4", 95 | "resolved": "https://registry.npmjs.org/@types/webgl2/-/webgl2-0.0.4.tgz", 96 | "integrity": "sha512-PACt1xdErJbMUOUweSrbVM7gSIYm1vTncW2hF6Os/EeWi6TXYAYMPp+8v6rzHmypE5gHrxaxZNXgMkJVIdZpHw==" 97 | }, 98 | "abbrev": { 99 | "version": "1.1.1", 100 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", 101 | "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" 102 | }, 103 | "adm-zip": { 104 | "version": "0.4.13", 105 | "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.13.tgz", 106 | "integrity": "sha512-fERNJX8sOXfel6qCBCMPvZLzENBEhZTzKqg6vrOW5pvoEaQuJhRU4ndTAh6lHOxn1I6jnz2NHra56ZODM751uw==" 107 | }, 108 | "agent-base": { 109 | "version": "4.3.0", 110 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", 111 | "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", 112 | "requires": { 113 | "es6-promisify": "^5.0.0" 114 | } 115 | }, 116 | "ansi-regex": { 117 | "version": "2.1.1", 118 | "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", 119 | "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=" 120 | }, 121 | "aproba": { 122 | "version": "1.2.0", 123 | "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", 124 | "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==" 125 | }, 126 | "are-we-there-yet": { 127 | "version": "1.1.5", 128 | "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", 129 | "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", 130 | "requires": { 131 | "delegates": "^1.0.0", 132 | "readable-stream": "^2.0.6" 133 | } 134 | }, 135 | "balanced-match": { 136 | "version": "1.0.0", 137 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", 138 | "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" 139 | }, 140 | "brace-expansion": { 141 | "version": "1.1.11", 142 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 143 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 144 | "requires": { 145 | "balanced-match": "^1.0.0", 146 | "concat-map": "0.0.1" 147 | } 148 | }, 149 | "chownr": { 150 | "version": "1.1.3", 151 | "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.3.tgz", 152 | "integrity": "sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw==" 153 | }, 154 | "code-point-at": { 155 | "version": "1.1.0", 156 | "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", 157 | "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=" 158 | }, 159 | "concat-map": { 160 | "version": "0.0.1", 161 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 162 | "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" 163 | }, 164 | "console-control-strings": { 165 | "version": "1.1.0", 166 | "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", 167 | "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=" 168 | }, 169 | "core-util-is": { 170 | "version": "1.0.2", 171 | "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", 172 | "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" 173 | }, 174 | "debug": { 175 | "version": "3.2.6", 176 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", 177 | "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", 178 | "requires": { 179 | "ms": "^2.1.1" 180 | } 181 | }, 182 | "deep-extend": { 183 | "version": "0.6.0", 184 | "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", 185 | "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" 186 | }, 187 | "delegates": { 188 | "version": "1.0.0", 189 | "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", 190 | "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=" 191 | }, 192 | "detect-libc": { 193 | "version": "1.0.3", 194 | "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", 195 | "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups=" 196 | }, 197 | "es6-promise": { 198 | "version": "4.2.8", 199 | "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", 200 | "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" 201 | }, 202 | "es6-promisify": { 203 | "version": "5.0.0", 204 | "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", 205 | "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", 206 | "requires": { 207 | "es6-promise": "^4.0.3" 208 | } 209 | }, 210 | "fs-minipass": { 211 | "version": "1.2.7", 212 | "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", 213 | "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", 214 | "requires": { 215 | "minipass": "^2.6.0" 216 | } 217 | }, 218 | "fs.realpath": { 219 | "version": "1.0.0", 220 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", 221 | "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" 222 | }, 223 | "gauge": { 224 | "version": "2.7.4", 225 | "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", 226 | "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", 227 | "requires": { 228 | "aproba": "^1.0.3", 229 | "console-control-strings": "^1.0.0", 230 | "has-unicode": "^2.0.0", 231 | "object-assign": "^4.1.0", 232 | "signal-exit": "^3.0.0", 233 | "string-width": "^1.0.1", 234 | "strip-ansi": "^3.0.1", 235 | "wide-align": "^1.1.0" 236 | } 237 | }, 238 | "glob": { 239 | "version": "7.1.6", 240 | "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", 241 | "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", 242 | "requires": { 243 | "fs.realpath": "^1.0.0", 244 | "inflight": "^1.0.4", 245 | "inherits": "2", 246 | "minimatch": "^3.0.4", 247 | "once": "^1.3.0", 248 | "path-is-absolute": "^1.0.0" 249 | } 250 | }, 251 | "google-protobuf": { 252 | "version": "3.11.2", 253 | "resolved": "https://registry.npmjs.org/google-protobuf/-/google-protobuf-3.11.2.tgz", 254 | "integrity": "sha512-T4fin7lcYLUPj2ChUZ4DvfuuHtg3xi1621qeRZt2J7SvOQusOzq+sDT4vbotWTCjUXJoR36CA016LlhtPy80uQ==" 255 | }, 256 | "has-unicode": { 257 | "version": "2.0.1", 258 | "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", 259 | "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=" 260 | }, 261 | "https-proxy-agent": { 262 | "version": "2.2.4", 263 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", 264 | "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", 265 | "requires": { 266 | "agent-base": "^4.3.0", 267 | "debug": "^3.1.0" 268 | } 269 | }, 270 | "iconv-lite": { 271 | "version": "0.4.24", 272 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 273 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 274 | "requires": { 275 | "safer-buffer": ">= 2.1.2 < 3" 276 | } 277 | }, 278 | "ignore-walk": { 279 | "version": "3.0.3", 280 | "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", 281 | "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", 282 | "requires": { 283 | "minimatch": "^3.0.4" 284 | } 285 | }, 286 | "inflight": { 287 | "version": "1.0.6", 288 | "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", 289 | "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", 290 | "requires": { 291 | "once": "^1.3.0", 292 | "wrappy": "1" 293 | } 294 | }, 295 | "inherits": { 296 | "version": "2.0.4", 297 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 298 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 299 | }, 300 | "ini": { 301 | "version": "1.3.5", 302 | "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", 303 | "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" 304 | }, 305 | "is-fullwidth-code-point": { 306 | "version": "1.0.0", 307 | "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", 308 | "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", 309 | "requires": { 310 | "number-is-nan": "^1.0.0" 311 | } 312 | }, 313 | "isarray": { 314 | "version": "1.0.0", 315 | "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", 316 | "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" 317 | }, 318 | "minimatch": { 319 | "version": "3.0.4", 320 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", 321 | "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", 322 | "requires": { 323 | "brace-expansion": "^1.1.7" 324 | } 325 | }, 326 | "minimist": { 327 | "version": "0.0.8", 328 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", 329 | "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" 330 | }, 331 | "minipass": { 332 | "version": "2.9.0", 333 | "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", 334 | "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", 335 | "requires": { 336 | "safe-buffer": "^5.1.2", 337 | "yallist": "^3.0.0" 338 | } 339 | }, 340 | "minizlib": { 341 | "version": "1.3.3", 342 | "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", 343 | "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", 344 | "requires": { 345 | "minipass": "^2.9.0" 346 | } 347 | }, 348 | "mkdirp": { 349 | "version": "0.5.1", 350 | "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", 351 | "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", 352 | "requires": { 353 | "minimist": "0.0.8" 354 | } 355 | }, 356 | "ms": { 357 | "version": "2.1.2", 358 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 359 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 360 | }, 361 | "needle": { 362 | "version": "2.4.0", 363 | "resolved": "https://registry.npmjs.org/needle/-/needle-2.4.0.tgz", 364 | "integrity": "sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg==", 365 | "requires": { 366 | "debug": "^3.2.6", 367 | "iconv-lite": "^0.4.4", 368 | "sax": "^1.2.4" 369 | } 370 | }, 371 | "node-fetch": { 372 | "version": "2.1.2", 373 | "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.1.2.tgz", 374 | "integrity": "sha1-q4hOjn5X44qUR1POxwb3iNF2i7U=" 375 | }, 376 | "node-pre-gyp": { 377 | "version": "0.14.0", 378 | "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz", 379 | "integrity": "sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA==", 380 | "requires": { 381 | "detect-libc": "^1.0.2", 382 | "mkdirp": "^0.5.1", 383 | "needle": "^2.2.1", 384 | "nopt": "^4.0.1", 385 | "npm-packlist": "^1.1.6", 386 | "npmlog": "^4.0.2", 387 | "rc": "^1.2.7", 388 | "rimraf": "^2.6.1", 389 | "semver": "^5.3.0", 390 | "tar": "^4.4.2" 391 | } 392 | }, 393 | "nopt": { 394 | "version": "4.0.1", 395 | "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", 396 | "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", 397 | "requires": { 398 | "abbrev": "1", 399 | "osenv": "^0.1.4" 400 | } 401 | }, 402 | "npm-bundled": { 403 | "version": "1.1.1", 404 | "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz", 405 | "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==", 406 | "requires": { 407 | "npm-normalize-package-bin": "^1.0.1" 408 | } 409 | }, 410 | "npm-normalize-package-bin": { 411 | "version": "1.0.1", 412 | "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", 413 | "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==" 414 | }, 415 | "npm-packlist": { 416 | "version": "1.4.7", 417 | "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.7.tgz", 418 | "integrity": "sha512-vAj7dIkp5NhieaGZxBJB8fF4R0078rqsmhJcAfXZ6O7JJhjhPK96n5Ry1oZcfLXgfun0GWTZPOxaEyqv8GBykQ==", 419 | "requires": { 420 | "ignore-walk": "^3.0.1", 421 | "npm-bundled": "^1.0.1" 422 | } 423 | }, 424 | "npmlog": { 425 | "version": "4.1.2", 426 | "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", 427 | "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", 428 | "requires": { 429 | "are-we-there-yet": "~1.1.2", 430 | "console-control-strings": "~1.1.0", 431 | "gauge": "~2.7.3", 432 | "set-blocking": "~2.0.0" 433 | } 434 | }, 435 | "number-is-nan": { 436 | "version": "1.0.1", 437 | "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", 438 | "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=" 439 | }, 440 | "object-assign": { 441 | "version": "4.1.1", 442 | "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", 443 | "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" 444 | }, 445 | "once": { 446 | "version": "1.4.0", 447 | "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", 448 | "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", 449 | "requires": { 450 | "wrappy": "1" 451 | } 452 | }, 453 | "os-homedir": { 454 | "version": "1.0.2", 455 | "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", 456 | "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=" 457 | }, 458 | "os-tmpdir": { 459 | "version": "1.0.2", 460 | "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", 461 | "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=" 462 | }, 463 | "osenv": { 464 | "version": "0.1.5", 465 | "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", 466 | "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", 467 | "requires": { 468 | "os-homedir": "^1.0.0", 469 | "os-tmpdir": "^1.0.0" 470 | } 471 | }, 472 | "path-is-absolute": { 473 | "version": "1.0.1", 474 | "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", 475 | "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" 476 | }, 477 | "process-nextick-args": { 478 | "version": "2.0.1", 479 | "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", 480 | "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" 481 | }, 482 | "progress": { 483 | "version": "2.0.3", 484 | "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", 485 | "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" 486 | }, 487 | "rc": { 488 | "version": "1.2.8", 489 | "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", 490 | "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", 491 | "requires": { 492 | "deep-extend": "^0.6.0", 493 | "ini": "~1.3.0", 494 | "minimist": "^1.2.0", 495 | "strip-json-comments": "~2.0.1" 496 | }, 497 | "dependencies": { 498 | "minimist": { 499 | "version": "1.2.0", 500 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", 501 | "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=" 502 | } 503 | } 504 | }, 505 | "readable-stream": { 506 | "version": "2.3.6", 507 | "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", 508 | "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", 509 | "requires": { 510 | "core-util-is": "~1.0.0", 511 | "inherits": "~2.0.3", 512 | "isarray": "~1.0.0", 513 | "process-nextick-args": "~2.0.0", 514 | "safe-buffer": "~5.1.1", 515 | "string_decoder": "~1.1.1", 516 | "util-deprecate": "~1.0.1" 517 | } 518 | }, 519 | "rimraf": { 520 | "version": "2.7.1", 521 | "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", 522 | "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", 523 | "requires": { 524 | "glob": "^7.1.3" 525 | } 526 | }, 527 | "safe-buffer": { 528 | "version": "5.1.2", 529 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 530 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" 531 | }, 532 | "safer-buffer": { 533 | "version": "2.1.2", 534 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 535 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 536 | }, 537 | "sax": { 538 | "version": "1.2.4", 539 | "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", 540 | "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" 541 | }, 542 | "seedrandom": { 543 | "version": "2.4.3", 544 | "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-2.4.3.tgz", 545 | "integrity": "sha1-JDhQTa0zkXMUv/GKxNeU8W1qrsw=" 546 | }, 547 | "semver": { 548 | "version": "5.7.1", 549 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 550 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" 551 | }, 552 | "set-blocking": { 553 | "version": "2.0.0", 554 | "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", 555 | "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=" 556 | }, 557 | "signal-exit": { 558 | "version": "3.0.2", 559 | "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", 560 | "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0=" 561 | }, 562 | "string-width": { 563 | "version": "1.0.2", 564 | "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", 565 | "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", 566 | "requires": { 567 | "code-point-at": "^1.0.0", 568 | "is-fullwidth-code-point": "^1.0.0", 569 | "strip-ansi": "^3.0.0" 570 | } 571 | }, 572 | "string_decoder": { 573 | "version": "1.1.1", 574 | "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", 575 | "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", 576 | "requires": { 577 | "safe-buffer": "~5.1.0" 578 | } 579 | }, 580 | "strip-ansi": { 581 | "version": "3.0.1", 582 | "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", 583 | "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", 584 | "requires": { 585 | "ansi-regex": "^2.0.0" 586 | } 587 | }, 588 | "strip-json-comments": { 589 | "version": "2.0.1", 590 | "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", 591 | "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=" 592 | }, 593 | "tar": { 594 | "version": "4.4.13", 595 | "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", 596 | "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", 597 | "requires": { 598 | "chownr": "^1.1.1", 599 | "fs-minipass": "^1.2.5", 600 | "minipass": "^2.8.6", 601 | "minizlib": "^1.2.1", 602 | "mkdirp": "^0.5.0", 603 | "safe-buffer": "^5.1.2", 604 | "yallist": "^3.0.3" 605 | } 606 | }, 607 | "util-deprecate": { 608 | "version": "1.0.2", 609 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 610 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 611 | }, 612 | "wide-align": { 613 | "version": "1.1.3", 614 | "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", 615 | "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", 616 | "requires": { 617 | "string-width": "^1.0.2 || 2" 618 | } 619 | }, 620 | "wrappy": { 621 | "version": "1.0.2", 622 | "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", 623 | "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" 624 | }, 625 | "yallist": { 626 | "version": "3.1.1", 627 | "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", 628 | "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" 629 | } 630 | } 631 | } 632 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "M4L-x-rhythm-can", 3 | "version": "1.0.0", 4 | "description": "", 5 | "main": "rhythm-gan.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "repository": { 10 | "type": "git", 11 | "url": "git+https://github.com/sfc-computational-creativity-lab/M4L-x-rhythm-can.git" 12 | }, 13 | "keywords": [], 14 | "author": "", 15 | "license": "ISC", 16 | "bugs": { 17 | "url": "https://github.com/sfc-computational-creativity-lab/M4L-x-rhythm-can/issues" 18 | }, 19 | "homepage": "https://github.com/sfc-computational-creativity-lab/M4L-x-rhythm-can#readme", 20 | "dependencies": { 21 | "@tensorflow/tfjs-node": "^1.5.1" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /releases/M4L-rhythm-can.amxd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/naotokui/M4L-CreativeGAN-Rhythm/e1cb5b27e798166330624fbd7622a76a0448f2b2/releases/M4L-rhythm-can.amxd -------------------------------------------------------------------------------- /releases/models/conditional_generator/group1-shard1of1.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/naotokui/M4L-CreativeGAN-Rhythm/e1cb5b27e798166330624fbd7622a76a0448f2b2/releases/models/conditional_generator/group1-shard1of1.bin -------------------------------------------------------------------------------- /releases/models/conditional_generator/model.json: -------------------------------------------------------------------------------- 1 | {"format": "layers-model", "generatedBy": "keras v2.3.1", "convertedBy": "TensorFlow.js Converter v1.4.0", "modelTopology": {"keras_version": "2.3.1", "backend": "tensorflow", "model_config": {"class_name": "Model", "config": {"name": "model_2", "layers": [{"name": "input_3", "class_name": "InputLayer", "config": {"batch_input_shape": [null, 1], "dtype": "int32", "sparse": false, "name": "input_3"}, "inbound_nodes": []}, {"name": "embedding_2", "class_name": "Embedding", "config": {"name": "embedding_2", "trainable": true, "batch_input_shape": [null, 1], "dtype": "float32", "input_dim": 7, "output_dim": 100, "embeddings_initializer": {"class_name": "RandomUniform", "config": {"minval": -0.05, "maxval": 0.05, "seed": null}}, "embeddings_regularizer": null, "activity_regularizer": null, "embeddings_constraint": null, "mask_zero": false, "input_length": 1}, "inbound_nodes": [[["input_3", 0, 0, {}]]]}, {"name": "input_2", "class_name": "InputLayer", "config": {"batch_input_shape": [null, 100], "dtype": "float32", "sparse": false, "name": "input_2"}, "inbound_nodes": []}, {"name": "flatten_2", "class_name": "Flatten", "config": {"name": "flatten_2", "trainable": true, "dtype": "float32", "data_format": "channels_last"}, "inbound_nodes": [[["embedding_2", 0, 0, {}]]]}, {"name": "multiply_1", "class_name": "Multiply", "config": {"name": "multiply_1", "trainable": true, "dtype": "float32"}, "inbound_nodes": [[["input_2", 0, 0, {}], ["flatten_2", 0, 0, {}]]]}, {"name": "dense_3", "class_name": "Dense", "config": {"name": "dense_3", "trainable": true, "dtype": "float32", "units": 512, "activation": "linear", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["multiply_1", 0, 0, {}]]]}, {"name": "leaky_re_lu_2", "class_name": "LeakyReLU", "config": {"name": "leaky_re_lu_2", "trainable": true, "dtype": "float32", "alpha": 0.20000000298023224}, "inbound_nodes": [[["dense_3", 0, 0, {}]]]}, {"name": "batch_normalization_1", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_1", "trainable": true, "dtype": "float32", "axis": -1, "momentum": 0.9, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["leaky_re_lu_2", 0, 0, {}]]]}, {"name": "dense_4", "class_name": "Dense", "config": {"name": "dense_4", "trainable": true, "dtype": "float32", "units": 1024, "activation": "linear", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["batch_normalization_1", 0, 0, {}]]]}, {"name": "leaky_re_lu_3", "class_name": "LeakyReLU", "config": {"name": "leaky_re_lu_3", "trainable": true, "dtype": "float32", "alpha": 0.20000000298023224}, "inbound_nodes": [[["dense_4", 0, 0, {}]]]}, {"name": "batch_normalization_2", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_2", "trainable": true, "dtype": "float32", "axis": -1, "momentum": 0.9, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["leaky_re_lu_3", 0, 0, {}]]]}, {"name": "reshape_3", "class_name": "Reshape", "config": {"name": "reshape_3", "trainable": true, "dtype": "float32", "target_shape": [32, 32]}, "inbound_nodes": [[["batch_normalization_2", 0, 0, {}]]]}, {"name": "dropout_1", "class_name": "Dropout", "config": {"name": "dropout_1", "trainable": true, "dtype": "float32", "rate": 0.3, "noise_shape": null, "seed": null}, "inbound_nodes": [[["reshape_3", 0, 0, {}]]]}, {"name": "lstm_4", "class_name": "LSTM", "config": {"name": "lstm_4", "trainable": true, "dtype": "float32", "return_sequences": true, "return_state": false, "go_backwards": false, "stateful": false, "unroll": false, "units": 128, "activation": "tanh", "recurrent_activation": "sigmoid", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "recurrent_initializer": {"class_name": "Orthogonal", "config": {"gain": 1.0, "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "unit_forget_bias": true, "kernel_regularizer": null, "recurrent_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "recurrent_constraint": null, "bias_constraint": null, "dropout": 0.0, "recurrent_dropout": 0.0, "implementation": 2}, "inbound_nodes": [[["dropout_1", 0, 0, {}]]]}, {"name": "lstm_5", "class_name": "LSTM", "config": {"name": "lstm_5", "trainable": true, "dtype": "float32", "return_sequences": true, "return_state": false, "go_backwards": false, "stateful": false, "unroll": false, "units": 128, "activation": "tanh", "recurrent_activation": "sigmoid", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "recurrent_initializer": {"class_name": "Orthogonal", "config": {"gain": 1.0, "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "unit_forget_bias": true, "kernel_regularizer": null, "recurrent_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "recurrent_constraint": null, "bias_constraint": null, "dropout": 0.0, "recurrent_dropout": 0.0, "implementation": 2}, "inbound_nodes": [[["lstm_4", 0, 0, {}]]]}, {"name": "lstm_6", "class_name": "LSTM", "config": {"name": "lstm_6", "trainable": true, "dtype": "float32", "return_sequences": true, "return_state": false, "go_backwards": false, "stateful": false, "unroll": false, "units": 9, "activation": "tanh", "recurrent_activation": "sigmoid", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "recurrent_initializer": {"class_name": "Orthogonal", "config": {"gain": 1.0, "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "unit_forget_bias": true, "kernel_regularizer": null, "recurrent_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "recurrent_constraint": null, "bias_constraint": null, "dropout": 0.0, "recurrent_dropout": 0.0, "implementation": 2}, "inbound_nodes": [[["lstm_5", 0, 0, {}]]]}, {"name": "leaky_re_lu_4", "class_name": "LeakyReLU", "config": {"name": "leaky_re_lu_4", "trainable": true, "dtype": "float32", "alpha": 0.30000001192092896}, "inbound_nodes": [[["lstm_6", 0, 0, {}]]]}], "input_layers": [["input_2", 0, 0], ["input_3", 0, 0]], "output_layers": [["leaky_re_lu_4", 0, 0]]}}}, "weightsManifest": [{"paths": ["group1-shard1of1.bin"], "weights": [{"name": "batch_normalization_1/gamma", "shape": [512], "dtype": "float32"}, {"name": "batch_normalization_1/beta", "shape": [512], "dtype": "float32"}, {"name": "batch_normalization_1/moving_mean", "shape": [512], "dtype": "float32"}, {"name": "batch_normalization_1/moving_variance", "shape": [512], "dtype": "float32"}, {"name": "batch_normalization_2/gamma", "shape": [1024], "dtype": "float32"}, {"name": "batch_normalization_2/beta", "shape": [1024], "dtype": "float32"}, {"name": "batch_normalization_2/moving_mean", "shape": [1024], "dtype": "float32"}, {"name": "batch_normalization_2/moving_variance", "shape": [1024], "dtype": "float32"}, {"name": "dense_3/kernel", "shape": [100, 512], "dtype": "float32"}, {"name": "dense_3/bias", "shape": [512], "dtype": "float32"}, {"name": "dense_4/kernel", "shape": [512, 1024], "dtype": "float32"}, {"name": "dense_4/bias", "shape": [1024], "dtype": "float32"}, {"name": "embedding_2/embeddings", "shape": [7, 100], "dtype": "float32"}, {"name": "lstm_4/kernel", "shape": [32, 512], "dtype": "float32"}, {"name": "lstm_4/recurrent_kernel", "shape": [128, 512], "dtype": "float32"}, {"name": "lstm_4/bias", "shape": [512], "dtype": "float32"}, {"name": "lstm_5/kernel", "shape": [128, 512], "dtype": "float32"}, {"name": "lstm_5/recurrent_kernel", "shape": [128, 512], "dtype": "float32"}, {"name": "lstm_5/bias", "shape": [512], "dtype": "float32"}, {"name": "lstm_6/kernel", "shape": [128, 36], "dtype": "float32"}, {"name": "lstm_6/recurrent_kernel", "shape": [9, 36], "dtype": "float32"}, {"name": "lstm_6/bias", "shape": [36], "dtype": "float32"}]}]} -------------------------------------------------------------------------------- /releases/models/creative_gan_generator/group1-shard1of1.bin: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/naotokui/M4L-CreativeGAN-Rhythm/e1cb5b27e798166330624fbd7622a76a0448f2b2/releases/models/creative_gan_generator/group1-shard1of1.bin -------------------------------------------------------------------------------- /releases/models/creative_gan_generator/model.json: -------------------------------------------------------------------------------- 1 | {"format": "layers-model", "generatedBy": "keras v2.3.1", "convertedBy": "TensorFlow.js Converter v1.4.0", "modelTopology": {"keras_version": "2.3.1", "backend": "tensorflow", "model_config": {"class_name": "Model", "config": {"name": "model_2", "layers": [{"name": "input_1", "class_name": "InputLayer", "config": {"batch_input_shape": [null, 100], "dtype": "float32", "sparse": false, "name": "input_1"}, "inbound_nodes": []}, {"name": "dense_3", "class_name": "Dense", "config": {"name": "dense_3", "trainable": true, "dtype": "float32", "units": 512, "activation": "linear", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["input_1", 0, 0, {}]]]}, {"name": "leaky_re_lu_2", "class_name": "LeakyReLU", "config": {"name": "leaky_re_lu_2", "trainable": true, "dtype": "float32", "alpha": 0.20000000298023224}, "inbound_nodes": [[["dense_3", 0, 0, {}]]]}, {"name": "batch_normalization_3", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_3", "trainable": true, "dtype": "float32", "axis": -1, "momentum": 0.9, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["leaky_re_lu_2", 0, 0, {}]]]}, {"name": "dense_4", "class_name": "Dense", "config": {"name": "dense_4", "trainable": true, "dtype": "float32", "units": 1024, "activation": "linear", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "kernel_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "bias_constraint": null}, "inbound_nodes": [[["batch_normalization_3", 0, 0, {}]]]}, {"name": "leaky_re_lu_3", "class_name": "LeakyReLU", "config": {"name": "leaky_re_lu_3", "trainable": true, "dtype": "float32", "alpha": 0.20000000298023224}, "inbound_nodes": [[["dense_4", 0, 0, {}]]]}, {"name": "batch_normalization_4", "class_name": "BatchNormalization", "config": {"name": "batch_normalization_4", "trainable": true, "dtype": "float32", "axis": -1, "momentum": 0.9, "epsilon": 0.001, "center": true, "scale": true, "beta_initializer": {"class_name": "Zeros", "config": {}}, "gamma_initializer": {"class_name": "Ones", "config": {}}, "moving_mean_initializer": {"class_name": "Zeros", "config": {}}, "moving_variance_initializer": {"class_name": "Ones", "config": {}}, "beta_regularizer": null, "gamma_regularizer": null, "beta_constraint": null, "gamma_constraint": null}, "inbound_nodes": [[["leaky_re_lu_3", 0, 0, {}]]]}, {"name": "reshape_1", "class_name": "Reshape", "config": {"name": "reshape_1", "trainable": true, "dtype": "float32", "target_shape": [32, 32]}, "inbound_nodes": [[["batch_normalization_4", 0, 0, {}]]]}, {"name": "dropout_2", "class_name": "Dropout", "config": {"name": "dropout_2", "trainable": true, "dtype": "float32", "rate": 0.1, "noise_shape": null, "seed": null}, "inbound_nodes": [[["reshape_1", 0, 0, {}]]]}, {"name": "lstm_5", "class_name": "LSTM", "config": {"name": "lstm_5", "trainable": true, "dtype": "float32", "return_sequences": true, "return_state": false, "go_backwards": false, "stateful": false, "unroll": false, "units": 128, "activation": "tanh", "recurrent_activation": "sigmoid", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "recurrent_initializer": {"class_name": "Orthogonal", "config": {"gain": 1.0, "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "unit_forget_bias": true, "kernel_regularizer": null, "recurrent_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "recurrent_constraint": null, "bias_constraint": null, "dropout": 0.0, "recurrent_dropout": 0.0, "implementation": 2}, "inbound_nodes": [[["dropout_2", 0, 0, {}]]]}, {"name": "lstm_6", "class_name": "LSTM", "config": {"name": "lstm_6", "trainable": true, "dtype": "float32", "return_sequences": true, "return_state": false, "go_backwards": false, "stateful": false, "unroll": false, "units": 128, "activation": "tanh", "recurrent_activation": "sigmoid", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "recurrent_initializer": {"class_name": "Orthogonal", "config": {"gain": 1.0, "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "unit_forget_bias": true, "kernel_regularizer": null, "recurrent_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "recurrent_constraint": null, "bias_constraint": null, "dropout": 0.0, "recurrent_dropout": 0.0, "implementation": 2}, "inbound_nodes": [[["lstm_5", 0, 0, {}]]]}, {"name": "lstm_7", "class_name": "LSTM", "config": {"name": "lstm_7", "trainable": true, "dtype": "float32", "return_sequences": true, "return_state": false, "go_backwards": false, "stateful": false, "unroll": false, "units": 9, "activation": "sigmoid", "recurrent_activation": "sigmoid", "use_bias": true, "kernel_initializer": {"class_name": "VarianceScaling", "config": {"scale": 1.0, "mode": "fan_avg", "distribution": "uniform", "seed": null}}, "recurrent_initializer": {"class_name": "Orthogonal", "config": {"gain": 1.0, "seed": null}}, "bias_initializer": {"class_name": "Zeros", "config": {}}, "unit_forget_bias": true, "kernel_regularizer": null, "recurrent_regularizer": null, "bias_regularizer": null, "activity_regularizer": null, "kernel_constraint": null, "recurrent_constraint": null, "bias_constraint": null, "dropout": 0.0, "recurrent_dropout": 0.0, "implementation": 2}, "inbound_nodes": [[["lstm_6", 0, 0, {}]]]}], "input_layers": [["input_1", 0, 0]], "output_layers": [["lstm_7", 0, 0]]}}}, "weightsManifest": [{"paths": ["group1-shard1of1.bin"], "weights": [{"name": "batch_normalization_3/gamma", "shape": [512], "dtype": "float32"}, {"name": "batch_normalization_3/beta", "shape": [512], "dtype": "float32"}, {"name": "batch_normalization_3/moving_mean", "shape": [512], "dtype": "float32"}, {"name": "batch_normalization_3/moving_variance", "shape": [512], "dtype": "float32"}, {"name": "batch_normalization_4/gamma", "shape": [1024], "dtype": "float32"}, {"name": "batch_normalization_4/beta", "shape": [1024], "dtype": "float32"}, {"name": "batch_normalization_4/moving_mean", "shape": [1024], "dtype": "float32"}, {"name": "batch_normalization_4/moving_variance", "shape": [1024], "dtype": "float32"}, {"name": "dense_3/kernel", "shape": [100, 512], "dtype": "float32"}, {"name": "dense_3/bias", "shape": [512], "dtype": "float32"}, {"name": "dense_4/kernel", "shape": [512, 1024], "dtype": "float32"}, {"name": "dense_4/bias", "shape": [1024], "dtype": "float32"}, {"name": "lstm_5/kernel", "shape": [32, 512], "dtype": "float32"}, {"name": "lstm_5/recurrent_kernel", "shape": [128, 512], "dtype": "float32"}, {"name": "lstm_5/bias", "shape": [512], "dtype": "float32"}, {"name": "lstm_6/kernel", "shape": [128, 512], "dtype": "float32"}, {"name": "lstm_6/recurrent_kernel", "shape": [128, 512], "dtype": "float32"}, {"name": "lstm_6/bias", "shape": [512], "dtype": "float32"}, {"name": "lstm_7/kernel", "shape": [128, 36], "dtype": "float32"}, {"name": "lstm_7/recurrent_kernel", "shape": [9, 36], "dtype": "float32"}, {"name": "lstm_7/bias", "shape": [36], "dtype": "float32"}]}]} -------------------------------------------------------------------------------- /rhythm-gan.js: -------------------------------------------------------------------------------- 1 | const path = require('path'); 2 | const Max = require('max-api'); 3 | 4 | const tf = require('@tensorflow/tfjs-node'); 5 | 6 | // Constants 7 | const MIDI_DRUM_MAP = require('./src/constants.js').MIDI_DRUM_MAP; 8 | const DRUM_CLASSES = require('./src/constants.js').DRUM_CLASSES; 9 | const NUM_DRUM_CLASSES = require('./src/constants.js').NUM_DRUM_CLASSES; 10 | const LOOP_DURATION = require('./src/constants.js').LOOP_DURATION; 11 | 12 | const Z_DIM = 100; 13 | 14 | // Global Variables 15 | var generator; 16 | var isModelLoaded = false; 17 | var isGenerating = false; 18 | var last_z = null; 19 | 20 | async function loadModel(filepath){ 21 | generator = await tf.loadLayersModel(filepath); 22 | } 23 | 24 | function generate(genre=-1, noise=-1){ 25 | let zs = tf.randomNormal([1, Z_DIM]); 26 | 27 | if (last_z != null && noise >= 0.0){ 28 | let ns = zs.mul(tf.scalar(noise)); 29 | zs = tf.add(last_z, ns); 30 | } else { 31 | last_z = zs; 32 | } 33 | 34 | return doesGenerate(zs, genre); 35 | } 36 | 37 | function doesGenerate(zs, genre=-1){ 38 | 39 | // conditioned with genre 40 | if (genre >= 0){ 41 | let condition = tf.tensor([[genre]]) 42 | var outputsOn = generator.apply([zs, condition]); 43 | } 44 | // non conditional 45 | else { 46 | var outputsOn = generator.apply(zs); 47 | } 48 | return outputsOn.squeeze().transpose().arraySync(); 49 | } 50 | 51 | Max.addHandler("loadmodel", (path)=>{ 52 | filepath = "file://" + path; 53 | loadModel(filepath); 54 | isModelLoaded = true; 55 | console.log("Model loaded!"); 56 | Max.outlet("status", "Ready to generate!"); 57 | 58 | }); 59 | 60 | Max.addHandler("generate", (threshold, genre=-1)=>{ 61 | generatePattern(threshold, genre); 62 | }); 63 | 64 | Max.addHandler("generate_with_last_z", (noise, threshold, genre=-1)=>{ 65 | generatePattern(threshold, genre, noise); 66 | }); 67 | 68 | async function generatePattern(threshold, genre, noise){ 69 | Max.outlet("status", "-"); 70 | if (isModelLoaded){ 71 | if (isGenerating) return; 72 | 73 | isGenerating = true; 74 | let onsets = generate(genre, noise); 75 | 76 | // console.log(onsets); 77 | 78 | Max.outlet("matrix_clear", 1); // clear all 79 | for (var i=0; i< NUM_DRUM_CLASSES; i++){ 80 | var sequence = []; // for velocity 81 | // var sequenceTS = []; // for timeshift 82 | // output for matrix view 83 | for (var j=0; j < LOOP_DURATION; j++){ 84 | // if (pattern[i * LOOP_DURATION + j] > 0.2) x = 1; 85 | if (onsets[i][j] > threshold){ 86 | Max.outlet("matrix_output", j + 1, i + 1, 1); // index for live.grid starts from 1 87 | 88 | // for live.step 89 | sequence.push(Math.floor(onsets[i][j]*127.)); // 0-1 -> 0-127 90 | // sequenceTS.push(Math.floor(utils.scale(timeshifts[i][j], -1., 1, 0, 127))); // -1 - 1 -> 0 - 127 91 | } else { 92 | sequence.push(0); 93 | // sequenceTS.push(64); 94 | } 95 | } 96 | 97 | // output for live.step object 98 | Max.outlet("seq_output", i+1, sequence.join(" ")); 99 | // Max.outlet("timeshift_output", i+1, sequenceTS.join(" ")); 100 | } 101 | Max.outlet("generated", 1); 102 | isGenerating = false; 103 | } else { 104 | console.error("Model is not loaded yet"); 105 | Max.outlet("status", "No Model Loaded"); 106 | } 107 | } 108 | 109 | -------------------------------------------------------------------------------- /src/constants.js: -------------------------------------------------------------------------------- 1 | 2 | 3 | const DRUM_CLASSES = [ 4 | 'Kick', 5 | 'Snare', 6 | 'Hi-hat closed', 7 | 'Hi-hat open', 8 | 'Tom low', 9 | 'Tom mid', 10 | 'Tom high', 11 | 'Clap', 12 | 'Rim' 13 | ] 14 | 15 | const MIDI_DRUM_MAP = { 16 | 36: 0, 17 | 35: 0, 18 | 38: 1, 19 | 27: 1, 20 | 28: 1, 21 | 31: 1, 22 | 32: 1, 23 | 33: 1, 24 | 34: 1, 25 | 37: 1, 26 | 39: 1, 27 | 40: 1, 28 | 56: 1, 29 | 65: 1, 30 | 66: 1, 31 | 75: 1, 32 | 85: 1, 33 | 42: 2, 34 | 44: 2, 35 | 54: 2, 36 | 68: 2, 37 | 69: 2, 38 | 70: 2, 39 | 71: 2, 40 | 73: 2, 41 | 78: 2, 42 | 80: 2, 43 | 46: 3, 44 | 67: 3, 45 | 72: 3, 46 | 74: 3, 47 | 79: 3, 48 | 81: 3, 49 | 45: 4, 50 | 29: 4, 51 | 41: 4, 52 | 61: 4, 53 | 64: 4, 54 | 84: 4, 55 | 48: 5, 56 | 47: 5, 57 | 60: 5, 58 | 63: 5, 59 | 77: 5, 60 | 86: 5, 61 | 87: 5, 62 | 50: 6, 63 | 30: 6, 64 | 43: 6, 65 | 62: 6, 66 | 76: 6, 67 | 83: 6, 68 | 49: 7, 69 | 55: 7, 70 | 57: 7, 71 | 58: 7, 72 | 51: 8, 73 | 52: 8, 74 | 53: 8, 75 | 59: 8, 76 | 82: 8 77 | } 78 | 79 | const NUM_DRUM_CLASSES = DRUM_CLASSES.length; 80 | const LOOP_DURATION = 32; // 2bars x 16th note 81 | 82 | const ORIGINAL_DIM = NUM_DRUM_CLASSES * LOOP_DURATION; 83 | 84 | exports.MIDI_DRUM_MAP = MIDI_DRUM_MAP; 85 | exports.DRUM_CLASSES = DRUM_CLASSES; 86 | 87 | exports.NUM_DRUM_CLASSES = NUM_DRUM_CLASSES; 88 | exports.LOOP_DURATION = LOOP_DURATION; 89 | exports.ORIGINAL_DIM = ORIGINAL_DIM; -------------------------------------------------------------------------------- /subpatches/count_for_me.maxpat: -------------------------------------------------------------------------------- 1 | { 2 | "patcher" : { 3 | "fileversion" : 1, 4 | "appversion" : { 5 | "major" : 8, 6 | "minor" : 0, 7 | "revision" : 5, 8 | "architecture" : "x64", 9 | "modernui" : 1 10 | } 11 | , 12 | "classnamespace" : "box", 13 | "rect" : [ 386.0, 566.0, 504.0, 367.0 ], 14 | "bglocked" : 0, 15 | "openinpresentation" : 0, 16 | "default_fontsize" : 12.0, 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" : 1, 33 | "enablevscroll" : 1, 34 | "devicewidth" : 0.0, 35 | "description" : "", 36 | "digest" : "", 37 | "tags" : "", 38 | "style" : "", 39 | "subpatcher_template" : "no_top", 40 | "boxes" : [ { 41 | "box" : { 42 | "id" : "obj-18", 43 | "maxclass" : "message", 44 | "numinlets" : 2, 45 | "numoutlets" : 1, 46 | "outlettype" : [ "" ], 47 | "patching_rect" : [ 109.0, 192.0, 29.5, 22.0 ], 48 | "text" : "2" 49 | } 50 | 51 | } 52 | , { 53 | "box" : { 54 | "id" : "obj-12", 55 | "maxclass" : "button", 56 | "numinlets" : 1, 57 | "numoutlets" : 1, 58 | "outlettype" : [ "bang" ], 59 | "parameter_enable" : 0, 60 | "patching_rect" : [ 109.0, 163.0, 24.0, 24.0 ] 61 | } 62 | 63 | } 64 | , { 65 | "box" : { 66 | "id" : "obj-6", 67 | "maxclass" : "number", 68 | "numinlets" : 1, 69 | "numoutlets" : 2, 70 | "outlettype" : [ "", "bang" ], 71 | "parameter_enable" : 0, 72 | "patching_rect" : [ 96.0, 277.0, 50.0, 22.0 ] 73 | } 74 | 75 | } 76 | , { 77 | "box" : { 78 | "id" : "obj-16", 79 | "linecount" : 2, 80 | "maxclass" : "comment", 81 | "numinlets" : 1, 82 | "numoutlets" : 0, 83 | "patching_rect" : [ 59.0, 64.0, 45.0, 33.0 ], 84 | "text" : "metro\ninput" 85 | } 86 | 87 | } 88 | , { 89 | "box" : { 90 | "id" : "obj-14", 91 | "linecount" : 2, 92 | "maxclass" : "comment", 93 | "numinlets" : 1, 94 | "numoutlets" : 0, 95 | "patching_rect" : [ 265.0, 64.0, 62.0, 33.0 ], 96 | "text" : "restart the count" 97 | } 98 | 99 | } 100 | , { 101 | "box" : { 102 | "id" : "obj-9", 103 | "maxclass" : "newobj", 104 | "numinlets" : 1, 105 | "numoutlets" : 2, 106 | "outlettype" : [ "", "" ], 107 | "patching_rect" : [ 277.0, 192.0, 91.0, 22.0 ], 108 | "text" : "patcherargs 16" 109 | } 110 | 111 | } 112 | , { 113 | "box" : { 114 | "id" : "obj-7", 115 | "maxclass" : "newobj", 116 | "numinlets" : 5, 117 | "numoutlets" : 4, 118 | "outlettype" : [ "int", "", "", "int" ], 119 | "patching_rect" : [ 59.0, 232.0, 87.0, 22.0 ], 120 | "text" : "counter 0 1 16" 121 | } 122 | 123 | } 124 | , { 125 | "box" : { 126 | "comment" : "", 127 | "id" : "obj-5", 128 | "index" : 1, 129 | "maxclass" : "outlet", 130 | "numinlets" : 1, 131 | "numoutlets" : 0, 132 | "patching_rect" : [ 59.0, 301.0, 30.0, 30.0 ] 133 | } 134 | 135 | } 136 | , { 137 | "box" : { 138 | "comment" : "", 139 | "id" : "obj-3", 140 | "index" : 2, 141 | "maxclass" : "inlet", 142 | "numinlets" : 0, 143 | "numoutlets" : 1, 144 | "outlettype" : [ "" ], 145 | "patching_rect" : [ 291.0, 109.0, 30.0, 30.0 ] 146 | } 147 | 148 | } 149 | , { 150 | "box" : { 151 | "comment" : "", 152 | "id" : "obj-1", 153 | "index" : 1, 154 | "maxclass" : "inlet", 155 | "numinlets" : 0, 156 | "numoutlets" : 1, 157 | "outlettype" : [ "" ], 158 | "patching_rect" : [ 59.0, 109.0, 30.0, 30.0 ] 159 | } 160 | 161 | } 162 | ], 163 | "lines" : [ { 164 | "patchline" : { 165 | "destination" : [ "obj-7", 0 ], 166 | "source" : [ "obj-1", 0 ] 167 | } 168 | 169 | } 170 | , { 171 | "patchline" : { 172 | "destination" : [ "obj-18", 0 ], 173 | "source" : [ "obj-12", 0 ] 174 | } 175 | 176 | } 177 | , { 178 | "patchline" : { 179 | "destination" : [ "obj-7", 2 ], 180 | "source" : [ "obj-18", 0 ] 181 | } 182 | 183 | } 184 | , { 185 | "patchline" : { 186 | "destination" : [ "obj-12", 0 ], 187 | "source" : [ "obj-3", 0 ] 188 | } 189 | 190 | } 191 | , { 192 | "patchline" : { 193 | "destination" : [ "obj-5", 0 ], 194 | "order" : 1, 195 | "source" : [ "obj-7", 0 ] 196 | } 197 | 198 | } 199 | , { 200 | "patchline" : { 201 | "destination" : [ "obj-6", 0 ], 202 | "order" : 0, 203 | "source" : [ "obj-7", 0 ] 204 | } 205 | 206 | } 207 | , { 208 | "patchline" : { 209 | "destination" : [ "obj-7", 4 ], 210 | "midpoints" : [ 286.5, 218.5, 136.5, 218.5 ], 211 | "source" : [ "obj-9", 0 ] 212 | } 213 | 214 | } 215 | ], 216 | "bgcolor" : [ 1.0, 1.0, 1.0, 1.0 ] 217 | } 218 | 219 | } 220 | -------------------------------------------------------------------------------- /subpatches/makenote_for_me.maxpat: -------------------------------------------------------------------------------- 1 | { 2 | "patcher" : { 3 | "fileversion" : 1, 4 | "appversion" : { 5 | "major" : 8, 6 | "minor" : 1, 7 | "revision" : 0, 8 | "architecture" : "x64", 9 | "modernui" : 1 10 | } 11 | , 12 | "classnamespace" : "box", 13 | "rect" : [ 123.0, 366.0, 1408.0, 581.0 ], 14 | "bglocked" : 0, 15 | "openinpresentation" : 0, 16 | "default_fontsize" : 12.0, 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" : 2, 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" : "no_top", 40 | "boxes" : [ { 41 | "box" : { 42 | "id" : "obj-7", 43 | "maxclass" : "newobj", 44 | "numinlets" : 1, 45 | "numoutlets" : 2, 46 | "outlettype" : [ "bang", "float" ], 47 | "patching_rect" : [ 686.0, 158.0, 29.5, 22.0 ], 48 | "text" : "t b f" 49 | } 50 | 51 | } 52 | , { 53 | "box" : { 54 | "format" : 6, 55 | "id" : "obj-23", 56 | "maxclass" : "flonum", 57 | "maximum" : 3.0, 58 | "minimum" : 0.0, 59 | "numinlets" : 1, 60 | "numoutlets" : 2, 61 | "outlettype" : [ "", "bang" ], 62 | "parameter_enable" : 0, 63 | "patching_rect" : [ 777.0, 95.0, 50.0, 22.0 ] 64 | } 65 | 66 | } 67 | , { 68 | "box" : { 69 | "comment" : "", 70 | "id" : "obj-21", 71 | "index" : 2, 72 | "maxclass" : "inlet", 73 | "numinlets" : 0, 74 | "numoutlets" : 1, 75 | "outlettype" : [ "" ], 76 | "patching_rect" : [ 777.0, 60.0, 30.0, 30.0 ] 77 | } 78 | 79 | } 80 | , { 81 | "box" : { 82 | "id" : "obj-20", 83 | "maxclass" : "newobj", 84 | "numinlets" : 2, 85 | "numoutlets" : 1, 86 | "outlettype" : [ "float" ], 87 | "patching_rect" : [ 537.0, 195.0, 178.5, 22.0 ], 88 | "text" : "* 1." 89 | } 90 | 91 | } 92 | , { 93 | "box" : { 94 | "id" : "obj-16", 95 | "maxclass" : "toggle", 96 | "numinlets" : 1, 97 | "numoutlets" : 1, 98 | "outlettype" : [ "int" ], 99 | "parameter_enable" : 0, 100 | "patching_rect" : [ 411.25, 280.0, 24.0, 24.0 ] 101 | } 102 | 103 | } 104 | , { 105 | "box" : { 106 | "id" : "obj-14", 107 | "maxclass" : "toggle", 108 | "numinlets" : 1, 109 | "numoutlets" : 1, 110 | "outlettype" : [ "int" ], 111 | "parameter_enable" : 0, 112 | "patching_rect" : [ 283.2833251953125, 296.0, 24.0, 24.0 ] 113 | } 114 | 115 | } 116 | , { 117 | "box" : { 118 | "id" : "obj-9", 119 | "maxclass" : "newobj", 120 | "numinlets" : 3, 121 | "numoutlets" : 3, 122 | "outlettype" : [ "", "", "" ], 123 | "patching_rect" : [ 918.0, 84.0, 127.0, 22.0 ], 124 | "text" : "route velocity timeshift" 125 | } 126 | 127 | } 128 | , { 129 | "box" : { 130 | "id" : "obj-5", 131 | "maxclass" : "newobj", 132 | "numinlets" : 1, 133 | "numoutlets" : 2, 134 | "outlettype" : [ "", "" ], 135 | "patching_rect" : [ 729.0, 28.0, 208.0, 22.0 ], 136 | "text" : "patcherargs @velocity 1 @timeshift 1" 137 | } 138 | 139 | } 140 | , { 141 | "box" : { 142 | "id" : "obj-51", 143 | "linecount" : 3, 144 | "maxclass" : "comment", 145 | "numinlets" : 1, 146 | "numoutlets" : 0, 147 | "patching_rect" : [ 340.25, 308.0, 151.0, 47.0 ], 148 | "text" : "When we don't use generated velocity values, use fixed value instead." 149 | } 150 | 151 | } 152 | , { 153 | "box" : { 154 | "id" : "obj-43", 155 | "maxclass" : "newobj", 156 | "numinlets" : 2, 157 | "numoutlets" : 2, 158 | "outlettype" : [ "", "" ], 159 | "patching_rect" : [ 260.73333740234375, 195.0, 123.0, 22.0 ], 160 | "text" : "routepass 0" 161 | } 162 | 163 | } 164 | , { 165 | "box" : { 166 | "id" : "obj-42", 167 | "maxclass" : "newobj", 168 | "numinlets" : 2, 169 | "numoutlets" : 1, 170 | "outlettype" : [ "int" ], 171 | "patching_rect" : [ 283.5333251953125, 333.0, 29.5, 22.0 ], 172 | "text" : "+ 1" 173 | } 174 | 175 | } 176 | , { 177 | "box" : { 178 | "id" : "obj-39", 179 | "maxclass" : "newobj", 180 | "numinlets" : 2, 181 | "numoutlets" : 1, 182 | "outlettype" : [ "" ], 183 | "patching_rect" : [ 411.20001220703125, 375.0, 68.0, 22.0 ], 184 | "text" : "gate 1 1" 185 | } 186 | 187 | } 188 | , { 189 | "box" : { 190 | "id" : "obj-38", 191 | "maxclass" : "newobj", 192 | "numinlets" : 1, 193 | "numoutlets" : 1, 194 | "outlettype" : [ "int" ], 195 | "patching_rect" : [ 323.133331298828125, 282.0, 29.0, 22.0 ], 196 | "text" : "t 80" 197 | } 198 | 199 | } 200 | , { 201 | "box" : { 202 | "id" : "obj-35", 203 | "maxclass" : "newobj", 204 | "numinlets" : 3, 205 | "numoutlets" : 1, 206 | "outlettype" : [ "" ], 207 | "patching_rect" : [ 283.5333251953125, 362.0, 100.20001220703125, 22.0 ], 208 | "text" : "switch 2 2" 209 | } 210 | 211 | } 212 | , { 213 | "box" : { 214 | "id" : "obj-24", 215 | "maxclass" : "newobj", 216 | "numinlets" : 2, 217 | "numoutlets" : 1, 218 | "outlettype" : [ "float" ], 219 | "patching_rect" : [ 460.20001220703125, 200.0, 39.0, 22.0 ], 220 | "text" : "/ 127." 221 | } 222 | 223 | } 224 | , { 225 | "box" : { 226 | "id" : "obj-19", 227 | "maxclass" : "newobj", 228 | "numinlets" : 2, 229 | "numoutlets" : 1, 230 | "outlettype" : [ "float" ], 231 | "patching_rect" : [ 460.20001220703125, 229.0, 95.79998779296875, 22.0 ], 232 | "text" : "* 0." 233 | } 234 | 235 | } 236 | , { 237 | "box" : { 238 | "id" : "obj-18", 239 | "maxclass" : "newobj", 240 | "numinlets" : 4, 241 | "numoutlets" : 3, 242 | "outlettype" : [ "", "", "" ], 243 | "patching_rect" : [ 213.0, 403.0, 162.20001220703125, 22.0 ], 244 | "text" : "pipe 0 0 0 0" 245 | } 246 | 247 | } 248 | , { 249 | "box" : { 250 | "id" : "obj-17", 251 | "maxclass" : "comment", 252 | "numinlets" : 1, 253 | "numoutlets" : 0, 254 | "patching_rect" : [ 593.0, 144.0, 24.0, 20.0 ], 255 | "text" : "ms" 256 | } 257 | 258 | } 259 | , { 260 | "box" : { 261 | "id" : "obj-13", 262 | "maxclass" : "comment", 263 | "numinlets" : 1, 264 | "numoutlets" : 0, 265 | "patching_rect" : [ 575.0, 79.0, 164.0, 20.0 ], 266 | "text" : "resolution of generated beats" 267 | } 268 | 269 | } 270 | , { 271 | "box" : { 272 | "id" : "obj-11", 273 | "maxclass" : "newobj", 274 | "numinlets" : 1, 275 | "numoutlets" : 1, 276 | "outlettype" : [ "bang" ], 277 | "patching_rect" : [ 537.0, 51.0, 58.0, 22.0 ], 278 | "text" : "loadbang" 279 | } 280 | 281 | } 282 | , { 283 | "box" : { 284 | "format" : 6, 285 | "id" : "obj-10", 286 | "maxclass" : "flonum", 287 | "numinlets" : 1, 288 | "numoutlets" : 2, 289 | "outlettype" : [ "", "bang" ], 290 | "parameter_enable" : 0, 291 | "patching_rect" : [ 537.0, 143.0, 50.0, 22.0 ] 292 | } 293 | 294 | } 295 | , { 296 | "box" : { 297 | "id" : "obj-6", 298 | "maxclass" : "message", 299 | "numinlets" : 2, 300 | "numoutlets" : 1, 301 | "outlettype" : [ "" ], 302 | "patching_rect" : [ 537.0, 79.0, 29.5, 22.0 ], 303 | "text" : "32n" 304 | } 305 | 306 | } 307 | , { 308 | "box" : { 309 | "id" : "obj-2", 310 | "maxclass" : "newobj", 311 | "numinlets" : 1, 312 | "numoutlets" : 1, 313 | "outlettype" : [ "" ], 314 | "patching_rect" : [ 537.0, 110.0, 162.0, 22.0 ], 315 | "text" : "translate bars.beats.units ms" 316 | } 317 | 318 | } 319 | , { 320 | "box" : { 321 | "id" : "obj-44", 322 | "maxclass" : "newobj", 323 | "numinlets" : 3, 324 | "numoutlets" : 2, 325 | "outlettype" : [ "float", "float" ], 326 | "patching_rect" : [ 213.0, 441.66668701171875, 162.20001220703125, 22.0 ], 327 | "text" : "makenote" 328 | } 329 | 330 | } 331 | , { 332 | "box" : { 333 | "id" : "obj-29", 334 | "maxclass" : "newobj", 335 | "numinlets" : 1, 336 | "numoutlets" : 6, 337 | "outlettype" : [ "", "", "", "", "", "" ], 338 | "patching_rect" : [ 213.0, 145.0, 257.66668701171875, 22.0 ], 339 | "text" : "unjoin 5" 340 | } 341 | 342 | } 343 | , { 344 | "box" : { 345 | "comment" : "", 346 | "id" : "obj-4", 347 | "index" : 2, 348 | "maxclass" : "outlet", 349 | "numinlets" : 1, 350 | "numoutlets" : 0, 351 | "patching_rect" : [ 356.20001220703125, 479.0, 30.0, 30.0 ] 352 | } 353 | 354 | } 355 | , { 356 | "box" : { 357 | "comment" : "", 358 | "id" : "obj-3", 359 | "index" : 1, 360 | "maxclass" : "outlet", 361 | "numinlets" : 1, 362 | "numoutlets" : 0, 363 | "patching_rect" : [ 213.0, 475.0, 30.0, 30.0 ] 364 | } 365 | 366 | } 367 | , { 368 | "box" : { 369 | "comment" : "", 370 | "id" : "obj-1", 371 | "index" : 1, 372 | "maxclass" : "inlet", 373 | "numinlets" : 0, 374 | "numoutlets" : 1, 375 | "outlettype" : [ "" ], 376 | "patching_rect" : [ 213.0, 91.0, 30.0, 30.0 ] 377 | } 378 | 379 | } 380 | ], 381 | "lines" : [ { 382 | "patchline" : { 383 | "destination" : [ "obj-29", 0 ], 384 | "source" : [ "obj-1", 0 ] 385 | } 386 | 387 | } 388 | , { 389 | "patchline" : { 390 | "destination" : [ "obj-20", 0 ], 391 | "source" : [ "obj-10", 0 ] 392 | } 393 | 394 | } 395 | , { 396 | "patchline" : { 397 | "destination" : [ "obj-6", 0 ], 398 | "source" : [ "obj-11", 0 ] 399 | } 400 | 401 | } 402 | , { 403 | "patchline" : { 404 | "destination" : [ "obj-42", 0 ], 405 | "source" : [ "obj-14", 0 ] 406 | } 407 | 408 | } 409 | , { 410 | "patchline" : { 411 | "destination" : [ "obj-39", 0 ], 412 | "source" : [ "obj-16", 0 ] 413 | } 414 | 415 | } 416 | , { 417 | "patchline" : { 418 | "destination" : [ "obj-44", 2 ], 419 | "source" : [ "obj-18", 2 ] 420 | } 421 | 422 | } 423 | , { 424 | "patchline" : { 425 | "destination" : [ "obj-44", 1 ], 426 | "source" : [ "obj-18", 1 ] 427 | } 428 | 429 | } 430 | , { 431 | "patchline" : { 432 | "destination" : [ "obj-44", 0 ], 433 | "source" : [ "obj-18", 0 ] 434 | } 435 | 436 | } 437 | , { 438 | "patchline" : { 439 | "destination" : [ "obj-39", 1 ], 440 | "source" : [ "obj-19", 0 ] 441 | } 442 | 443 | } 444 | , { 445 | "patchline" : { 446 | "destination" : [ "obj-10", 0 ], 447 | "source" : [ "obj-2", 0 ] 448 | } 449 | 450 | } 451 | , { 452 | "patchline" : { 453 | "destination" : [ "obj-19", 1 ], 454 | "source" : [ "obj-20", 0 ] 455 | } 456 | 457 | } 458 | , { 459 | "patchline" : { 460 | "destination" : [ "obj-23", 0 ], 461 | "source" : [ "obj-21", 0 ] 462 | } 463 | 464 | } 465 | , { 466 | "patchline" : { 467 | "destination" : [ "obj-7", 0 ], 468 | "midpoints" : [ 786.5, 149.0, 743.5, 149.0, 743.5, 150.0, 695.5, 150.0 ], 469 | "source" : [ "obj-23", 0 ] 470 | } 471 | 472 | } 473 | , { 474 | "patchline" : { 475 | "destination" : [ "obj-19", 0 ], 476 | "source" : [ "obj-24", 0 ] 477 | } 478 | 479 | } 480 | , { 481 | "patchline" : { 482 | "destination" : [ "obj-18", 2 ], 483 | "source" : [ "obj-29", 2 ] 484 | } 485 | 486 | } 487 | , { 488 | "patchline" : { 489 | "destination" : [ "obj-18", 0 ], 490 | "source" : [ "obj-29", 0 ] 491 | } 492 | 493 | } 494 | , { 495 | "patchline" : { 496 | "destination" : [ "obj-24", 0 ], 497 | "source" : [ "obj-29", 3 ] 498 | } 499 | 500 | } 501 | , { 502 | "patchline" : { 503 | "destination" : [ "obj-43", 0 ], 504 | "source" : [ "obj-29", 1 ] 505 | } 506 | 507 | } 508 | , { 509 | "patchline" : { 510 | "destination" : [ "obj-18", 1 ], 511 | "source" : [ "obj-35", 0 ] 512 | } 513 | 514 | } 515 | , { 516 | "patchline" : { 517 | "destination" : [ "obj-35", 1 ], 518 | "source" : [ "obj-38", 0 ] 519 | } 520 | 521 | } 522 | , { 523 | "patchline" : { 524 | "destination" : [ "obj-18", 3 ], 525 | "source" : [ "obj-39", 0 ] 526 | } 527 | 528 | } 529 | , { 530 | "patchline" : { 531 | "destination" : [ "obj-35", 0 ], 532 | "source" : [ "obj-42", 0 ] 533 | } 534 | 535 | } 536 | , { 537 | "patchline" : { 538 | "destination" : [ "obj-18", 1 ], 539 | "source" : [ "obj-43", 0 ] 540 | } 541 | 542 | } 543 | , { 544 | "patchline" : { 545 | "destination" : [ "obj-35", 2 ], 546 | "order" : 0, 547 | "source" : [ "obj-43", 1 ] 548 | } 549 | 550 | } 551 | , { 552 | "patchline" : { 553 | "destination" : [ "obj-38", 0 ], 554 | "order" : 1, 555 | "source" : [ "obj-43", 1 ] 556 | } 557 | 558 | } 559 | , { 560 | "patchline" : { 561 | "destination" : [ "obj-3", 0 ], 562 | "source" : [ "obj-44", 0 ] 563 | } 564 | 565 | } 566 | , { 567 | "patchline" : { 568 | "destination" : [ "obj-4", 0 ], 569 | "source" : [ "obj-44", 1 ] 570 | } 571 | 572 | } 573 | , { 574 | "patchline" : { 575 | "destination" : [ "obj-9", 0 ], 576 | "source" : [ "obj-5", 1 ] 577 | } 578 | 579 | } 580 | , { 581 | "patchline" : { 582 | "destination" : [ "obj-2", 0 ], 583 | "source" : [ "obj-6", 0 ] 584 | } 585 | 586 | } 587 | , { 588 | "patchline" : { 589 | "destination" : [ "obj-20", 1 ], 590 | "source" : [ "obj-7", 1 ] 591 | } 592 | 593 | } 594 | , { 595 | "patchline" : { 596 | "destination" : [ "obj-20", 0 ], 597 | "midpoints" : [ 695.5, 186.5, 546.5, 186.5 ], 598 | "source" : [ "obj-7", 0 ] 599 | } 600 | 601 | } 602 | , { 603 | "patchline" : { 604 | "destination" : [ "obj-14", 0 ], 605 | "midpoints" : [ 927.5, 273.5, 292.7833251953125, 273.5 ], 606 | "source" : [ "obj-9", 0 ] 607 | } 608 | 609 | } 610 | , { 611 | "patchline" : { 612 | "destination" : [ "obj-16", 0 ], 613 | "midpoints" : [ 981.5, 261.5, 420.75, 261.5 ], 614 | "source" : [ "obj-9", 1 ] 615 | } 616 | 617 | } 618 | ], 619 | "bgcolor" : [ 1.0, 1.0, 1.0, 1.0 ] 620 | } 621 | 622 | } 623 | -------------------------------------------------------------------------------- /subpatches/setup_1_16.maxpat: -------------------------------------------------------------------------------- 1 | { 2 | "patcher" : { 3 | "fileversion" : 1, 4 | "appversion" : { 5 | "major" : 8, 6 | "minor" : 0, 7 | "revision" : 2, 8 | "architecture" : "x64", 9 | "modernui" : 1 10 | } 11 | , 12 | "classnamespace" : "box", 13 | "rect" : [ 867.0, 335.0, 973.0, 427.0 ], 14 | "bglocked" : 0, 15 | "openinpresentation" : 0, 16 | "default_fontsize" : 12.0, 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" : 1, 33 | "enablevscroll" : 1, 34 | "devicewidth" : 0.0, 35 | "description" : "", 36 | "digest" : "", 37 | "tags" : "", 38 | "style" : "", 39 | "subpatcher_template" : "no_top", 40 | "boxes" : [ { 41 | "box" : { 42 | "id" : "obj-14", 43 | "maxclass" : "newobj", 44 | "numinlets" : 1, 45 | "numoutlets" : 1, 46 | "outlettype" : [ "" ], 47 | "patcher" : { 48 | "fileversion" : 1, 49 | "appversion" : { 50 | "major" : 8, 51 | "minor" : 0, 52 | "revision" : 2, 53 | "architecture" : "x64", 54 | "modernui" : 1 55 | } 56 | , 57 | "classnamespace" : "box", 58 | "rect" : [ 84.0, 129.0, 640.0, 480.0 ], 59 | "bglocked" : 0, 60 | "openinpresentation" : 0, 61 | "default_fontsize" : 12.0, 62 | "default_fontface" : 0, 63 | "default_fontname" : "Arial", 64 | "gridonopen" : 1, 65 | "gridsize" : [ 15.0, 15.0 ], 66 | "gridsnaponopen" : 1, 67 | "objectsnaponopen" : 1, 68 | "statusbarvisible" : 2, 69 | "toolbarvisible" : 1, 70 | "lefttoolbarpinned" : 0, 71 | "toptoolbarpinned" : 0, 72 | "righttoolbarpinned" : 0, 73 | "bottomtoolbarpinned" : 0, 74 | "toolbars_unpinned_last_save" : 0, 75 | "tallnewobj" : 0, 76 | "boxanimatetime" : 200, 77 | "enablehscroll" : 1, 78 | "enablevscroll" : 1, 79 | "devicewidth" : 0.0, 80 | "description" : "", 81 | "digest" : "", 82 | "tags" : "", 83 | "style" : "", 84 | "subpatcher_template" : "no_top", 85 | "boxes" : [ { 86 | "box" : { 87 | "id" : "obj-11", 88 | "maxclass" : "message", 89 | "numinlets" : 2, 90 | "numoutlets" : 1, 91 | "outlettype" : [ "" ], 92 | "patching_rect" : [ 238.0, 179.0, 191.0, 22.0 ], 93 | "text" : "target_seq $1, nstep 32, loop 1 32" 94 | } 95 | 96 | } 97 | , { 98 | "box" : { 99 | "id" : "obj-6", 100 | "maxclass" : "newobj", 101 | "numinlets" : 2, 102 | "numoutlets" : 1, 103 | "outlettype" : [ "int" ], 104 | "patching_rect" : [ 50.0, 127.0, 29.5, 22.0 ], 105 | "text" : "- 1" 106 | } 107 | 108 | } 109 | , { 110 | "box" : { 111 | "id" : "obj-2", 112 | "maxclass" : "newobj", 113 | "numinlets" : 2, 114 | "numoutlets" : 3, 115 | "outlettype" : [ "bang", "bang", "int" ], 116 | "patching_rect" : [ 50.0, 100.0, 40.0, 22.0 ], 117 | "text" : "uzi 9" 118 | } 119 | 120 | } 121 | , { 122 | "box" : { 123 | "id" : "obj-76", 124 | "maxclass" : "message", 125 | "numinlets" : 2, 126 | "numoutlets" : 1, 127 | "outlettype" : [ "" ], 128 | "patching_rect" : [ 66.0, 211.0, 113.0, 22.0 ], 129 | "text" : "fold_pitch $1, fold 1" 130 | } 131 | 132 | } 133 | , { 134 | "box" : { 135 | "id" : "obj-66", 136 | "maxclass" : "newobj", 137 | "numinlets" : 1, 138 | "numoutlets" : 3, 139 | "outlettype" : [ "", "", "" ], 140 | "patching_rect" : [ 50.0, 181.0, 51.0, 22.0 ], 141 | "text" : "unjoin 2" 142 | } 143 | 144 | } 145 | , { 146 | "box" : { 147 | "coll_data" : { 148 | "count" : 9, 149 | "data" : [ { 150 | "key" : 0, 151 | "value" : [ "bass_drum", 36 ] 152 | } 153 | , { 154 | "key" : 1, 155 | "value" : [ "snare_drum", 38 ] 156 | } 157 | , { 158 | "key" : 2, 159 | "value" : [ "closed_hihat", 42 ] 160 | } 161 | , { 162 | "key" : 3, 163 | "value" : [ "open_hihat", 46 ] 164 | } 165 | , { 166 | "key" : 4, 167 | "value" : [ "low_tom", 41 ] 168 | } 169 | , { 170 | "key" : 5, 171 | "value" : [ "mid_tom", 45 ] 172 | } 173 | , { 174 | "key" : 6, 175 | "value" : [ "high_tom", 48 ] 176 | } 177 | , { 178 | "key" : 7, 179 | "value" : [ "hand_clap", 39 ] 180 | } 181 | , { 182 | "key" : 8, 183 | "value" : [ "rim_shot", 37 ] 184 | } 185 | ] 186 | } 187 | , 188 | "id" : "obj-60", 189 | "maxclass" : "newobj", 190 | "numinlets" : 1, 191 | "numoutlets" : 4, 192 | "outlettype" : [ "", "", "", "" ], 193 | "patching_rect" : [ 50.0, 154.0, 137.0, 22.0 ], 194 | "saved_object_attributes" : { 195 | "embed" : 1 196 | } 197 | , 198 | "text" : "coll seq_id_to_midi_vae" 199 | } 200 | 201 | } 202 | , { 203 | "box" : { 204 | "comment" : "", 205 | "id" : "obj-12", 206 | "index" : 1, 207 | "maxclass" : "inlet", 208 | "numinlets" : 0, 209 | "numoutlets" : 1, 210 | "outlettype" : [ "bang" ], 211 | "patching_rect" : [ 50.0, 40.0, 30.0, 30.0 ] 212 | } 213 | 214 | } 215 | , { 216 | "box" : { 217 | "comment" : "", 218 | "id" : "obj-13", 219 | "index" : 1, 220 | "maxclass" : "outlet", 221 | "numinlets" : 1, 222 | "numoutlets" : 0, 223 | "patching_rect" : [ 146.0, 293.0, 30.0, 30.0 ] 224 | } 225 | 226 | } 227 | ], 228 | "lines" : [ { 229 | "patchline" : { 230 | "destination" : [ "obj-13", 0 ], 231 | "source" : [ "obj-11", 0 ] 232 | } 233 | 234 | } 235 | , { 236 | "patchline" : { 237 | "destination" : [ "obj-2", 0 ], 238 | "source" : [ "obj-12", 0 ] 239 | } 240 | 241 | } 242 | , { 243 | "patchline" : { 244 | "destination" : [ "obj-11", 0 ], 245 | "order" : 0, 246 | "source" : [ "obj-2", 0 ] 247 | } 248 | 249 | } 250 | , { 251 | "patchline" : { 252 | "destination" : [ "obj-6", 0 ], 253 | "order" : 1, 254 | "source" : [ "obj-2", 0 ] 255 | } 256 | 257 | } 258 | , { 259 | "patchline" : { 260 | "destination" : [ "obj-60", 0 ], 261 | "source" : [ "obj-6", 0 ] 262 | } 263 | 264 | } 265 | , { 266 | "patchline" : { 267 | "destination" : [ "obj-66", 0 ], 268 | "source" : [ "obj-60", 0 ] 269 | } 270 | 271 | } 272 | , { 273 | "patchline" : { 274 | "destination" : [ "obj-76", 0 ], 275 | "source" : [ "obj-66", 1 ] 276 | } 277 | 278 | } 279 | , { 280 | "patchline" : { 281 | "destination" : [ "obj-13", 0 ], 282 | "source" : [ "obj-76", 0 ] 283 | } 284 | 285 | } 286 | ] 287 | } 288 | , 289 | "patching_rect" : [ 115.0, 228.0, 90.0, 22.0 ], 290 | "saved_object_attributes" : { 291 | "description" : "", 292 | "digest" : "", 293 | "globalpatchername" : "", 294 | "tags" : "" 295 | } 296 | , 297 | "text" : "p" 298 | } 299 | 300 | } 301 | , { 302 | "box" : { 303 | "id" : "obj-8", 304 | "maxclass" : "button", 305 | "numinlets" : 1, 306 | "numoutlets" : 1, 307 | "outlettype" : [ "bang" ], 308 | "parameter_enable" : 0, 309 | "patching_rect" : [ 115.0, 200.0, 24.0, 24.0 ] 310 | } 311 | 312 | } 313 | , { 314 | "box" : { 315 | "comment" : "", 316 | "id" : "obj-4", 317 | "index" : 1, 318 | "maxclass" : "outlet", 319 | "numinlets" : 1, 320 | "numoutlets" : 0, 321 | "patching_rect" : [ 251.0, 377.0, 30.0, 30.0 ] 322 | } 323 | 324 | } 325 | , { 326 | "box" : { 327 | "id" : "obj-25", 328 | "linecount" : 2, 329 | "maxclass" : "message", 330 | "numinlets" : 2, 331 | "numoutlets" : 1, 332 | "outlettype" : [ "" ], 333 | "patching_rect" : [ 297.0, 123.0, 565.0, 35.0 ], 334 | "text" : "nseq 9, nstep 32, mode 0, loopruler 0, usestepcolor2 1, pitch_active 1, velocity_active 1, duration_active 1, loop 1 32, display_seq 1, target_seq 1" 335 | } 336 | 337 | } 338 | , { 339 | "box" : { 340 | "comment" : "", 341 | "id" : "obj-1", 342 | "index" : 1, 343 | "maxclass" : "inlet", 344 | "numinlets" : 0, 345 | "numoutlets" : 1, 346 | "outlettype" : [ "bang" ], 347 | "patching_rect" : [ 251.0, 71.0, 30.0, 30.0 ] 348 | } 349 | 350 | } 351 | ], 352 | "lines" : [ { 353 | "patchline" : { 354 | "destination" : [ "obj-25", 0 ], 355 | "order" : 0, 356 | "source" : [ "obj-1", 0 ] 357 | } 358 | 359 | } 360 | , { 361 | "patchline" : { 362 | "destination" : [ "obj-8", 0 ], 363 | "order" : 1, 364 | "source" : [ "obj-1", 0 ] 365 | } 366 | 367 | } 368 | , { 369 | "patchline" : { 370 | "destination" : [ "obj-4", 0 ], 371 | "source" : [ "obj-14", 0 ] 372 | } 373 | 374 | } 375 | , { 376 | "patchline" : { 377 | "destination" : [ "obj-4", 0 ], 378 | "source" : [ "obj-25", 0 ] 379 | } 380 | 381 | } 382 | , { 383 | "patchline" : { 384 | "destination" : [ "obj-14", 0 ], 385 | "source" : [ "obj-8", 0 ] 386 | } 387 | 388 | } 389 | ], 390 | "styles" : [ { 391 | "name" : "tap", 392 | "default" : { 393 | "fontname" : [ "Lato Light" ] 394 | } 395 | , 396 | "parentstyle" : "", 397 | "multi" : 0 398 | } 399 | ], 400 | "bgcolor" : [ 1.0, 1.0, 1.0, 1.0 ] 401 | } 402 | 403 | } 404 | -------------------------------------------------------------------------------- /subpatches/shuffle_metro.maxpat: -------------------------------------------------------------------------------- 1 | { 2 | "patcher" : { 3 | "fileversion" : 1, 4 | "appversion" : { 5 | "major" : 8, 6 | "minor" : 1, 7 | "revision" : 0, 8 | "architecture" : "x64", 9 | "modernui" : 1 10 | } 11 | , 12 | "classnamespace" : "box", 13 | "rect" : [ 513.0, 461.0, 885.0, 639.0 ], 14 | "bglocked" : 0, 15 | "openinpresentation" : 0, 16 | "default_fontsize" : 12.0, 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" : 2, 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" : "no_top", 40 | "boxes" : [ { 41 | "box" : { 42 | "id" : "obj-13", 43 | "maxclass" : "newobj", 44 | "numinlets" : 2, 45 | "numoutlets" : 1, 46 | "outlettype" : [ "int" ], 47 | "patching_rect" : [ 763.0, 97.0, 29.5, 22.0 ], 48 | "text" : "* 4" 49 | } 50 | 51 | } 52 | , { 53 | "box" : { 54 | "comment" : "", 55 | "id" : "obj-2", 56 | "index" : 3, 57 | "maxclass" : "inlet", 58 | "numinlets" : 0, 59 | "numoutlets" : 1, 60 | "outlettype" : [ "" ], 61 | "patching_rect" : [ 763.0, 48.0, 30.0, 30.0 ] 62 | } 63 | 64 | } 65 | , { 66 | "box" : { 67 | "id" : "obj-24", 68 | "maxclass" : "number", 69 | "numinlets" : 1, 70 | "numoutlets" : 2, 71 | "outlettype" : [ "", "bang" ], 72 | "parameter_enable" : 0, 73 | "patching_rect" : [ 334.25, 163.0, 50.0, 22.0 ] 74 | } 75 | 76 | } 77 | , { 78 | "box" : { 79 | "id" : "obj-12", 80 | "maxclass" : "newobj", 81 | "numinlets" : 2, 82 | "numoutlets" : 1, 83 | "outlettype" : [ "int" ], 84 | "patching_rect" : [ 334.25, 137.0, 29.5, 22.0 ], 85 | "text" : "/ 4" 86 | } 87 | 88 | } 89 | , { 90 | "box" : { 91 | "id" : "obj-23", 92 | "maxclass" : "button", 93 | "numinlets" : 1, 94 | "numoutlets" : 1, 95 | "outlettype" : [ "bang" ], 96 | "parameter_enable" : 0, 97 | "patching_rect" : [ 293.0, 323.0, 24.0, 24.0 ] 98 | } 99 | 100 | } 101 | , { 102 | "box" : { 103 | "id" : "obj-20", 104 | "maxclass" : "newobj", 105 | "numinlets" : 1, 106 | "numoutlets" : 3, 107 | "outlettype" : [ "", "int", "int" ], 108 | "patching_rect" : [ 293.0, 295.0, 48.0, 22.0 ], 109 | "text" : "change" 110 | } 111 | 112 | } 113 | , { 114 | "box" : { 115 | "id" : "obj-16", 116 | "maxclass" : "newobj", 117 | "numinlets" : 2, 118 | "numoutlets" : 1, 119 | "outlettype" : [ "int" ], 120 | "patching_rect" : [ 314.5, 193.0, 38.75, 22.0 ], 121 | "text" : "/ 120" 122 | } 123 | 124 | } 125 | , { 126 | "box" : { 127 | "id" : "obj-15", 128 | "maxclass" : "number", 129 | "numinlets" : 1, 130 | "numoutlets" : 2, 131 | "outlettype" : [ "", "bang" ], 132 | "parameter_enable" : 0, 133 | "patching_rect" : [ 293.0, 265.0, 50.0, 22.0 ] 134 | } 135 | 136 | } 137 | , { 138 | "box" : { 139 | "id" : "obj-14", 140 | "maxclass" : "newobj", 141 | "numinlets" : 2, 142 | "numoutlets" : 1, 143 | "outlettype" : [ "bang" ], 144 | "patching_rect" : [ 221.0, 75.0, 49.0, 22.0 ], 145 | "text" : "metro 1" 146 | } 147 | 148 | } 149 | , { 150 | "box" : { 151 | "id" : "obj-11", 152 | "maxclass" : "newobj", 153 | "numinlets" : 1, 154 | "numoutlets" : 3, 155 | "outlettype" : [ "", "int", "int" ], 156 | "patching_rect" : [ 422.0, 493.0, 48.0, 22.0 ], 157 | "text" : "change" 158 | } 159 | 160 | } 161 | , { 162 | "box" : { 163 | "comment" : "", 164 | "id" : "obj-8", 165 | "index" : 2, 166 | "maxclass" : "outlet", 167 | "numinlets" : 1, 168 | "numoutlets" : 0, 169 | "patching_rect" : [ 422.0, 590.0, 30.0, 30.0 ] 170 | } 171 | 172 | } 173 | , { 174 | "box" : { 175 | "id" : "obj-5", 176 | "maxclass" : "newobj", 177 | "numinlets" : 2, 178 | "numoutlets" : 2, 179 | "outlettype" : [ "bang", "" ], 180 | "patching_rect" : [ 422.0, 554.0, 34.0, 22.0 ], 181 | "text" : "sel 0" 182 | } 183 | 184 | } 185 | , { 186 | "box" : { 187 | "id" : "obj-1", 188 | "maxclass" : "newobj", 189 | "numinlets" : 2, 190 | "numoutlets" : 1, 191 | "outlettype" : [ "int" ], 192 | "patching_rect" : [ 422.0, 523.0, 29.5, 22.0 ], 193 | "text" : "% 2" 194 | } 195 | 196 | } 197 | , { 198 | "box" : { 199 | "id" : "obj-95", 200 | "maxclass" : "newobj", 201 | "numinlets" : 2, 202 | "numoutlets" : 9, 203 | "outlettype" : [ "int", "int", "float", "float", "float", "", "int", "float", "" ], 204 | "patching_rect" : [ 275.0, 106.0, 177.0, 22.0 ], 205 | "text" : "transport" 206 | } 207 | 208 | } 209 | , { 210 | "box" : { 211 | "id" : "obj-6", 212 | "maxclass" : "newobj", 213 | "numinlets" : 1, 214 | "numoutlets" : 1, 215 | "outlettype" : [ "" ], 216 | "patching_rect" : [ 580.5, 199.0, 83.0, 22.0 ], 217 | "text" : "loadmess 16n" 218 | } 219 | 220 | } 221 | , { 222 | "box" : { 223 | "comment" : "", 224 | "id" : "obj-10", 225 | "index" : 1, 226 | "maxclass" : "inlet", 227 | "numinlets" : 0, 228 | "numoutlets" : 1, 229 | "outlettype" : [ "" ], 230 | "patching_rect" : [ 221.0, -25.0, 30.0, 30.0 ] 231 | } 232 | 233 | } 234 | , { 235 | "box" : { 236 | "id" : "obj-9", 237 | "maxclass" : "toggle", 238 | "numinlets" : 1, 239 | "numoutlets" : 1, 240 | "outlettype" : [ "int" ], 241 | "parameter_enable" : 0, 242 | "patching_rect" : [ 221.0, 16.0, 24.0, 24.0 ] 243 | } 244 | 245 | } 246 | , { 247 | "box" : { 248 | "id" : "obj-7", 249 | "maxclass" : "message", 250 | "numinlets" : 2, 251 | "numoutlets" : 1, 252 | "outlettype" : [ "" ], 253 | "patching_rect" : [ 221.0, 48.0, 57.0, 22.0 ], 254 | "text" : "active $1" 255 | } 256 | 257 | } 258 | , { 259 | "box" : { 260 | "id" : "obj-3", 261 | "maxclass" : "newobj", 262 | "numinlets" : 1, 263 | "numoutlets" : 2, 264 | "outlettype" : [ "", "" ], 265 | "patching_rect" : [ 515.5, 113.0, 101.0, 22.0 ], 266 | "text" : "patcherargs 0.25" 267 | } 268 | 269 | } 270 | , { 271 | "box" : { 272 | "comment" : "", 273 | "id" : "obj-41", 274 | "index" : 1, 275 | "maxclass" : "outlet", 276 | "numinlets" : 1, 277 | "numoutlets" : 0, 278 | "patching_rect" : [ 258.0, 581.0, 30.0, 30.0 ] 279 | } 280 | 281 | } 282 | , { 283 | "box" : { 284 | "id" : "obj-39", 285 | "maxclass" : "newobj", 286 | "numinlets" : 2, 287 | "numoutlets" : 1, 288 | "outlettype" : [ "float" ], 289 | "patching_rect" : [ 352.0, 469.0, 29.5, 22.0 ], 290 | "text" : "* 1." 291 | } 292 | 293 | } 294 | , { 295 | "box" : { 296 | "comment" : "", 297 | "id" : "obj-35", 298 | "index" : 2, 299 | "maxclass" : "inlet", 300 | "numinlets" : 0, 301 | "numoutlets" : 1, 302 | "outlettype" : [ "" ], 303 | "patching_rect" : [ 490.0, 40.0, 30.0, 30.0 ] 304 | } 305 | 306 | } 307 | , { 308 | "box" : { 309 | "id" : "obj-34", 310 | "maxclass" : "newobj", 311 | "numinlets" : 2, 312 | "numoutlets" : 1, 313 | "outlettype" : [ "" ], 314 | "patching_rect" : [ 293.0, 497.0, 78.0, 22.0 ], 315 | "text" : "pipe" 316 | } 317 | 318 | } 319 | , { 320 | "box" : { 321 | "id" : "obj-22", 322 | "maxclass" : "newobj", 323 | "numinlets" : 1, 324 | "numoutlets" : 1, 325 | "outlettype" : [ "" ], 326 | "patching_rect" : [ 580.5, 233.0, 135.0, 22.0 ], 327 | "text" : "translate notevalues ms" 328 | } 329 | 330 | } 331 | , { 332 | "box" : { 333 | "id" : "obj-19", 334 | "maxclass" : "newobj", 335 | "numinlets" : 2, 336 | "numoutlets" : 1, 337 | "outlettype" : [ "int" ], 338 | "patching_rect" : [ 323.75, 412.0, 29.5, 22.0 ], 339 | "text" : "+ 1" 340 | } 341 | 342 | } 343 | , { 344 | "box" : { 345 | "id" : "obj-4", 346 | "maxclass" : "toggle", 347 | "numinlets" : 1, 348 | "numoutlets" : 1, 349 | "outlettype" : [ "int" ], 350 | "parameter_enable" : 0, 351 | "patching_rect" : [ 323.75, 382.0, 24.0, 24.0 ] 352 | } 353 | 354 | } 355 | , { 356 | "box" : { 357 | "id" : "obj-18", 358 | "maxclass" : "newobj", 359 | "numinlets" : 1, 360 | "numoutlets" : 2, 361 | "outlettype" : [ "bang", "bang" ], 362 | "patching_rect" : [ 293.0, 354.0, 49.75, 22.0 ], 363 | "text" : "t b b" 364 | } 365 | 366 | } 367 | , { 368 | "box" : { 369 | "id" : "obj-17", 370 | "maxclass" : "newobj", 371 | "numinlets" : 2, 372 | "numoutlets" : 2, 373 | "outlettype" : [ "", "" ], 374 | "patching_rect" : [ 258.0, 465.0, 54.0, 22.0 ], 375 | "text" : "gate 2 1" 376 | } 377 | 378 | } 379 | ], 380 | "lines" : [ { 381 | "patchline" : { 382 | "destination" : [ "obj-5", 0 ], 383 | "source" : [ "obj-1", 0 ] 384 | } 385 | 386 | } 387 | , { 388 | "patchline" : { 389 | "destination" : [ "obj-9", 0 ], 390 | "source" : [ "obj-10", 0 ] 391 | } 392 | 393 | } 394 | , { 395 | "patchline" : { 396 | "destination" : [ "obj-1", 0 ], 397 | "source" : [ "obj-11", 0 ] 398 | } 399 | 400 | } 401 | , { 402 | "patchline" : { 403 | "destination" : [ "obj-24", 0 ], 404 | "source" : [ "obj-12", 0 ] 405 | } 406 | 407 | } 408 | , { 409 | "patchline" : { 410 | "destination" : [ "obj-12", 1 ], 411 | "source" : [ "obj-13", 0 ] 412 | } 413 | 414 | } 415 | , { 416 | "patchline" : { 417 | "destination" : [ "obj-95", 0 ], 418 | "source" : [ "obj-14", 0 ] 419 | } 420 | 421 | } 422 | , { 423 | "patchline" : { 424 | "destination" : [ "obj-20", 0 ], 425 | "source" : [ "obj-15", 0 ] 426 | } 427 | 428 | } 429 | , { 430 | "patchline" : { 431 | "destination" : [ "obj-15", 0 ], 432 | "source" : [ "obj-16", 0 ] 433 | } 434 | 435 | } 436 | , { 437 | "patchline" : { 438 | "destination" : [ "obj-34", 0 ], 439 | "source" : [ "obj-17", 1 ] 440 | } 441 | 442 | } 443 | , { 444 | "patchline" : { 445 | "destination" : [ "obj-41", 0 ], 446 | "source" : [ "obj-17", 0 ] 447 | } 448 | 449 | } 450 | , { 451 | "patchline" : { 452 | "destination" : [ "obj-17", 1 ], 453 | "source" : [ "obj-18", 0 ] 454 | } 455 | 456 | } 457 | , { 458 | "patchline" : { 459 | "destination" : [ "obj-4", 0 ], 460 | "source" : [ "obj-18", 1 ] 461 | } 462 | 463 | } 464 | , { 465 | "patchline" : { 466 | "destination" : [ "obj-17", 0 ], 467 | "midpoints" : [ 333.25, 443.5, 267.5, 443.5 ], 468 | "source" : [ "obj-19", 0 ] 469 | } 470 | 471 | } 472 | , { 473 | "patchline" : { 474 | "destination" : [ "obj-13", 0 ], 475 | "source" : [ "obj-2", 0 ] 476 | } 477 | 478 | } 479 | , { 480 | "patchline" : { 481 | "destination" : [ "obj-23", 0 ], 482 | "source" : [ "obj-20", 0 ] 483 | } 484 | 485 | } 486 | , { 487 | "patchline" : { 488 | "destination" : [ "obj-39", 1 ], 489 | "midpoints" : [ 590.0, 312.5, 372.0, 312.5 ], 490 | "source" : [ "obj-22", 0 ] 491 | } 492 | 493 | } 494 | , { 495 | "patchline" : { 496 | "destination" : [ "obj-18", 0 ], 497 | "source" : [ "obj-23", 0 ] 498 | } 499 | 500 | } 501 | , { 502 | "patchline" : { 503 | "destination" : [ "obj-16", 1 ], 504 | "source" : [ "obj-24", 0 ] 505 | } 506 | 507 | } 508 | , { 509 | "patchline" : { 510 | "destination" : [ "obj-39", 0 ], 511 | "midpoints" : [ 525.0, 305.5, 361.5, 305.5 ], 512 | "source" : [ "obj-3", 0 ] 513 | } 514 | 515 | } 516 | , { 517 | "patchline" : { 518 | "destination" : [ "obj-41", 0 ], 519 | "midpoints" : [ 302.5, 535.0, 267.5, 535.0 ], 520 | "source" : [ "obj-34", 0 ] 521 | } 522 | 523 | } 524 | , { 525 | "patchline" : { 526 | "destination" : [ "obj-39", 0 ], 527 | "midpoints" : [ 499.5, 307.5, 361.5, 307.5 ], 528 | "source" : [ "obj-35", 0 ] 529 | } 530 | 531 | } 532 | , { 533 | "patchline" : { 534 | "destination" : [ "obj-34", 1 ], 535 | "source" : [ "obj-39", 0 ] 536 | } 537 | 538 | } 539 | , { 540 | "patchline" : { 541 | "destination" : [ "obj-19", 0 ], 542 | "source" : [ "obj-4", 0 ] 543 | } 544 | 545 | } 546 | , { 547 | "patchline" : { 548 | "destination" : [ "obj-8", 0 ], 549 | "source" : [ "obj-5", 0 ] 550 | } 551 | 552 | } 553 | , { 554 | "patchline" : { 555 | "destination" : [ "obj-22", 0 ], 556 | "source" : [ "obj-6", 0 ] 557 | } 558 | 559 | } 560 | , { 561 | "patchline" : { 562 | "destination" : [ "obj-14", 0 ], 563 | "source" : [ "obj-7", 0 ] 564 | } 565 | 566 | } 567 | , { 568 | "patchline" : { 569 | "destination" : [ "obj-7", 0 ], 570 | "source" : [ "obj-9", 0 ] 571 | } 572 | 573 | } 574 | , { 575 | "patchline" : { 576 | "destination" : [ "obj-11", 0 ], 577 | "source" : [ "obj-95", 0 ] 578 | } 579 | 580 | } 581 | , { 582 | "patchline" : { 583 | "destination" : [ "obj-12", 0 ], 584 | "source" : [ "obj-95", 3 ] 585 | } 586 | 587 | } 588 | , { 589 | "patchline" : { 590 | "destination" : [ "obj-16", 0 ], 591 | "source" : [ "obj-95", 2 ] 592 | } 593 | 594 | } 595 | ], 596 | "styles" : [ { 597 | "name" : "tap", 598 | "default" : { 599 | "fontname" : [ "Lato Light" ] 600 | } 601 | , 602 | "parentstyle" : "", 603 | "multi" : 0 604 | } 605 | ], 606 | "bgcolor" : [ 1.0, 1.0, 1.0, 1.0 ] 607 | } 608 | 609 | } 610 | --------------------------------------------------------------------------------