├── .gitignore ├── .gitmodules ├── LICENSE ├── README.md ├── max-hardware-library.xcworkspace ├── contents.xcworkspacedata └── xcshareddata │ ├── IDEWorkspaceChecks.plist │ └── xcschemes │ └── max-hardware-lib.xcscheme └── max-package └── max-hardware-library ├── LICENSE.md ├── README.md ├── docs ├── byte-cast.maxref.xml ├── max-ble.maxref.xml └── topics │ └── max_hardware_library_topic.maxvig.xml ├── examples ├── mhl.arduino-notify.maxpat ├── mhl.ble-midi.maxpat ├── mhl.byte-cast.maxpat ├── mhl.connect-everything.maxpat ├── mhl.filter-scan.maxpat ├── mhl.formats.maxpat ├── mhl.rssi.maxpat ├── mhl.simple-max-ble.maxpat ├── mhl.subscribing.maxpat └── mhl.using-umenus.maxpat ├── extras ├── Max Hardware Library Objects.maxpat └── ble-notify │ └── ble-notify.ino ├── help ├── byte-cast.maxhelp └── max-ble.maxhelp ├── icon.png ├── icon.svg └── package-info.json /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | applet 3 | application.linux-arm64 4 | application.linux-armv6hf 5 | application.linux32 6 | application.linux64 7 | application.windows32 8 | application.windows64 9 | application.macosx 10 | out 11 | 12 | 13 | ## Ignore Visual Studio temporary files, build results, and 14 | ## files generated by popular Visual Studio add-ons. 15 | ## 16 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore 17 | 18 | # User-specific files 19 | *.rsuser 20 | *.suo 21 | *.user 22 | *.userosscache 23 | *.sln.docstates 24 | 25 | # User-specific files (MonoDevelop/Xamarin Studio) 26 | *.userprefs 27 | 28 | # Mono auto generated files 29 | mono_crash.* 30 | 31 | # Build results 32 | [Dd]ebug/ 33 | [Dd]ebugPublic/ 34 | [Rr]elease/ 35 | [Rr]eleases/ 36 | x64/ 37 | x86/ 38 | [Ww][Ii][Nn]32/ 39 | [Aa][Rr][Mm]/ 40 | [Aa][Rr][Mm]64/ 41 | bld/ 42 | [Bb]in/ 43 | [Oo]bj/ 44 | [Ll]og/ 45 | [Ll]ogs/ 46 | 47 | # Visual Studio 2015/2017 cache/options directory 48 | .vs/ 49 | # Uncomment if you have tasks that create the project's static files in wwwroot 50 | #wwwroot/ 51 | 52 | # Visual Studio 2017 auto generated files 53 | Generated\ Files/ 54 | 55 | # MSTest test Results 56 | [Tt]est[Rr]esult*/ 57 | [Bb]uild[Ll]og.* 58 | 59 | # NUnit 60 | *.VisualState.xml 61 | TestResult.xml 62 | nunit-*.xml 63 | 64 | # Build Results of an ATL Project 65 | [Dd]ebugPS/ 66 | [Rr]eleasePS/ 67 | dlldata.c 68 | 69 | # Benchmark Results 70 | BenchmarkDotNet.Artifacts/ 71 | 72 | # .NET Core 73 | project.lock.json 74 | project.fragment.lock.json 75 | artifacts/ 76 | 77 | # ASP.NET Scaffolding 78 | ScaffoldingReadMe.txt 79 | 80 | # StyleCop 81 | StyleCopReport.xml 82 | 83 | # Files built by Visual Studio 84 | *_i.c 85 | *_p.c 86 | *_h.h 87 | *.ilk 88 | *.meta 89 | *.obj 90 | *.iobj 91 | *.pch 92 | *.pdb 93 | *.ipdb 94 | *.pgc 95 | *.pgd 96 | *.rsp 97 | *.sbr 98 | *.tlb 99 | *.tli 100 | *.tlh 101 | *.tmp 102 | *.tmp_proj 103 | *_wpftmp.csproj 104 | *.log 105 | *.vspscc 106 | *.vssscc 107 | .builds 108 | *.pidb 109 | *.svclog 110 | *.scc 111 | 112 | # Chutzpah Test files 113 | _Chutzpah* 114 | 115 | # Visual C++ cache files 116 | ipch/ 117 | *.aps 118 | *.ncb 119 | *.opendb 120 | *.opensdf 121 | *.sdf 122 | *.cachefile 123 | *.VC.db 124 | *.VC.VC.opendb 125 | 126 | # Visual Studio profiler 127 | *.psess 128 | *.vsp 129 | *.vspx 130 | *.sap 131 | 132 | # Visual Studio Trace Files 133 | *.e2e 134 | 135 | # TFS 2012 Local Workspace 136 | $tf/ 137 | 138 | # Guidance Automation Toolkit 139 | *.gpState 140 | 141 | # ReSharper is a .NET coding add-in 142 | _ReSharper*/ 143 | *.[Rr]e[Ss]harper 144 | *.DotSettings.user 145 | 146 | # TeamCity is a build add-in 147 | _TeamCity* 148 | 149 | # DotCover is a Code Coverage Tool 150 | *.dotCover 151 | 152 | # AxoCover is a Code Coverage Tool 153 | .axoCover/* 154 | !.axoCover/settings.json 155 | 156 | # Coverlet is a free, cross platform Code Coverage Tool 157 | coverage*[.json, .xml, .info] 158 | 159 | # Visual Studio code coverage results 160 | *.coverage 161 | *.coveragexml 162 | 163 | # NCrunch 164 | _NCrunch_* 165 | .*crunch*.local.xml 166 | nCrunchTemp_* 167 | 168 | # MightyMoose 169 | *.mm.* 170 | AutoTest.Net/ 171 | 172 | # Web workbench (sass) 173 | .sass-cache/ 174 | 175 | # Installshield output folder 176 | [Ee]xpress/ 177 | 178 | # DocProject is a documentation generator add-in 179 | DocProject/buildhelp/ 180 | DocProject/Help/*.HxT 181 | DocProject/Help/*.HxC 182 | DocProject/Help/*.hhc 183 | DocProject/Help/*.hhk 184 | DocProject/Help/*.hhp 185 | DocProject/Help/Html2 186 | DocProject/Help/html 187 | 188 | # Click-Once directory 189 | publish/ 190 | 191 | # Publish Web Output 192 | *.[Pp]ublish.xml 193 | *.azurePubxml 194 | # Note: Comment the next line if you want to checkin your web deploy settings, 195 | # but database connection strings (with potential passwords) will be unencrypted 196 | *.pubxml 197 | *.publishproj 198 | 199 | # Microsoft Azure Web App publish settings. Comment the next line if you want to 200 | # checkin your Azure Web App publish settings, but sensitive information contained 201 | # in these scripts will be unencrypted 202 | PublishScripts/ 203 | 204 | # NuGet Packages 205 | *.nupkg 206 | # NuGet Symbol Packages 207 | *.snupkg 208 | # The packages folder can be ignored because of Package Restore 209 | **/[Pp]ackages/* 210 | # except build/, which is used as an MSBuild target. 211 | !**/[Pp]ackages/build/ 212 | # Uncomment if necessary however generally it will be regenerated when needed 213 | #!**/[Pp]ackages/repositories.config 214 | # NuGet v3's project.json files produces more ignorable files 215 | *.nuget.props 216 | *.nuget.targets 217 | 218 | # Microsoft Azure Build Output 219 | csx/ 220 | *.build.csdef 221 | 222 | # Microsoft Azure Emulator 223 | ecf/ 224 | rcf/ 225 | 226 | # Windows Store app package directories and files 227 | AppPackages/ 228 | BundleArtifacts/ 229 | Package.StoreAssociation.xml 230 | _pkginfo.txt 231 | *.appx 232 | *.appxbundle 233 | *.appxupload 234 | 235 | # Visual Studio cache files 236 | # files ending in .cache can be ignored 237 | *.[Cc]ache 238 | # but keep track of directories ending in .cache 239 | !?*.[Cc]ache/ 240 | 241 | # Others 242 | ClientBin/ 243 | ~$* 244 | *~ 245 | *.dbmdl 246 | *.dbproj.schemaview 247 | *.jfm 248 | *.pfx 249 | *.publishsettings 250 | orleans.codegen.cs 251 | 252 | # Including strong name files can present a security risk 253 | # (https://github.com/github/gitignore/pull/2483#issue-259490424) 254 | #*.snk 255 | 256 | # Since there are multiple workflows, uncomment next line to ignore bower_components 257 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 258 | #bower_components/ 259 | 260 | # RIA/Silverlight projects 261 | Generated_Code/ 262 | 263 | # Backup & report files from converting an old project file 264 | # to a newer Visual Studio version. Backup files are not needed, 265 | # because we have git ;-) 266 | _UpgradeReport_Files/ 267 | Backup*/ 268 | UpgradeLog*.XML 269 | UpgradeLog*.htm 270 | ServiceFabricBackup/ 271 | *.rptproj.bak 272 | 273 | # SQL Server files 274 | *.mdf 275 | *.ldf 276 | *.ndf 277 | 278 | # Business Intelligence projects 279 | *.rdl.data 280 | *.bim.layout 281 | *.bim_*.settings 282 | *.rptproj.rsuser 283 | *- [Bb]ackup.rdl 284 | *- [Bb]ackup ([0-9]).rdl 285 | *- [Bb]ackup ([0-9][0-9]).rdl 286 | 287 | # Microsoft Fakes 288 | FakesAssemblies/ 289 | 290 | # GhostDoc plugin setting file 291 | *.GhostDoc.xml 292 | 293 | # Node.js Tools for Visual Studio 294 | .ntvs_analysis.dat 295 | node_modules/ 296 | 297 | # Visual Studio 6 build log 298 | *.plg 299 | 300 | # Visual Studio 6 workspace options file 301 | *.opt 302 | 303 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.) 304 | *.vbw 305 | 306 | # Visual Studio LightSwitch build output 307 | **/*.HTMLClient/GeneratedArtifacts 308 | **/*.DesktopClient/GeneratedArtifacts 309 | **/*.DesktopClient/ModelManifest.xml 310 | **/*.Server/GeneratedArtifacts 311 | **/*.Server/ModelManifest.xml 312 | _Pvt_Extensions 313 | 314 | # Paket dependency manager 315 | .paket/paket.exe 316 | paket-files/ 317 | 318 | # FAKE - F# Make 319 | .fake/ 320 | 321 | # CodeRush personal settings 322 | .cr/personal 323 | 324 | # Python Tools for Visual Studio (PTVS) 325 | __pycache__/ 326 | *.pyc 327 | 328 | # Cake - Uncomment if you are using it 329 | # tools/** 330 | # !tools/packages.config 331 | 332 | # Tabs Studio 333 | *.tss 334 | 335 | # Telerik's JustMock configuration file 336 | *.jmconfig 337 | 338 | # BizTalk build output 339 | *.btp.cs 340 | *.btm.cs 341 | *.odx.cs 342 | *.xsd.cs 343 | 344 | # OpenCover UI analysis results 345 | OpenCover/ 346 | 347 | # Azure Stream Analytics local run output 348 | ASALocalRun/ 349 | 350 | # MSBuild Binary and Structured Log 351 | *.binlog 352 | 353 | # NVidia Nsight GPU debugger configuration file 354 | *.nvuser 355 | 356 | # MFractors (Xamarin productivity tool) working folder 357 | .mfractor/ 358 | 359 | # Local History for Visual Studio 360 | .localhistory/ 361 | 362 | # BeatPulse healthcheck temp database 363 | healthchecksdb 364 | 365 | # Backup folder for Package Reference Convert tool in Visual Studio 2017 366 | MigrationBackup/ 367 | 368 | # Ionide (cross platform F# VS Code tools) working folder 369 | .ionide/ 370 | maxmsp-external-templates.xcodeproj/project.xcworkspace/xcuserdata/mhamilt7.xcuserdatad/UserInterfaceState.xcuserstate 371 | *.xcuserstate 372 | *xcuserdata/ 373 | 374 | package/ 375 | *.tlog 376 | 377 | sysbuild/ 378 | externals/ 379 | max-package/max-ble/externals/ 380 | 381 | *.zip 382 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "maxmsp-ble"] 2 | path = maxmsp-ble 3 | url = https://github.com/mhamilt/maxmsp-ble 4 | [submodule "max-byte-cast"] 5 | path = max-byte-cast 6 | url = https://github.com/mhamilt/max-byte-cast 7 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | 3 |

4 | 5 | 6 | # Max Hardware Library 7 | 8 | 9 | Library of utility objects for MaxMSP aimed at interacting with electronics hardware like Arduino 10 | 11 | 12 | 13 | - [Install](#install) 14 | - [Contents](#contents) 15 | - [max-ble](#max-ble) 16 | - [Usage](#usage) 17 | - [byte-cast](#byte-cast) 18 | - [Usage](#usage) 19 | - [Contribution](#contribution) 20 | 21 | ## Install 22 | 23 | [Unzip the package folder](<>) into you `~/Documents/Max 8/Packages` directory. 24 | 25 | * * * 26 | 27 | ## Contents 28 | 29 | The library currently consists of the following projects 30 | 31 | ### max-ble 32 | 33 | Max Object to interface with Bluetooth Low Energy devices like mobile devices, Arduino and other micro-controllers with BLE capability. [See git repo for source code](https://github.com/mhamilt/maxmsp-ble) 34 | 35 | #### Usage 36 | 37 | First send a scan message. Each new device will be output from the right outlet. This output can be collected in a [`umenu`](https://docs.cycling74.com/max8/refpages/umenu) object for later use. 38 | 39 | Connecting to a device will output all of the available services and characteristics of the device. 40 | 41 | - Each device has an identifier (6-byte address on windows, UUID on macOS) 42 | - Each device has services (a UUID) 43 | - Each service has characteristics (a UUID) 44 | - Each characteristic has a value (raw byte data) 45 | 46 | Output on connection is in the format `service_UUID characteristic_UUID byte_data_as_list`. The [`route`](https://docs.cycling74.com/max8/refpages/route) can be used to separate out services and characteristics. 47 | 48 | Byte data can be interpreted with [`itoa`](https://docs.cycling74.com/max8/refpages/itoa), [bit shift](https://docs.cycling74.com/max8/refpages/shiftleft?q=%3C%3C) and [bit compare](https://docs.cycling74.com/max8/refpages/bitor?q=%7C) operators, or by using this libraries [`byte-cast`](<>) object. 49 | 50 | See the object reference in max for more examples. 51 | 52 | ### byte-cast 53 | 54 | `byte-cast` is a MaxMSP utility object for casting a list of bytes to other data formats. Useful when interacting with Arduino using the [`serial` object](https://docs.cycling74.com/max8/refpages/serial). 55 | 56 | [See git repo for source code](https://github.com/mhamilt/max-byte-cast) 57 | 58 | #### Usage 59 | 60 | The object takes a single argument of a data type and modifiers 61 | 62 | | Format | Data Type | 63 | | ------ | --------------------- | 64 | | i | 32-bit int | 65 | | h | 16-bit int | 66 | | f | 32-bit float | 67 | | s | ASCII string (greedy) | 68 | 69 | | Modifier | Effect | 70 | | -------- | ------------------------------- | 71 | | `u` | unsigned (`i` and `h` only) | 72 | | `>` | Big endian (append) | 73 | | `<` | Little endian (append) | 74 | 75 | **e.g. ** `[byte-cast uh<]` decodes little-endian unsigned 16-bit integer bytes. 76 | 77 | See the object reference in max for more examples. 78 | 79 | * * * 80 | 81 | ## Contribution 82 | 83 | This repository collects together individual projects as submodules. Issues with a specific external should be flagged at the corresponding repository. 84 | 85 | Any issues with library structure or feature requests for further externals should flagged against this repository. 86 | -------------------------------------------------------------------------------- /max-hardware-library.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /max-hardware-library.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /max-hardware-library.xcworkspace/xcshareddata/xcschemes/max-hardware-lib.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 11 | 14 | 15 | 16 | 18 | 22 | 23 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 41 | 47 | 48 | 49 | 55 | 61 | 62 | 63 | 64 | 65 | 71 | 72 | 82 | 83 | 89 | 90 | 96 | 97 | 98 | 99 | 101 | 102 | 105 | 106 | 107 | -------------------------------------------------------------------------------- /max-package/max-hardware-library/README.md: -------------------------------------------------------------------------------- 1 | # MaxMSP BLE 2 | 3 | A BLE Object for Max 4 | 5 | ### Examples 6 | 7 | Copy and paste the below example into Max: 8 | 9 |

 10 | ----------begin_max5_patcher----------
 11 | 1162.3ocyYtzaaiCD.9r8uBBg8nqgnnd481l1r.KP1S6lSKJJXjYhUgLo.Ic
 12 | hcK5+8czP4XGWpTKmDEewNhhly7w4IY993QA2nVKLAjem7ejQi993QivgZFX
 13 | T6yiBVxWWTwM3zBrp6tqRDLw8px43fpa95Ghx2NXMWyWJrB8WDR9MvjgoD19
 14 | N4pkkxJgEWL5i+.awhR4ceQKJrNkIhNMbBgFE270tOIed25nVYObgbCY2TKb
 15 | qRPoDVuO27xeLdbyGSNRLWJLF9cOxoUrFUr.snVosjei5aGHNvGkQ+RJSBa9
 16 | JICoLp+TdZHJEO.Z8OSHr7Bh1XJ8gXZeQjkiFOVdJxX9ufwnNYbxoxYWlx4h
 17 | 6KKDjnNYMo2lyzvoQI.eNlyRFVC5AftOJQ8Ek3XVixGyPOTmC56tq42pHlpF
 18 | alunOVuYjkFgtlINWyjg20rPsbo.RQcHnvj9.j3j7PYUEoXkVCSpZCwH35hE
 19 | jaUZxEWcIw4.aHb4bhwpzBBmTUZrDHqmPK4UUalR9TYg5dgVL+woiK5MBRst
 20 | YdyIVEwtPP9a9ZxGURipRLkbcsRRJTRIrYAaZMyg2t.3j+mK03ee80+0mlP9
 21 | 3BHieAHSP3kE3fnRo4OPtYicOYZ.PHvFHgaZU1oj+cQowo2EbIpXbsAzqUFT
 22 | xfzboj.ibioqcuppDzM0JItgw73xSC5YIG1tX1jTzgONqSmgvWQq8EUqDVkx
 23 | tfbk5AxkRg9tMnQFLIdbzoyNIxRvOo4nOeTX2j0N5sJo8VdA5jSe88s8A1ic
 24 | PzHaS42PYyZhNOAdwTvTV1.ZHOHN3hFWeebl0WCXT5roIMYiwLUTWt4myF9Z
 25 | 5cxs.QaHWItWTgw19PJsuHMqss.z9Poz2Ah5hE5IxRL1bS1r2.Td1d0h9ico
 26 | D1OCX3o0NZqMIM67oUsYw9rSImFesQQQsQQmG8aSyC+SeLxNQaX76lMrqnth
 27 | Jn6EWcd0sj4kls8kTC4KqWHz7JuIKi6cxRVaW3LrTGcV3aP.YWdpHk9vn2cm
 28 | Rgvv8vfMvGlnyZbtlBa5HzqMjva5+btXs+yHSC6s4D5XoYav0RVjywdfpTfd
 29 | q9cUAHOrsYO316V0hBaqD5xQkvFPe2ag1om6Ahrd65lDilLGDrYmGdtvQjpI
 30 | F3LFRPa8fYuaggBmeLC3j5J46Nz+.4YZrbs84no2oMosoKSnuYvzYRy1bJ9R
 31 | Xj2+BftLDt7Eoz206f4INednq2svzdinstbryE5.+PeWISeoKOeu6CkEeVze
 32 | 1ybd0fS5RsYtC6jQwbjm.dMUkdJh3JfWIxA2kOpDMi+TtMpU5hsK21qtlrSQ
 33 | lKfCvJ41RkbuIQcyw6V6QKn7iPPa0lWljROFIAskQnuPIwZWjmWRouFLkLPl
 34 | I5QHGD6cSRomKzcWY3Xkb9.QX1.ImgxhwFp.3viQPIuBgUziAospyKSRQmQg
 35 | UGf8igUzeJeOutFNVho8miBEpV8UEN87I3ikR2iXwj.s39xsyGuy7fl+gBkV
 36 | nB0JMpnAqSccNFrTABVtprU1.tfHwpkRNzGPc6UCiEUG+iw+OZQhFE.
 37 | -----------end_max5_patcher-----------
 38 | 
39 | 40 | #### Subscribing 41 | 42 | To be notified of a service, you can take this approach: 43 | 44 |

 45 | ----------begin_max5_patcher----------
 46 | 923.3ocuWF0aZCCD.9Y3WgUTk1KzpXmDHr25l19CzmlllpLAWpqRribbZosp
 47 | +2m84.DngRJX5CPjubwm+t67c1uNbPvL4RVU.56n+hFL30gCF.hrBFzLdPPA
 48 | cYVNsBTKPvdRN6gfQtWoYK0f3WxQU47LFhr5U74vKLJeYzjUBE0EbQNSCyEY
 49 | iPYsdWokTc18bwhaUrLsaEhiuJbDhjNw9HIAFPtJD8ulOwMK5mKYN8CBFY9g
 50 | 9m8suMbn8uQ8DyBVUEcA6cbNm8HPIppdVUlhOigt.itnSpG+InFuepIgIWkX
 51 | HEmZAFGi6A2dk4rbFU0Efw9APLwEJmB.Fkbt3aVsVKEcAx5vWIUQKXZl5Vlf
 52 | NKGrWXWPhOVHS.HIwq9e+PNiJVbbftm8nkJVISLGQKsO5xODF3GVA5hhBsOl
 53 | N9bEOqKXh50XnYEMExBvog+1t0mbMdp84H6eFgINgjezgP2WrR30MZNsKgwA
 54 | qIokyypqWRhhNniMEbr3vvC6Y4BMTD7nKDpkKVjy5HYgL47uoIEp0gSh66dF
 55 | KtdFyzufZCweUXtuR7lJCRk1zJqKOfuJy6nLEpClL4bUUHSVXpKneGh+QVix
 56 | nhVMt0RDEYhpZdVcNUgtgorM2+VE5m2ah0YlPMux7xqP+5Ql5YMuv7M2yPOR
 57 | yqYn5x4TMqBw0nm344HyDZHnrVitSIKPl0zky1jQkyErLYsPu0QbTrJyRkp4
 58 | RwscpQ6v.9STbN7CBCVG+DrqUKwUn1FE7nq9lFWrwvVm71dyUZemTnuilwZC
 59 | QKbwS8HtwScod.tjPOi6Ng51Pj1l1J9K.sQ1NhdiMWufHX+T7jiDs8dzOovj
 60 | Up67T8o9prP65Bi+xOcaksnvlBeep8jQ9wEzzlqox3YyCrmiE9Aou973fD2E
 61 | 1LUdRNDd4lBEaiHnKTDcmKqBlyJeatqj0prUSWCJnMVbNyTIR.w3V5XulJZe
 62 | 6e5qgVMIerkB8gkF2CKg8fgfSAiODRauZJ3yKkliozDtFCo.wgtqvNk79QDb
 63 | j6Qx5Qmp+ItG9Gfs8trwQw1r0nwt6vDsdvItzR6SNBYKkjp4LEzO3zbJj9X5
 64 | XejdF9Ib+mV9Yu1x4Cj9h1vk1e6ra1A9z7j8wxDejcPhOJeoqO.srzbf7pFk
 65 | AaX5h8fD7.oifgbgaHzWxb+lG4qzGtec.UYZSoM8npUv5JX4X28bBJjFeonl
 66 | 23NMzYLIzEUXt+WUYyYVglsCea3+AjpWsaH
 67 | -----------end_max5_patcher-----------
 68 | 
69 | 70 | #### Combining with umenus 71 | 72 |

 73 | ----------begin_max5_patcher----------
 74 | 1666.3ocuY0zbahCF9bxuBML8Xni9Fo8FXfY50saOs6NcHXkD5XCd.baZ6r+
 75 | 2WgD3XmXa.CNWf7JKfmm2u0a98s23bewypJGve.9avM276au4FyRMKbSq7MN
 76 | qSdNcURkYaNqUUUIOpbty9a0pmqMqmtRkT1sZw15Up55etQYe0NNf+s8m1jT
 77 | m9TV9iesTkVa+Ujz6iv6.HAq4FwbEi+Hb2yjuccVt9EZP.tcwrkluaw8eyEA
 78 | cdYm1usYqnlE+uaus4xcSjeUpZvGPWFAIMrQSPtn4FEMZBJlO9kq9g9M9F5s
 79 | oTsQkubZ7yZGYjyyOza4G+pyuesBTsJKUAHmlh20GMMziB4FVNd2T1wYI9BX
 80 | YZw50p752Py3hs4KAgpuqoZ0+j+ku7ov6.+4m+7m514prbUpdS06iQswuR+1
 81 | RpyJx+5w2wQhZIzOxzpCoQQfXPSvKYDVcB93JD3LpP9rprQWn+yEOkTljVqJ
 82 | yppyRcNiYFQLDiXcps2vvwPLz7QrsZZs8j9rYMTd.ttsglThwJgfv237lUqV
 83 | 2VHvAIfwMuRrOR1b+tlK5EY1EwAGYQ6Szsne6NkGaQpyf0jX1KFpxj0Js46q
 84 | p7j6WYT.vipkIyWViZPEvTXCfOaZi1heV6w4rCXnzDl.MNUbznyThOQLCYFK
 85 | 0kVjqSAb4k6ZIIlaxLv8FchRL7pWO3wjZUOF0yGPQM1QOSsNJd7srPmuhA85
 86 | 7hlGmWTGOoWpy60228glBfWXanV500Fpbz1T50uKzklJ65HSP016qRKyt2H7
 87 | gcZ19KkOxXYAuoXH11UNhJFsVgveuZdEjr4x6gsMf1VsWxGsuMYFyYMS07ML
 88 | pq+rdJ46wI95.f.2nPehKkgCcEgw9tbuvXXLSFShzDD3JDcEziD577gdbWn.
 89 | 66RWPibCBoTWY.xiwHXhGmZdBb2SDygvXR.2cAGxcon3Et9bRfaXT.2OlEDE
 90 | rnoyBr2tOgO0mFxXtdQDMnB0fJXwBgtq.FhrHxWf7oGBJYDk5i8PtgAROWJM
 91 | zyUFpuPEXTDILfIobySv2ApXrOiDSc88w5uATydANRnaNcgbASxhiQDySH6d
 92 | BFERhCk9tQXOnKEigMbNvESEggLhTxaI9NdDRjXNIJxU+KZr3Eq+FALptNWb
 93 | LmA0JhEwGPbQfj6gHP23Hhvk5ywtAdZiiGTPnRs9kGsn4S3QGdtW46SmT0EO
 94 | 93J0YcdOmSq.YOMgw2Eu65voo23oI58ml1XyIPSw6CMOUcHcB2hxKuCwV5aq
 95 | zxtfFDmwRsm5ji+0SYU.0yIq2rRAVpVWjWUWp6ZrBT+jBrsQs.Jd.XxUWAxx
 96 | A51l+117zlJufejU+DP+Yb0VDPcAn5ohezbuq0Z8eZKkWA1TV7n1DtVWxNMY
 97 | 0pedENodi90CYGtFdzGSGit9GS+KUZHuSgYzdGTD7TrhJsNRu8L5OTjW+PRp
 98 | ZeR0GSQxqOSa4XeDydN81IN4MBqEZWlgFMPU1uLZ.RSCMyE0N4HRSSxu3TBs
 99 | I9aSIL9QjRt5cY9JK2an2prJSiYl6CnUS6L.zwkrQ1pIp+iNZdWlTHuZ39F3
100 | zr9g7upXaYZGQ5FoN3EHsTUUmkaR6r2lv18bTU7P+PlQD02GRbvdVmsbSgtB
101 | aK0vlw0wvh8FW2gRXtsBKjdDIaFQr8j7GJg3sYKM1HizNPTTtTUd5HnAS+lw
102 | mg5g97yRepMIQKVsyd4PIb6LXZSSdfDRd.GkFNNIJwGfAkbVJ0BFr8eq.t6z
103 | XSGZhA.sgfr4WoMnv.L7JFGzNOGjvn5ajdquNZRbjMDJxNGEob6j4sjRXG91
104 | gRXqyBztyFoIZYZlTWuQnC.0Dqa7dBSEXCINa.dLDrMevKBS0WFO.jgNKvrd
105 | gsHCgs+ukNPBKDufZivTQ8TAMhg1gk4FX84+8pzGuFYdXSzf.9BxLByggFMo
106 | HZLQZPCxa+vVzL4Dh6ydROK13PiWHWtW7QivTg1f5sBOf.jNes8jlAmsoo0P
107 | RxUQqQGdComO9DY66YOo4nBAbRQnspo1NcHyUIBxP7zdUAtiiL99Eu3y.x3S
108 | tFQqxZ1S25Mj5pmCYRSZCjMa6dBSEXzIqxrJIzdkALBSEXCosZLsejg1u.0b
109 | nxHSUiYsd83iYOrcxlMeWUV09xMPxYcx2JLMNKtyHlkaEMGp2oT88rt8SLqj
110 | Tl9TVsJsdaogFNOysS5zYcgtE77sYscgqUF5OoYjE4IqUUaZmzkYxF29e29+
111 | .0eXAXC
112 | -----------end_max5_patcher-----------
113 | 
114 | -------------------------------------------------------------------------------- /max-package/max-hardware-library/docs/byte-cast.maxref.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | For casting a list of byte data 5 | Max Object to cast a list of byte data such as that received from Arduino serial comms or Bluetooth Low Energy devices 6 | 7 | 8 | Matthew Hamilton 9 | serial 10 | data 11 | byte 12 | 13 | 14 | 15 | 16 | Output Types 17 | The number of arguments determines the number of outlets. Each outlet decodes a list of bytes as either 16-bit 32-bit signed or unsigned int, 32-bit or 64-bit float or symbol. 18 |
19 | Decoding method is identified by symbol arguments (h, i, f, or s) similar to C format strings. 20 |
21 | Modifiers can be used to dictate endianess ('<' little, `>` big) and signing ('u' for unsigned). e.g. `uh>` is an unsigned 16-bit int in big-endian order. 22 |
23 | 32 |
33 |
34 |
35 | 36 | 37 | 38 | List 39 | list of bytes to cast 40 | 41 | 42 | 43 | 44 | 45 | List Data 46 | Byte data cast to specified format. If multiple bytes worth of data is provided, mutliple values will be output. Incomplete data will be ignored. 47 | 48 | 49 | 50 |
51 | -------------------------------------------------------------------------------- /max-package/max-hardware-library/docs/max-ble.maxref.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Bluetooth Low Energy Interface 5 | Max Object to interface with Bluetooth Low Energy devices like Mobile devices, Arduinos and other micro-controllers 6 | 7 | 8 | Matthew Hamilton 9 | ble 10 | bluetooth 11 | 64-bit 12 | 13 | 14 | 15 | 16 | Message inlet: valid messages begin with scan, stop, found, clear, connect, report and device 17 | Message inlet: valid messages begin with scan, stop, found, clear, connect, report and device 18 | 19 | 20 | 21 | 22 | 23 | List Outlet: The found message will output a list of found device UUIDs and RSSIs in series. A connect message will output Service and Charachteristic UUIDs with raw bytes in series. 24 | List ID: The found message will output a list of found device UUIDs and RSSIs in series. A connect message will output Service and Charachteristic UUIDs with raw bytes in series. 25 | 26 | 27 | Notification outlet: Subscribed charateristics will output a list of Characteristic UUID and raw bytes on value change 28 | Notification outlet: Subscribed charateristics will output a list of Characteristic UUID and raw bytes on value change 29 | 30 | 31 | 32 | 33 | 34 | clear the internal list of found devices. 35 | clear the internal list of found devices. 36 | 37 | 38 | connect followed by an int will attempt connect to a found device at the given index. All Services and Characteristics will be sent out the first outlet and will bre printed if reporting is on. 39 | 40 | connect int: 41 | connect followed by an int will attempt connect to a found device at the given index. All Services and Characteristics will be sent out the first outlet and will bre printed if reporting is on. 42 |

43 | connect symbol: 44 | connect followed by a symbol will interpret the symbol as uuid and attept to connect to the specified device. If the device has not yet been discovered this will trigger scanning and immediately connect once the device has been found. 45 |

46 | connect name symbol: 47 | connect followed by name then a symbol will interpret the symbol as device name. This will connect to the first device in found devices matching the name. 48 |
49 |
50 | 51 | A device list message is used to interact with the found devices. The int following device specifies the index in found devices. 52 | 53 | 54 | device int rssi: 55 | The int specifies the device index in found devices. RSSI value will be returned out the first inlet as a list message. 56 |

57 | device int subscribe ServiceUUID CharacteristicUUID: 58 | Subscribe to the notifying characteristic of a with a Characteristic UUID of a Service UUID for a device at the index int. Updates to characteristic value will be sent out the second outlet in list form CharacteristicUUID then the raw bytes. 59 |
60 |
61 | 62 | filter out devices during scanning 63 | 64 | 65 | 66 | filter rssi int: 67 | 68 | ignore devices with an RSSI higher than the int specified 69 |

70 | 71 | filter iphone int: 72 | 73 | toggle ignoring apple devices with 1 to ignore and 0 to allow. Useful for thinning out scanning for Arduinos. 74 |

75 | 76 | filter services UUIDlist: 77 | 78 | 'filter' followed by 'services' followed by a list of symbols will scan only for devices advertising one of the listed service UUIDs. This message will trigger the scanning process if it is not already active. 79 |
80 |
81 | 82 | output, in series, the list of found devices and their RSSIs from outlet 3 and post this to the Max Console if reporting is on. 83 | 84 | output, in series, the list of found devices and their RSSIs from outlet 3 and post this to the Max Console if reporting is on. 85 | 86 | 87 | A report message followed by 0 or 1 will toggle reporting printouts to the Max Console. 88 | 89 | A report message followed by 0 or 1 will toggle reporting printouts to the Max Console. 90 | 91 | 92 | 93 | A scan message will begin scanning for BLE devices. A scan message followed by 0 or 1 will toggle scanning. 94 | 95 | 96 | 97 | scan int: 98 | 99 | scan followed by 0 or 1 will toggle scanning. 100 |

101 | 102 | scan symbol: 103 | 104 | scan followed by a list of symbols will begin scanning for devices with any of the advertised uuids in the list 105 |
106 |
107 | 108 | A stop message will halt scanning. 109 | 110 | A stop message will halt scanning. 111 | 112 |
113 |
114 | -------------------------------------------------------------------------------- /max-package/max-hardware-library/docs/topics/max_hardware_library_topic.maxvig.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Matthew Hamilton 6 | mhl 7 | 8 | 9 | 10 |

Max Hardware Library

11 |

12 | The Max Hardware Library looks to collect together a series of utility objects at interacting with electronics hardware like Arduino. 13 | The package provides objects and examples for communicating via Bluetooth Low Energy and for casting raw byte data to other data types. 14 |

15 |

16 | Source code for the library is open and avilable at github.com/mhamilt/max-hardware-library. 17 | Contact the repository owner for any feature requests. 18 |

19 | 20 | 21 |

The Objects

22 | 26 | 27 | 28 |

Example Patches

29 | 30 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 |
48 | -------------------------------------------------------------------------------- /max-package/max-hardware-library/examples/mhl.arduino-notify.maxpat: -------------------------------------------------------------------------------- 1 | { 2 | "patcher" : { 3 | "fileversion" : 1, 4 | "appversion" : { 5 | "major" : 8, 6 | "minor" : 1, 7 | "revision" : 3, 8 | "architecture" : "x64", 9 | "modernui" : 1 10 | } 11 | , 12 | "classnamespace" : "box", 13 | "rect" : [ 74.0, 106.0, 738.0, 550.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" : "", 40 | "boxes" : [ { 41 | "box" : { 42 | "id" : "obj-42", 43 | "maxclass" : "newobj", 44 | "numinlets" : 1, 45 | "numoutlets" : 0, 46 | "patching_rect" : [ 105.0, 480.0, 91.0, 22.0 ], 47 | "text" : "print @popup 1" 48 | } 49 | 50 | } 51 | , { 52 | "box" : { 53 | "id" : "obj-41", 54 | "linecount" : 3, 55 | "maxclass" : "comment", 56 | "numinlets" : 1, 57 | "numoutlets" : 0, 58 | "patching_rect" : [ 29.0, 130.5, 330.0, 47.0 ], 59 | "text" : "Upload Sketch at \n\n~/Documents/Max 8/Packages/max-ble/extras/ble-notify" 60 | } 61 | 62 | } 63 | , { 64 | "box" : { 65 | "bgcolor" : [ 1.0, 0.788235, 0.470588, 1.0 ], 66 | "fontname" : "Arial Bold", 67 | "hint" : "", 68 | "id" : "obj-39", 69 | "ignoreclick" : 1, 70 | "legacytextcolor" : 1, 71 | "maxclass" : "textbutton", 72 | "numinlets" : 1, 73 | "numoutlets" : 3, 74 | "outlettype" : [ "", "", "int" ], 75 | "parameter_enable" : 0, 76 | "patching_rect" : [ 3.0, 144.0, 21.0, 20.0 ], 77 | "rounded" : 60.0, 78 | "text" : "1", 79 | "textcolor" : [ 0.34902, 0.34902, 0.34902, 1.0 ] 80 | } 81 | 82 | } 83 | , { 84 | "box" : { 85 | "bgcolor" : [ 1.0, 0.788235, 0.470588, 1.0 ], 86 | "fontname" : "Arial Bold", 87 | "hint" : "", 88 | "id" : "obj-37", 89 | "ignoreclick" : 1, 90 | "legacytextcolor" : 1, 91 | "maxclass" : "textbutton", 92 | "numinlets" : 1, 93 | "numoutlets" : 3, 94 | "outlettype" : [ "", "", "int" ], 95 | "parameter_enable" : 0, 96 | "patching_rect" : [ 608.5, 188.5, 20.0, 20.0 ], 97 | "rounded" : 60.0, 98 | "text" : "5", 99 | "textcolor" : [ 0.34902, 0.34902, 0.34902, 1.0 ] 100 | } 101 | 102 | } 103 | , { 104 | "box" : { 105 | "bgcolor" : [ 1.0, 0.788235, 0.470588, 1.0 ], 106 | "fontname" : "Arial Bold", 107 | "hint" : "", 108 | "id" : "obj-36", 109 | "ignoreclick" : 1, 110 | "legacytextcolor" : 1, 111 | "maxclass" : "textbutton", 112 | "numinlets" : 1, 113 | "numoutlets" : 3, 114 | "outlettype" : [ "", "", "int" ], 115 | "parameter_enable" : 0, 116 | "patching_rect" : [ 496.5, 364.5, 20.0, 20.0 ], 117 | "rounded" : 60.0, 118 | "text" : "4", 119 | "textcolor" : [ 0.34902, 0.34902, 0.34902, 1.0 ] 120 | } 121 | 122 | } 123 | , { 124 | "box" : { 125 | "bgcolor" : [ 1.0, 0.788235, 0.470588, 1.0 ], 126 | "fontname" : "Arial Bold", 127 | "hint" : "", 128 | "id" : "obj-35", 129 | "ignoreclick" : 1, 130 | "legacytextcolor" : 1, 131 | "maxclass" : "textbutton", 132 | "numinlets" : 1, 133 | "numoutlets" : 3, 134 | "outlettype" : [ "", "", "int" ], 135 | "parameter_enable" : 0, 136 | "patching_rect" : [ 406.0, 175.0, 20.0, 20.0 ], 137 | "rounded" : 60.0, 138 | "text" : "3", 139 | "textcolor" : [ 0.34902, 0.34902, 0.34902, 1.0 ] 140 | } 141 | 142 | } 143 | , { 144 | "box" : { 145 | "bgcolor" : [ 1.0, 0.788235, 0.470588, 1.0 ], 146 | "fontname" : "Arial Bold", 147 | "hint" : "", 148 | "id" : "obj-34", 149 | "ignoreclick" : 1, 150 | "legacytextcolor" : 1, 151 | "maxclass" : "textbutton", 152 | "numinlets" : 1, 153 | "numoutlets" : 3, 154 | "outlettype" : [ "", "", "int" ], 155 | "parameter_enable" : 0, 156 | "patching_rect" : [ 239.5, 206.0, 20.0, 20.0 ], 157 | "rounded" : 60.0, 158 | "text" : "2", 159 | "textcolor" : [ 0.34902, 0.34902, 0.34902, 1.0 ] 160 | } 161 | 162 | } 163 | , { 164 | "box" : { 165 | "bubble" : 1, 166 | "bubblepoint" : 0.3, 167 | "bubbleside" : 3, 168 | "fontname" : "Arial", 169 | "fontsize" : 13.0, 170 | "id" : "obj-26", 171 | "maxclass" : "comment", 172 | "numinlets" : 1, 173 | "numoutlets" : 0, 174 | "patching_rect" : [ 13.5, 480.0, 85.0, 25.0 ], 175 | "text" : "LED State" 176 | } 177 | 178 | } 179 | , { 180 | "box" : { 181 | "bubble" : 1, 182 | "bubblepoint" : 0.15, 183 | "bubbleside" : 2, 184 | "fontname" : "Arial", 185 | "fontsize" : 13.0, 186 | "id" : "obj-17", 187 | "linecount" : 2, 188 | "maxclass" : "comment", 189 | "numinlets" : 1, 190 | "numoutlets" : 0, 191 | "patching_rect" : [ 263.0, 197.0, 141.0, 55.0 ], 192 | "presentation_linecount" : 2, 193 | "text" : "Or the Specific Service" 194 | } 195 | 196 | } 197 | , { 198 | "box" : { 199 | "id" : "obj-3", 200 | "linecount" : 2, 201 | "maxclass" : "message", 202 | "numinlets" : 2, 203 | "numoutlets" : 1, 204 | "outlettype" : [ "" ], 205 | "patching_rect" : [ 168.5, 250.0, 249.0, 35.0 ], 206 | "text" : "filter services 19B10000-E8F2-537E-4F6C-D104768A1214" 207 | } 208 | 209 | } 210 | , { 211 | "box" : { 212 | "bubble" : 1, 213 | "bubblepoint" : 0.3, 214 | "bubbleside" : 2, 215 | "fontname" : "Arial", 216 | "fontsize" : 13.0, 217 | "id" : "obj-38", 218 | "linecount" : 2, 219 | "maxclass" : "comment", 220 | "numinlets" : 1, 221 | "numoutlets" : 0, 222 | "patching_rect" : [ 636.5, 188.5, 95.0, 55.0 ], 223 | "text" : "Subscribe to Characteristic" 224 | } 225 | 226 | } 227 | , { 228 | "box" : { 229 | "id" : "obj-14", 230 | "linecount" : 3, 231 | "maxclass" : "comment", 232 | "numinlets" : 1, 233 | "numoutlets" : 0, 234 | "patching_rect" : [ 3.0, 75.0, 602.0, 47.0 ], 235 | "text" : "This examples demonstrates getting updates from an Arduino with a BLE chip such as the Arduino Nano 33 IoT.\n\nThere is a multi-stage process to start getting data from your Arduino" 236 | } 237 | 238 | } 239 | , { 240 | "box" : { 241 | "fontface" : 1, 242 | "id" : "obj-15", 243 | "maxclass" : "comment", 244 | "numinlets" : 1, 245 | "numoutlets" : 0, 246 | "patching_rect" : [ 3.0, 53.0, 182.0, 20.0 ], 247 | "text" : "Arduino Notification" 248 | } 249 | 250 | } 251 | , { 252 | "box" : { 253 | "fontsize" : 36.0, 254 | "id" : "obj-16", 255 | "maxclass" : "comment", 256 | "numinlets" : 1, 257 | "numoutlets" : 0, 258 | "patching_rect" : [ 3.0, 4.0, 137.0, 47.0 ], 259 | "text" : "max-ble" 260 | } 261 | 262 | } 263 | , { 264 | "box" : { 265 | "id" : "obj-11", 266 | "maxclass" : "newobj", 267 | "numinlets" : 2, 268 | "numoutlets" : 2, 269 | "outlettype" : [ "", "" ], 270 | "patching_rect" : [ 137.0, 411.0, 55.0, 22.0 ], 271 | "text" : "zl slice 1" 272 | } 273 | 274 | } 275 | , { 276 | "box" : { 277 | "id" : "obj-22", 278 | "maxclass" : "message", 279 | "numinlets" : 2, 280 | "numoutlets" : 1, 281 | "outlettype" : [ "" ], 282 | "patching_rect" : [ 529.0, 370.5, 148.0, 22.0 ], 283 | "text" : "device $1 subscribe $2 $3" 284 | } 285 | 286 | } 287 | , { 288 | "box" : { 289 | "id" : "obj-19", 290 | "maxclass" : "newobj", 291 | "numinlets" : 1, 292 | "numoutlets" : 1, 293 | "outlettype" : [ "" ], 294 | "patching_rect" : [ 548.0, 328.5, 53.0, 22.0 ], 295 | "text" : "prepend" 296 | } 297 | 298 | } 299 | , { 300 | "box" : { 301 | "id" : "obj-18", 302 | "maxclass" : "message", 303 | "numinlets" : 2, 304 | "numoutlets" : 1, 305 | "outlettype" : [ "" ], 306 | "patching_rect" : [ 560.0, 295.5, 41.0, 22.0 ], 307 | "text" : "set $1" 308 | } 309 | 310 | } 311 | , { 312 | "box" : { 313 | "id" : "obj-8", 314 | "maxclass" : "newobj", 315 | "numinlets" : 1, 316 | "numoutlets" : 1, 317 | "outlettype" : [ "" ], 318 | "patching_rect" : [ 532.5, 215.5, 96.0, 22.0 ], 319 | "text" : "prepend append" 320 | } 321 | 322 | } 323 | , { 324 | "box" : { 325 | "id" : "obj-13", 326 | "items" : [ "19B10000-E8F2-537E-4F6C-D104768A1214", "19B10001-E8F2-537E-4F6C-D104768A1214", 1 ], 327 | "maxclass" : "umenu", 328 | "numinlets" : 1, 329 | "numoutlets" : 3, 330 | "outlettype" : [ "int", "", "" ], 331 | "parameter_enable" : 0, 332 | "patching_rect" : [ 532.5, 251.5, 185.0, 22.0 ] 333 | } 334 | 335 | } 336 | , { 337 | "box" : { 338 | "id" : "obj-12", 339 | "maxclass" : "newobj", 340 | "numinlets" : 1, 341 | "numoutlets" : 1, 342 | "outlettype" : [ "" ], 343 | "patching_rect" : [ 308.0, 328.5, 96.0, 22.0 ], 344 | "text" : "prepend append" 345 | } 346 | 347 | } 348 | , { 349 | "box" : { 350 | "id" : "obj-6", 351 | "maxclass" : "newobj", 352 | "numinlets" : 1, 353 | "numoutlets" : 3, 354 | "outlettype" : [ "", "int", "clear" ], 355 | "patching_rect" : [ 308.0, 435.5, 61.0, 22.0 ], 356 | "text" : "t s 2 clear" 357 | } 358 | 359 | } 360 | , { 361 | "box" : { 362 | "id" : "obj-5", 363 | "maxclass" : "newobj", 364 | "numinlets" : 2, 365 | "numoutlets" : 2, 366 | "outlettype" : [ "", "" ], 367 | "patching_rect" : [ 240.0, 379.0, 42.0, 22.0 ], 368 | "text" : "gate 2" 369 | } 370 | 371 | } 372 | , { 373 | "box" : { 374 | "id" : "obj-4", 375 | "maxclass" : "newobj", 376 | "numinlets" : 1, 377 | "numoutlets" : 3, 378 | "outlettype" : [ "", "clear", "int" ], 379 | "patching_rect" : [ 428.0, 250.0, 61.0, 22.0 ], 380 | "text" : "t s clear 1" 381 | } 382 | 383 | } 384 | , { 385 | "box" : { 386 | "id" : "obj-2", 387 | "items" : [ "4A3C5C33-79CB-4A46-93BF-67B2BD228E6A", -64 ], 388 | "maxclass" : "umenu", 389 | "numinlets" : 1, 390 | "numoutlets" : 3, 391 | "outlettype" : [ "int", "", "" ], 392 | "parameter_enable" : 0, 393 | "patching_rect" : [ 308.0, 364.5, 185.0, 22.0 ] 394 | } 395 | 396 | } 397 | , { 398 | "box" : { 399 | "bubble" : 1, 400 | "bubbleside" : 2, 401 | "fontname" : "Arial", 402 | "fontsize" : 13.0, 403 | "id" : "obj-32", 404 | "linecount" : 2, 405 | "maxclass" : "comment", 406 | "numinlets" : 1, 407 | "numoutlets" : 0, 408 | "patching_rect" : [ 406.0, 307.5, 120.0, 55.0 ], 409 | "text" : "Connect to Device at Index" 410 | } 411 | 412 | } 413 | , { 414 | "box" : { 415 | "bubble" : 1, 416 | "bubblepoint" : 0.09, 417 | "bubbleside" : 2, 418 | "fontname" : "Arial", 419 | "fontsize" : 13.0, 420 | "id" : "obj-30", 421 | "maxclass" : "comment", 422 | "numinlets" : 1, 423 | "numoutlets" : 0, 424 | "patching_rect" : [ 428.0, 170.0, 140.0, 40.0 ], 425 | "text" : "List Found Devices" 426 | } 427 | 428 | } 429 | , { 430 | "box" : { 431 | "bubble" : 1, 432 | "bubblepoint" : 0.236333333333333, 433 | "bubbleside" : 2, 434 | "fontname" : "Arial", 435 | "fontsize" : 13.0, 436 | "id" : "obj-29", 437 | "linecount" : 3, 438 | "maxclass" : "comment", 439 | "numinlets" : 1, 440 | "numoutlets" : 0, 441 | "patching_rect" : [ 3.0, 197.0, 90.0, 69.0 ], 442 | "text" : "Toggle Printing To Console" 443 | } 444 | 445 | } 446 | , { 447 | "box" : { 448 | "bubble" : 1, 449 | "fontname" : "Arial", 450 | "fontsize" : 13.0, 451 | "id" : "obj-47", 452 | "linecount" : 2, 453 | "maxclass" : "comment", 454 | "numinlets" : 1, 455 | "numoutlets" : 0, 456 | "patching_rect" : [ 133.5, 197.0, 99.0, 40.0 ], 457 | "text" : "Scan For Arduino" 458 | } 459 | 460 | } 461 | , { 462 | "box" : { 463 | "id" : "obj-21", 464 | "maxclass" : "message", 465 | "numinlets" : 2, 466 | "numoutlets" : 1, 467 | "outlettype" : [ "" ], 468 | "patching_rect" : [ 308.0, 402.5, 67.0, 22.0 ], 469 | "text" : "connect $1" 470 | } 471 | 472 | } 473 | , { 474 | "box" : { 475 | "id" : "obj-10", 476 | "maxclass" : "message", 477 | "numinlets" : 2, 478 | "numoutlets" : 1, 479 | "outlettype" : [ "" ], 480 | "patching_rect" : [ 480.5, 212.0, 35.0, 22.0 ], 481 | "text" : "clear" 482 | } 483 | 484 | } 485 | , { 486 | "box" : { 487 | "id" : "obj-7", 488 | "maxclass" : "message", 489 | "numinlets" : 2, 490 | "numoutlets" : 1, 491 | "outlettype" : [ "" ], 492 | "patching_rect" : [ 428.0, 212.0, 39.0, 22.0 ], 493 | "text" : "found" 494 | } 495 | 496 | } 497 | , { 498 | "box" : { 499 | "id" : "obj-27", 500 | "maxclass" : "toggle", 501 | "numinlets" : 1, 502 | "numoutlets" : 1, 503 | "outlettype" : [ "int" ], 504 | "parameter_enable" : 0, 505 | "patching_rect" : [ 105.0, 206.0, 24.0, 24.0 ] 506 | } 507 | 508 | } 509 | , { 510 | "box" : { 511 | "id" : "obj-28", 512 | "maxclass" : "toggle", 513 | "numinlets" : 1, 514 | "numoutlets" : 1, 515 | "outlettype" : [ "int" ], 516 | "parameter_enable" : 0, 517 | "patching_rect" : [ 13.5, 273.0, 24.0, 24.0 ] 518 | } 519 | 520 | } 521 | , { 522 | "box" : { 523 | "id" : "obj-24", 524 | "maxclass" : "message", 525 | "numinlets" : 2, 526 | "numoutlets" : 1, 527 | "outlettype" : [ "" ], 528 | "patching_rect" : [ 13.5, 304.0, 57.0, 22.0 ], 529 | "text" : "report $1" 530 | } 531 | 532 | } 533 | , { 534 | "box" : { 535 | "id" : "obj-9", 536 | "maxclass" : "message", 537 | "numinlets" : 2, 538 | "numoutlets" : 1, 539 | "outlettype" : [ "" ], 540 | "patching_rect" : [ 105.0, 248.0, 51.0, 22.0 ], 541 | "text" : "scan $1" 542 | } 543 | 544 | } 545 | , { 546 | "box" : { 547 | "id" : "obj-1", 548 | "maxclass" : "newobj", 549 | "numinlets" : 1, 550 | "numoutlets" : 2, 551 | "outlettype" : [ "list", "list" ], 552 | "patching_rect" : [ 84.5, 372.0, 71.5, 22.0 ], 553 | "text" : "max-ble" 554 | } 555 | 556 | } 557 | ], 558 | "lines" : [ { 559 | "patchline" : { 560 | "destination" : [ "obj-11", 0 ], 561 | "midpoints" : [ 146.5, 396.0, 146.5, 396.0 ], 562 | "source" : [ "obj-1", 1 ] 563 | } 564 | 565 | } 566 | , { 567 | "patchline" : { 568 | "destination" : [ "obj-5", 1 ], 569 | "midpoints" : [ 94.0, 396.0, 225.0, 396.0, 225.0, 366.0, 272.5, 366.0 ], 570 | "source" : [ "obj-1", 0 ] 571 | } 572 | 573 | } 574 | , { 575 | "patchline" : { 576 | "destination" : [ "obj-1", 0 ], 577 | "midpoints" : [ 490.0, 294.0, 393.0, 294.0, 393.0, 315.0, 94.0, 315.0 ], 578 | "source" : [ "obj-10", 0 ] 579 | } 580 | 581 | } 582 | , { 583 | "patchline" : { 584 | "destination" : [ "obj-42", 0 ], 585 | "midpoints" : [ 182.5, 465.0, 114.5, 465.0 ], 586 | "source" : [ "obj-11", 1 ] 587 | } 588 | 589 | } 590 | , { 591 | "patchline" : { 592 | "destination" : [ "obj-2", 0 ], 593 | "midpoints" : [ 317.5, 351.0, 317.5, 351.0 ], 594 | "source" : [ "obj-12", 0 ] 595 | } 596 | 597 | } 598 | , { 599 | "patchline" : { 600 | "destination" : [ "obj-19", 0 ], 601 | "midpoints" : [ 625.0, 324.0, 557.5, 324.0 ], 602 | "source" : [ "obj-13", 1 ] 603 | } 604 | 605 | } 606 | , { 607 | "patchline" : { 608 | "destination" : [ "obj-19", 0 ], 609 | "midpoints" : [ 569.5, 318.0, 558.0, 318.0, 558.0, 324.0, 557.5, 324.0 ], 610 | "source" : [ "obj-18", 0 ] 611 | } 612 | 613 | } 614 | , { 615 | "patchline" : { 616 | "destination" : [ "obj-22", 0 ], 617 | "midpoints" : [ 557.5, 351.0, 538.5, 351.0 ], 618 | "source" : [ "obj-19", 0 ] 619 | } 620 | 621 | } 622 | , { 623 | "patchline" : { 624 | "destination" : [ "obj-18", 0 ], 625 | "midpoints" : [ 317.5, 387.0, 294.0, 387.0, 294.0, 297.0, 429.0, 297.0, 429.0, 291.0, 569.5, 291.0 ], 626 | "order" : 0, 627 | "source" : [ "obj-2", 0 ] 628 | } 629 | 630 | } 631 | , { 632 | "patchline" : { 633 | "destination" : [ "obj-21", 0 ], 634 | "midpoints" : [ 317.5, 387.0, 317.5, 387.0 ], 635 | "order" : 1, 636 | "source" : [ "obj-2", 0 ] 637 | } 638 | 639 | } 640 | , { 641 | "patchline" : { 642 | "destination" : [ "obj-6", 0 ], 643 | "midpoints" : [ 317.5, 426.0, 317.5, 426.0 ], 644 | "source" : [ "obj-21", 0 ] 645 | } 646 | 647 | } 648 | , { 649 | "patchline" : { 650 | "destination" : [ "obj-1", 0 ], 651 | "midpoints" : [ 538.5, 402.0, 387.0, 402.0, 387.0, 396.0, 294.0, 396.0, 294.0, 357.0, 94.0, 357.0 ], 652 | "source" : [ "obj-22", 0 ] 653 | } 654 | 655 | } 656 | , { 657 | "patchline" : { 658 | "destination" : [ "obj-1", 0 ], 659 | "midpoints" : [ 23.0, 357.0, 94.0, 357.0 ], 660 | "source" : [ "obj-24", 0 ] 661 | } 662 | 663 | } 664 | , { 665 | "patchline" : { 666 | "destination" : [ "obj-9", 0 ], 667 | "midpoints" : [ 114.5, 231.0, 114.5, 231.0 ], 668 | "source" : [ "obj-27", 0 ] 669 | } 670 | 671 | } 672 | , { 673 | "patchline" : { 674 | "destination" : [ "obj-24", 0 ], 675 | "midpoints" : [ 23.0, 300.0, 23.0, 300.0 ], 676 | "source" : [ "obj-28", 0 ] 677 | } 678 | 679 | } 680 | , { 681 | "patchline" : { 682 | "destination" : [ "obj-1", 0 ], 683 | "midpoints" : [ 178.0, 357.0, 94.0, 357.0 ], 684 | "source" : [ "obj-3", 0 ] 685 | } 686 | 687 | } 688 | , { 689 | "patchline" : { 690 | "destination" : [ "obj-1", 0 ], 691 | "midpoints" : [ 437.5, 294.0, 393.0, 294.0, 393.0, 315.0, 94.0, 315.0 ], 692 | "source" : [ "obj-4", 0 ] 693 | } 694 | 695 | } 696 | , { 697 | "patchline" : { 698 | "destination" : [ "obj-2", 0 ], 699 | "midpoints" : [ 458.5, 294.0, 393.0, 294.0, 393.0, 315.0, 294.0, 315.0, 294.0, 360.0, 317.5, 360.0 ], 700 | "source" : [ "obj-4", 1 ] 701 | } 702 | 703 | } 704 | , { 705 | "patchline" : { 706 | "destination" : [ "obj-5", 0 ], 707 | "midpoints" : [ 479.5, 294.0, 393.0, 294.0, 393.0, 315.0, 249.5, 315.0 ], 708 | "source" : [ "obj-4", 2 ] 709 | } 710 | 711 | } 712 | , { 713 | "patchline" : { 714 | "destination" : [ "obj-12", 0 ], 715 | "midpoints" : [ 249.5, 411.0, 294.0, 411.0, 294.0, 324.0, 317.5, 324.0 ], 716 | "source" : [ "obj-5", 0 ] 717 | } 718 | 719 | } 720 | , { 721 | "patchline" : { 722 | "destination" : [ "obj-8", 0 ], 723 | "midpoints" : [ 272.5, 402.0, 294.0, 402.0, 294.0, 297.0, 429.0, 297.0, 429.0, 282.0, 519.0, 282.0, 519.0, 210.0, 542.0, 210.0 ], 724 | "source" : [ "obj-5", 1 ] 725 | } 726 | 727 | } 728 | , { 729 | "patchline" : { 730 | "destination" : [ "obj-1", 0 ], 731 | "midpoints" : [ 317.5, 459.0, 204.0, 459.0, 204.0, 357.0, 94.0, 357.0 ], 732 | "source" : [ "obj-6", 0 ] 733 | } 734 | 735 | } 736 | , { 737 | "patchline" : { 738 | "destination" : [ "obj-13", 0 ], 739 | "midpoints" : [ 359.5, 459.0, 525.0, 459.0, 525.0, 363.0, 528.0, 363.0, 528.0, 285.0, 519.0, 285.0, 519.0, 246.0, 542.0, 246.0 ], 740 | "source" : [ "obj-6", 2 ] 741 | } 742 | 743 | } 744 | , { 745 | "patchline" : { 746 | "destination" : [ "obj-5", 0 ], 747 | "midpoints" : [ 338.5, 468.0, 294.0, 468.0, 294.0, 366.0, 249.5, 366.0 ], 748 | "source" : [ "obj-6", 1 ] 749 | } 750 | 751 | } 752 | , { 753 | "patchline" : { 754 | "destination" : [ "obj-4", 0 ], 755 | "midpoints" : [ 437.5, 237.0, 437.5, 237.0 ], 756 | "source" : [ "obj-7", 0 ] 757 | } 758 | 759 | } 760 | , { 761 | "patchline" : { 762 | "destination" : [ "obj-13", 0 ], 763 | "midpoints" : [ 542.0, 240.0, 542.0, 240.0 ], 764 | "source" : [ "obj-8", 0 ] 765 | } 766 | 767 | } 768 | , { 769 | "patchline" : { 770 | "destination" : [ "obj-1", 0 ], 771 | "midpoints" : [ 114.5, 357.0, 94.0, 357.0 ], 772 | "source" : [ "obj-9", 0 ] 773 | } 774 | 775 | } 776 | ], 777 | "dependency_cache" : [ { 778 | "name" : "max-ble.mxo", 779 | "type" : "iLaX" 780 | } 781 | ], 782 | "autosave" : 0, 783 | "styles" : [ { 784 | "name" : "AudioStatus_Menu", 785 | "default" : { 786 | "bgfillcolor" : { 787 | "type" : "color", 788 | "color" : [ 0.294118, 0.313726, 0.337255, 1 ], 789 | "color1" : [ 0.454902, 0.462745, 0.482353, 0 ], 790 | "color2" : [ 0.290196, 0.309804, 0.301961, 1 ], 791 | "angle" : 270, 792 | "proportion" : 0.39, 793 | "autogradient" : 0 794 | } 795 | 796 | } 797 | , 798 | "parentstyle" : "", 799 | "multi" : 0 800 | } 801 | ] 802 | } 803 | 804 | } 805 | -------------------------------------------------------------------------------- /max-package/max-hardware-library/examples/mhl.ble-midi.maxpat: -------------------------------------------------------------------------------- 1 | { 2 | "patcher" : { 3 | "fileversion" : 1, 4 | "appversion" : { 5 | "major" : 8, 6 | "minor" : 1, 7 | "revision" : 3, 8 | "architecture" : "x64", 9 | "modernui" : 1 10 | } 11 | , 12 | "classnamespace" : "box", 13 | "rect" : [ 34.0, 56.0, 658.0, 773.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" : "", 40 | "boxes" : [ { 41 | "box" : { 42 | "fontsize" : 48.059353564210596, 43 | "id" : "obj-56", 44 | "maxclass" : "comment", 45 | "numinlets" : 1, 46 | "numoutlets" : 0, 47 | "patching_rect" : [ 10.0, 21.0, 180.0, 60.0 ], 48 | "text" : "max-ble" 49 | } 50 | 51 | } 52 | , { 53 | "box" : { 54 | "id" : "obj-52", 55 | "maxclass" : "newobj", 56 | "numinlets" : 1, 57 | "numoutlets" : 0, 58 | "patching_rect" : [ 434.0, 211.5, 82.0, 22.0 ], 59 | "text" : "s \"to max-ble\"" 60 | } 61 | 62 | } 63 | , { 64 | "box" : { 65 | "id" : "obj-49", 66 | "maxclass" : "message", 67 | "numinlets" : 2, 68 | "numoutlets" : 1, 69 | "outlettype" : [ "" ], 70 | "patching_rect" : [ 434.0, 181.0, 31.0, 22.0 ], 71 | "text" : "stop" 72 | } 73 | 74 | } 75 | , { 76 | "box" : { 77 | "id" : "obj-39", 78 | "maxclass" : "comment", 79 | "numinlets" : 1, 80 | "numoutlets" : 0, 81 | "patching_rect" : [ 80.25, 584.0, 150.0, 20.0 ], 82 | "text" : "MIDI note Messages" 83 | } 84 | 85 | } 86 | , { 87 | "box" : { 88 | "bgcolor" : [ 1.0, 0.788235, 0.470588, 1.0 ], 89 | "fontname" : "Arial Bold", 90 | "hint" : "", 91 | "id" : "obj-35", 92 | "ignoreclick" : 1, 93 | "legacytextcolor" : 1, 94 | "maxclass" : "textbutton", 95 | "numinlets" : 1, 96 | "numoutlets" : 3, 97 | "outlettype" : [ "", "", "int" ], 98 | "parameter_enable" : 0, 99 | "patching_rect" : [ 599.0, 390.5, 20.0, 20.0 ], 100 | "rounded" : 60.0, 101 | "text" : "3", 102 | "textcolor" : [ 0.34902, 0.34902, 0.34902, 1.0 ] 103 | } 104 | 105 | } 106 | , { 107 | "box" : { 108 | "id" : "obj-33", 109 | "maxclass" : "newobj", 110 | "numinlets" : 1, 111 | "numoutlets" : 0, 112 | "patching_rect" : [ 198.5, 533.0, 82.0, 22.0 ], 113 | "text" : "s \"to max-ble\"" 114 | } 115 | 116 | } 117 | , { 118 | "box" : { 119 | "id" : "obj-31", 120 | "maxclass" : "newobj", 121 | "numinlets" : 1, 122 | "numoutlets" : 0, 123 | "patching_rect" : [ 455.0, 358.5, 82.0, 22.0 ], 124 | "text" : "s \"to max-ble\"" 125 | } 126 | 127 | } 128 | , { 129 | "box" : { 130 | "id" : "obj-23", 131 | "maxclass" : "newobj", 132 | "numinlets" : 0, 133 | "numoutlets" : 1, 134 | "outlettype" : [ "" ], 135 | "patching_rect" : [ 89.0, 251.5, 80.0, 22.0 ], 136 | "text" : "r \"to max-ble\"" 137 | } 138 | 139 | } 140 | , { 141 | "box" : { 142 | "id" : "obj-9", 143 | "maxclass" : "newobj", 144 | "numinlets" : 1, 145 | "numoutlets" : 0, 146 | "patching_rect" : [ 349.0, 561.0, 82.0, 22.0 ], 147 | "text" : "s \"to max-ble\"" 148 | } 149 | 150 | } 151 | , { 152 | "box" : { 153 | "id" : "obj-58", 154 | "maxclass" : "button", 155 | "numinlets" : 1, 156 | "numoutlets" : 1, 157 | "outlettype" : [ "bang" ], 158 | "parameter_enable" : 0, 159 | "patching_rect" : [ 132.0, 520.5, 24.0, 24.0 ] 160 | } 161 | 162 | } 163 | , { 164 | "box" : { 165 | "id" : "obj-50", 166 | "maxclass" : "newobj", 167 | "numinlets" : 1, 168 | "numoutlets" : 1, 169 | "outlettype" : [ "" ], 170 | "patching_rect" : [ 59.25, 520.5, 25.0, 22.0 ], 171 | "text" : "iter" 172 | } 173 | 174 | } 175 | , { 176 | "box" : { 177 | "id" : "obj-44", 178 | "maxclass" : "message", 179 | "numinlets" : 2, 180 | "numoutlets" : 1, 181 | "outlettype" : [ "" ], 182 | "patching_rect" : [ 28.25, 584.0, 45.0, 22.0 ], 183 | "text" : "60 100" 184 | } 185 | 186 | } 187 | , { 188 | "box" : { 189 | "id" : "obj-16", 190 | "maxclass" : "newobj", 191 | "numinlets" : 1, 192 | "numoutlets" : 8, 193 | "outlettype" : [ "", "", "", "int", "int", "", "int", "" ], 194 | "patching_rect" : [ 59.25, 555.0, 92.5, 22.0 ], 195 | "text" : "midiparse" 196 | } 197 | 198 | } 199 | , { 200 | "box" : { 201 | "bubble" : 1, 202 | "bubblepoint" : 0.4, 203 | "fontname" : "Arial", 204 | "fontsize" : 13.0, 205 | "id" : "obj-30", 206 | "linecount" : 2, 207 | "maxclass" : "comment", 208 | "numinlets" : 1, 209 | "numoutlets" : 0, 210 | "patching_rect" : [ 489.0, 293.5, 166.0, 40.0 ], 211 | "text" : "List out found devices\nor clear the internal list" 212 | } 213 | 214 | } 215 | , { 216 | "box" : { 217 | "hidden" : 1, 218 | "id" : "obj-20", 219 | "maxclass" : "newobj", 220 | "numinlets" : 1, 221 | "numoutlets" : 1, 222 | "outlettype" : [ "" ], 223 | "patching_rect" : [ 10.0, 172.5, 89.0, 22.0 ], 224 | "text" : "loadmess set 1" 225 | } 226 | 227 | } 228 | , { 229 | "box" : { 230 | "bgcolor" : [ 1.0, 0.788235, 0.470588, 1.0 ], 231 | "fontname" : "Arial Bold", 232 | "hint" : "", 233 | "id" : "obj-36", 234 | "ignoreclick" : 1, 235 | "legacytextcolor" : 1, 236 | "maxclass" : "textbutton", 237 | "numinlets" : 1, 238 | "numoutlets" : 3, 239 | "outlettype" : [ "", "", "int" ], 240 | "parameter_enable" : 0, 241 | "patching_rect" : [ 272.0, 303.5, 20.0, 20.0 ], 242 | "rounded" : 60.0, 243 | "text" : "2", 244 | "textcolor" : [ 0.34902, 0.34902, 0.34902, 1.0 ] 245 | } 246 | 247 | } 248 | , { 249 | "box" : { 250 | "bgcolor" : [ 1.0, 0.788235, 0.470588, 1.0 ], 251 | "fontname" : "Arial Bold", 252 | "hint" : "", 253 | "id" : "obj-34", 254 | "ignoreclick" : 1, 255 | "legacytextcolor" : 1, 256 | "maxclass" : "textbutton", 257 | "numinlets" : 1, 258 | "numoutlets" : 3, 259 | "outlettype" : [ "", "", "int" ], 260 | "parameter_enable" : 0, 261 | "patching_rect" : [ 325.0, 175.5, 20.0, 20.0 ], 262 | "rounded" : 60.0, 263 | "text" : "1", 264 | "textcolor" : [ 0.34902, 0.34902, 0.34902, 1.0 ] 265 | } 266 | 267 | } 268 | , { 269 | "box" : { 270 | "bubble" : 1, 271 | "bubblepoint" : 0.15, 272 | "bubbleside" : 2, 273 | "fontname" : "Arial", 274 | "fontsize" : 13.0, 275 | "id" : "obj-17", 276 | "maxclass" : "comment", 277 | "numinlets" : 1, 278 | "numoutlets" : 0, 279 | "patching_rect" : [ 155.0, 181.0, 184.0, 40.0 ], 280 | "text" : "scan for BLE MIDI devices" 281 | } 282 | 283 | } 284 | , { 285 | "box" : { 286 | "id" : "obj-3", 287 | "maxclass" : "message", 288 | "numinlets" : 2, 289 | "numoutlets" : 1, 290 | "outlettype" : [ "" ], 291 | "patching_rect" : [ 71.5, 227.5, 287.0, 22.0 ], 292 | "text" : "scan 03B80E5A-EDE8-4B33-A751-6CE34EC4C700" 293 | } 294 | 295 | } 296 | , { 297 | "box" : { 298 | "bubble" : 1, 299 | "bubblepoint" : 0.3, 300 | "fontname" : "Arial", 301 | "fontsize" : 13.0, 302 | "id" : "obj-38", 303 | "linecount" : 2, 304 | "maxclass" : "comment", 305 | "numinlets" : 1, 306 | "numoutlets" : 0, 307 | "patching_rect" : [ 507.0, 398.0, 105.0, 40.0 ], 308 | "text" : "Subscribe to Characteristic" 309 | } 310 | 311 | } 312 | , { 313 | "box" : { 314 | "id" : "obj-14", 315 | "linecount" : 4, 316 | "maxclass" : "comment", 317 | "numinlets" : 1, 318 | "numoutlets" : 0, 319 | "patching_rect" : [ 10.0, 105.0, 602.0, 60.0 ], 320 | "text" : "BLE MIDI devices should advertise a service with UUID 03B80E5A-EDE8-4B33-A751-6CE34EC4C700\n\nclick \"scan 03B80E5A-EDE8-4B33-A751-6CE34EC4C700\" to start looking\nThis service should have a subscribable charteristic 7772E5DB-3868-4112-A1A9-F2669D106BF3 " 321 | } 322 | 323 | } 324 | , { 325 | "box" : { 326 | "fontface" : 1, 327 | "id" : "obj-15", 328 | "maxclass" : "comment", 329 | "numinlets" : 1, 330 | "numoutlets" : 0, 331 | "patching_rect" : [ 10.0, 83.0, 182.0, 20.0 ], 332 | "text" : "BLE MIDI via max-ble" 333 | } 334 | 335 | } 336 | , { 337 | "box" : { 338 | "id" : "obj-11", 339 | "maxclass" : "newobj", 340 | "numinlets" : 2, 341 | "numoutlets" : 2, 342 | "outlettype" : [ "", "" ], 343 | "patching_rect" : [ 23.25, 482.5, 55.0, 22.0 ], 344 | "text" : "zl slice 1" 345 | } 346 | 347 | } 348 | , { 349 | "box" : { 350 | "id" : "obj-22", 351 | "maxclass" : "message", 352 | "numinlets" : 2, 353 | "numoutlets" : 1, 354 | "outlettype" : [ "" ], 355 | "patching_rect" : [ 349.0, 533.0, 148.0, 22.0 ], 356 | "text" : "device $1 subscribe $2 $3" 357 | } 358 | 359 | } 360 | , { 361 | "box" : { 362 | "id" : "obj-19", 363 | "maxclass" : "newobj", 364 | "numinlets" : 1, 365 | "numoutlets" : 1, 366 | "outlettype" : [ "" ], 367 | "patching_rect" : [ 349.0, 505.5, 142.0, 22.0 ], 368 | "text" : "prepend \"DEVICE UUID\"" 369 | } 370 | 371 | } 372 | , { 373 | "box" : { 374 | "id" : "obj-18", 375 | "maxclass" : "message", 376 | "numinlets" : 2, 377 | "numoutlets" : 1, 378 | "outlettype" : [ "" ], 379 | "patching_rect" : [ 319.0, 472.5, 41.0, 22.0 ], 380 | "text" : "set $1" 381 | } 382 | 383 | } 384 | , { 385 | "box" : { 386 | "fontsize" : 4.0, 387 | "id" : "obj-8", 388 | "maxclass" : "newobj", 389 | "numinlets" : 1, 390 | "numoutlets" : 1, 391 | "outlettype" : [ "" ], 392 | "patching_rect" : [ 10.0, 310.5, 38.0, 13.0 ], 393 | "text" : "prepend append" 394 | } 395 | 396 | } 397 | , { 398 | "box" : { 399 | "id" : "obj-13", 400 | "items" : "", 401 | "maxclass" : "umenu", 402 | "numinlets" : 1, 403 | "numoutlets" : 3, 404 | "outlettype" : [ "int", "", "" ], 405 | "parameter_enable" : 0, 406 | "patching_rect" : [ 319.0, 403.5, 185.0, 22.0 ] 407 | } 408 | 409 | } 410 | , { 411 | "box" : { 412 | "fontsize" : 4.0, 413 | "id" : "obj-12", 414 | "maxclass" : "newobj", 415 | "numinlets" : 1, 416 | "numoutlets" : 1, 417 | "outlettype" : [ "" ], 418 | "patching_rect" : [ 62.5, 310.5, 39.0, 13.0 ], 419 | "text" : "prepend append" 420 | } 421 | 422 | } 423 | , { 424 | "box" : { 425 | "id" : "obj-6", 426 | "maxclass" : "newobj", 427 | "numinlets" : 1, 428 | "numoutlets" : 3, 429 | "outlettype" : [ "", "int", "clear" ], 430 | "patching_rect" : [ 198.5, 500.0, 61.0, 22.0 ], 431 | "text" : "t s 2 clear" 432 | } 433 | 434 | } 435 | , { 436 | "box" : { 437 | "id" : "obj-4", 438 | "maxclass" : "newobj", 439 | "numinlets" : 1, 440 | "numoutlets" : 2, 441 | "outlettype" : [ "", "clear" ], 442 | "patching_rect" : [ 391.5, 326.5, 51.0, 22.0 ], 443 | "text" : "t s clear" 444 | } 445 | 446 | } 447 | , { 448 | "box" : { 449 | "id" : "obj-2", 450 | "items" : "", 451 | "maxclass" : "umenu", 452 | "numinlets" : 1, 453 | "numoutlets" : 3, 454 | "outlettype" : [ "int", "", "" ], 455 | "parameter_enable" : 0, 456 | "patching_rect" : [ 95.5, 403.5, 185.0, 22.0 ] 457 | } 458 | 459 | } 460 | , { 461 | "box" : { 462 | "bubble" : 1, 463 | "bubbleside" : 2, 464 | "fontname" : "Arial", 465 | "fontsize" : 13.0, 466 | "id" : "obj-32", 467 | "linecount" : 3, 468 | "maxclass" : "comment", 469 | "numinlets" : 1, 470 | "numoutlets" : 0, 471 | "patching_rect" : [ 192.0, 310.5, 95.0, 69.0 ], 472 | "text" : "Connect to Device by Index" 473 | } 474 | 475 | } 476 | , { 477 | "box" : { 478 | "id" : "obj-21", 479 | "maxclass" : "message", 480 | "numinlets" : 2, 481 | "numoutlets" : 1, 482 | "outlettype" : [ "" ], 483 | "patching_rect" : [ 111.0, 446.0, 67.0, 22.0 ], 484 | "text" : "connect $1" 485 | } 486 | 487 | } 488 | , { 489 | "box" : { 490 | "id" : "obj-10", 491 | "maxclass" : "message", 492 | "numinlets" : 2, 493 | "numoutlets" : 1, 494 | "outlettype" : [ "" ], 495 | "patching_rect" : [ 444.0, 295.5, 35.0, 22.0 ], 496 | "text" : "clear" 497 | } 498 | 499 | } 500 | , { 501 | "box" : { 502 | "id" : "obj-7", 503 | "maxclass" : "message", 504 | "numinlets" : 2, 505 | "numoutlets" : 1, 506 | "outlettype" : [ "" ], 507 | "patching_rect" : [ 391.5, 295.5, 39.0, 22.0 ], 508 | "text" : "found" 509 | } 510 | 511 | } 512 | , { 513 | "box" : { 514 | "id" : "obj-28", 515 | "maxclass" : "toggle", 516 | "numinlets" : 1, 517 | "numoutlets" : 1, 518 | "outlettype" : [ "int" ], 519 | "parameter_enable" : 0, 520 | "patching_rect" : [ 10.0, 197.0, 24.0, 24.0 ] 521 | } 522 | 523 | } 524 | , { 525 | "box" : { 526 | "id" : "obj-24", 527 | "maxclass" : "message", 528 | "numinlets" : 2, 529 | "numoutlets" : 1, 530 | "outlettype" : [ "" ], 531 | "patching_rect" : [ 10.0, 227.5, 57.0, 22.0 ], 532 | "text" : "report $1" 533 | } 534 | 535 | } 536 | , { 537 | "box" : { 538 | "id" : "obj-1", 539 | "maxclass" : "newobj", 540 | "numinlets" : 1, 541 | "numoutlets" : 3, 542 | "outlettype" : [ "list", "list", "list" ], 543 | "patching_rect" : [ 10.0, 284.0, 81.25, 22.0 ], 544 | "text" : "max-ble" 545 | } 546 | 547 | } 548 | ], 549 | "lines" : [ { 550 | "patchline" : { 551 | "destination" : [ "obj-11", 0 ], 552 | "source" : [ "obj-1", 1 ] 553 | } 554 | 555 | } 556 | , { 557 | "patchline" : { 558 | "destination" : [ "obj-12", 0 ], 559 | "source" : [ "obj-1", 2 ] 560 | } 561 | 562 | } 563 | , { 564 | "patchline" : { 565 | "destination" : [ "obj-8", 0 ], 566 | "source" : [ "obj-1", 0 ] 567 | } 568 | 569 | } 570 | , { 571 | "patchline" : { 572 | "destination" : [ "obj-4", 0 ], 573 | "source" : [ "obj-10", 0 ] 574 | } 575 | 576 | } 577 | , { 578 | "patchline" : { 579 | "destination" : [ "obj-50", 0 ], 580 | "order" : 1, 581 | "source" : [ "obj-11", 1 ] 582 | } 583 | 584 | } 585 | , { 586 | "patchline" : { 587 | "destination" : [ "obj-58", 0 ], 588 | "order" : 0, 589 | "source" : [ "obj-11", 1 ] 590 | } 591 | 592 | } 593 | , { 594 | "patchline" : { 595 | "destination" : [ "obj-2", 0 ], 596 | "source" : [ "obj-12", 0 ] 597 | } 598 | 599 | } 600 | , { 601 | "patchline" : { 602 | "destination" : [ "obj-19", 0 ], 603 | "source" : [ "obj-13", 1 ] 604 | } 605 | 606 | } 607 | , { 608 | "patchline" : { 609 | "destination" : [ "obj-44", 1 ], 610 | "source" : [ "obj-16", 0 ] 611 | } 612 | 613 | } 614 | , { 615 | "patchline" : { 616 | "destination" : [ "obj-19", 0 ], 617 | "source" : [ "obj-18", 0 ] 618 | } 619 | 620 | } 621 | , { 622 | "patchline" : { 623 | "destination" : [ "obj-22", 0 ], 624 | "source" : [ "obj-19", 0 ] 625 | } 626 | 627 | } 628 | , { 629 | "patchline" : { 630 | "destination" : [ "obj-18", 0 ], 631 | "order" : 0, 632 | "source" : [ "obj-2", 0 ] 633 | } 634 | 635 | } 636 | , { 637 | "patchline" : { 638 | "destination" : [ "obj-21", 0 ], 639 | "order" : 1, 640 | "source" : [ "obj-2", 0 ] 641 | } 642 | 643 | } 644 | , { 645 | "patchline" : { 646 | "destination" : [ "obj-28", 0 ], 647 | "hidden" : 1, 648 | "source" : [ "obj-20", 0 ] 649 | } 650 | 651 | } 652 | , { 653 | "patchline" : { 654 | "destination" : [ "obj-6", 0 ], 655 | "source" : [ "obj-21", 0 ] 656 | } 657 | 658 | } 659 | , { 660 | "patchline" : { 661 | "destination" : [ "obj-9", 0 ], 662 | "source" : [ "obj-22", 0 ] 663 | } 664 | 665 | } 666 | , { 667 | "patchline" : { 668 | "destination" : [ "obj-1", 0 ], 669 | "source" : [ "obj-23", 0 ] 670 | } 671 | 672 | } 673 | , { 674 | "patchline" : { 675 | "destination" : [ "obj-1", 0 ], 676 | "source" : [ "obj-24", 0 ] 677 | } 678 | 679 | } 680 | , { 681 | "patchline" : { 682 | "destination" : [ "obj-24", 0 ], 683 | "source" : [ "obj-28", 0 ] 684 | } 685 | 686 | } 687 | , { 688 | "patchline" : { 689 | "destination" : [ "obj-1", 0 ], 690 | "source" : [ "obj-3", 0 ] 691 | } 692 | 693 | } 694 | , { 695 | "patchline" : { 696 | "destination" : [ "obj-13", 0 ], 697 | "order" : 0, 698 | "source" : [ "obj-4", 1 ] 699 | } 700 | 701 | } 702 | , { 703 | "patchline" : { 704 | "destination" : [ "obj-2", 0 ], 705 | "order" : 1, 706 | "source" : [ "obj-4", 1 ] 707 | } 708 | 709 | } 710 | , { 711 | "patchline" : { 712 | "destination" : [ "obj-31", 0 ], 713 | "source" : [ "obj-4", 0 ] 714 | } 715 | 716 | } 717 | , { 718 | "patchline" : { 719 | "destination" : [ "obj-52", 0 ], 720 | "source" : [ "obj-49", 0 ] 721 | } 722 | 723 | } 724 | , { 725 | "patchline" : { 726 | "destination" : [ "obj-16", 0 ], 727 | "source" : [ "obj-50", 0 ] 728 | } 729 | 730 | } 731 | , { 732 | "patchline" : { 733 | "destination" : [ "obj-13", 0 ], 734 | "source" : [ "obj-6", 2 ] 735 | } 736 | 737 | } 738 | , { 739 | "patchline" : { 740 | "destination" : [ "obj-33", 0 ], 741 | "source" : [ "obj-6", 0 ] 742 | } 743 | 744 | } 745 | , { 746 | "patchline" : { 747 | "destination" : [ "obj-4", 0 ], 748 | "source" : [ "obj-7", 0 ] 749 | } 750 | 751 | } 752 | , { 753 | "patchline" : { 754 | "destination" : [ "obj-13", 0 ], 755 | "source" : [ "obj-8", 0 ] 756 | } 757 | 758 | } 759 | ], 760 | "dependency_cache" : [ { 761 | "name" : "max-ble.mxo", 762 | "type" : "iLaX" 763 | } 764 | ], 765 | "autosave" : 0, 766 | "styles" : [ { 767 | "name" : "AudioStatus_Menu", 768 | "default" : { 769 | "bgfillcolor" : { 770 | "type" : "color", 771 | "color" : [ 0.294118, 0.313726, 0.337255, 1 ], 772 | "color1" : [ 0.454902, 0.462745, 0.482353, 0 ], 773 | "color2" : [ 0.290196, 0.309804, 0.301961, 1 ], 774 | "angle" : 270, 775 | "proportion" : 0.39, 776 | "autogradient" : 0 777 | } 778 | 779 | } 780 | , 781 | "parentstyle" : "", 782 | "multi" : 0 783 | } 784 | ] 785 | } 786 | 787 | } 788 | -------------------------------------------------------------------------------- /max-package/max-hardware-library/examples/mhl.byte-cast.maxpat: -------------------------------------------------------------------------------- 1 | { 2 | "patcher" : { 3 | "fileversion" : 1, 4 | "appversion" : { 5 | "major" : 8, 6 | "minor" : 1, 7 | "revision" : 3, 8 | "architecture" : "x64", 9 | "modernui" : 1 10 | } 11 | , 12 | "classnamespace" : "box", 13 | "rect" : [ 318.0, 233.0, 543.0, 480.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" : "", 40 | "boxes" : [ { 41 | "box" : { 42 | "id" : "obj-16", 43 | "maxclass" : "toggle", 44 | "numinlets" : 1, 45 | "numoutlets" : 1, 46 | "outlettype" : [ "int" ], 47 | "parameter_enable" : 0, 48 | "patching_rect" : [ 345.417747497558594, 370.0, 24.0, 24.0 ] 49 | } 50 | 51 | } 52 | , { 53 | "box" : { 54 | "bubble" : 1, 55 | "id" : "obj-10", 56 | "maxclass" : "comment", 57 | "numinlets" : 1, 58 | "numoutlets" : 0, 59 | "patching_rect" : [ 382.417747497558594, 370.0, 133.0, 24.0 ], 60 | "presentation_linecount" : 2, 61 | "text" : "Toggle Endianness" 62 | } 63 | 64 | } 65 | , { 66 | "box" : { 67 | "id" : "obj-11", 68 | "maxclass" : "message", 69 | "numinlets" : 2, 70 | "numoutlets" : 1, 71 | "outlettype" : [ "" ], 72 | "patching_rect" : [ 247.917747497558594, 432.0, 121.5, 22.0 ] 73 | } 74 | 75 | } 76 | , { 77 | "box" : { 78 | "id" : "obj-12", 79 | "maxclass" : "message", 80 | "numinlets" : 2, 81 | "numoutlets" : 1, 82 | "outlettype" : [ "" ], 83 | "patching_rect" : [ 247.917747497558594, 372.0, 79.0, 22.0 ], 84 | "text" : "64 73 15 219" 85 | } 86 | 87 | } 88 | , { 89 | "box" : { 90 | "id" : "obj-13", 91 | "maxclass" : "newobj", 92 | "numinlets" : 2, 93 | "numoutlets" : 1, 94 | "outlettype" : [ "list" ], 95 | "patching_rect" : [ 247.917747497558594, 401.0, 64.0, 22.0 ], 96 | "text" : "byte-cast f" 97 | } 98 | 99 | } 100 | , { 101 | "box" : { 102 | "bubble" : 1, 103 | "id" : "obj-1", 104 | "maxclass" : "comment", 105 | "numinlets" : 1, 106 | "numoutlets" : 0, 107 | "patching_rect" : [ 349.417747497558594, 147.0, 155.0, 24.0 ], 108 | "text" : "256 and 512 in bytes list" 109 | } 110 | 111 | } 112 | , { 113 | "box" : { 114 | "bubble" : 1, 115 | "id" : "obj-2", 116 | "linecount" : 2, 117 | "maxclass" : "comment", 118 | "numinlets" : 1, 119 | "numoutlets" : 0, 120 | "patching_rect" : [ 416.417747497558594, 258.0, 94.0, 37.0 ], 121 | "text" : "pi and tau in bytes" 122 | } 123 | 124 | } 125 | , { 126 | "box" : { 127 | "id" : "obj-3", 128 | "maxclass" : "message", 129 | "numinlets" : 2, 130 | "numoutlets" : 1, 131 | "outlettype" : [ "" ], 132 | "patching_rect" : [ 254.417747497558594, 207.0, 69.0, 22.0 ] 133 | } 134 | 135 | } 136 | , { 137 | "box" : { 138 | "id" : "obj-5", 139 | "maxclass" : "message", 140 | "numinlets" : 2, 141 | "numoutlets" : 1, 142 | "outlettype" : [ "" ], 143 | "patching_rect" : [ 255.417747497558594, 324.5, 64.0, 22.0 ] 144 | } 145 | 146 | } 147 | , { 148 | "box" : { 149 | "id" : "obj-6", 150 | "maxclass" : "message", 151 | "numinlets" : 2, 152 | "numoutlets" : 1, 153 | "outlettype" : [ "" ], 154 | "patching_rect" : [ 254.417747497558594, 147.0, 85.0, 22.0 ], 155 | "text" : "0 0 1 0 0 0 2 0" 156 | } 157 | 158 | } 159 | , { 160 | "box" : { 161 | "id" : "obj-7", 162 | "maxclass" : "newobj", 163 | "numinlets" : 2, 164 | "numoutlets" : 1, 165 | "outlettype" : [ "list" ], 166 | "patching_rect" : [ 254.417747497558594, 176.0, 63.0, 22.0 ], 167 | "text" : "byte-cast i" 168 | } 169 | 170 | } 171 | , { 172 | "box" : { 173 | "id" : "obj-8", 174 | "maxclass" : "message", 175 | "numinlets" : 2, 176 | "numoutlets" : 1, 177 | "outlettype" : [ "" ], 178 | "patching_rect" : [ 255.417747497558594, 264.5, 159.0, 22.0 ], 179 | "text" : "64 73 15 219 64 201 15 219" 180 | } 181 | 182 | } 183 | , { 184 | "box" : { 185 | "id" : "obj-9", 186 | "maxclass" : "newobj", 187 | "numinlets" : 2, 188 | "numoutlets" : 1, 189 | "outlettype" : [ "list" ], 190 | "patching_rect" : [ 255.417747497558594, 293.5, 64.0, 22.0 ], 191 | "text" : "byte-cast f" 192 | } 193 | 194 | } 195 | , { 196 | "box" : { 197 | "border" : 0, 198 | "filename" : "helpargs.js", 199 | "id" : "obj-4", 200 | "ignoreclick" : 1, 201 | "jsarguments" : [ "byte-cast" ], 202 | "maxclass" : "jsui", 203 | "numinlets" : 1, 204 | "numoutlets" : 1, 205 | "outlettype" : [ "" ], 206 | "parameter_enable" : 0, 207 | "patching_rect" : [ 100.0, 181.0, 120.835494995117188, 39.0 ] 208 | } 209 | 210 | } 211 | , { 212 | "box" : { 213 | "id" : "obj-42", 214 | "maxclass" : "comment", 215 | "numinlets" : 1, 216 | "numoutlets" : 0, 217 | "patching_rect" : [ 16.0, 125.0, 103.0, 20.0 ], 218 | "text" : "ASCII text" 219 | } 220 | 221 | } 222 | , { 223 | "box" : { 224 | "bubble" : 1, 225 | "id" : "obj-41", 226 | "maxclass" : "comment", 227 | "numinlets" : 1, 228 | "numoutlets" : 0, 229 | "patching_rect" : [ 95.417747497558594, 258.0, 130.0, 24.0 ], 230 | "text" : "475937281 in bytes" 231 | } 232 | 233 | } 234 | , { 235 | "box" : { 236 | "bubble" : 1, 237 | "id" : "obj-39", 238 | "maxclass" : "comment", 239 | "numinlets" : 1, 240 | "numoutlets" : 0, 241 | "patching_rect" : [ 105.417747497558594, 372.0, 120.0, 24.0 ], 242 | "text" : "pi in bytes" 243 | } 244 | 245 | } 246 | , { 247 | "box" : { 248 | "id" : "obj-35", 249 | "maxclass" : "message", 250 | "numinlets" : 2, 251 | "numoutlets" : 1, 252 | "outlettype" : [ "" ], 253 | "patching_rect" : [ 17.417747497558594, 318.0, 69.0, 22.0 ] 254 | } 255 | 256 | } 257 | , { 258 | "box" : { 259 | "id" : "obj-36", 260 | "maxclass" : "message", 261 | "numinlets" : 2, 262 | "numoutlets" : 1, 263 | "outlettype" : [ "" ], 264 | "patching_rect" : [ 17.417747497558594, 433.0, 64.0, 22.0 ] 265 | } 266 | 267 | } 268 | , { 269 | "box" : { 270 | "id" : "obj-37", 271 | "maxclass" : "message", 272 | "numinlets" : 2, 273 | "numoutlets" : 1, 274 | "outlettype" : [ "" ], 275 | "patching_rect" : [ 16.0, 217.0, 67.0, 22.0 ] 276 | } 277 | 278 | } 279 | , { 280 | "box" : { 281 | "id" : "obj-34", 282 | "maxclass" : "message", 283 | "numinlets" : 2, 284 | "numoutlets" : 1, 285 | "outlettype" : [ "" ], 286 | "patching_rect" : [ 17.417747497558594, 258.0, 65.0, 22.0 ], 287 | "text" : "28 94 58 1" 288 | } 289 | 290 | } 291 | , { 292 | "box" : { 293 | "id" : "obj-33", 294 | "maxclass" : "newobj", 295 | "numinlets" : 2, 296 | "numoutlets" : 1, 297 | "outlettype" : [ "list" ], 298 | "patching_rect" : [ 17.417747497558594, 287.0, 63.0, 22.0 ], 299 | "text" : "byte-cast i" 300 | } 301 | 302 | } 303 | , { 304 | "box" : { 305 | "id" : "obj-32", 306 | "maxclass" : "message", 307 | "numinlets" : 2, 308 | "numoutlets" : 1, 309 | "outlettype" : [ "" ], 310 | "patching_rect" : [ 17.417747497558594, 373.0, 79.0, 22.0 ], 311 | "text" : "64 73 15 219" 312 | } 313 | 314 | } 315 | , { 316 | "box" : { 317 | "id" : "obj-30", 318 | "maxclass" : "newobj", 319 | "numinlets" : 2, 320 | "numoutlets" : 1, 321 | "outlettype" : [ "list" ], 322 | "patching_rect" : [ 17.417747497558594, 402.0, 64.0, 22.0 ], 323 | "text" : "byte-cast f" 324 | } 325 | 326 | } 327 | , { 328 | "box" : { 329 | "id" : "obj-29", 330 | "maxclass" : "message", 331 | "numinlets" : 2, 332 | "numoutlets" : 1, 333 | "outlettype" : [ "" ], 334 | "patching_rect" : [ 16.0, 147.0, 159.0, 22.0 ], 335 | "text" : "84 101 115 116 105 110 103" 336 | } 337 | 338 | } 339 | , { 340 | "box" : { 341 | "id" : "obj-27", 342 | "maxclass" : "newobj", 343 | "numinlets" : 2, 344 | "numoutlets" : 1, 345 | "outlettype" : [ "list" ], 346 | "patching_rect" : [ 16.0, 181.0, 67.0, 22.0 ], 347 | "text" : "byte-cast s" 348 | } 349 | 350 | } 351 | , { 352 | "box" : { 353 | "border" : 0, 354 | "filename" : "helpdetails.js", 355 | "id" : "obj-26", 356 | "ignoreclick" : 1, 357 | "jsarguments" : [ "byte-cast" ], 358 | "maxclass" : "jsui", 359 | "numinlets" : 1, 360 | "numoutlets" : 1, 361 | "outlettype" : [ "" ], 362 | "parameter_enable" : 0, 363 | "patching_rect" : [ 1.0, 0.0, 539.0, 117.0 ] 364 | } 365 | 366 | } 367 | ], 368 | "lines" : [ { 369 | "patchline" : { 370 | "destination" : [ "obj-13", 0 ], 371 | "source" : [ "obj-12", 0 ] 372 | } 373 | 374 | } 375 | , { 376 | "patchline" : { 377 | "destination" : [ "obj-11", 1 ], 378 | "source" : [ "obj-13", 0 ] 379 | } 380 | 381 | } 382 | , { 383 | "patchline" : { 384 | "destination" : [ "obj-13", 1 ], 385 | "source" : [ "obj-16", 0 ] 386 | } 387 | 388 | } 389 | , { 390 | "patchline" : { 391 | "destination" : [ "obj-37", 1 ], 392 | "source" : [ "obj-27", 0 ] 393 | } 394 | 395 | } 396 | , { 397 | "patchline" : { 398 | "destination" : [ "obj-27", 0 ], 399 | "source" : [ "obj-29", 0 ] 400 | } 401 | 402 | } 403 | , { 404 | "patchline" : { 405 | "destination" : [ "obj-36", 1 ], 406 | "source" : [ "obj-30", 0 ] 407 | } 408 | 409 | } 410 | , { 411 | "patchline" : { 412 | "destination" : [ "obj-30", 0 ], 413 | "source" : [ "obj-32", 0 ] 414 | } 415 | 416 | } 417 | , { 418 | "patchline" : { 419 | "destination" : [ "obj-35", 1 ], 420 | "source" : [ "obj-33", 0 ] 421 | } 422 | 423 | } 424 | , { 425 | "patchline" : { 426 | "destination" : [ "obj-33", 0 ], 427 | "source" : [ "obj-34", 0 ] 428 | } 429 | 430 | } 431 | , { 432 | "patchline" : { 433 | "destination" : [ "obj-7", 0 ], 434 | "source" : [ "obj-6", 0 ] 435 | } 436 | 437 | } 438 | , { 439 | "patchline" : { 440 | "destination" : [ "obj-3", 1 ], 441 | "source" : [ "obj-7", 0 ] 442 | } 443 | 444 | } 445 | , { 446 | "patchline" : { 447 | "destination" : [ "obj-9", 0 ], 448 | "source" : [ "obj-8", 0 ] 449 | } 450 | 451 | } 452 | , { 453 | "patchline" : { 454 | "destination" : [ "obj-5", 1 ], 455 | "source" : [ "obj-9", 0 ] 456 | } 457 | 458 | } 459 | ], 460 | "dependency_cache" : [ { 461 | "name" : "helpdetails.js", 462 | "bootpath" : "C74:/help/resources", 463 | "type" : "TEXT", 464 | "implicit" : 1 465 | } 466 | , { 467 | "name" : "helpargs.js", 468 | "bootpath" : "C74:/help/resources", 469 | "type" : "TEXT", 470 | "implicit" : 1 471 | } 472 | , { 473 | "name" : "byte-cast.mxo", 474 | "type" : "iLaX" 475 | } 476 | ], 477 | "autosave" : 0 478 | } 479 | 480 | } 481 | -------------------------------------------------------------------------------- /max-package/max-hardware-library/examples/mhl.connect-everything.maxpat: -------------------------------------------------------------------------------- 1 | { 2 | "patcher" : { 3 | "fileversion" : 1, 4 | "appversion" : { 5 | "major" : 8, 6 | "minor" : 1, 7 | "revision" : 3, 8 | "architecture" : "x64", 9 | "modernui" : 1 10 | } 11 | , 12 | "classnamespace" : "box", 13 | "rect" : [ 34.0, 56.0, 600.0, 810.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" : "", 40 | "boxes" : [ { 41 | "box" : { 42 | "id" : "obj-35", 43 | "maxclass" : "newobj", 44 | "numinlets" : 1, 45 | "numoutlets" : 2, 46 | "outlettype" : [ "bang", "" ], 47 | "patching_rect" : [ 398.0, 266.0, 29.5, 22.0 ], 48 | "text" : "t b l" 49 | } 50 | 51 | } 52 | , { 53 | "box" : { 54 | "id" : "obj-3", 55 | "maxclass" : "comment", 56 | "numinlets" : 1, 57 | "numoutlets" : 0, 58 | "patching_rect" : [ 3.0, 74.0, 459.0, 20.0 ], 59 | "text" : "This patch demonstrates how to filter your scan results to help find the correct device" 60 | } 61 | 62 | } 63 | , { 64 | "box" : { 65 | "fontface" : 1, 66 | "id" : "obj-5", 67 | "maxclass" : "comment", 68 | "numinlets" : 1, 69 | "numoutlets" : 0, 70 | "patching_rect" : [ 3.0, 52.0, 137.0, 20.0 ], 71 | "text" : "Connect to Everything" 72 | } 73 | 74 | } 75 | , { 76 | "box" : { 77 | "fontsize" : 36.0, 78 | "id" : "obj-18", 79 | "maxclass" : "comment", 80 | "numinlets" : 1, 81 | "numoutlets" : 0, 82 | "patching_rect" : [ 3.0, 3.0, 137.0, 47.0 ], 83 | "text" : "max-ble" 84 | } 85 | 86 | } 87 | , { 88 | "box" : { 89 | "id" : "obj-36", 90 | "maxclass" : "button", 91 | "numinlets" : 1, 92 | "numoutlets" : 1, 93 | "outlettype" : [ "bang" ], 94 | "parameter_enable" : 0, 95 | "patching_rect" : [ 390.0, 305.5, 24.0, 24.0 ] 96 | } 97 | 98 | } 99 | , { 100 | "box" : { 101 | "id" : "obj-34", 102 | "maxclass" : "message", 103 | "numinlets" : 2, 104 | "numoutlets" : 1, 105 | "outlettype" : [ "" ], 106 | "patching_rect" : [ 416.0, 397.5, 67.0, 22.0 ], 107 | "text" : "connect $1" 108 | } 109 | 110 | } 111 | , { 112 | "box" : { 113 | "id" : "obj-33", 114 | "maxclass" : "newobj", 115 | "numinlets" : 2, 116 | "numoutlets" : 1, 117 | "outlettype" : [ "int" ], 118 | "patching_rect" : [ 416.0, 371.5, 29.5, 22.0 ], 119 | "text" : "- 1" 120 | } 121 | 122 | } 123 | , { 124 | "box" : { 125 | "id" : "obj-26", 126 | "maxclass" : "newobj", 127 | "numinlets" : 2, 128 | "numoutlets" : 2, 129 | "outlettype" : [ "", "" ], 130 | "patching_rect" : [ 415.5, 305.5, 69.0, 22.0 ], 131 | "text" : "route count" 132 | } 133 | 134 | } 135 | , { 136 | "box" : { 137 | "id" : "obj-25", 138 | "maxclass" : "newobj", 139 | "numinlets" : 2, 140 | "numoutlets" : 3, 141 | "outlettype" : [ "bang", "bang", "int" ], 142 | "patching_rect" : [ 390.0, 344.5, 45.0, 22.0 ], 143 | "text" : "uzi" 144 | } 145 | 146 | } 147 | , { 148 | "box" : { 149 | "id" : "obj-6", 150 | "maxclass" : "message", 151 | "numinlets" : 2, 152 | "numoutlets" : 1, 153 | "outlettype" : [ "" ], 154 | "patching_rect" : [ 383.0, 189.0, 38.0, 22.0 ], 155 | "text" : "count" 156 | } 157 | 158 | } 159 | , { 160 | "box" : { 161 | "id" : "obj-17", 162 | "maxclass" : "comment", 163 | "numinlets" : 1, 164 | "numoutlets" : 0, 165 | "patching_rect" : [ 104.0, 442.0, 79.0, 20.0 ], 166 | "text" : "Battery Level" 167 | } 168 | 169 | } 170 | , { 171 | "box" : { 172 | "id" : "obj-14", 173 | "maxclass" : "message", 174 | "numinlets" : 2, 175 | "numoutlets" : 1, 176 | "outlettype" : [ "" ], 177 | "patching_rect" : [ 28.0, 442.0, 67.0, 22.0 ], 178 | "text" : "60" 179 | } 180 | 181 | } 182 | , { 183 | "box" : { 184 | "id" : "obj-12", 185 | "maxclass" : "newobj", 186 | "numinlets" : 1, 187 | "numoutlets" : 1, 188 | "outlettype" : [ "" ], 189 | "patching_rect" : [ 232.0, 200.5, 96.0, 22.0 ], 190 | "text" : "prepend append" 191 | } 192 | 193 | } 194 | , { 195 | "box" : { 196 | "id" : "obj-4", 197 | "maxclass" : "newobj", 198 | "numinlets" : 1, 199 | "numoutlets" : 2, 200 | "outlettype" : [ "", "clear" ], 201 | "patching_rect" : [ 172.0, 201.0, 51.0, 22.0 ], 202 | "text" : "t s clear" 203 | } 204 | 205 | } 206 | , { 207 | "box" : { 208 | "id" : "obj-2", 209 | "items" : [ "D5819FC0-5D5C-41BC-A6D4-276BD090D6D0", -89, ",", "943FBAEE-6201-4F90-B3A3-A99076FB8C05", -102, ",", "4E76983E-BC52-4DEB-A5D8-51C548C59CC3", -91, ",", "091D6800-CFA1-414C-BAB9-917C477627A4", -95, ",", "64E29CD2-DFA9-4C17-91EB-AAF49388F253", -92, ",", "D26506DB-783C-43F7-8CE0-AC04D7A8DE21", -99, ",", "2C7ED6A9-F54B-4E66-B112-CAE772BC9FCF", -96, ",", "E938723E-C8A1-414C-8E9B-85CEC6999393", -90, ",", "348055F4-6252-4BB7-8EFA-4ABED6EBCB9B", -57, ",", "E3C8912F-AEE5-4D9E-945A-C3C7E20CFCFB", -97, ",", "6BDE6AEF-C54A-41CC-A916-0809098F202D", -100, ",", "725D9F73-7B95-4FC4-990E-7FAF5ACB18D9", -103, ",", "4198A4BC-57F6-48AE-8F42-A1D17B45EF48", -80, ",", "5D84143C-3EFF-456C-B062-84FDDCCFC5D3", -93, ",", "763A142B-EDA3-452D-8DFA-67DF0F59F3E0", -37, ",", "AFC30719-9494-45C4-8448-7EF0E7C91D94", -95, ",", "B602D49D-E4FB-49E2-8C6E-0F119DA9DE3D", -95, ",", "A0DD3E9A-4DF4-4199-A01C-F128958C1E5A", -100, ",", "C2F69B6E-1471-402F-B3FF-B4A27FABE04D", -90, ",", "622F38B2-37F9-4871-A1D1-47581CFC3570", -94, ",", "3FE40865-D8C1-4696-8C1F-BB54DFECC557", -97, ",", "975ADDDD-61E1-4A41-BE2B-14A24D8D37B8", -92, ",", "2D22734F-9BE0-47E1-8AF4-F36B3585BF74", -95, ",", "BA33BFE0-1823-45C6-BCE9-ED32CAEEBC9B", -99, ",", "4B34B4EF-801F-4D75-88C5-06BBB3FE8E53", -98, ",", "DAACC5D6-6C05-4E96-A8F3-77D456AAED8A", -100, ",", "52B7514B-82EA-43A0-92BB-F7904DD0C76B", -93, ",", "C5A921BD-8152-4D15-A44C-2D78CC6C35B1", -93, ",", "2E06E766-DF97-4CAE-A3C7-FACA1A777C41", -86, ",", "0F49002A-CF6E-47C2-923B-0BD5451ADF89", -92, ",", "A88A74B1-7F84-48F8-83F8-4FB927F3651F", -93, ",", "90636462-1916-44F5-809A-9042C42634CE", -96, ",", "BB6D6FA8-E8A5-4F84-8F77-67984AFA70F6", -97, ",", "EA7A081E-8FD4-4340-A2FD-407A60B79F18", -99, ",", "28E85378-4EDB-4EF3-94F0-16A3F4FB4764", -98, ",", "5919BEA7-3BB2-4F68-B68D-A96EC8D787A4", -101, ",", "94D830E4-C49F-442A-834B-83C1B9440C8D", -103, ",", "1A2B711C-C58B-4A62-985A-E014416A4454", -93, ",", "606DDABD-E537-47FA-BF9E-1A8C007FCB56", -94, ",", "CE180526-0C9B-4354-BB58-DCB252A9C55B", -94, ",", "9891347E-00F3-4B19-97C4-2836E8D9B873", -97, ",", "F017FC2C-6DF9-48DE-A622-07E056EA2CF6", -98, ",", "ED46BD54-2F39-4D5D-96F6-0387B2DB5080", -94, ",", "2856907E-9866-4664-917C-3F6A76B065DA", -99, ",", "8D17B128-F815-4739-9DCC-DD010C4BD502", -93, ",", "D0FCD291-0234-44A9-8B2F-9665ABF9BA21", -94, ",", "2BC9417C-269E-4391-9953-C8127003F678", -97, ",", "EB9A166A-FD37-4B76-848F-07DEA868A76D", -100, ",", "C6FAE385-9113-46F3-8380-7413D0909DC2", -106, ",", "0F3D915F-A157-4612-B5AF-E72ADBE57B98", -103, ",", "B2EEEC45-F327-4535-81B8-49E38444C996", -103, ",", "17833482-8DA8-4E78-911D-00A0F00D8082", -99, ",", "F3547FB6-69A6-4806-8B0F-49864EE4E204", -100, ",", "23DACA5C-0113-4D6D-920D-05F5181E2EC1", -102, ",", "39E5436D-7C53-4034-83E6-84BD1CA9A12C", -103, ",", "9AD291E6-1513-4672-B8E1-324476FEDB52", -92, ",", "33C43BC4-14EA-4D19-BEC8-5F5E9FA4FB3A", -100, ",", "88CA0C26-B9A4-4A4B-AF6B-C96C7090C48A", -90, ",", "BFF325D6-F100-41CE-AC69-D46EE0D44BCF", -98, ",", "816F3FDA-B6D5-42E6-9A73-332EBEA19851", -98, ",", "06B91D6C-F90F-45AB-87FC-321BD9C51019", -98, ",", "9BBDCE89-250C-44FE-9C1E-12C8991CCFE0", -94, ",", "BD049561-FE79-42A0-8C6F-906016EFBF90", -98, ",", "AAD63B65-07FA-47AA-9615-F73FCB109BDE", -100, ",", "11BF6CF6-A6F0-4FD9-9FA5-629A5FC8A2E9", -100, ",", "1CE92747-5A56-4D5B-81E1-8D69DC64AC34", -92, ",", "649086EF-5B35-4652-9860-B0E0E0BE5CF1", -99, ",", "6A827C4D-2EFD-41A4-A512-1FAD8552253A", -99, ",", "AF03B23C-9DFA-4EE0-A48D-31380C765567", -96, ",", "90DF68FA-17E5-41D0-8592-26DFA8F4AF17", -99, ",", "F3FC4833-9DF1-476D-855F-2FAC52DE953C", -99, ",", "26A6E9A7-A263-4636-8248-27E1CD69BE5E", -101, ",", "1F1787DF-B7B9-44D9-9D60-8E4069F36EBF", -93, ",", "920753A0-F6E5-40DA-8231-256BFCF0A5BF", -97, ",", "E254786B-E14C-4A29-B8F2-5CA5F7409ED6", -92, ",", "0FD54887-1563-4791-AC35-809B125B4697", -99, ",", "0C0EE22B-1FC4-4C2C-875E-5CA6A16307F2", -104, ",", "4BA0AE4B-D628-41D8-8706-46BF7AC2244B", -90, ",", "86E1D21C-A32E-4A31-BD69-96DA14D42BB2", -95, ",", "752F7835-2FB8-411F-B7AF-EFAC0A86BFC2", -96, ",", "CC7FD262-1A99-4AFF-A81E-1146AC8D062E", -87, ",", "50EEC0A0-5D1B-4FC0-9D62-6A5ADE9FA3DA", -98, ",", "7FCA84C6-AA3E-4DA5-A166-1E6E2F857826", -98, ",", "5D6C39A0-DC77-419B-8531-63EA94058880", -101, ",", "72A530E4-C966-46D7-A586-ABA44273A945", -102, ",", "4C9D09D5-BB2E-481F-AAE5-A8AB74F097F6", -92, ",", "66E870B6-9339-4232-AA16-198FCC95380E", -93, ",", "78BE2231-EE4D-475D-A13B-038877BC7299", -85, ",", "EFCD3B4F-CE1C-4FCD-B4A9-55098201E317", -101, ",", "9D5D485B-687C-44B2-9050-EB9663AB1E1C", -101, ",", "DA8684D9-E3D7-42B7-AEBB-7153FA307811", -99, ",", "E709C586-8EBE-4E53-8D0E-12925AAADAA8", -97, ",", "338B93AE-341C-4FEF-8123-7AC1EB931453", -92, ",", "D40F87D0-A29E-42EC-82A5-B68FF329CA2F", -103, ",", "37794F0F-FBAA-4A22-8315-728383B99FA2", -100, ",", "13D8BBC7-4EB2-420F-A3B6-7E45F063528E", -96, ",", "146AAF54-1C8E-481E-AFFE-1FEAFDFC177B", -97, ",", "243564F7-F153-489F-896C-8637CF186099", -87, ",", "CB5E6279-7A5C-4383-9847-F21348646B8A", -97, ",", "70446920-EEA5-4AC0-ABD1-AB12AE974880", -97, ",", "E6B43629-2E80-47DE-AE5B-3272383E4199", -97, ",", "474850B6-75E4-4B6D-A20D-500AFE53087B", -101, ",", "8C07C55F-CCC8-4408-B1CC-D4DB043B82B3", -102, ",", "9E7F813B-229D-434D-A1EE-304514252C25", -99, ",", "5EFD1AE2-5ED7-4317-9A06-471BE816C1BE", -97, ",", "80D63A95-68E3-41DF-85E0-D15EC5BDEBC2", -101, ",", "CEE08F96-9473-42E2-9333-E0A3112E2EE7", -98, ",", "87F7798E-B3AE-4B11-B87A-28804ACFEDFE", -98, ",", "EDBB95CC-62EA-4ED3-B6DB-40FA0453D437", -93, ",", "6D5EAE11-AD31-4E18-A412-F537FF914119", -103, ",", "FFE75305-668A-4305-B977-0F1FF8755A41", -97, ",", "0ED98E1F-41F1-4D63-A3D2-237DEF58B5D6", -101, ",", "D0E5BE17-1CFB-4AFF-9817-1A8292242C43", -87, ",", "B725EDDA-0587-40A7-961A-E839B988052D", -100, ",", "ED1E336D-7E8B-4DE8-BCCD-0FBE8FFAAC42", -103, ",", "93A73D5B-20A2-4515-BCAC-C135AF0E585E", -93, ",", "3C18B13A-0789-4A39-8C0C-F800555DE166", -95, ",", "05661D56-21BA-4FDC-9BA1-0DF1E9363A59", -94, ",", "2F305F53-71EF-4BA2-9414-0A0D3F18EDA7", -100, ",", "DEA48DD2-8D9A-4182-906D-2250E599C84E", -98, ",", "2BF8406C-200F-4CF6-9D9B-C8AB6AA4DA23", -97, ",", "D94B0F50-018B-44F9-AFB3-4E80322BE992", -101, ",", "03C11F5D-D18E-463C-ABE0-8C8259A9CA1E", -96, ",", "BC3EC984-FD44-442C-959C-9265D8493CDE", -97, ",", "8086E657-9147-4C0D-A119-B2D41BBF4972", -99, ",", "99ADF642-924C-4145-9ECA-0C34348C7E75", -99 ], 210 | "maxclass" : "umenu", 211 | "numinlets" : 1, 212 | "numoutlets" : 3, 213 | "outlettype" : [ "int", "", "" ], 214 | "parameter_enable" : 0, 215 | "patching_rect" : [ 232.0, 234.5, 185.0, 22.0 ] 216 | } 217 | 218 | } 219 | , { 220 | "box" : { 221 | "id" : "obj-21", 222 | "maxclass" : "message", 223 | "numinlets" : 2, 224 | "numoutlets" : 1, 225 | "outlettype" : [ "" ], 226 | "patching_rect" : [ 232.0, 272.5, 67.0, 22.0 ], 227 | "text" : "connect $1" 228 | } 229 | 230 | } 231 | , { 232 | "box" : { 233 | "id" : "obj-16", 234 | "maxclass" : "comment", 235 | "numinlets" : 1, 236 | "numoutlets" : 0, 237 | "patching_rect" : [ 104.0, 399.0, 111.0, 20.0 ], 238 | "text" : "Battery Level UUID" 239 | } 240 | 241 | } 242 | , { 243 | "box" : { 244 | "id" : "obj-11", 245 | "maxclass" : "comment", 246 | "numinlets" : 1, 247 | "numoutlets" : 0, 248 | "patching_rect" : [ 104.0, 367.0, 123.0, 20.0 ], 249 | "text" : "Battery Service UUID" 250 | } 251 | 252 | } 253 | , { 254 | "box" : { 255 | "id" : "obj-15", 256 | "maxclass" : "newobj", 257 | "numinlets" : 2, 258 | "numoutlets" : 2, 259 | "outlettype" : [ "", "" ], 260 | "patching_rect" : [ 28.0, 399.0, 67.0, 22.0 ], 261 | "text" : "route 2A19" 262 | } 263 | 264 | } 265 | , { 266 | "box" : { 267 | "id" : "obj-13", 268 | "maxclass" : "newobj", 269 | "numinlets" : 2, 270 | "numoutlets" : 2, 271 | "outlettype" : [ "", "" ], 272 | "patching_rect" : [ 28.0, 367.0, 67.0, 22.0 ], 273 | "text" : "route 180F" 274 | } 275 | 276 | } 277 | , { 278 | "box" : { 279 | "id" : "obj-10", 280 | "maxclass" : "message", 281 | "numinlets" : 2, 282 | "numoutlets" : 1, 283 | "outlettype" : [ "" ], 284 | "patching_rect" : [ 215.0, 144.0, 35.0, 22.0 ], 285 | "text" : "clear" 286 | } 287 | 288 | } 289 | , { 290 | "box" : { 291 | "id" : "obj-7", 292 | "maxclass" : "message", 293 | "numinlets" : 2, 294 | "numoutlets" : 1, 295 | "outlettype" : [ "" ], 296 | "patching_rect" : [ 172.0, 144.0, 39.0, 22.0 ], 297 | "text" : "found" 298 | } 299 | 300 | } 301 | , { 302 | "box" : { 303 | "id" : "obj-27", 304 | "maxclass" : "toggle", 305 | "numinlets" : 1, 306 | "numoutlets" : 1, 307 | "outlettype" : [ "int" ], 308 | "parameter_enable" : 0, 309 | "patching_rect" : [ 16.0, 152.0, 24.0, 24.0 ] 310 | } 311 | 312 | } 313 | , { 314 | "box" : { 315 | "id" : "obj-28", 316 | "maxclass" : "toggle", 317 | "numinlets" : 1, 318 | "numoutlets" : 1, 319 | "outlettype" : [ "int" ], 320 | "parameter_enable" : 0, 321 | "patching_rect" : [ 28.0, 222.0, 24.0, 24.0 ] 322 | } 323 | 324 | } 325 | , { 326 | "box" : { 327 | "id" : "obj-24", 328 | "maxclass" : "message", 329 | "numinlets" : 2, 330 | "numoutlets" : 1, 331 | "outlettype" : [ "" ], 332 | "patching_rect" : [ 28.0, 253.0, 57.0, 22.0 ], 333 | "text" : "report $1" 334 | } 335 | 336 | } 337 | , { 338 | "box" : { 339 | "id" : "obj-9", 340 | "maxclass" : "message", 341 | "numinlets" : 2, 342 | "numoutlets" : 1, 343 | "outlettype" : [ "" ], 344 | "patching_rect" : [ 16.0, 183.0, 51.0, 22.0 ], 345 | "text" : "scan $1" 346 | } 347 | 348 | } 349 | , { 350 | "box" : { 351 | "id" : "obj-1", 352 | "maxclass" : "newobj", 353 | "numinlets" : 1, 354 | "numoutlets" : 3, 355 | "outlettype" : [ "list", "list", "list" ], 356 | "patching_rect" : [ 28.0, 322.0, 71.5, 22.0 ], 357 | "text" : "max-ble" 358 | } 359 | 360 | } 361 | ], 362 | "lines" : [ { 363 | "patchline" : { 364 | "destination" : [ "obj-12", 0 ], 365 | "midpoints" : [ 90.0, 345.0, 219.0, 345.0, 219.0, 225.0, 228.0, 225.0, 228.0, 195.0, 241.5, 195.0 ], 366 | "source" : [ "obj-1", 2 ] 367 | } 368 | 369 | } 370 | , { 371 | "patchline" : { 372 | "destination" : [ "obj-13", 0 ], 373 | "midpoints" : [ 37.5, 345.0, 37.5, 345.0 ], 374 | "source" : [ "obj-1", 0 ] 375 | } 376 | 377 | } 378 | , { 379 | "patchline" : { 380 | "destination" : [ "obj-4", 0 ], 381 | "midpoints" : [ 224.5, 186.0, 181.5, 186.0 ], 382 | "source" : [ "obj-10", 0 ] 383 | } 384 | 385 | } 386 | , { 387 | "patchline" : { 388 | "destination" : [ "obj-2", 0 ], 389 | "midpoints" : [ 241.5, 225.0, 241.5, 225.0 ], 390 | "source" : [ "obj-12", 0 ] 391 | } 392 | 393 | } 394 | , { 395 | "patchline" : { 396 | "destination" : [ "obj-15", 0 ], 397 | "midpoints" : [ 37.5, 390.0, 37.5, 390.0 ], 398 | "source" : [ "obj-13", 0 ] 399 | } 400 | 401 | } 402 | , { 403 | "patchline" : { 404 | "destination" : [ "obj-14", 1 ], 405 | "midpoints" : [ 37.5, 435.0, 85.5, 435.0 ], 406 | "source" : [ "obj-15", 0 ] 407 | } 408 | 409 | } 410 | , { 411 | "patchline" : { 412 | "destination" : [ "obj-21", 0 ], 413 | "midpoints" : [ 241.5, 258.0, 241.5, 258.0 ], 414 | "source" : [ "obj-2", 0 ] 415 | } 416 | 417 | } 418 | , { 419 | "patchline" : { 420 | "destination" : [ "obj-35", 0 ], 421 | "source" : [ "obj-2", 2 ] 422 | } 423 | 424 | } 425 | , { 426 | "patchline" : { 427 | "destination" : [ "obj-1", 0 ], 428 | "midpoints" : [ 241.5, 309.0, 37.5, 309.0 ], 429 | "source" : [ "obj-21", 0 ] 430 | } 431 | 432 | } 433 | , { 434 | "patchline" : { 435 | "destination" : [ "obj-1", 0 ], 436 | "midpoints" : [ 37.5, 276.0, 37.5, 276.0 ], 437 | "source" : [ "obj-24", 0 ] 438 | } 439 | 440 | } 441 | , { 442 | "patchline" : { 443 | "destination" : [ "obj-33", 0 ], 444 | "source" : [ "obj-25", 2 ] 445 | } 446 | 447 | } 448 | , { 449 | "patchline" : { 450 | "destination" : [ "obj-25", 1 ], 451 | "source" : [ "obj-26", 0 ] 452 | } 453 | 454 | } 455 | , { 456 | "patchline" : { 457 | "destination" : [ "obj-9", 0 ], 458 | "midpoints" : [ 25.5, 177.0, 25.5, 177.0 ], 459 | "source" : [ "obj-27", 0 ] 460 | } 461 | 462 | } 463 | , { 464 | "patchline" : { 465 | "destination" : [ "obj-24", 0 ], 466 | "midpoints" : [ 37.5, 249.0, 37.5, 249.0 ], 467 | "source" : [ "obj-28", 0 ] 468 | } 469 | 470 | } 471 | , { 472 | "patchline" : { 473 | "destination" : [ "obj-34", 0 ], 474 | "source" : [ "obj-33", 0 ] 475 | } 476 | 477 | } 478 | , { 479 | "patchline" : { 480 | "destination" : [ "obj-1", 0 ], 481 | "source" : [ "obj-34", 0 ] 482 | } 483 | 484 | } 485 | , { 486 | "patchline" : { 487 | "destination" : [ "obj-26", 0 ], 488 | "source" : [ "obj-35", 1 ] 489 | } 490 | 491 | } 492 | , { 493 | "patchline" : { 494 | "destination" : [ "obj-36", 0 ], 495 | "source" : [ "obj-35", 0 ] 496 | } 497 | 498 | } 499 | , { 500 | "patchline" : { 501 | "destination" : [ "obj-25", 0 ], 502 | "source" : [ "obj-36", 0 ] 503 | } 504 | 505 | } 506 | , { 507 | "patchline" : { 508 | "destination" : [ "obj-1", 0 ], 509 | "midpoints" : [ 181.5, 309.0, 37.5, 309.0 ], 510 | "source" : [ "obj-4", 0 ] 511 | } 512 | 513 | } 514 | , { 515 | "patchline" : { 516 | "destination" : [ "obj-2", 0 ], 517 | "midpoints" : [ 213.5, 225.0, 241.5, 225.0 ], 518 | "source" : [ "obj-4", 1 ] 519 | } 520 | 521 | } 522 | , { 523 | "patchline" : { 524 | "destination" : [ "obj-2", 0 ], 525 | "source" : [ "obj-6", 0 ] 526 | } 527 | 528 | } 529 | , { 530 | "patchline" : { 531 | "destination" : [ "obj-4", 0 ], 532 | "midpoints" : [ 181.5, 168.0, 181.5, 168.0 ], 533 | "source" : [ "obj-7", 0 ] 534 | } 535 | 536 | } 537 | , { 538 | "patchline" : { 539 | "destination" : [ "obj-1", 0 ], 540 | "midpoints" : [ 25.5, 309.0, 37.5, 309.0 ], 541 | "source" : [ "obj-9", 0 ] 542 | } 543 | 544 | } 545 | ], 546 | "dependency_cache" : [ { 547 | "name" : "max-ble.mxo", 548 | "type" : "iLaX" 549 | } 550 | ], 551 | "autosave" : 0 552 | } 553 | 554 | } 555 | -------------------------------------------------------------------------------- /max-package/max-hardware-library/examples/mhl.filter-scan.maxpat: -------------------------------------------------------------------------------- 1 | { 2 | "patcher" : { 3 | "fileversion" : 1, 4 | "appversion" : { 5 | "major" : 8, 6 | "minor" : 1, 7 | "revision" : 3, 8 | "architecture" : "x64", 9 | "modernui" : 1 10 | } 11 | , 12 | "classnamespace" : "box", 13 | "rect" : [ 59.0, 81.0, 640.0, 480.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" : "", 40 | "boxes" : [ { 41 | "box" : { 42 | "id" : "obj-11", 43 | "linecount" : 2, 44 | "maxclass" : "message", 45 | "numinlets" : 2, 46 | "numoutlets" : 1, 47 | "outlettype" : [ "" ], 48 | "patching_rect" : [ 360.5, 301.0, 249.0, 35.0 ], 49 | "text" : "filter services 19B10000-E8F2-537E-4F6C-D104768A1214" 50 | } 51 | 52 | } 53 | , { 54 | "box" : { 55 | "id" : "obj-20", 56 | "maxclass" : "toggle", 57 | "numinlets" : 1, 58 | "numoutlets" : 1, 59 | "outlettype" : [ "int" ], 60 | "parameter_enable" : 0, 61 | "patching_rect" : [ 473.0, 208.0, 24.0, 24.0 ] 62 | } 63 | 64 | } 65 | , { 66 | "box" : { 67 | "id" : "obj-17", 68 | "maxclass" : "message", 69 | "numinlets" : 2, 70 | "numoutlets" : 1, 71 | "outlettype" : [ "" ], 72 | "patching_rect" : [ 473.0, 251.0, 87.0, 22.0 ], 73 | "text" : "filter iphone $1" 74 | } 75 | 76 | } 77 | , { 78 | "box" : { 79 | "id" : "obj-18", 80 | "maxclass" : "number", 81 | "numinlets" : 1, 82 | "numoutlets" : 2, 83 | "outlettype" : [ "", "bang" ], 84 | "parameter_enable" : 0, 85 | "patching_rect" : [ 378.0, 162.0, 50.0, 22.0 ] 86 | } 87 | 88 | } 89 | , { 90 | "box" : { 91 | "id" : "obj-13", 92 | "maxclass" : "message", 93 | "numinlets" : 2, 94 | "numoutlets" : 1, 95 | "outlettype" : [ "" ], 96 | "patching_rect" : [ 378.0, 199.0, 70.0, 22.0 ], 97 | "text" : "filter rssi $1" 98 | } 99 | 100 | } 101 | , { 102 | "box" : { 103 | "fontface" : 1, 104 | "id" : "obj-8", 105 | "maxclass" : "comment", 106 | "numinlets" : 1, 107 | "numoutlets" : 0, 108 | "patching_rect" : [ 378.0, 135.0, 135.0, 20.0 ], 109 | "text" : "Filters" 110 | } 111 | 112 | } 113 | , { 114 | "box" : { 115 | "bubble" : 1, 116 | "fontname" : "Arial", 117 | "fontsize" : 13.0, 118 | "id" : "obj-6", 119 | "maxclass" : "comment", 120 | "numinlets" : 1, 121 | "numoutlets" : 0, 122 | "patching_rect" : [ 194.0, 162.0, 147.0, 25.0 ], 123 | "text" : "Clear Found Devices" 124 | } 125 | 126 | } 127 | , { 128 | "box" : { 129 | "id" : "obj-14", 130 | "maxclass" : "comment", 131 | "numinlets" : 1, 132 | "numoutlets" : 0, 133 | "patching_rect" : [ 3.0, 75.0, 459.0, 20.0 ], 134 | "text" : "This patch demonstrates how to filter your scan results to help find the correct device" 135 | } 136 | 137 | } 138 | , { 139 | "box" : { 140 | "fontface" : 1, 141 | "id" : "obj-15", 142 | "maxclass" : "comment", 143 | "numinlets" : 1, 144 | "numoutlets" : 0, 145 | "patching_rect" : [ 3.0, 53.0, 135.0, 20.0 ], 146 | "text" : "Filtering Scan Results" 147 | } 148 | 149 | } 150 | , { 151 | "box" : { 152 | "fontsize" : 36.0, 153 | "id" : "obj-16", 154 | "maxclass" : "comment", 155 | "numinlets" : 1, 156 | "numoutlets" : 0, 157 | "patching_rect" : [ 3.0, 4.0, 137.0, 47.0 ], 158 | "text" : "max-ble" 159 | } 160 | 161 | } 162 | , { 163 | "box" : { 164 | "id" : "obj-12", 165 | "maxclass" : "newobj", 166 | "numinlets" : 1, 167 | "numoutlets" : 1, 168 | "outlettype" : [ "" ], 169 | "patching_rect" : [ 24.0, 381.0, 96.0, 22.0 ], 170 | "text" : "prepend append" 171 | } 172 | 173 | } 174 | , { 175 | "box" : { 176 | "id" : "obj-5", 177 | "maxclass" : "newobj", 178 | "numinlets" : 2, 179 | "numoutlets" : 2, 180 | "outlettype" : [ "", "" ], 181 | "patching_rect" : [ 24.0, 331.0, 42.0, 22.0 ], 182 | "text" : "gate 2" 183 | } 184 | 185 | } 186 | , { 187 | "box" : { 188 | "id" : "obj-4", 189 | "maxclass" : "newobj", 190 | "numinlets" : 1, 191 | "numoutlets" : 3, 192 | "outlettype" : [ "", "clear", "int" ], 193 | "patching_rect" : [ 107.0, 221.0, 61.0, 22.0 ], 194 | "text" : "t s clear 1" 195 | } 196 | 197 | } 198 | , { 199 | "box" : { 200 | "id" : "obj-2", 201 | "items" : [ "E938723E-C8A1-414C-8E9B-85CEC6999393", -66, ",", "47DD8C6D-A6AE-4369-846A-C3B8A6D0A4EC", -73, ",", "4A3C5C33-79CB-4A46-93BF-67B2BD228E6A", -62, ",", "371F9100-1AD9-4AB4-B34A-AAAEF226FDD6", -81, ",", "6183AE66-32E5-490D-BE5E-092DFFAABD20", -94, ",", "5D198709-B61B-4AD8-ACA8-E179E1DED74C", -70, ",", "EE426FAF-E960-4EB3-B0C0-E02856FE3CA0", -95, ",", "00A209DB-C270-4E43-956D-425968D20801", -93, ",", "77BED51C-E952-45E0-AFB5-5463957C6ED9", -91, ",", "08694D11-1A41-4962-8383-46A741E7D27F", -95, ",", "763A142B-EDA3-452D-8DFA-67DF0F59F3E0", -75 ], 202 | "maxclass" : "umenu", 203 | "numinlets" : 1, 204 | "numoutlets" : 3, 205 | "outlettype" : [ "int", "", "" ], 206 | "parameter_enable" : 0, 207 | "patching_rect" : [ 24.0, 417.0, 185.0, 22.0 ] 208 | } 209 | 210 | } 211 | , { 212 | "box" : { 213 | "bubble" : 1, 214 | "fontname" : "Arial", 215 | "fontsize" : 13.0, 216 | "id" : "obj-30", 217 | "maxclass" : "comment", 218 | "numinlets" : 1, 219 | "numoutlets" : 0, 220 | "patching_rect" : [ 151.0, 129.0, 136.0, 25.0 ], 221 | "text" : "List Found Devices" 222 | } 223 | 224 | } 225 | , { 226 | "box" : { 227 | "id" : "obj-10", 228 | "maxclass" : "message", 229 | "numinlets" : 2, 230 | "numoutlets" : 1, 231 | "outlettype" : [ "" ], 232 | "patching_rect" : [ 157.0, 162.0, 35.0, 22.0 ], 233 | "text" : "clear" 234 | } 235 | 236 | } 237 | , { 238 | "box" : { 239 | "id" : "obj-7", 240 | "maxclass" : "message", 241 | "numinlets" : 2, 242 | "numoutlets" : 1, 243 | "outlettype" : [ "" ], 244 | "patching_rect" : [ 107.0, 132.0, 39.0, 22.0 ], 245 | "text" : "found" 246 | } 247 | 248 | } 249 | , { 250 | "box" : { 251 | "id" : "obj-27", 252 | "maxclass" : "toggle", 253 | "numinlets" : 1, 254 | "numoutlets" : 1, 255 | "outlettype" : [ "int" ], 256 | "parameter_enable" : 0, 257 | "patching_rect" : [ 12.0, 131.0, 24.0, 24.0 ] 258 | } 259 | 260 | } 261 | , { 262 | "box" : { 263 | "id" : "obj-28", 264 | "maxclass" : "toggle", 265 | "numinlets" : 1, 266 | "numoutlets" : 1, 267 | "outlettype" : [ "int" ], 268 | "parameter_enable" : 0, 269 | "patching_rect" : [ 30.5, 190.0, 24.0, 24.0 ] 270 | } 271 | 272 | } 273 | , { 274 | "box" : { 275 | "id" : "obj-24", 276 | "maxclass" : "message", 277 | "numinlets" : 2, 278 | "numoutlets" : 1, 279 | "outlettype" : [ "" ], 280 | "patching_rect" : [ 30.5, 221.0, 57.0, 22.0 ], 281 | "text" : "report $1" 282 | } 283 | 284 | } 285 | , { 286 | "box" : { 287 | "id" : "obj-9", 288 | "maxclass" : "message", 289 | "numinlets" : 2, 290 | "numoutlets" : 1, 291 | "outlettype" : [ "" ], 292 | "patching_rect" : [ 12.0, 162.0, 51.0, 22.0 ], 293 | "text" : "scan $1" 294 | } 295 | 296 | } 297 | , { 298 | "box" : { 299 | "id" : "obj-1", 300 | "maxclass" : "newobj", 301 | "numinlets" : 1, 302 | "numoutlets" : 2, 303 | "outlettype" : [ "list", "list" ], 304 | "patching_rect" : [ 24.0, 286.0, 71.5, 22.0 ], 305 | "text" : "max-ble" 306 | } 307 | 308 | } 309 | ], 310 | "lines" : [ { 311 | "patchline" : { 312 | "destination" : [ "obj-5", 1 ], 313 | "midpoints" : [ 33.5, 318.0, 56.5, 318.0 ], 314 | "source" : [ "obj-1", 0 ] 315 | } 316 | 317 | } 318 | , { 319 | "patchline" : { 320 | "destination" : [ "obj-1", 0 ], 321 | "midpoints" : [ 166.5, 207.0, 99.0, 207.0, 99.0, 273.0, 33.5, 273.0 ], 322 | "source" : [ "obj-10", 0 ] 323 | } 324 | 325 | } 326 | , { 327 | "patchline" : { 328 | "destination" : [ "obj-1", 0 ], 329 | "source" : [ "obj-11", 0 ] 330 | } 331 | 332 | } 333 | , { 334 | "patchline" : { 335 | "destination" : [ "obj-2", 0 ], 336 | "midpoints" : [ 33.5, 405.0, 33.5, 405.0 ], 337 | "source" : [ "obj-12", 0 ] 338 | } 339 | 340 | } 341 | , { 342 | "patchline" : { 343 | "destination" : [ "obj-1", 0 ], 344 | "source" : [ "obj-13", 0 ] 345 | } 346 | 347 | } 348 | , { 349 | "patchline" : { 350 | "destination" : [ "obj-1", 0 ], 351 | "source" : [ "obj-17", 0 ] 352 | } 353 | 354 | } 355 | , { 356 | "patchline" : { 357 | "destination" : [ "obj-13", 0 ], 358 | "source" : [ "obj-18", 0 ] 359 | } 360 | 361 | } 362 | , { 363 | "patchline" : { 364 | "destination" : [ "obj-17", 0 ], 365 | "source" : [ "obj-20", 0 ] 366 | } 367 | 368 | } 369 | , { 370 | "patchline" : { 371 | "destination" : [ "obj-1", 0 ], 372 | "midpoints" : [ 40.0, 273.0, 33.5, 273.0 ], 373 | "source" : [ "obj-24", 0 ] 374 | } 375 | 376 | } 377 | , { 378 | "patchline" : { 379 | "destination" : [ "obj-9", 0 ], 380 | "midpoints" : [ 21.5, 156.0, 21.5, 156.0 ], 381 | "source" : [ "obj-27", 0 ] 382 | } 383 | 384 | } 385 | , { 386 | "patchline" : { 387 | "destination" : [ "obj-24", 0 ], 388 | "midpoints" : [ 40.0, 216.0, 40.0, 216.0 ], 389 | "source" : [ "obj-28", 0 ] 390 | } 391 | 392 | } 393 | , { 394 | "patchline" : { 395 | "destination" : [ "obj-1", 0 ], 396 | "midpoints" : [ 116.5, 273.0, 33.5, 273.0 ], 397 | "source" : [ "obj-4", 0 ] 398 | } 399 | 400 | } 401 | , { 402 | "patchline" : { 403 | "destination" : [ "obj-2", 0 ], 404 | "midpoints" : [ 137.5, 366.0, 9.0, 366.0, 9.0, 411.0, 33.5, 411.0 ], 405 | "source" : [ "obj-4", 1 ] 406 | } 407 | 408 | } 409 | , { 410 | "patchline" : { 411 | "destination" : [ "obj-5", 0 ], 412 | "midpoints" : [ 158.5, 318.0, 33.5, 318.0 ], 413 | "source" : [ "obj-4", 2 ] 414 | } 415 | 416 | } 417 | , { 418 | "patchline" : { 419 | "destination" : [ "obj-12", 0 ], 420 | "midpoints" : [ 33.5, 354.0, 33.5, 354.0 ], 421 | "source" : [ "obj-5", 0 ] 422 | } 423 | 424 | } 425 | , { 426 | "patchline" : { 427 | "destination" : [ "obj-4", 0 ], 428 | "midpoints" : [ 116.5, 147.0, 116.5, 147.0 ], 429 | "source" : [ "obj-7", 0 ] 430 | } 431 | 432 | } 433 | , { 434 | "patchline" : { 435 | "destination" : [ "obj-1", 0 ], 436 | "midpoints" : [ 21.5, 273.0, 33.5, 273.0 ], 437 | "source" : [ "obj-9", 0 ] 438 | } 439 | 440 | } 441 | , { 442 | "patchline" : { 443 | "destination" : [ "", 0 ], 444 | "source" : [ "obj-10", 0 ] 445 | } 446 | 447 | } 448 | ], 449 | "dependency_cache" : [ { 450 | "name" : "max-ble.mxo", 451 | "type" : "iLaX" 452 | } 453 | ], 454 | "autosave" : 0 455 | } 456 | 457 | } 458 | -------------------------------------------------------------------------------- /max-package/max-hardware-library/examples/mhl.formats.maxpat: -------------------------------------------------------------------------------- 1 | { 2 | "patcher" : { 3 | "fileversion" : 1, 4 | "appversion" : { 5 | "major" : 8, 6 | "minor" : 1, 7 | "revision" : 3, 8 | "architecture" : "x64", 9 | "modernui" : 1 10 | } 11 | , 12 | "classnamespace" : "box", 13 | "rect" : [ 84.0, 106.0, 640.0, 480.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" : "", 40 | "boxes" : [ { 41 | "box" : { 42 | "id" : "obj-27", 43 | "maxclass" : "message", 44 | "numinlets" : 2, 45 | "numoutlets" : 1, 46 | "outlettype" : [ "" ], 47 | "patching_rect" : [ 428.417747497558594, 290.0, 79.0, 22.0 ], 48 | "text" : "219 15 73 64" 49 | } 50 | 51 | } 52 | , { 53 | "box" : { 54 | "id" : "obj-28", 55 | "maxclass" : "newobj", 56 | "numinlets" : 2, 57 | "numoutlets" : 1, 58 | "outlettype" : [ "list" ], 59 | "patching_rect" : [ 428.417747497558594, 319.0, 71.0, 22.0 ], 60 | "text" : "byte-cast f<" 61 | } 62 | 63 | } 64 | , { 65 | "box" : { 66 | "id" : "obj-24", 67 | "maxclass" : "newobj", 68 | "numinlets" : 1, 69 | "numoutlets" : 0, 70 | "patching_rect" : [ 428.417747497558594, 348.5, 130.0, 22.0 ], 71 | "text" : "print \"little endian float\"" 72 | } 73 | 74 | } 75 | , { 76 | "box" : { 77 | "id" : "obj-23", 78 | "maxclass" : "newobj", 79 | "numinlets" : 1, 80 | "numoutlets" : 0, 81 | "patching_rect" : [ 291.417747497558594, 348.5, 125.0, 22.0 ], 82 | "text" : "print \"big endian float\"" 83 | } 84 | 85 | } 86 | , { 87 | "box" : { 88 | "id" : "obj-21", 89 | "maxclass" : "message", 90 | "numinlets" : 2, 91 | "numoutlets" : 1, 92 | "outlettype" : [ "" ], 93 | "patching_rect" : [ 164.917747497558594, 290.0, 45.0, 22.0 ], 94 | "text" : "0 0 0 1" 95 | } 96 | 97 | } 98 | , { 99 | "box" : { 100 | "id" : "obj-22", 101 | "maxclass" : "newobj", 102 | "numinlets" : 2, 103 | "numoutlets" : 1, 104 | "outlettype" : [ "list" ], 105 | "patching_rect" : [ 164.917747497558594, 319.0, 70.0, 22.0 ], 106 | "text" : "byte-cast i>" 107 | } 108 | 109 | } 110 | , { 111 | "box" : { 112 | "id" : "obj-19", 113 | "maxclass" : "message", 114 | "numinlets" : 2, 115 | "numoutlets" : 1, 116 | "outlettype" : [ "" ], 117 | "patching_rect" : [ 291.417747497558594, 163.5, 99.0, 22.0 ], 118 | "presentation_linecount" : 2, 119 | "text" : "255 255 255 254" 120 | } 121 | 122 | } 123 | , { 124 | "box" : { 125 | "id" : "obj-20", 126 | "maxclass" : "newobj", 127 | "numinlets" : 2, 128 | "numoutlets" : 1, 129 | "outlettype" : [ "list" ], 130 | "patching_rect" : [ 291.417747497558594, 199.0, 67.0, 22.0 ], 131 | "text" : "byte-cast h" 132 | } 133 | 134 | } 135 | , { 136 | "box" : { 137 | "id" : "obj-17", 138 | "maxclass" : "message", 139 | "numinlets" : 2, 140 | "numoutlets" : 1, 141 | "outlettype" : [ "" ], 142 | "patching_rect" : [ 428.417747497558594, 163.5, 99.0, 22.0 ], 143 | "presentation_linecount" : 2, 144 | "text" : "255 255 255 254" 145 | } 146 | 147 | } 148 | , { 149 | "box" : { 150 | "id" : "obj-18", 151 | "maxclass" : "newobj", 152 | "numinlets" : 2, 153 | "numoutlets" : 1, 154 | "outlettype" : [ "list" ], 155 | "patching_rect" : [ 428.417747497558594, 199.0, 74.0, 22.0 ], 156 | "text" : "byte-cast uh" 157 | } 158 | 159 | } 160 | , { 161 | "box" : { 162 | "id" : "obj-15", 163 | "linecount" : 2, 164 | "maxclass" : "message", 165 | "numinlets" : 2, 166 | "numoutlets" : 1, 167 | "outlettype" : [ "" ], 168 | "patching_rect" : [ 164.917747497558594, 157.0, 102.0, 35.0 ], 169 | "presentation_linecount" : 3, 170 | "text" : "255 255 255 255 255 255 255 254" 171 | } 172 | 173 | } 174 | , { 175 | "box" : { 176 | "id" : "obj-16", 177 | "maxclass" : "newobj", 178 | "numinlets" : 2, 179 | "numoutlets" : 1, 180 | "outlettype" : [ "list" ], 181 | "patching_rect" : [ 164.917747497558594, 199.0, 70.0, 22.0 ], 182 | "text" : "byte-cast ui" 183 | } 184 | 185 | } 186 | , { 187 | "box" : { 188 | "id" : "obj-13", 189 | "maxclass" : "newobj", 190 | "numinlets" : 1, 191 | "numoutlets" : 0, 192 | "patching_rect" : [ 38.417747497558594, 348.5, 120.0, 22.0 ], 193 | "text" : "print \"little endian int\"" 194 | } 195 | 196 | } 197 | , { 198 | "box" : { 199 | "id" : "obj-12", 200 | "maxclass" : "newobj", 201 | "numinlets" : 1, 202 | "numoutlets" : 0, 203 | "patching_rect" : [ 164.917747497558594, 348.5, 115.0, 22.0 ], 204 | "text" : "print \"big endian int\"" 205 | } 206 | 207 | } 208 | , { 209 | "box" : { 210 | "id" : "obj-11", 211 | "maxclass" : "newobj", 212 | "numinlets" : 1, 213 | "numoutlets" : 0, 214 | "patching_rect" : [ 291.417747497558594, 229.0, 90.0, 22.0 ], 215 | "text" : "print \"16-bit int\"" 216 | } 217 | 218 | } 219 | , { 220 | "box" : { 221 | "id" : "obj-10", 222 | "maxclass" : "newobj", 223 | "numinlets" : 1, 224 | "numoutlets" : 0, 225 | "patching_rect" : [ 428.417747497558594, 229.0, 96.0, 22.0 ], 226 | "text" : "print \"16-bit uint\"" 227 | } 228 | 229 | } 230 | , { 231 | "box" : { 232 | "id" : "obj-4", 233 | "maxclass" : "newobj", 234 | "numinlets" : 1, 235 | "numoutlets" : 0, 236 | "patching_rect" : [ 164.917747497558594, 229.0, 96.0, 22.0 ], 237 | "text" : "print \"32-bit uint\"" 238 | } 239 | 240 | } 241 | , { 242 | "box" : { 243 | "id" : "obj-3", 244 | "maxclass" : "newobj", 245 | "numinlets" : 1, 246 | "numoutlets" : 0, 247 | "patching_rect" : [ 38.417747497558594, 229.0, 90.0, 22.0 ], 248 | "text" : "print \"32-bit int\"" 249 | } 250 | 251 | } 252 | , { 253 | "box" : { 254 | "id" : "obj-6", 255 | "linecount" : 2, 256 | "maxclass" : "message", 257 | "numinlets" : 2, 258 | "numoutlets" : 1, 259 | "outlettype" : [ "" ], 260 | "patching_rect" : [ 38.417747497558594, 157.0, 101.0, 35.0 ], 261 | "presentation_linecount" : 3, 262 | "text" : "255 255 255 255 255 255 255 254" 263 | } 264 | 265 | } 266 | , { 267 | "box" : { 268 | "id" : "obj-7", 269 | "maxclass" : "newobj", 270 | "numinlets" : 2, 271 | "numoutlets" : 1, 272 | "outlettype" : [ "list" ], 273 | "patching_rect" : [ 38.417747497558594, 199.0, 90.0, 22.0 ], 274 | "text" : "byte-cast i" 275 | } 276 | 277 | } 278 | , { 279 | "box" : { 280 | "id" : "obj-8", 281 | "maxclass" : "message", 282 | "numinlets" : 2, 283 | "numoutlets" : 1, 284 | "outlettype" : [ "" ], 285 | "patching_rect" : [ 291.417747497558594, 290.0, 79.0, 22.0 ], 286 | "text" : "64 73 15 219" 287 | } 288 | 289 | } 290 | , { 291 | "box" : { 292 | "id" : "obj-9", 293 | "maxclass" : "newobj", 294 | "numinlets" : 2, 295 | "numoutlets" : 1, 296 | "outlettype" : [ "list" ], 297 | "patching_rect" : [ 291.417747497558594, 319.0, 71.0, 22.0 ], 298 | "text" : "byte-cast f>" 299 | } 300 | 301 | } 302 | , { 303 | "box" : { 304 | "id" : "obj-34", 305 | "maxclass" : "message", 306 | "numinlets" : 2, 307 | "numoutlets" : 1, 308 | "outlettype" : [ "" ], 309 | "patching_rect" : [ 38.417747497558594, 290.0, 45.0, 22.0 ], 310 | "text" : "1 0 0 0" 311 | } 312 | 313 | } 314 | , { 315 | "box" : { 316 | "id" : "obj-33", 317 | "maxclass" : "newobj", 318 | "numinlets" : 2, 319 | "numoutlets" : 1, 320 | "outlettype" : [ "list" ], 321 | "patching_rect" : [ 38.417747497558594, 319.0, 70.0, 22.0 ], 322 | "text" : "byte-cast i<" 323 | } 324 | 325 | } 326 | , { 327 | "box" : { 328 | "border" : 0, 329 | "filename" : "helpdetails.js", 330 | "id" : "obj-26", 331 | "ignoreclick" : 1, 332 | "jsarguments" : [ "byte-cast" ], 333 | "maxclass" : "jsui", 334 | "numinlets" : 1, 335 | "numoutlets" : 1, 336 | "outlettype" : [ "" ], 337 | "parameter_enable" : 0, 338 | "patching_rect" : [ 0.0, -1.0, 539.0, 117.0 ] 339 | } 340 | 341 | } 342 | ], 343 | "lines" : [ { 344 | "patchline" : { 345 | "destination" : [ "obj-16", 0 ], 346 | "source" : [ "obj-15", 0 ] 347 | } 348 | 349 | } 350 | , { 351 | "patchline" : { 352 | "destination" : [ "obj-4", 0 ], 353 | "source" : [ "obj-16", 0 ] 354 | } 355 | 356 | } 357 | , { 358 | "patchline" : { 359 | "destination" : [ "obj-18", 0 ], 360 | "source" : [ "obj-17", 0 ] 361 | } 362 | 363 | } 364 | , { 365 | "patchline" : { 366 | "destination" : [ "obj-10", 0 ], 367 | "source" : [ "obj-18", 0 ] 368 | } 369 | 370 | } 371 | , { 372 | "patchline" : { 373 | "destination" : [ "obj-20", 0 ], 374 | "source" : [ "obj-19", 0 ] 375 | } 376 | 377 | } 378 | , { 379 | "patchline" : { 380 | "destination" : [ "obj-11", 0 ], 381 | "source" : [ "obj-20", 0 ] 382 | } 383 | 384 | } 385 | , { 386 | "patchline" : { 387 | "destination" : [ "obj-22", 0 ], 388 | "source" : [ "obj-21", 0 ] 389 | } 390 | 391 | } 392 | , { 393 | "patchline" : { 394 | "destination" : [ "obj-12", 0 ], 395 | "source" : [ "obj-22", 0 ] 396 | } 397 | 398 | } 399 | , { 400 | "patchline" : { 401 | "destination" : [ "obj-28", 0 ], 402 | "source" : [ "obj-27", 0 ] 403 | } 404 | 405 | } 406 | , { 407 | "patchline" : { 408 | "destination" : [ "obj-24", 0 ], 409 | "source" : [ "obj-28", 0 ] 410 | } 411 | 412 | } 413 | , { 414 | "patchline" : { 415 | "destination" : [ "obj-13", 0 ], 416 | "source" : [ "obj-33", 0 ] 417 | } 418 | 419 | } 420 | , { 421 | "patchline" : { 422 | "destination" : [ "obj-33", 0 ], 423 | "source" : [ "obj-34", 0 ] 424 | } 425 | 426 | } 427 | , { 428 | "patchline" : { 429 | "destination" : [ "obj-7", 0 ], 430 | "source" : [ "obj-6", 0 ] 431 | } 432 | 433 | } 434 | , { 435 | "patchline" : { 436 | "destination" : [ "obj-3", 0 ], 437 | "source" : [ "obj-7", 0 ] 438 | } 439 | 440 | } 441 | , { 442 | "patchline" : { 443 | "destination" : [ "obj-9", 0 ], 444 | "source" : [ "obj-8", 0 ] 445 | } 446 | 447 | } 448 | , { 449 | "patchline" : { 450 | "destination" : [ "obj-23", 0 ], 451 | "source" : [ "obj-9", 0 ] 452 | } 453 | 454 | } 455 | ], 456 | "dependency_cache" : [ { 457 | "name" : "helpdetails.js", 458 | "bootpath" : "C74:/help/resources", 459 | "type" : "TEXT", 460 | "implicit" : 1 461 | } 462 | , { 463 | "name" : "byte-cast.mxo", 464 | "type" : "iLaX" 465 | } 466 | ], 467 | "autosave" : 0 468 | } 469 | 470 | } 471 | -------------------------------------------------------------------------------- /max-package/max-hardware-library/examples/mhl.rssi.maxpat: -------------------------------------------------------------------------------- 1 | { 2 | "patcher" : { 3 | "fileversion" : 1, 4 | "appversion" : { 5 | "major" : 8, 6 | "minor" : 1, 7 | "revision" : 3, 8 | "architecture" : "x64", 9 | "modernui" : 1 10 | } 11 | , 12 | "classnamespace" : "box", 13 | "rect" : [ 109.0, 131.0, 372.0, 480.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" : "", 40 | "boxes" : [ { 41 | "box" : { 42 | "id" : "obj-36", 43 | "maxclass" : "button", 44 | "numinlets" : 1, 45 | "numoutlets" : 1, 46 | "outlettype" : [ "bang" ], 47 | "parameter_enable" : 0, 48 | "patching_rect" : [ 240.0, 277.0, 24.0, 24.0 ] 49 | } 50 | 51 | } 52 | , { 53 | "box" : { 54 | "id" : "obj-34", 55 | "maxclass" : "toggle", 56 | "numinlets" : 1, 57 | "numoutlets" : 1, 58 | "outlettype" : [ "int" ], 59 | "parameter_enable" : 0, 60 | "patching_rect" : [ 186.25, 141.0, 24.0, 24.0 ] 61 | } 62 | 63 | } 64 | , { 65 | "box" : { 66 | "id" : "obj-31", 67 | "maxclass" : "newobj", 68 | "numinlets" : 2, 69 | "numoutlets" : 1, 70 | "outlettype" : [ "bang" ], 71 | "patching_rect" : [ 186.25, 169.0, 69.0, 22.0 ], 72 | "text" : "metro 1000" 73 | } 74 | 75 | } 76 | , { 77 | "box" : { 78 | "id" : "obj-27", 79 | "maxclass" : "toggle", 80 | "numinlets" : 1, 81 | "numoutlets" : 1, 82 | "outlettype" : [ "int" ], 83 | "parameter_enable" : 0, 84 | "patching_rect" : [ 85.0, 119.0, 24.0, 24.0 ] 85 | } 86 | 87 | } 88 | , { 89 | "box" : { 90 | "id" : "obj-30", 91 | "maxclass" : "message", 92 | "numinlets" : 2, 93 | "numoutlets" : 1, 94 | "outlettype" : [ "" ], 95 | "patching_rect" : [ 85.0, 150.0, 51.0, 22.0 ], 96 | "text" : "scan $1" 97 | } 98 | 99 | } 100 | , { 101 | "box" : { 102 | "id" : "obj-28", 103 | "maxclass" : "toggle", 104 | "numinlets" : 1, 105 | "numoutlets" : 1, 106 | "outlettype" : [ "int" ], 107 | "parameter_enable" : 0, 108 | "patching_rect" : [ 21.0, 119.0, 24.0, 24.0 ] 109 | } 110 | 111 | } 112 | , { 113 | "box" : { 114 | "id" : "obj-24", 115 | "maxclass" : "message", 116 | "numinlets" : 2, 117 | "numoutlets" : 1, 118 | "outlettype" : [ "" ], 119 | "patching_rect" : [ 21.0, 150.0, 57.0, 22.0 ], 120 | "text" : "report $1" 121 | } 122 | 123 | } 124 | , { 125 | "box" : { 126 | "id" : "obj-26", 127 | "maxclass" : "newobj", 128 | "numinlets" : 2, 129 | "numoutlets" : 2, 130 | "outlettype" : [ "", "" ], 131 | "patching_rect" : [ 55.5, 313.0, 58.0, 22.0 ], 132 | "text" : "route rssi" 133 | } 134 | 135 | } 136 | , { 137 | "box" : { 138 | "id" : "obj-25", 139 | "maxclass" : "message", 140 | "numinlets" : 2, 141 | "numoutlets" : 1, 142 | "outlettype" : [ "" ], 143 | "patching_rect" : [ 186.25, 198.0, 75.0, 22.0 ], 144 | "text" : "device 0 rssi" 145 | } 146 | 147 | } 148 | , { 149 | "box" : { 150 | "id" : "obj-22", 151 | "maxclass" : "message", 152 | "numinlets" : 2, 153 | "numoutlets" : 1, 154 | "outlettype" : [ "" ], 155 | "patching_rect" : [ 24.5, 355.0, 50.0, 22.0 ], 156 | "text" : "-49" 157 | } 158 | 159 | } 160 | , { 161 | "box" : { 162 | "id" : "obj-32", 163 | "maxclass" : "newobj", 164 | "numinlets" : 2, 165 | "numoutlets" : 2, 166 | "outlettype" : [ "", "" ], 167 | "patching_rect" : [ 19.5, 279.0, 55.0, 22.0 ], 168 | "text" : "zl slice 1" 169 | } 170 | 171 | } 172 | , { 173 | "box" : { 174 | "id" : "obj-21", 175 | "linecount" : 2, 176 | "maxclass" : "comment", 177 | "numinlets" : 1, 178 | "numoutlets" : 0, 179 | "patching_rect" : [ 3.0, 75.0, 330.0, 33.0 ], 180 | "text" : "Keep a track of how far away a device is by requesting RSSI\nNow you can play Hot or Cold" 181 | } 182 | 183 | } 184 | , { 185 | "box" : { 186 | "fontface" : 1, 187 | "id" : "obj-19", 188 | "maxclass" : "comment", 189 | "numinlets" : 1, 190 | "numoutlets" : 0, 191 | "patching_rect" : [ 3.0, 53.0, 182.0, 20.0 ], 192 | "text" : "Logging RSSI" 193 | } 194 | 195 | } 196 | , { 197 | "box" : { 198 | "fontsize" : 36.0, 199 | "id" : "obj-18", 200 | "maxclass" : "comment", 201 | "numinlets" : 1, 202 | "numoutlets" : 0, 203 | "patching_rect" : [ 3.0, 4.0, 137.0, 47.0 ], 204 | "text" : "max-ble" 205 | } 206 | 207 | } 208 | , { 209 | "box" : { 210 | "id" : "obj-12", 211 | "maxclass" : "message", 212 | "numinlets" : 2, 213 | "numoutlets" : 1, 214 | "outlettype" : [ "" ], 215 | "patching_rect" : [ 145.25, 150.0, 35.0, 22.0 ], 216 | "text" : "clear" 217 | } 218 | 219 | } 220 | , { 221 | "box" : { 222 | "id" : "obj-1", 223 | "maxclass" : "newobj", 224 | "numinlets" : 1, 225 | "numoutlets" : 2, 226 | "outlettype" : [ "list", "list" ], 227 | "patching_rect" : [ 19.5, 240.0, 71.5, 22.0 ], 228 | "text" : "max-ble" 229 | } 230 | 231 | } 232 | ], 233 | "lines" : [ { 234 | "patchline" : { 235 | "destination" : [ "obj-32", 0 ], 236 | "source" : [ "obj-1", 0 ] 237 | } 238 | 239 | } 240 | , { 241 | "patchline" : { 242 | "destination" : [ "obj-1", 0 ], 243 | "source" : [ "obj-12", 0 ] 244 | } 245 | 246 | } 247 | , { 248 | "patchline" : { 249 | "destination" : [ "obj-1", 0 ], 250 | "source" : [ "obj-24", 0 ] 251 | } 252 | 253 | } 254 | , { 255 | "patchline" : { 256 | "destination" : [ "obj-1", 0 ], 257 | "source" : [ "obj-25", 0 ] 258 | } 259 | 260 | } 261 | , { 262 | "patchline" : { 263 | "destination" : [ "obj-22", 1 ], 264 | "source" : [ "obj-26", 0 ] 265 | } 266 | 267 | } 268 | , { 269 | "patchline" : { 270 | "destination" : [ "obj-30", 0 ], 271 | "source" : [ "obj-27", 0 ] 272 | } 273 | 274 | } 275 | , { 276 | "patchline" : { 277 | "destination" : [ "obj-24", 0 ], 278 | "source" : [ "obj-28", 0 ] 279 | } 280 | 281 | } 282 | , { 283 | "patchline" : { 284 | "destination" : [ "obj-1", 0 ], 285 | "source" : [ "obj-30", 0 ] 286 | } 287 | 288 | } 289 | , { 290 | "patchline" : { 291 | "destination" : [ "obj-25", 0 ], 292 | "source" : [ "obj-31", 0 ] 293 | } 294 | 295 | } 296 | , { 297 | "patchline" : { 298 | "destination" : [ "obj-26", 0 ], 299 | "order" : 1, 300 | "source" : [ "obj-32", 1 ] 301 | } 302 | 303 | } 304 | , { 305 | "patchline" : { 306 | "destination" : [ "obj-36", 0 ], 307 | "order" : 0, 308 | "source" : [ "obj-32", 1 ] 309 | } 310 | 311 | } 312 | , { 313 | "patchline" : { 314 | "destination" : [ "obj-31", 0 ], 315 | "source" : [ "obj-34", 0 ] 316 | } 317 | 318 | } 319 | ], 320 | "dependency_cache" : [ { 321 | "name" : "max-ble.mxo", 322 | "type" : "iLaX" 323 | } 324 | ], 325 | "autosave" : 0 326 | } 327 | 328 | } 329 | -------------------------------------------------------------------------------- /max-package/max-hardware-library/examples/mhl.simple-max-ble.maxpat: -------------------------------------------------------------------------------- 1 | { 2 | "patcher" : { 3 | "fileversion" : 1, 4 | "appversion" : { 5 | "major" : 8, 6 | "minor" : 1, 7 | "revision" : 3, 8 | "architecture" : "x64", 9 | "modernui" : 1 10 | } 11 | , 12 | "classnamespace" : "box", 13 | "rect" : [ 34.0, 56.0, 640.0, 480.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" : "", 40 | "boxes" : [ { 41 | "box" : { 42 | "id" : "obj-21", 43 | "linecount" : 3, 44 | "maxclass" : "comment", 45 | "numinlets" : 1, 46 | "numoutlets" : 0, 47 | "patching_rect" : [ 3.0, 75.0, 560.0, 47.0 ], 48 | "text" : "max-ble will currently search for BLE devices and store a list internally. Dicovered devices will be printed to the Max Console. Upon connecting to a device the SErvice UUID, Characteristic UUID and raw bytes will be sent out as a list. This list can be parsed using the route object" 49 | } 50 | 51 | } 52 | , { 53 | "box" : { 54 | "fontface" : 1, 55 | "id" : "obj-19", 56 | "maxclass" : "comment", 57 | "numinlets" : 1, 58 | "numoutlets" : 0, 59 | "patching_rect" : [ 3.0, 53.0, 182.0, 20.0 ], 60 | "text" : "Bluetooth Low Energy for Max" 61 | } 62 | 63 | } 64 | , { 65 | "box" : { 66 | "fontsize" : 36.0, 67 | "id" : "obj-18", 68 | "maxclass" : "comment", 69 | "numinlets" : 1, 70 | "numoutlets" : 0, 71 | "patching_rect" : [ 3.0, 4.0, 137.0, 47.0 ], 72 | "text" : "max-ble" 73 | } 74 | 75 | } 76 | , { 77 | "box" : { 78 | "id" : "obj-17", 79 | "maxclass" : "comment", 80 | "numinlets" : 1, 81 | "numoutlets" : 0, 82 | "patching_rect" : [ 269.5, 423.0, 143.0, 20.0 ], 83 | "text" : "Characteristic Bytes" 84 | } 85 | 86 | } 87 | , { 88 | "box" : { 89 | "id" : "obj-16", 90 | "maxclass" : "comment", 91 | "numinlets" : 1, 92 | "numoutlets" : 0, 93 | "patching_rect" : [ 94.0, 374.0, 111.0, 20.0 ], 94 | "text" : "Battery Level UUID" 95 | } 96 | 97 | } 98 | , { 99 | "box" : { 100 | "id" : "obj-11", 101 | "maxclass" : "comment", 102 | "numinlets" : 1, 103 | "numoutlets" : 0, 104 | "patching_rect" : [ 94.0, 335.0, 79.0, 20.0 ], 105 | "text" : "Battery UUID" 106 | } 107 | 108 | } 109 | , { 110 | "box" : { 111 | "id" : "obj-20", 112 | "maxclass" : "newobj", 113 | "numinlets" : 2, 114 | "numoutlets" : 2, 115 | "outlettype" : [ "", "" ], 116 | "patching_rect" : [ 21.0, 374.0, 67.0, 22.0 ], 117 | "text" : "route 2A19" 118 | } 119 | 120 | } 121 | , { 122 | "box" : { 123 | "id" : "obj-15", 124 | "maxclass" : "message", 125 | "numinlets" : 2, 126 | "numoutlets" : 1, 127 | "outlettype" : [ "" ], 128 | "patching_rect" : [ 21.0, 423.0, 243.0, 22.0 ], 129 | "text" : "51" 130 | } 131 | 132 | } 133 | , { 134 | "box" : { 135 | "id" : "obj-13", 136 | "maxclass" : "newobj", 137 | "numinlets" : 2, 138 | "numoutlets" : 2, 139 | "outlettype" : [ "", "" ], 140 | "patching_rect" : [ 21.0, 334.0, 67.0, 22.0 ], 141 | "text" : "route 180F" 142 | } 143 | 144 | } 145 | , { 146 | "box" : { 147 | "id" : "obj-14", 148 | "maxclass" : "comment", 149 | "numinlets" : 1, 150 | "numoutlets" : 0, 151 | "patching_rect" : [ 165.25, 228.0, 190.0, 20.0 ], 152 | "text" : "clear list of discovered peripherals" 153 | } 154 | 155 | } 156 | , { 157 | "box" : { 158 | "id" : "obj-12", 159 | "maxclass" : "message", 160 | "numinlets" : 2, 161 | "numoutlets" : 1, 162 | "outlettype" : [ "" ], 163 | "patching_rect" : [ 122.25, 228.0, 35.0, 22.0 ], 164 | "text" : "clear" 165 | } 166 | 167 | } 168 | , { 169 | "box" : { 170 | "id" : "obj-10", 171 | "maxclass" : "comment", 172 | "numinlets" : 1, 173 | "numoutlets" : 0, 174 | "patching_rect" : [ 217.5, 256.0, 247.0, 20.0 ], 175 | "text" : "Connect to discovered peripheral at index $1" 176 | } 177 | 178 | } 179 | , { 180 | "box" : { 181 | "id" : "obj-9", 182 | "maxclass" : "comment", 183 | "numinlets" : 1, 184 | "numoutlets" : 0, 185 | "patching_rect" : [ 136.0, 202.0, 253.0, 20.0 ], 186 | "text" : "list discovered peripherals in the Max Console" 187 | } 188 | 189 | } 190 | , { 191 | "box" : { 192 | "id" : "obj-7", 193 | "maxclass" : "message", 194 | "numinlets" : 2, 195 | "numoutlets" : 1, 196 | "outlettype" : [ "" ], 197 | "patching_rect" : [ 89.5, 202.0, 39.0, 22.0 ], 198 | "text" : "found" 199 | } 200 | 201 | } 202 | , { 203 | "box" : { 204 | "id" : "obj-6", 205 | "maxclass" : "comment", 206 | "numinlets" : 1, 207 | "numoutlets" : 0, 208 | "patching_rect" : [ 97.75, 175.0, 84.0, 20.0 ], 209 | "text" : "stop scanning" 210 | } 211 | 212 | } 213 | , { 214 | "box" : { 215 | "id" : "obj-4", 216 | "maxclass" : "comment", 217 | "numinlets" : 1, 218 | "numoutlets" : 0, 219 | "patching_rect" : [ 67.0, 147.0, 84.0, 20.0 ], 220 | "text" : "start scanning" 221 | } 222 | 223 | } 224 | , { 225 | "box" : { 226 | "id" : "obj-8", 227 | "maxclass" : "message", 228 | "numinlets" : 2, 229 | "numoutlets" : 1, 230 | "outlettype" : [ "" ], 231 | "patching_rect" : [ 152.0, 256.0, 61.0, 22.0 ], 232 | "text" : "connect 1" 233 | } 234 | 235 | } 236 | , { 237 | "box" : { 238 | "id" : "obj-5", 239 | "maxclass" : "message", 240 | "numinlets" : 2, 241 | "numoutlets" : 1, 242 | "outlettype" : [ "" ], 243 | "patching_rect" : [ 59.0, 175.0, 31.0, 22.0 ], 244 | "text" : "stop" 245 | } 246 | 247 | } 248 | , { 249 | "box" : { 250 | "id" : "obj-3", 251 | "maxclass" : "message", 252 | "numinlets" : 2, 253 | "numoutlets" : 1, 254 | "outlettype" : [ "" ], 255 | "patching_rect" : [ 23.0, 146.0, 34.0, 22.0 ], 256 | "text" : "scan" 257 | } 258 | 259 | } 260 | , { 261 | "box" : { 262 | "id" : "obj-1", 263 | "maxclass" : "newobj", 264 | "numinlets" : 1, 265 | "numoutlets" : 1, 266 | "outlettype" : [ "list" ], 267 | "patching_rect" : [ 21.0, 298.0, 71.5, 22.0 ], 268 | "text" : "max-ble" 269 | } 270 | 271 | } 272 | ], 273 | "lines" : [ { 274 | "patchline" : { 275 | "destination" : [ "obj-13", 0 ], 276 | "source" : [ "obj-1", 0 ] 277 | } 278 | 279 | } 280 | , { 281 | "patchline" : { 282 | "destination" : [ "obj-1", 0 ], 283 | "source" : [ "obj-12", 0 ] 284 | } 285 | 286 | } 287 | , { 288 | "patchline" : { 289 | "destination" : [ "obj-20", 0 ], 290 | "source" : [ "obj-13", 0 ] 291 | } 292 | 293 | } 294 | , { 295 | "patchline" : { 296 | "destination" : [ "obj-15", 1 ], 297 | "source" : [ "obj-20", 0 ] 298 | } 299 | 300 | } 301 | , { 302 | "patchline" : { 303 | "destination" : [ "obj-1", 0 ], 304 | "source" : [ "obj-3", 0 ] 305 | } 306 | 307 | } 308 | , { 309 | "patchline" : { 310 | "destination" : [ "obj-1", 0 ], 311 | "source" : [ "obj-5", 0 ] 312 | } 313 | 314 | } 315 | , { 316 | "patchline" : { 317 | "destination" : [ "obj-1", 0 ], 318 | "source" : [ "obj-7", 0 ] 319 | } 320 | 321 | } 322 | , { 323 | "patchline" : { 324 | "destination" : [ "obj-1", 0 ], 325 | "source" : [ "obj-8", 0 ] 326 | } 327 | 328 | } 329 | ], 330 | "dependency_cache" : [ { 331 | "name" : "max-ble.mxo", 332 | "type" : "iLaX" 333 | } 334 | ], 335 | "autosave" : 0 336 | } 337 | 338 | } 339 | -------------------------------------------------------------------------------- /max-package/max-hardware-library/examples/mhl.subscribing.maxpat: -------------------------------------------------------------------------------- 1 | { 2 | "patcher" : { 3 | "fileversion" : 1, 4 | "appversion" : { 5 | "major" : 8, 6 | "minor" : 1, 7 | "revision" : 3, 8 | "architecture" : "x64", 9 | "modernui" : 1 10 | } 11 | , 12 | "classnamespace" : "box", 13 | "rect" : [ 84.0, 106.0, 410.0, 480.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" : "", 40 | "boxes" : [ { 41 | "box" : { 42 | "id" : "obj-2", 43 | "maxclass" : "newobj", 44 | "numinlets" : 1, 45 | "numoutlets" : 0, 46 | "patching_rect" : [ 200.0, 380.0, 95.0, 22.0 ], 47 | "text" : "print Notification" 48 | } 49 | 50 | } 51 | , { 52 | "box" : { 53 | "id" : "obj-37", 54 | "maxclass" : "newobj", 55 | "numinlets" : 2, 56 | "numoutlets" : 2, 57 | "outlettype" : [ "", "" ], 58 | "patching_rect" : [ 14.0, 287.0, 55.0, 22.0 ], 59 | "text" : "zl slice 2" 60 | } 61 | 62 | } 63 | , { 64 | "box" : { 65 | "id" : "obj-36", 66 | "maxclass" : "message", 67 | "numinlets" : 2, 68 | "numoutlets" : 1, 69 | "outlettype" : [ "" ], 70 | "patching_rect" : [ 205.5, 218.0, 141.0, 22.0 ], 71 | "text" : "device 0 subscribe $1 $2" 72 | } 73 | 74 | } 75 | , { 76 | "box" : { 77 | "id" : "obj-34", 78 | "maxclass" : "message", 79 | "numinlets" : 2, 80 | "numoutlets" : 1, 81 | "outlettype" : [ "" ], 82 | "patching_rect" : [ 125.0, 298.0, 35.0, 22.0 ], 83 | "text" : "clear" 84 | } 85 | 86 | } 87 | , { 88 | "box" : { 89 | "id" : "obj-32", 90 | "maxclass" : "button", 91 | "numinlets" : 1, 92 | "numoutlets" : 1, 93 | "outlettype" : [ "bang" ], 94 | "parameter_enable" : 0, 95 | "patching_rect" : [ 125.0, 258.0, 24.0, 24.0 ] 96 | } 97 | 98 | } 99 | , { 100 | "box" : { 101 | "id" : "obj-30", 102 | "maxclass" : "newobj", 103 | "numinlets" : 1, 104 | "numoutlets" : 1, 105 | "outlettype" : [ "" ], 106 | "patching_rect" : [ 14.0, 330.0, 96.0, 22.0 ], 107 | "text" : "prepend append" 108 | } 109 | 110 | } 111 | , { 112 | "box" : { 113 | "id" : "obj-29", 114 | "items" : [ "180F", "2A19", ",", "1805", "2A2B", ",", "1805", "2A0F", ",", "180A", "2A29", ",", "180A", "2A24" ], 115 | "maxclass" : "umenu", 116 | "numinlets" : 1, 117 | "numoutlets" : 3, 118 | "outlettype" : [ "int", "", "" ], 119 | "parameter_enable" : 0, 120 | "patching_rect" : [ 14.0, 380.0, 100.0, 22.0 ] 121 | } 122 | 123 | } 124 | , { 125 | "box" : { 126 | "id" : "obj-27", 127 | "maxclass" : "toggle", 128 | "numinlets" : 1, 129 | "numoutlets" : 1, 130 | "outlettype" : [ "int" ], 131 | "parameter_enable" : 0, 132 | "patching_rect" : [ 81.0, 154.0, 24.0, 24.0 ] 133 | } 134 | 135 | } 136 | , { 137 | "box" : { 138 | "id" : "obj-28", 139 | "maxclass" : "toggle", 140 | "numinlets" : 1, 141 | "numoutlets" : 1, 142 | "outlettype" : [ "int" ], 143 | "parameter_enable" : 0, 144 | "patching_rect" : [ 14.0, 154.0, 24.0, 24.0 ] 145 | } 146 | 147 | } 148 | , { 149 | "box" : { 150 | "id" : "obj-24", 151 | "maxclass" : "message", 152 | "numinlets" : 2, 153 | "numoutlets" : 1, 154 | "outlettype" : [ "" ], 155 | "patching_rect" : [ 14.0, 185.0, 57.0, 22.0 ], 156 | "text" : "report $1" 157 | } 158 | 159 | } 160 | , { 161 | "box" : { 162 | "id" : "obj-21", 163 | "linecount" : 2, 164 | "maxclass" : "comment", 165 | "numinlets" : 1, 166 | "numoutlets" : 0, 167 | "patching_rect" : [ 1.0, 71.0, 352.0, 33.0 ], 168 | "text" : "You can subscribe to a particular Service's Characteristic. Everytime the value updates it will be output from max-ble" 169 | } 170 | 171 | } 172 | , { 173 | "box" : { 174 | "fontface" : 1, 175 | "id" : "obj-19", 176 | "maxclass" : "comment", 177 | "numinlets" : 1, 178 | "numoutlets" : 0, 179 | "patching_rect" : [ 1.0, 49.0, 182.0, 20.0 ], 180 | "text" : "Subscribing to Characteristic" 181 | } 182 | 183 | } 184 | , { 185 | "box" : { 186 | "fontsize" : 36.0, 187 | "id" : "obj-18", 188 | "maxclass" : "comment", 189 | "numinlets" : 1, 190 | "numoutlets" : 0, 191 | "patching_rect" : [ 1.0, 0.0, 137.0, 47.0 ], 192 | "text" : "max-ble" 193 | } 194 | 195 | } 196 | , { 197 | "box" : { 198 | "id" : "obj-8", 199 | "maxclass" : "message", 200 | "numinlets" : 2, 201 | "numoutlets" : 1, 202 | "outlettype" : [ "" ], 203 | "patching_rect" : [ 144.0, 185.0, 61.0, 22.0 ], 204 | "text" : "connect 0" 205 | } 206 | 207 | } 208 | , { 209 | "box" : { 210 | "id" : "obj-3", 211 | "maxclass" : "message", 212 | "numinlets" : 2, 213 | "numoutlets" : 1, 214 | "outlettype" : [ "" ], 215 | "patching_rect" : [ 81.0, 185.0, 51.0, 22.0 ], 216 | "text" : "scan $1" 217 | } 218 | 219 | } 220 | , { 221 | "box" : { 222 | "id" : "obj-1", 223 | "maxclass" : "newobj", 224 | "numinlets" : 1, 225 | "numoutlets" : 2, 226 | "outlettype" : [ "list", "list" ], 227 | "patching_rect" : [ 14.0, 255.0, 71.5, 22.0 ], 228 | "text" : "max-ble" 229 | } 230 | 231 | } 232 | ], 233 | "lines" : [ { 234 | "patchline" : { 235 | "destination" : [ "obj-2", 0 ], 236 | "source" : [ "obj-1", 1 ] 237 | } 238 | 239 | } 240 | , { 241 | "patchline" : { 242 | "destination" : [ "obj-37", 0 ], 243 | "source" : [ "obj-1", 0 ] 244 | } 245 | 246 | } 247 | , { 248 | "patchline" : { 249 | "destination" : [ "obj-1", 0 ], 250 | "source" : [ "obj-24", 0 ] 251 | } 252 | 253 | } 254 | , { 255 | "patchline" : { 256 | "destination" : [ "obj-3", 0 ], 257 | "source" : [ "obj-27", 0 ] 258 | } 259 | 260 | } 261 | , { 262 | "patchline" : { 263 | "destination" : [ "obj-24", 0 ], 264 | "source" : [ "obj-28", 0 ] 265 | } 266 | 267 | } 268 | , { 269 | "patchline" : { 270 | "destination" : [ "obj-36", 0 ], 271 | "midpoints" : [ 64.0, 408.0, 192.0, 408.0, 192.0, 213.0, 215.0, 213.0 ], 272 | "source" : [ "obj-29", 1 ] 273 | } 274 | 275 | } 276 | , { 277 | "patchline" : { 278 | "destination" : [ "obj-1", 0 ], 279 | "source" : [ "obj-3", 0 ] 280 | } 281 | 282 | } 283 | , { 284 | "patchline" : { 285 | "destination" : [ "obj-29", 0 ], 286 | "source" : [ "obj-30", 0 ] 287 | } 288 | 289 | } 290 | , { 291 | "patchline" : { 292 | "destination" : [ "obj-34", 0 ], 293 | "source" : [ "obj-32", 0 ] 294 | } 295 | 296 | } 297 | , { 298 | "patchline" : { 299 | "destination" : [ "obj-29", 0 ], 300 | "midpoints" : [ 134.5, 366.0, 23.5, 366.0 ], 301 | "source" : [ "obj-34", 0 ] 302 | } 303 | 304 | } 305 | , { 306 | "patchline" : { 307 | "destination" : [ "obj-1", 0 ], 308 | "source" : [ "obj-36", 0 ] 309 | } 310 | 311 | } 312 | , { 313 | "patchline" : { 314 | "destination" : [ "obj-30", 0 ], 315 | "source" : [ "obj-37", 0 ] 316 | } 317 | 318 | } 319 | , { 320 | "patchline" : { 321 | "destination" : [ "obj-1", 0 ], 322 | "order" : 1, 323 | "source" : [ "obj-8", 0 ] 324 | } 325 | 326 | } 327 | , { 328 | "patchline" : { 329 | "destination" : [ "obj-32", 0 ], 330 | "order" : 0, 331 | "source" : [ "obj-8", 0 ] 332 | } 333 | 334 | } 335 | ], 336 | "dependency_cache" : [ { 337 | "name" : "max-ble.mxo", 338 | "type" : "iLaX" 339 | } 340 | ], 341 | "autosave" : 0 342 | } 343 | 344 | } 345 | -------------------------------------------------------------------------------- /max-package/max-hardware-library/examples/mhl.using-umenus.maxpat: -------------------------------------------------------------------------------- 1 | { 2 | "patcher" : { 3 | "fileversion" : 1, 4 | "appversion" : { 5 | "major" : 8, 6 | "minor" : 1, 7 | "revision" : 3, 8 | "architecture" : "x64", 9 | "modernui" : 1 10 | } 11 | , 12 | "classnamespace" : "box", 13 | "rect" : [ 59.0, 81.0, 463.0, 604.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" : "", 40 | "boxes" : [ { 41 | "box" : { 42 | "id" : "obj-10", 43 | "maxclass" : "message", 44 | "numinlets" : 2, 45 | "numoutlets" : 1, 46 | "outlettype" : [ "" ], 47 | "patching_rect" : [ 197.0, 185.0, 35.0, 22.0 ], 48 | "text" : "clear" 49 | } 50 | 51 | } 52 | , { 53 | "box" : { 54 | "id" : "obj-8", 55 | "maxclass" : "message", 56 | "numinlets" : 2, 57 | "numoutlets" : 1, 58 | "outlettype" : [ "" ], 59 | "patching_rect" : [ 322.0, 168.0, 41.0, 22.0 ], 60 | "text" : "set $1" 61 | } 62 | 63 | } 64 | , { 65 | "box" : { 66 | "id" : "obj-6", 67 | "maxclass" : "newobj", 68 | "numinlets" : 1, 69 | "numoutlets" : 1, 70 | "outlettype" : [ "" ], 71 | "patching_rect" : [ 322.0, 197.0, 53.0, 22.0 ], 72 | "text" : "prepend" 73 | } 74 | 75 | } 76 | , { 77 | "box" : { 78 | "id" : "obj-5", 79 | "maxclass" : "newobj", 80 | "numinlets" : 2, 81 | "numoutlets" : 2, 82 | "outlettype" : [ "", "" ], 83 | "patching_rect" : [ 37.0, 406.0, 55.0, 22.0 ], 84 | "text" : "zl slice 3" 85 | } 86 | 87 | } 88 | , { 89 | "box" : { 90 | "id" : "obj-32", 91 | "linecount" : 2, 92 | "maxclass" : "comment", 93 | "numinlets" : 1, 94 | "numoutlets" : 0, 95 | "patching_rect" : [ 134.5, 495.0, 150.0, 33.0 ], 96 | "presentation_linecount" : 2, 97 | "text" : "Found Devices\nUUID, RSSI" 98 | } 99 | 100 | } 101 | , { 102 | "box" : { 103 | "id" : "obj-31", 104 | "maxclass" : "comment", 105 | "numinlets" : 1, 106 | "numoutlets" : 0, 107 | "patching_rect" : [ 313.5, 432.0, 132.0, 20.0 ], 108 | "text" : "Service : Characteristic" 109 | } 110 | 111 | } 112 | , { 113 | "box" : { 114 | "id" : "obj-25", 115 | "items" : "", 116 | "maxclass" : "umenu", 117 | "numinlets" : 1, 118 | "numoutlets" : 3, 119 | "outlettype" : [ "int", "", "" ], 120 | "parameter_enable" : 0, 121 | "patching_rect" : [ 197.0, 430.0, 100.0, 22.0 ] 122 | } 123 | 124 | } 125 | , { 126 | "box" : { 127 | "id" : "obj-22", 128 | "maxclass" : "newobj", 129 | "numinlets" : 1, 130 | "numoutlets" : 3, 131 | "outlettype" : [ "", "clear", "int" ], 132 | "patching_rect" : [ 209.0, 302.0, 61.0, 22.0 ], 133 | "text" : "t s clear 2" 134 | } 135 | 136 | } 137 | , { 138 | "box" : { 139 | "id" : "obj-20", 140 | "maxclass" : "message", 141 | "numinlets" : 2, 142 | "numoutlets" : 1, 143 | "outlettype" : [ "" ], 144 | "patching_rect" : [ 209.0, 265.0, 67.0, 22.0 ], 145 | "text" : "connect $1" 146 | } 147 | 148 | } 149 | , { 150 | "box" : { 151 | "id" : "obj-14", 152 | "maxclass" : "newobj", 153 | "numinlets" : 2, 154 | "numoutlets" : 2, 155 | "outlettype" : [ "", "" ], 156 | "patching_rect" : [ 14.0, 373.0, 42.0, 22.0 ], 157 | "text" : "gate 2" 158 | } 159 | 160 | } 161 | , { 162 | "box" : { 163 | "id" : "obj-2", 164 | "maxclass" : "newobj", 165 | "numinlets" : 1, 166 | "numoutlets" : 3, 167 | "outlettype" : [ "", "clear", "int" ], 168 | "patching_rect" : [ 142.0, 224.0, 61.0, 22.0 ], 169 | "text" : "t s clear 1" 170 | } 171 | 172 | } 173 | , { 174 | "box" : { 175 | "id" : "obj-4", 176 | "maxclass" : "message", 177 | "numinlets" : 2, 178 | "numoutlets" : 1, 179 | "outlettype" : [ "" ], 180 | "patching_rect" : [ 142.0, 185.0, 39.0, 22.0 ], 181 | "text" : "found" 182 | } 183 | 184 | } 185 | , { 186 | "box" : { 187 | "id" : "obj-36", 188 | "maxclass" : "message", 189 | "numinlets" : 2, 190 | "numoutlets" : 1, 191 | "outlettype" : [ "" ], 192 | "patching_rect" : [ 286.5, 235.0, 148.0, 22.0 ], 193 | "text" : "device $1 subscribe $1 $2" 194 | } 195 | 196 | } 197 | , { 198 | "box" : { 199 | "id" : "obj-30", 200 | "maxclass" : "newobj", 201 | "numinlets" : 1, 202 | "numoutlets" : 1, 203 | "outlettype" : [ "" ], 204 | "patching_rect" : [ 14.0, 332.0, 96.0, 22.0 ], 205 | "text" : "prepend append" 206 | } 207 | 208 | } 209 | , { 210 | "box" : { 211 | "id" : "obj-29", 212 | "items" : "", 213 | "maxclass" : "umenu", 214 | "numinlets" : 1, 215 | "numoutlets" : 3, 216 | "outlettype" : [ "int", "", "" ], 217 | "parameter_enable" : 0, 218 | "patching_rect" : [ 14.0, 495.0, 100.0, 22.0 ] 219 | } 220 | 221 | } 222 | , { 223 | "box" : { 224 | "id" : "obj-27", 225 | "maxclass" : "toggle", 226 | "numinlets" : 1, 227 | "numoutlets" : 1, 228 | "outlettype" : [ "int" ], 229 | "parameter_enable" : 0, 230 | "patching_rect" : [ 81.0, 154.0, 24.0, 24.0 ] 231 | } 232 | 233 | } 234 | , { 235 | "box" : { 236 | "id" : "obj-28", 237 | "maxclass" : "toggle", 238 | "numinlets" : 1, 239 | "numoutlets" : 1, 240 | "outlettype" : [ "int" ], 241 | "parameter_enable" : 0, 242 | "patching_rect" : [ 14.0, 154.0, 24.0, 24.0 ] 243 | } 244 | 245 | } 246 | , { 247 | "box" : { 248 | "id" : "obj-24", 249 | "maxclass" : "message", 250 | "numinlets" : 2, 251 | "numoutlets" : 1, 252 | "outlettype" : [ "" ], 253 | "patching_rect" : [ 14.0, 185.0, 57.0, 22.0 ], 254 | "text" : "report $1" 255 | } 256 | 257 | } 258 | , { 259 | "box" : { 260 | "id" : "obj-21", 261 | "linecount" : 2, 262 | "maxclass" : "comment", 263 | "numinlets" : 1, 264 | "numoutlets" : 0, 265 | "patching_rect" : [ 1.0, 71.0, 352.0, 33.0 ], 266 | "presentation_linecount" : 2, 267 | "text" : "This example demonstrates the usage of umenus in conjunction with max-ble to show to connect to devices programmatically" 268 | } 269 | 270 | } 271 | , { 272 | "box" : { 273 | "fontface" : 1, 274 | "id" : "obj-19", 275 | "maxclass" : "comment", 276 | "numinlets" : 1, 277 | "numoutlets" : 0, 278 | "patching_rect" : [ 1.0, 49.0, 182.0, 20.0 ], 279 | "text" : "Using max-ble with umenu" 280 | } 281 | 282 | } 283 | , { 284 | "box" : { 285 | "fontsize" : 36.0, 286 | "id" : "obj-18", 287 | "maxclass" : "comment", 288 | "numinlets" : 1, 289 | "numoutlets" : 0, 290 | "patching_rect" : [ 1.0, 0.0, 137.0, 47.0 ], 291 | "text" : "max-ble" 292 | } 293 | 294 | } 295 | , { 296 | "box" : { 297 | "id" : "obj-3", 298 | "maxclass" : "message", 299 | "numinlets" : 2, 300 | "numoutlets" : 1, 301 | "outlettype" : [ "" ], 302 | "patching_rect" : [ 81.0, 185.0, 51.0, 22.0 ], 303 | "text" : "scan $1" 304 | } 305 | 306 | } 307 | , { 308 | "box" : { 309 | "id" : "obj-1", 310 | "maxclass" : "newobj", 311 | "numinlets" : 1, 312 | "numoutlets" : 2, 313 | "outlettype" : [ "list", "list" ], 314 | "patching_rect" : [ 14.0, 302.0, 71.5, 22.0 ], 315 | "text" : "max-ble" 316 | } 317 | 318 | } 319 | ], 320 | "lines" : [ { 321 | "patchline" : { 322 | "destination" : [ "obj-30", 0 ], 323 | "midpoints" : [ 23.5, 327.0, 23.5, 327.0 ], 324 | "source" : [ "obj-1", 0 ] 325 | } 326 | 327 | } 328 | , { 329 | "patchline" : { 330 | "destination" : [ "obj-2", 0 ], 331 | "source" : [ "obj-10", 0 ] 332 | } 333 | 334 | } 335 | , { 336 | "patchline" : { 337 | "destination" : [ "obj-29", 0 ], 338 | "midpoints" : [ 23.5, 396.0, 23.5, 396.0 ], 339 | "source" : [ "obj-14", 0 ] 340 | } 341 | 342 | } 343 | , { 344 | "patchline" : { 345 | "destination" : [ "obj-5", 0 ], 346 | "midpoints" : [ 46.5, 396.0, 46.5, 396.0 ], 347 | "source" : [ "obj-14", 1 ] 348 | } 349 | 350 | } 351 | , { 352 | "patchline" : { 353 | "destination" : [ "obj-1", 0 ], 354 | "midpoints" : [ 151.5, 288.0, 23.5, 288.0 ], 355 | "source" : [ "obj-2", 0 ] 356 | } 357 | 358 | } 359 | , { 360 | "patchline" : { 361 | "destination" : [ "obj-14", 0 ], 362 | "midpoints" : [ 193.5, 369.0, 23.5, 369.0 ], 363 | "source" : [ "obj-2", 2 ] 364 | } 365 | 366 | } 367 | , { 368 | "patchline" : { 369 | "destination" : [ "obj-29", 0 ], 370 | "midpoints" : [ 172.5, 480.0, 23.5, 480.0 ], 371 | "source" : [ "obj-2", 1 ] 372 | } 373 | 374 | } 375 | , { 376 | "patchline" : { 377 | "destination" : [ "obj-22", 0 ], 378 | "midpoints" : [ 218.5, 288.0, 218.5, 288.0 ], 379 | "source" : [ "obj-20", 0 ] 380 | } 381 | 382 | } 383 | , { 384 | "patchline" : { 385 | "destination" : [ "obj-1", 0 ], 386 | "midpoints" : [ 218.5, 327.0, 120.0, 327.0, 120.0, 288.0, 23.5, 288.0 ], 387 | "source" : [ "obj-22", 0 ] 388 | } 389 | 390 | } 391 | , { 392 | "patchline" : { 393 | "destination" : [ "obj-14", 0 ], 394 | "midpoints" : [ 260.5, 369.0, 23.5, 369.0 ], 395 | "source" : [ "obj-22", 2 ] 396 | } 397 | 398 | } 399 | , { 400 | "patchline" : { 401 | "destination" : [ "obj-25", 0 ], 402 | "midpoints" : [ 239.5, 417.0, 206.5, 417.0 ], 403 | "source" : [ "obj-22", 1 ] 404 | } 405 | 406 | } 407 | , { 408 | "patchline" : { 409 | "destination" : [ "obj-1", 0 ], 410 | "midpoints" : [ 23.5, 210.0, 23.5, 210.0 ], 411 | "source" : [ "obj-24", 0 ] 412 | } 413 | 414 | } 415 | , { 416 | "patchline" : { 417 | "destination" : [ "obj-6", 0 ], 418 | "midpoints" : [ 247.0, 462.0, 309.0, 462.0, 309.0, 267.0, 282.0, 267.0, 282.0, 192.0, 331.5, 192.0 ], 419 | "source" : [ "obj-25", 1 ] 420 | } 421 | 422 | } 423 | , { 424 | "patchline" : { 425 | "destination" : [ "obj-3", 0 ], 426 | "midpoints" : [ 90.5, 180.0, 90.5, 180.0 ], 427 | "source" : [ "obj-27", 0 ] 428 | } 429 | 430 | } 431 | , { 432 | "patchline" : { 433 | "destination" : [ "obj-24", 0 ], 434 | "midpoints" : [ 23.5, 180.0, 23.5, 180.0 ], 435 | "source" : [ "obj-28", 0 ] 436 | } 437 | 438 | } 439 | , { 440 | "patchline" : { 441 | "destination" : [ "obj-20", 0 ], 442 | "midpoints" : [ 23.5, 528.0, 132.0, 528.0, 132.0, 264.0, 204.0, 264.0, 204.0, 261.0, 218.5, 261.0 ], 443 | "order" : 1, 444 | "source" : [ "obj-29", 0 ] 445 | } 446 | 447 | } 448 | , { 449 | "patchline" : { 450 | "destination" : [ "obj-8", 0 ], 451 | "midpoints" : [ 23.5, 528.0, 132.0, 528.0, 132.0, 264.0, 204.0, 264.0, 204.0, 252.0, 273.0, 252.0, 273.0, 162.0, 331.5, 162.0 ], 452 | "order" : 0, 453 | "source" : [ "obj-29", 0 ] 454 | } 455 | 456 | } 457 | , { 458 | "patchline" : { 459 | "destination" : [ "obj-1", 0 ], 460 | "midpoints" : [ 90.5, 288.0, 23.5, 288.0 ], 461 | "source" : [ "obj-3", 0 ] 462 | } 463 | 464 | } 465 | , { 466 | "patchline" : { 467 | "destination" : [ "obj-14", 1 ], 468 | "midpoints" : [ 23.5, 366.0, 46.5, 366.0 ], 469 | "source" : [ "obj-30", 0 ] 470 | } 471 | 472 | } 473 | , { 474 | "patchline" : { 475 | "destination" : [ "obj-1", 0 ], 476 | "midpoints" : [ 296.0, 288.0, 23.5, 288.0 ], 477 | "source" : [ "obj-36", 0 ] 478 | } 479 | 480 | } 481 | , { 482 | "patchline" : { 483 | "destination" : [ "obj-2", 0 ], 484 | "midpoints" : [ 151.5, 212.0, 151.5, 212.0 ], 485 | "source" : [ "obj-4", 0 ] 486 | } 487 | 488 | } 489 | , { 490 | "patchline" : { 491 | "destination" : [ "obj-25", 0 ], 492 | "midpoints" : [ 46.5, 438.0, 183.0, 438.0, 183.0, 426.0, 206.5, 426.0 ], 493 | "source" : [ "obj-5", 0 ] 494 | } 495 | 496 | } 497 | , { 498 | "patchline" : { 499 | "destination" : [ "obj-36", 0 ], 500 | "midpoints" : [ 331.5, 222.0, 296.0, 222.0 ], 501 | "source" : [ "obj-6", 0 ] 502 | } 503 | 504 | } 505 | , { 506 | "patchline" : { 507 | "destination" : [ "obj-6", 0 ], 508 | "midpoints" : [ 331.5, 192.0, 331.5, 192.0 ], 509 | "source" : [ "obj-8", 0 ] 510 | } 511 | 512 | } 513 | ], 514 | "dependency_cache" : [ { 515 | "name" : "max-ble.mxo", 516 | "type" : "iLaX" 517 | } 518 | ], 519 | "autosave" : 0 520 | } 521 | 522 | } 523 | -------------------------------------------------------------------------------- /max-package/max-hardware-library/extras/Max Hardware Library Objects.maxpat: -------------------------------------------------------------------------------- 1 | { 2 | "patcher" : { 3 | "fileversion" : 1, 4 | "appversion" : { 5 | "major" : 8, 6 | "minor" : 1, 7 | "revision" : 3, 8 | "architecture" : "x64", 9 | "modernui" : 1 10 | } 11 | , 12 | "classnamespace" : "box", 13 | "rect" : [ 438.0, 175.0, 705.0, 346.0 ], 14 | "bglocked" : 0, 15 | "openinpresentation" : 0, 16 | "default_fontsize" : 12.0, 17 | "default_fontface" : 0, 18 | "default_fontname" : "Lato Light", 19 | "gridonopen" : 1, 20 | "gridsize" : [ 5.0, 5.0 ], 21 | "gridsnaponopen" : 2, 22 | "objectsnaponopen" : 0, 23 | "statusbarvisible" : 2, 24 | "toolbarvisible" : 1, 25 | "lefttoolbarpinned" : 2, 26 | "toptoolbarpinned" : 2, 27 | "righttoolbarpinned" : 2, 28 | "bottomtoolbarpinned" : 2, 29 | "toolbars_unpinned_last_save" : 15, 30 | "tallnewobj" : 0, 31 | "boxanimatetime" : 200, 32 | "enablehscroll" : 1, 33 | "enablevscroll" : 1, 34 | "devicewidth" : 0.0, 35 | "description" : "", 36 | "digest" : "", 37 | "tags" : "", 38 | "style" : "tap", 39 | "subpatcher_template" : "tap.template", 40 | "boxes" : [ { 41 | "box" : { 42 | "fontsize" : 24.0, 43 | "id" : "obj-26", 44 | "maxclass" : "textbutton", 45 | "numinlets" : 1, 46 | "numoutlets" : 3, 47 | "outlettype" : [ "", "", "int" ], 48 | "parameter_enable" : 0, 49 | "patching_rect" : [ 220.0, 247.0, 274.0, 43.0 ], 50 | "text" : "Click for Documentation" 51 | } 52 | 53 | } 54 | , { 55 | "box" : { 56 | "hidden" : 1, 57 | "id" : "obj-22", 58 | "linecount" : 2, 59 | "maxclass" : "message", 60 | "numinlets" : 2, 61 | "numoutlets" : 1, 62 | "outlettype" : [ "" ], 63 | "patching_rect" : [ 220.0, 296.0, 298.0, 37.0 ], 64 | "presentation_linecount" : 2, 65 | "text" : ";\rmax opendoc max_hardware_library_topic.maxvig.xml" 66 | } 67 | 68 | } 69 | , { 70 | "box" : { 71 | "id" : "obj-16", 72 | "maxclass" : "newobj", 73 | "numinlets" : 2, 74 | "numoutlets" : 0, 75 | "patching_rect" : [ 451.0, 183.0, 57.0, 23.0 ], 76 | "text" : "byte-cast" 77 | } 78 | 79 | } 80 | , { 81 | "box" : { 82 | "id" : "obj-15", 83 | "maxclass" : "newobj", 84 | "numinlets" : 1, 85 | "numoutlets" : 3, 86 | "outlettype" : [ "list", "list", "list" ], 87 | "patching_rect" : [ 198.0, 183.0, 51.0, 23.0 ], 88 | "text" : "max-ble" 89 | } 90 | 91 | } 92 | , { 93 | "box" : { 94 | "fontsize" : 18.0, 95 | "id" : "obj-13", 96 | "maxclass" : "comment", 97 | "numinlets" : 1, 98 | "numoutlets" : 0, 99 | "patching_rect" : [ 160.5, 134.0, 393.0, 28.0 ], 100 | "text" : "objects for interacting with hardware electronics " 101 | } 102 | 103 | } 104 | , { 105 | "box" : { 106 | "fontsize" : 64.0, 107 | "id" : "obj-11", 108 | "maxclass" : "comment", 109 | "numinlets" : 1, 110 | "numoutlets" : 0, 111 | "patching_rect" : [ 38.0, 38.0, 638.0, 83.0 ], 112 | "text" : "Max Hardware Library" 113 | } 114 | 115 | } 116 | ], 117 | "lines" : [ { 118 | "patchline" : { 119 | "destination" : [ "obj-22", 0 ], 120 | "hidden" : 1, 121 | "source" : [ "obj-26", 0 ] 122 | } 123 | 124 | } 125 | ], 126 | "dependency_cache" : [ { 127 | "name" : "max-ble.mxo", 128 | "type" : "iLaX" 129 | } 130 | , { 131 | "name" : "byte-cast.mxo", 132 | "type" : "iLaX" 133 | } 134 | ], 135 | "autosave" : 0, 136 | "styles" : [ { 137 | "name" : "tap", 138 | "default" : { 139 | "fontname" : [ "Lato Light" ] 140 | } 141 | , 142 | "parentstyle" : "", 143 | "multi" : 0 144 | } 145 | ] 146 | } 147 | 148 | } 149 | -------------------------------------------------------------------------------- /max-package/max-hardware-library/extras/ble-notify/ble-notify.ino: -------------------------------------------------------------------------------- 1 | /* 2 | Get LED Data From Max 3 | 4 | This example creates a BLE peripheral with service that contains a 5 | characteristic to control an LED. 6 | 7 | The Service and Characteristic UUIDs can be generated with the uuidgen shell program 8 | or go to https://www.uuidgenerator.net 9 | 10 | The circuit: 11 | - Arduino MKR WiFi 1010, Arduino Uno WiFi Rev2 board, Arduino Nano 33 IoT, 12 | Arduino Nano 33 BLE, or Arduino Nano 33 BLE Sense board. 13 | 14 | This example code is in the public domain. 15 | */ 16 | //------------------------------------------------------------------------------------------ 17 | #include 18 | //------------------------------------------------------------------------------------------ 19 | // LED Service UUID Device UUID 20 | BLEService ledService("19B10000-E8F2-537E-4F6C-D104768A1214"); 21 | // Switch Characteristic UUID 22 | BLEByteCharacteristic switchCharacteristic("19B10001-E8F2-537E-4F6C-D104768A1214", BLERead | BLENotify); 23 | //------------------------------------------------------------------------------------------ 24 | const int ledPin = LED_BUILTIN; // pin to use for the LED 25 | bool ledState = false; 26 | unsigned long switchTime = 1000; 27 | unsigned long previousTime = 0; 28 | //------------------------------------------------------------------------------------------ 29 | void setup() 30 | { 31 | Serial.begin(9600); 32 | // while (!Serial); 33 | 34 | pinMode(ledPin, OUTPUT); 35 | 36 | if (!BLE.begin()) 37 | halt("starting BLE failed!"); 38 | 39 | BLE.setLocalName("LED"); 40 | BLE.setAdvertisedService(ledService); 41 | 42 | // add the characteristic to the service 43 | ledService.addCharacteristic(switchCharacteristic); 44 | BLE.addService(ledService); 45 | 46 | switchCharacteristic.writeValue(ledState); // set the initial value for the characeristic: 47 | 48 | BLE.advertise(); // start advertising 49 | 50 | Serial.println("BLE LED Peripheral"); 51 | } 52 | 53 | //------------------------------------------------------------------------------------------ 54 | 55 | void loop() 56 | { 57 | BLE.poll(); 58 | BLEDevice central = BLE.central(); 59 | if (millis() - previousTime > switchTime) 60 | { 61 | previousTime = millis(); 62 | ledState = !ledState; 63 | Serial.println(((ledState) ? "On" : "Off")); 64 | switchCharacteristic.writeValue(((ledState) ? 0x1 : 0x10)); 65 | digitalWrite(LED_BUILTIN, ledState); 66 | } 67 | } 68 | 69 | //------------------------------------------------------------------------------------------ 70 | 71 | void halt(const char* error) 72 | { 73 | Serial.println(error); 74 | while (1); 75 | } 76 | -------------------------------------------------------------------------------- /max-package/max-hardware-library/help/byte-cast.maxhelp: -------------------------------------------------------------------------------- 1 | { 2 | "patcher" : { 3 | "fileversion" : 1, 4 | "appversion" : { 5 | "major" : 8, 6 | "minor" : 1, 7 | "revision" : 3, 8 | "architecture" : "x64", 9 | "modernui" : 1 10 | } 11 | , 12 | "classnamespace" : "box", 13 | "rect" : [ 59.0, 81.0, 634.0, 540.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" : "", 40 | "showrootpatcherontab" : 0, 41 | "showontab" : 0, 42 | "boxes" : [ { 43 | "box" : { 44 | "id" : "obj-3", 45 | "maxclass" : "newobj", 46 | "numinlets" : 0, 47 | "numoutlets" : 0, 48 | "patcher" : { 49 | "fileversion" : 1, 50 | "appversion" : { 51 | "major" : 8, 52 | "minor" : 1, 53 | "revision" : 3, 54 | "architecture" : "x64", 55 | "modernui" : 1 56 | } 57 | , 58 | "classnamespace" : "box", 59 | "rect" : [ 0.0, 26.0, 634.0, 514.0 ], 60 | "bglocked" : 0, 61 | "openinpresentation" : 0, 62 | "default_fontsize" : 12.0, 63 | "default_fontface" : 0, 64 | "default_fontname" : "Arial", 65 | "gridonopen" : 1, 66 | "gridsize" : [ 15.0, 15.0 ], 67 | "gridsnaponopen" : 1, 68 | "objectsnaponopen" : 1, 69 | "statusbarvisible" : 2, 70 | "toolbarvisible" : 1, 71 | "lefttoolbarpinned" : 0, 72 | "toptoolbarpinned" : 0, 73 | "righttoolbarpinned" : 0, 74 | "bottomtoolbarpinned" : 0, 75 | "toolbars_unpinned_last_save" : 0, 76 | "tallnewobj" : 0, 77 | "boxanimatetime" : 200, 78 | "enablehscroll" : 1, 79 | "enablevscroll" : 1, 80 | "devicewidth" : 0.0, 81 | "description" : "", 82 | "digest" : "", 83 | "tags" : "", 84 | "style" : "", 85 | "subpatcher_template" : "", 86 | "showontab" : 1, 87 | "boxes" : [ { 88 | "box" : { 89 | "id" : "obj-27", 90 | "maxclass" : "message", 91 | "numinlets" : 2, 92 | "numoutlets" : 1, 93 | "outlettype" : [ "" ], 94 | "patching_rect" : [ 428.417747497558594, 290.0, 79.0, 22.0 ], 95 | "text" : "219 15 73 64" 96 | } 97 | 98 | } 99 | , { 100 | "box" : { 101 | "id" : "obj-28", 102 | "maxclass" : "newobj", 103 | "numinlets" : 2, 104 | "numoutlets" : 1, 105 | "outlettype" : [ "list" ], 106 | "patching_rect" : [ 428.417747497558594, 319.0, 71.0, 22.0 ], 107 | "text" : "byte-cast f<" 108 | } 109 | 110 | } 111 | , { 112 | "box" : { 113 | "id" : "obj-24", 114 | "maxclass" : "newobj", 115 | "numinlets" : 1, 116 | "numoutlets" : 0, 117 | "patching_rect" : [ 428.417747497558594, 348.5, 130.0, 22.0 ], 118 | "text" : "print \"little endian float\"" 119 | } 120 | 121 | } 122 | , { 123 | "box" : { 124 | "id" : "obj-23", 125 | "maxclass" : "newobj", 126 | "numinlets" : 1, 127 | "numoutlets" : 0, 128 | "patching_rect" : [ 291.417747497558594, 348.5, 125.0, 22.0 ], 129 | "text" : "print \"big endian float\"" 130 | } 131 | 132 | } 133 | , { 134 | "box" : { 135 | "id" : "obj-21", 136 | "maxclass" : "message", 137 | "numinlets" : 2, 138 | "numoutlets" : 1, 139 | "outlettype" : [ "" ], 140 | "patching_rect" : [ 164.917747497558594, 290.0, 45.0, 22.0 ], 141 | "text" : "0 0 0 1" 142 | } 143 | 144 | } 145 | , { 146 | "box" : { 147 | "id" : "obj-22", 148 | "maxclass" : "newobj", 149 | "numinlets" : 2, 150 | "numoutlets" : 1, 151 | "outlettype" : [ "list" ], 152 | "patching_rect" : [ 164.917747497558594, 319.0, 70.0, 22.0 ], 153 | "text" : "byte-cast i>" 154 | } 155 | 156 | } 157 | , { 158 | "box" : { 159 | "id" : "obj-19", 160 | "maxclass" : "message", 161 | "numinlets" : 2, 162 | "numoutlets" : 1, 163 | "outlettype" : [ "" ], 164 | "patching_rect" : [ 291.417747497558594, 163.5, 99.0, 22.0 ], 165 | "text" : "255 255 255 254" 166 | } 167 | 168 | } 169 | , { 170 | "box" : { 171 | "id" : "obj-20", 172 | "maxclass" : "newobj", 173 | "numinlets" : 2, 174 | "numoutlets" : 1, 175 | "outlettype" : [ "list" ], 176 | "patching_rect" : [ 291.417747497558594, 199.0, 67.0, 22.0 ], 177 | "text" : "byte-cast h" 178 | } 179 | 180 | } 181 | , { 182 | "box" : { 183 | "id" : "obj-17", 184 | "maxclass" : "message", 185 | "numinlets" : 2, 186 | "numoutlets" : 1, 187 | "outlettype" : [ "" ], 188 | "patching_rect" : [ 428.417747497558594, 163.5, 99.0, 22.0 ], 189 | "text" : "255 255 255 254" 190 | } 191 | 192 | } 193 | , { 194 | "box" : { 195 | "id" : "obj-18", 196 | "maxclass" : "newobj", 197 | "numinlets" : 2, 198 | "numoutlets" : 1, 199 | "outlettype" : [ "list" ], 200 | "patching_rect" : [ 428.417747497558594, 199.0, 74.0, 22.0 ], 201 | "text" : "byte-cast uh" 202 | } 203 | 204 | } 205 | , { 206 | "box" : { 207 | "id" : "obj-15", 208 | "linecount" : 2, 209 | "maxclass" : "message", 210 | "numinlets" : 2, 211 | "numoutlets" : 1, 212 | "outlettype" : [ "" ], 213 | "patching_rect" : [ 164.917747497558594, 157.0, 102.0, 35.0 ], 214 | "text" : "255 255 255 255 255 255 255 254" 215 | } 216 | 217 | } 218 | , { 219 | "box" : { 220 | "id" : "obj-16", 221 | "maxclass" : "newobj", 222 | "numinlets" : 2, 223 | "numoutlets" : 1, 224 | "outlettype" : [ "list" ], 225 | "patching_rect" : [ 164.917747497558594, 199.0, 70.0, 22.0 ], 226 | "text" : "byte-cast ui" 227 | } 228 | 229 | } 230 | , { 231 | "box" : { 232 | "id" : "obj-13", 233 | "maxclass" : "newobj", 234 | "numinlets" : 1, 235 | "numoutlets" : 0, 236 | "patching_rect" : [ 38.417747497558594, 348.5, 120.0, 22.0 ], 237 | "text" : "print \"little endian int\"" 238 | } 239 | 240 | } 241 | , { 242 | "box" : { 243 | "id" : "obj-12", 244 | "maxclass" : "newobj", 245 | "numinlets" : 1, 246 | "numoutlets" : 0, 247 | "patching_rect" : [ 164.917747497558594, 348.5, 115.0, 22.0 ], 248 | "text" : "print \"big endian int\"" 249 | } 250 | 251 | } 252 | , { 253 | "box" : { 254 | "id" : "obj-11", 255 | "maxclass" : "newobj", 256 | "numinlets" : 1, 257 | "numoutlets" : 0, 258 | "patching_rect" : [ 291.417747497558594, 229.0, 90.0, 22.0 ], 259 | "text" : "print \"16-bit int\"" 260 | } 261 | 262 | } 263 | , { 264 | "box" : { 265 | "id" : "obj-10", 266 | "maxclass" : "newobj", 267 | "numinlets" : 1, 268 | "numoutlets" : 0, 269 | "patching_rect" : [ 428.417747497558594, 229.0, 96.0, 22.0 ], 270 | "text" : "print \"16-bit uint\"" 271 | } 272 | 273 | } 274 | , { 275 | "box" : { 276 | "id" : "obj-4", 277 | "maxclass" : "newobj", 278 | "numinlets" : 1, 279 | "numoutlets" : 0, 280 | "patching_rect" : [ 164.917747497558594, 229.0, 96.0, 22.0 ], 281 | "text" : "print \"32-bit uint\"" 282 | } 283 | 284 | } 285 | , { 286 | "box" : { 287 | "id" : "obj-3", 288 | "maxclass" : "newobj", 289 | "numinlets" : 1, 290 | "numoutlets" : 0, 291 | "patching_rect" : [ 38.417747497558594, 229.0, 90.0, 22.0 ], 292 | "text" : "print \"32-bit int\"" 293 | } 294 | 295 | } 296 | , { 297 | "box" : { 298 | "id" : "obj-6", 299 | "linecount" : 2, 300 | "maxclass" : "message", 301 | "numinlets" : 2, 302 | "numoutlets" : 1, 303 | "outlettype" : [ "" ], 304 | "patching_rect" : [ 38.417747497558594, 157.0, 102.0, 35.0 ], 305 | "text" : "255 255 255 255 255 255 255 254" 306 | } 307 | 308 | } 309 | , { 310 | "box" : { 311 | "id" : "obj-7", 312 | "maxclass" : "newobj", 313 | "numinlets" : 2, 314 | "numoutlets" : 1, 315 | "outlettype" : [ "list" ], 316 | "patching_rect" : [ 38.417747497558594, 199.0, 90.0, 22.0 ], 317 | "text" : "byte-cast i" 318 | } 319 | 320 | } 321 | , { 322 | "box" : { 323 | "id" : "obj-8", 324 | "maxclass" : "message", 325 | "numinlets" : 2, 326 | "numoutlets" : 1, 327 | "outlettype" : [ "" ], 328 | "patching_rect" : [ 291.417747497558594, 290.0, 79.0, 22.0 ], 329 | "text" : "64 73 15 219" 330 | } 331 | 332 | } 333 | , { 334 | "box" : { 335 | "id" : "obj-9", 336 | "maxclass" : "newobj", 337 | "numinlets" : 2, 338 | "numoutlets" : 1, 339 | "outlettype" : [ "list" ], 340 | "patching_rect" : [ 291.417747497558594, 319.0, 71.0, 22.0 ], 341 | "text" : "byte-cast f>" 342 | } 343 | 344 | } 345 | , { 346 | "box" : { 347 | "id" : "obj-34", 348 | "maxclass" : "message", 349 | "numinlets" : 2, 350 | "numoutlets" : 1, 351 | "outlettype" : [ "" ], 352 | "patching_rect" : [ 38.417747497558594, 290.0, 45.0, 22.0 ], 353 | "text" : "1 0 0 0" 354 | } 355 | 356 | } 357 | , { 358 | "box" : { 359 | "id" : "obj-33", 360 | "maxclass" : "newobj", 361 | "numinlets" : 2, 362 | "numoutlets" : 1, 363 | "outlettype" : [ "list" ], 364 | "patching_rect" : [ 38.417747497558594, 319.0, 70.0, 22.0 ], 365 | "text" : "byte-cast i<" 366 | } 367 | 368 | } 369 | , { 370 | "box" : { 371 | "border" : 0, 372 | "filename" : "helpdetails.js", 373 | "id" : "obj-26", 374 | "ignoreclick" : 1, 375 | "jsarguments" : [ "byte-cast" ], 376 | "maxclass" : "jsui", 377 | "numinlets" : 1, 378 | "numoutlets" : 1, 379 | "outlettype" : [ "" ], 380 | "parameter_enable" : 0, 381 | "patching_rect" : [ 0.0, 0.0, 539.0, 117.0 ] 382 | } 383 | 384 | } 385 | ], 386 | "lines" : [ { 387 | "patchline" : { 388 | "destination" : [ "obj-16", 0 ], 389 | "source" : [ "obj-15", 0 ] 390 | } 391 | 392 | } 393 | , { 394 | "patchline" : { 395 | "destination" : [ "obj-4", 0 ], 396 | "source" : [ "obj-16", 0 ] 397 | } 398 | 399 | } 400 | , { 401 | "patchline" : { 402 | "destination" : [ "obj-18", 0 ], 403 | "source" : [ "obj-17", 0 ] 404 | } 405 | 406 | } 407 | , { 408 | "patchline" : { 409 | "destination" : [ "obj-10", 0 ], 410 | "source" : [ "obj-18", 0 ] 411 | } 412 | 413 | } 414 | , { 415 | "patchline" : { 416 | "destination" : [ "obj-20", 0 ], 417 | "source" : [ "obj-19", 0 ] 418 | } 419 | 420 | } 421 | , { 422 | "patchline" : { 423 | "destination" : [ "obj-11", 0 ], 424 | "source" : [ "obj-20", 0 ] 425 | } 426 | 427 | } 428 | , { 429 | "patchline" : { 430 | "destination" : [ "obj-22", 0 ], 431 | "source" : [ "obj-21", 0 ] 432 | } 433 | 434 | } 435 | , { 436 | "patchline" : { 437 | "destination" : [ "obj-12", 0 ], 438 | "source" : [ "obj-22", 0 ] 439 | } 440 | 441 | } 442 | , { 443 | "patchline" : { 444 | "destination" : [ "obj-28", 0 ], 445 | "source" : [ "obj-27", 0 ] 446 | } 447 | 448 | } 449 | , { 450 | "patchline" : { 451 | "destination" : [ "obj-24", 0 ], 452 | "source" : [ "obj-28", 0 ] 453 | } 454 | 455 | } 456 | , { 457 | "patchline" : { 458 | "destination" : [ "obj-13", 0 ], 459 | "source" : [ "obj-33", 0 ] 460 | } 461 | 462 | } 463 | , { 464 | "patchline" : { 465 | "destination" : [ "obj-33", 0 ], 466 | "source" : [ "obj-34", 0 ] 467 | } 468 | 469 | } 470 | , { 471 | "patchline" : { 472 | "destination" : [ "obj-7", 0 ], 473 | "source" : [ "obj-6", 0 ] 474 | } 475 | 476 | } 477 | , { 478 | "patchline" : { 479 | "destination" : [ "obj-3", 0 ], 480 | "source" : [ "obj-7", 0 ] 481 | } 482 | 483 | } 484 | , { 485 | "patchline" : { 486 | "destination" : [ "obj-9", 0 ], 487 | "source" : [ "obj-8", 0 ] 488 | } 489 | 490 | } 491 | , { 492 | "patchline" : { 493 | "destination" : [ "obj-23", 0 ], 494 | "source" : [ "obj-9", 0 ] 495 | } 496 | 497 | } 498 | ] 499 | } 500 | , 501 | "patching_rect" : [ 111.0, 45.0, 63.0, 22.0 ], 502 | "saved_object_attributes" : { 503 | "description" : "", 504 | "digest" : "", 505 | "globalpatchername" : "", 506 | "tags" : "" 507 | } 508 | , 509 | "text" : "p Formats" 510 | } 511 | 512 | } 513 | , { 514 | "box" : { 515 | "id" : "obj-2", 516 | "maxclass" : "newobj", 517 | "numinlets" : 0, 518 | "numoutlets" : 0, 519 | "patcher" : { 520 | "fileversion" : 1, 521 | "appversion" : { 522 | "major" : 8, 523 | "minor" : 1, 524 | "revision" : 3, 525 | "architecture" : "x64", 526 | "modernui" : 1 527 | } 528 | , 529 | "classnamespace" : "box", 530 | "rect" : [ 59.0, 107.0, 634.0, 514.0 ], 531 | "bglocked" : 0, 532 | "openinpresentation" : 0, 533 | "default_fontsize" : 12.0, 534 | "default_fontface" : 0, 535 | "default_fontname" : "Arial", 536 | "gridonopen" : 1, 537 | "gridsize" : [ 15.0, 15.0 ], 538 | "gridsnaponopen" : 1, 539 | "objectsnaponopen" : 1, 540 | "statusbarvisible" : 2, 541 | "toolbarvisible" : 1, 542 | "lefttoolbarpinned" : 0, 543 | "toptoolbarpinned" : 0, 544 | "righttoolbarpinned" : 0, 545 | "bottomtoolbarpinned" : 0, 546 | "toolbars_unpinned_last_save" : 0, 547 | "tallnewobj" : 0, 548 | "boxanimatetime" : 200, 549 | "enablehscroll" : 1, 550 | "enablevscroll" : 1, 551 | "devicewidth" : 0.0, 552 | "description" : "", 553 | "digest" : "", 554 | "tags" : "", 555 | "style" : "", 556 | "subpatcher_template" : "", 557 | "showontab" : 1, 558 | "boxes" : [ { 559 | "box" : { 560 | "id" : "obj-16", 561 | "maxclass" : "toggle", 562 | "numinlets" : 1, 563 | "numoutlets" : 1, 564 | "outlettype" : [ "int" ], 565 | "parameter_enable" : 0, 566 | "patching_rect" : [ 346.417747497558594, 371.0, 24.0, 24.0 ] 567 | } 568 | 569 | } 570 | , { 571 | "box" : { 572 | "bubble" : 1, 573 | "id" : "obj-10", 574 | "maxclass" : "comment", 575 | "numinlets" : 1, 576 | "numoutlets" : 0, 577 | "patching_rect" : [ 383.417747497558594, 371.0, 133.0, 24.0 ], 578 | "text" : "Toggle Endianness" 579 | } 580 | 581 | } 582 | , { 583 | "box" : { 584 | "id" : "obj-11", 585 | "maxclass" : "message", 586 | "numinlets" : 2, 587 | "numoutlets" : 1, 588 | "outlettype" : [ "" ], 589 | "patching_rect" : [ 256.417747497558594, 434.0, 121.5, 22.0 ] 590 | } 591 | 592 | } 593 | , { 594 | "box" : { 595 | "id" : "obj-12", 596 | "maxclass" : "message", 597 | "numinlets" : 2, 598 | "numoutlets" : 1, 599 | "outlettype" : [ "" ], 600 | "patching_rect" : [ 256.417747497558594, 374.0, 79.0, 22.0 ], 601 | "text" : "64 73 15 219" 602 | } 603 | 604 | } 605 | , { 606 | "box" : { 607 | "id" : "obj-13", 608 | "maxclass" : "newobj", 609 | "numinlets" : 2, 610 | "numoutlets" : 1, 611 | "outlettype" : [ "list" ], 612 | "patching_rect" : [ 256.417747497558594, 403.0, 64.0, 22.0 ], 613 | "text" : "byte-cast f" 614 | } 615 | 616 | } 617 | , { 618 | "box" : { 619 | "bubble" : 1, 620 | "id" : "obj-1", 621 | "maxclass" : "comment", 622 | "numinlets" : 1, 623 | "numoutlets" : 0, 624 | "patching_rect" : [ 350.417747497558594, 148.0, 155.0, 24.0 ], 625 | "text" : "256 and 512 in bytes list" 626 | } 627 | 628 | } 629 | , { 630 | "box" : { 631 | "bubble" : 1, 632 | "id" : "obj-2", 633 | "linecount" : 2, 634 | "maxclass" : "comment", 635 | "numinlets" : 1, 636 | "numoutlets" : 0, 637 | "patching_rect" : [ 417.417747497558594, 259.0, 94.0, 37.0 ], 638 | "text" : "pi and tau in bytes" 639 | } 640 | 641 | } 642 | , { 643 | "box" : { 644 | "id" : "obj-3", 645 | "maxclass" : "message", 646 | "numinlets" : 2, 647 | "numoutlets" : 1, 648 | "outlettype" : [ "" ], 649 | "patching_rect" : [ 255.417747497558594, 218.0, 69.0, 22.0 ] 650 | } 651 | 652 | } 653 | , { 654 | "box" : { 655 | "id" : "obj-5", 656 | "maxclass" : "message", 657 | "numinlets" : 2, 658 | "numoutlets" : 1, 659 | "outlettype" : [ "" ], 660 | "patching_rect" : [ 256.417747497558594, 319.0, 84.0, 22.0 ] 661 | } 662 | 663 | } 664 | , { 665 | "box" : { 666 | "id" : "obj-6", 667 | "maxclass" : "message", 668 | "numinlets" : 2, 669 | "numoutlets" : 1, 670 | "outlettype" : [ "" ], 671 | "patching_rect" : [ 255.417747497558594, 148.0, 85.0, 22.0 ], 672 | "text" : "0 0 1 0 0 0 2 0" 673 | } 674 | 675 | } 676 | , { 677 | "box" : { 678 | "id" : "obj-7", 679 | "maxclass" : "newobj", 680 | "numinlets" : 2, 681 | "numoutlets" : 1, 682 | "outlettype" : [ "list" ], 683 | "patching_rect" : [ 255.417747497558594, 182.0, 63.0, 22.0 ], 684 | "text" : "byte-cast i" 685 | } 686 | 687 | } 688 | , { 689 | "box" : { 690 | "id" : "obj-8", 691 | "maxclass" : "message", 692 | "numinlets" : 2, 693 | "numoutlets" : 1, 694 | "outlettype" : [ "" ], 695 | "patching_rect" : [ 256.417747497558594, 259.0, 159.0, 22.0 ], 696 | "text" : "64 73 15 219 64 201 15 219" 697 | } 698 | 699 | } 700 | , { 701 | "box" : { 702 | "id" : "obj-9", 703 | "maxclass" : "newobj", 704 | "numinlets" : 2, 705 | "numoutlets" : 1, 706 | "outlettype" : [ "list" ], 707 | "patching_rect" : [ 256.417747497558594, 288.0, 64.0, 22.0 ], 708 | "text" : "byte-cast f" 709 | } 710 | 711 | } 712 | , { 713 | "box" : { 714 | "border" : 0, 715 | "filename" : "helpargs.js", 716 | "id" : "obj-4", 717 | "ignoreclick" : 1, 718 | "jsarguments" : [ "byte-cast" ], 719 | "maxclass" : "jsui", 720 | "numinlets" : 1, 721 | "numoutlets" : 1, 722 | "outlettype" : [ "" ], 723 | "parameter_enable" : 0, 724 | "patching_rect" : [ 101.0, 182.0, 120.835494995117188, 39.0 ] 725 | } 726 | 727 | } 728 | , { 729 | "box" : { 730 | "id" : "obj-42", 731 | "maxclass" : "comment", 732 | "numinlets" : 1, 733 | "numoutlets" : 0, 734 | "patching_rect" : [ 17.0, 126.0, 103.0, 20.0 ], 735 | "text" : "ASCII text" 736 | } 737 | 738 | } 739 | , { 740 | "box" : { 741 | "bubble" : 1, 742 | "id" : "obj-41", 743 | "maxclass" : "comment", 744 | "numinlets" : 1, 745 | "numoutlets" : 0, 746 | "patching_rect" : [ 96.417747497558594, 259.0, 130.0, 24.0 ], 747 | "text" : "475937281 in bytes" 748 | } 749 | 750 | } 751 | , { 752 | "box" : { 753 | "bubble" : 1, 754 | "id" : "obj-39", 755 | "maxclass" : "comment", 756 | "numinlets" : 1, 757 | "numoutlets" : 0, 758 | "patching_rect" : [ 106.417747497558594, 374.0, 120.0, 24.0 ], 759 | "text" : "pi in bytes" 760 | } 761 | 762 | } 763 | , { 764 | "box" : { 765 | "id" : "obj-35", 766 | "maxclass" : "message", 767 | "numinlets" : 2, 768 | "numoutlets" : 1, 769 | "outlettype" : [ "" ], 770 | "patching_rect" : [ 18.417747497558594, 319.0, 69.0, 22.0 ] 771 | } 772 | 773 | } 774 | , { 775 | "box" : { 776 | "id" : "obj-36", 777 | "maxclass" : "message", 778 | "numinlets" : 2, 779 | "numoutlets" : 1, 780 | "outlettype" : [ "" ], 781 | "patching_rect" : [ 18.417747497558594, 434.0, 64.0, 22.0 ] 782 | } 783 | 784 | } 785 | , { 786 | "box" : { 787 | "id" : "obj-37", 788 | "maxclass" : "message", 789 | "numinlets" : 2, 790 | "numoutlets" : 1, 791 | "outlettype" : [ "" ], 792 | "patching_rect" : [ 17.0, 218.0, 67.0, 22.0 ] 793 | } 794 | 795 | } 796 | , { 797 | "box" : { 798 | "id" : "obj-34", 799 | "maxclass" : "message", 800 | "numinlets" : 2, 801 | "numoutlets" : 1, 802 | "outlettype" : [ "" ], 803 | "patching_rect" : [ 18.417747497558594, 259.0, 65.0, 22.0 ], 804 | "text" : "28 94 58 1" 805 | } 806 | 807 | } 808 | , { 809 | "box" : { 810 | "id" : "obj-33", 811 | "maxclass" : "newobj", 812 | "numinlets" : 2, 813 | "numoutlets" : 1, 814 | "outlettype" : [ "list" ], 815 | "patching_rect" : [ 18.417747497558594, 288.0, 63.0, 22.0 ], 816 | "text" : "byte-cast i" 817 | } 818 | 819 | } 820 | , { 821 | "box" : { 822 | "id" : "obj-32", 823 | "maxclass" : "message", 824 | "numinlets" : 2, 825 | "numoutlets" : 1, 826 | "outlettype" : [ "" ], 827 | "patching_rect" : [ 18.417747497558594, 374.0, 79.0, 22.0 ], 828 | "text" : "64 73 15 219" 829 | } 830 | 831 | } 832 | , { 833 | "box" : { 834 | "id" : "obj-30", 835 | "maxclass" : "newobj", 836 | "numinlets" : 2, 837 | "numoutlets" : 1, 838 | "outlettype" : [ "list" ], 839 | "patching_rect" : [ 18.417747497558594, 403.0, 64.0, 22.0 ], 840 | "text" : "byte-cast f" 841 | } 842 | 843 | } 844 | , { 845 | "box" : { 846 | "id" : "obj-29", 847 | "maxclass" : "message", 848 | "numinlets" : 2, 849 | "numoutlets" : 1, 850 | "outlettype" : [ "" ], 851 | "patching_rect" : [ 17.0, 148.0, 159.0, 22.0 ], 852 | "text" : "84 101 115 116 105 110 103" 853 | } 854 | 855 | } 856 | , { 857 | "box" : { 858 | "id" : "obj-27", 859 | "maxclass" : "newobj", 860 | "numinlets" : 2, 861 | "numoutlets" : 1, 862 | "outlettype" : [ "list" ], 863 | "patching_rect" : [ 17.0, 182.0, 67.0, 22.0 ], 864 | "text" : "byte-cast s" 865 | } 866 | 867 | } 868 | , { 869 | "box" : { 870 | "border" : 0, 871 | "filename" : "helpdetails.js", 872 | "id" : "obj-26", 873 | "ignoreclick" : 1, 874 | "jsarguments" : [ "byte-cast" ], 875 | "maxclass" : "jsui", 876 | "numinlets" : 1, 877 | "numoutlets" : 1, 878 | "outlettype" : [ "" ], 879 | "parameter_enable" : 0, 880 | "patching_rect" : [ 0.0, 0.0, 539.0, 117.0 ] 881 | } 882 | 883 | } 884 | ], 885 | "lines" : [ { 886 | "patchline" : { 887 | "destination" : [ "obj-13", 0 ], 888 | "source" : [ "obj-12", 0 ] 889 | } 890 | 891 | } 892 | , { 893 | "patchline" : { 894 | "destination" : [ "obj-11", 1 ], 895 | "source" : [ "obj-13", 0 ] 896 | } 897 | 898 | } 899 | , { 900 | "patchline" : { 901 | "destination" : [ "obj-13", 1 ], 902 | "source" : [ "obj-16", 0 ] 903 | } 904 | 905 | } 906 | , { 907 | "patchline" : { 908 | "destination" : [ "obj-37", 1 ], 909 | "source" : [ "obj-27", 0 ] 910 | } 911 | 912 | } 913 | , { 914 | "patchline" : { 915 | "destination" : [ "obj-27", 0 ], 916 | "source" : [ "obj-29", 0 ] 917 | } 918 | 919 | } 920 | , { 921 | "patchline" : { 922 | "destination" : [ "obj-36", 1 ], 923 | "source" : [ "obj-30", 0 ] 924 | } 925 | 926 | } 927 | , { 928 | "patchline" : { 929 | "destination" : [ "obj-30", 0 ], 930 | "source" : [ "obj-32", 0 ] 931 | } 932 | 933 | } 934 | , { 935 | "patchline" : { 936 | "destination" : [ "obj-35", 1 ], 937 | "source" : [ "obj-33", 0 ] 938 | } 939 | 940 | } 941 | , { 942 | "patchline" : { 943 | "destination" : [ "obj-33", 0 ], 944 | "source" : [ "obj-34", 0 ] 945 | } 946 | 947 | } 948 | , { 949 | "patchline" : { 950 | "destination" : [ "obj-7", 0 ], 951 | "source" : [ "obj-6", 0 ] 952 | } 953 | 954 | } 955 | , { 956 | "patchline" : { 957 | "destination" : [ "obj-3", 1 ], 958 | "source" : [ "obj-7", 0 ] 959 | } 960 | 961 | } 962 | , { 963 | "patchline" : { 964 | "destination" : [ "obj-9", 0 ], 965 | "source" : [ "obj-8", 0 ] 966 | } 967 | 968 | } 969 | , { 970 | "patchline" : { 971 | "destination" : [ "obj-5", 1 ], 972 | "source" : [ "obj-9", 0 ] 973 | } 974 | 975 | } 976 | ] 977 | } 978 | , 979 | "patching_rect" : [ 28.0, 45.0, 69.0, 22.0 ], 980 | "saved_object_attributes" : { 981 | "description" : "", 982 | "digest" : "", 983 | "globalpatchername" : "", 984 | "tags" : "" 985 | } 986 | , 987 | "text" : "p Overview" 988 | } 989 | 990 | } 991 | ], 992 | "lines" : [ ], 993 | "dependency_cache" : [ { 994 | "name" : "helpdetails.js", 995 | "bootpath" : "C74:/help/resources", 996 | "type" : "TEXT", 997 | "implicit" : 1 998 | } 999 | , { 1000 | "name" : "helpargs.js", 1001 | "bootpath" : "C74:/help/resources", 1002 | "type" : "TEXT", 1003 | "implicit" : 1 1004 | } 1005 | , { 1006 | "name" : "byte-cast.mxo", 1007 | "type" : "iLaX" 1008 | } 1009 | ], 1010 | "autosave" : 0 1011 | } 1012 | 1013 | } 1014 | -------------------------------------------------------------------------------- /max-package/max-hardware-library/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mhamilt/max-hardware-library/d8db59c33fe5bcaec2d649af37d3982e6d33ed45/max-package/max-hardware-library/icon.png -------------------------------------------------------------------------------- /max-package/max-hardware-library/icon.svg: -------------------------------------------------------------------------------- 1 | 2 | 18 | 20 | 26 | 32 | 35 | 39 | 43 | 44 | 53 | 54 | 73 | 76 | 77 | 79 | 80 | 82 | image/svg+xml 83 | 85 | 86 | 87 | 88 | 89 | 93 | 102 | 0; 110 | 1 118 | 124 | 130 | 136 | 140 | 144 | 145 | 146 | -------------------------------------------------------------------------------- /max-package/max-hardware-library/package-info.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Max Hardware Library", 3 | "version": "1.0.3", 4 | "author": "Matthew Hamilton", 5 | "description": "Library of utility objects for MaxMSP aimed at interacting with electronics hardware like Arduino via Bluetooth", 6 | "tags": [ 7 | "serial", 8 | "bytes", 9 | "arduino", 10 | "bluetooth", 11 | "ble" 12 | ], 13 | "website": "https://github.com/mhamilt/max-hardware-library", 14 | "max_version_min": "8.0", 15 | "max_version_max": "none", 16 | "os": { 17 | "macintosh": { 18 | "min_version": "10.13.0", 19 | "platform": [ 20 | "arm64", 21 | "x64" 22 | ] 23 | }, 24 | "windows": { 25 | "platform": [ 26 | "ia32", 27 | "x64" 28 | ], 29 | "min_version": "none" 30 | } 31 | }, 32 | "homepatcher": "byte-cast.maxpat", 33 | "package_extra": { 34 | "reverse_domain": "com.mhamilt", 35 | "copyright": "GNU General Public License v3.0" 36 | }, 37 | "filelist": { 38 | "examples": [ 39 | "mhl.rssi.maxpat", 40 | "mhl.connect-everything.maxpat", 41 | "mhl.using-umenus.maxpat", 42 | "mhl.filter-scan.maxpat", 43 | "mhl.simple-max-ble.maxpat", 44 | "mhl.subscribing.maxpat", 45 | "mhl.byte-cast.maxpat", 46 | "mhl.formats.maxpat", 47 | "mhl.arduino-notify.maxpat", 48 | "mhl.ble-midi.maxpat" 49 | ], 50 | "externals": [ 51 | "byte-cast.mxo", 52 | "byte-cast.mxe", 53 | "byte-cast.mxe64", 54 | "max-ble.mxo", 55 | "max-ble.mxe", 56 | "max-ble.mxe64" 57 | ], 58 | "help": [ 59 | "byte-cast.maxhelp", 60 | "max-ble.maxhelp" 61 | ], 62 | "extras": [ 63 | "ble-notify/ble-notify.ino" 64 | ], 65 | "docs": [ 66 | "byte-cast.maxref.xml", 67 | "max-ble.maxref.xml" 68 | ] 69 | } 70 | } 71 | --------------------------------------------------------------------------------