├── .gitignore
├── README.md
├── deprecated
├── README.md
└── help
│ ├── o.expr.maxhelp
│ ├── o.message.maxhelp
│ ├── o.pak.maxhelp
│ ├── o.unless.maxhelp
│ └── o.when.maxhelp
├── dev-internal
├── clippings
│ ├── o.clipping.ComposeExprDisplay.maxpat
│ ├── o.clipping.PackExprRoute.maxpat
│ ├── o.clipping.lambda.recursion.maxpat
│ └── o.clipping.mtof.maxpat
├── context-patcherargs
│ ├── o.patcherargs-inner.maxpat
│ ├── o.patcherargs.maxhelp
│ └── o.patcherargs.maxpat
├── demos
│ ├── needlovefromjohn
│ │ ├── o.demo.heartbeat.maxpat
│ │ ├── o.demo.rhythmengine.maxpat
│ │ ├── o.demo.runtime.maxpat
│ │ ├── o.demo.sequencer.maxpat
│ │ └── o.demo.sequencer2.maxpat
│ ├── o.demo.pack.kslider.maxpat
│ └── using-rand-func-with-presets.maxpat
├── doc-xml-generator.maxpat
└── error-generating
│ └── error-generator.maxpat
├── dev
├── README.md
├── aspect
│ ├── abstractions
│ │ ├── o.aspect.assert.maxpat
│ │ ├── o.aspect.joinpoint.maxpat
│ │ ├── o.aspect.log.outlet.maxpat
│ │ ├── o.aspect.print.maxpat
│ │ ├── o.aspect.profile.maxpat
│ │ ├── o.aspect.receive.maxpat
│ │ ├── o.aspect.send.maxpat
│ │ ├── o.aspect.udpsend.maxpat
│ │ ├── o.in.maxpat
│ │ ├── o.init.maxpat
│ │ ├── o.out.maxpat
│ │ └── o.port.maxpat
│ ├── o.demo.aspect.maxhelp
│ └── o.demo.aspect.maxpat
├── demos
│ └── o.snapshot~.click-id.maxpat
├── help
│ ├── o.context.maxhelp
│ ├── o.gui.attach.maxhelp
│ ├── o.mappatch.maxhelp
│ ├── o.schedule~.maxhelp
│ ├── o.slip.decode.maxhelp
│ ├── o.slip.encode.maxhelp
│ ├── o.snapshot~.maxhelp
│ ├── o.table.maxhelp
│ ├── o.timetag.join~.maxhelp
│ ├── o.timetag.split~.maxhelp
│ ├── o.timetag~.maxhelp
│ └── o.validate.maxhelp
├── o.betweentimes.maxhelp
├── o.betweentimes.maxpat
├── o.callpatch.maxhelp
├── o.callpatch.maxpat
├── o.delay.maxhelp
├── o.delay.maxpat
├── o.diff.maxhelp
├── o.diff.maxpat
├── o.edge~.maxhelp
├── o.edge~.maxpat
├── o.expr.external-editor.maxpat
├── o.let.maxhelp
├── o.let.maxpat
├── o.metro.maxhelp
├── o.metro.maxpat
├── o.osc-p.maxhelp
├── o.osc-p.maxpat
├── o.oscbundle.maxhelp
├── o.oscbundle.maxpat
├── o.poissonprocess.maxhelp
├── o.poissonprocess.maxpat
├── o.prependself.maxhelp
├── o.prependself.maxpat
├── o.routeself.maxhelp
├── o.routeself.maxpat
├── o.stream.maxhelp
├── o.stream.maxpat
├── o.stream2.maxhelp
├── o.stream2.maxpat
├── o.timetag.fromfloat~.maxhelp
├── o.timetag.fromfloat~.maxpat
├── o.timetag.tofloat~.maxhelp
└── o.timetag.tofloat~.maxpat
├── docs
├── _c74_common.css
├── _c74_common.xml
├── _c74_common.xsl
├── _c74_compat.html
├── _c74_platform.xsl
├── refpages
│ ├── _c74_ref_common.xsl
│ ├── _c74_ref_modules.xml
│ └── odot_ref
│ │ ├── _c74_contents.xml
│ │ ├── _c74_ref.xsl
│ │ ├── _expr.functions.xml
│ │ ├── o.append.maxref.xml
│ │ ├── o.change.maxref.xml
│ │ ├── o.collect.maxref.xml
│ │ ├── o.compose.maxref.xml
│ │ ├── o.cond.maxref.xml
│ │ ├── o.dict.maxref.xml
│ │ ├── o.difference.maxref.xml
│ │ ├── o.display.maxref.xml
│ │ ├── o.edge~.maxref.xml
│ │ ├── o.explode.maxref.xml
│ │ ├── o.expr.codebox.maxref.xml
│ │ ├── o.flatten.maxref.xml
│ │ ├── o.gui.attach.maxref.xml
│ │ ├── o.if.maxref.xml
│ │ ├── o.intersection.maxref.xml
│ │ ├── o.listenumerate.maxref.xml
│ │ ├── o.pack.maxref.xml
│ │ ├── o.prepend.maxref.xml
│ │ ├── o.print.maxref.xml
│ │ ├── o.printbytes.maxref.xml
│ │ ├── o.route.maxref.xml
│ │ ├── o.schedule.maxref.xml
│ │ ├── o.select.maxref.xml
│ │ ├── o.timetag.maxref.xml
│ │ ├── o.union.maxref.xml
│ │ ├── o.var.maxref.xml
│ │ └── template
│ │ └── template.xml
└── tutorials
│ ├── _c74_tut_common.xsl
│ └── odot-tut
│ ├── 01_max_and_odot.maxref.xml
│ └── _c74_tut.xsl
├── examples
├── o.demo.Euclidean_distance.maxpat
├── o.demo.basic.sequencer.maxpat
├── o.demo.betweentimes.maxpat
├── o.demo.cellular.automata.maxpat
├── o.demo.counter.maxpat
├── o.demo.datarecorder.list.maxpat
├── o.demo.datarecorder.subbundles.maxpat
├── o.demo.delay.maxpat
├── o.demo.delayline.maxpat
├── o.demo.floattotime.maxpat
├── o.demo.maxcontrols.maxhelp
├── o.demo.maxcontrols.maxpat
├── o.demo.prefixes.maxpat
├── o.demo.recurrence.maxpat
├── o.demo.recursion.maxpat
├── o.demo.sfplayer.1.maxhelp
├── o.demo.sfplayer.2.maxhelp
├── o.demo.substituteaddress.maxpat
├── o.demo.typewriter.maxpat
├── o.demo.xy.direction.maxpat
├── o.sfplayer.1.maxpat
└── o.sfplayer.2.maxpat
├── extras
└── odot
│ ├── o.compatibility
│ ├── odot-max-compatibility.maxpat
│ └── odot-osc-compatibility.maxpat
│ ├── o.examples.overview.maxpat
│ ├── o.expr.overview.maxpat
│ ├── o.glossary.maxpat
│ ├── o.overview.maxpat
│ ├── o.start.here.maxpat
│ └── o.tutorial.maxpat
├── help
├── o.append.maxhelp
├── o.atomize.maxhelp
├── o.change.maxhelp
├── o.collect.maxhelp
├── o.compose.maxhelp
├── o.cond.maxhelp
├── o.dict.maxhelp
├── o.difference.maxhelp
├── o.display.maxhelp
├── o.downcast.maxhelp
├── o.explode.maxhelp
├── o.expr-helpers
│ ├── o.linear_ramp.maxpat
│ ├── odot-abs.maxhelp
│ ├── odot-acos.maxhelp
│ ├── odot-acosh.maxhelp
│ ├── odot-add.maxhelp
│ ├── odot-add_assign.maxhelp
│ ├── odot-and.maxhelp
│ ├── odot-andalso.maxhelp
│ ├── odot-apply.maxhelp
│ ├── odot-aseq.maxhelp
│ ├── odot-asin.maxhelp
│ ├── odot-asinh.maxhelp
│ ├── odot-assign.maxhelp
│ ├── odot-assign_to_index.maxhelp
│ ├── odot-assigntobundlemember.maxhelp
│ ├── odot-atan.maxhelp
│ ├── odot-atan2.maxhelp
│ ├── odot-atanh.maxhelp
│ ├── odot-avg.maxhelp
│ ├── odot-bitand.maxhelp
│ ├── odot-bitor.maxhelp
│ ├── odot-blob.maxhelp
│ ├── odot-bool.maxhelp
│ ├── odot-bound.maxhelp
│ ├── odot-bundle.maxhelp
│ ├── odot-butlast.maxhelp
│ ├── odot-cast.maxhelp
│ ├── odot-cbrt.maxhelp
│ ├── odot-ceil.maxhelp
│ ├── odot-char.maxhelp
│ ├── odot-clip.maxhelp
│ ├── odot-comment.maxhelp
│ ├── odot-cos.maxhelp
│ ├── odot-cosh.maxhelp
│ ├── odot-cross.maxhelp
│ ├── odot-cumsum.maxhelp
│ ├── odot-decrement.maxhelp
│ ├── odot-degtorad.maxhelp
│ ├── odot-delete.maxhelp
│ ├── odot-det.maxhelp
│ ├── odot-div.maxhelp
│ ├── odot-div_assign.maxhelp
│ ├── odot-dot.maxhelp
│ ├── odot-e.maxhelp
│ ├── odot-emptybundle.maxhelp
│ ├── odot-eq.maxhelp
│ ├── odot-erf.maxhelp
│ ├── odot-erfc.maxhelp
│ ├── odot-eval.maxhelp
│ ├── odot-exists.maxhelp
│ ├── odot-exp.maxhelp
│ ├── odot-expm1.maxhelp
│ ├── odot-extrema.maxhelp
│ ├── odot-first.maxhelp
│ ├── odot-float32.maxhelp
│ ├── odot-float64.maxhelp
│ ├── odot-floattotime.maxhelp
│ ├── odot-floor.maxhelp
│ ├── odot-fmod.maxhelp
│ ├── odot-ftom.maxhelp
│ ├── odot-gamma.maxhelp
│ ├── odot-ge.maxhelp
│ ├── odot-getaddresses.maxhelp
│ ├── odot-getbundlemember.maxhelp
│ ├── odot-getmsgcount.maxhelp
│ ├── odot-gettimetag.maxhelp
│ ├── odot-gt.maxhelp
│ ├── odot-halfpi.maxhelp
│ ├── odot-hton32.maxhelp
│ ├── odot-hton64.maxhelp
│ ├── odot-hypot.maxhelp
│ ├── odot-identity.maxhelp
│ ├── odot-if.maxhelp
│ ├── odot-ilogb.maxhelp
│ ├── odot-increment.maxhelp
│ ├── odot-int16.maxhelp
│ ├── odot-int32.maxhelp
│ ├── odot-int64.maxhelp
│ ├── odot-int8.maxhelp
│ ├── odot-interleave.maxhelp
│ ├── odot-j0.maxhelp
│ ├── odot-j1.maxhelp
│ ├── odot-jn.maxhelp
│ ├── odot-join.maxhelp
│ ├── odot-l2norm.maxhelp
│ ├── odot-lambda.maxhelp
│ ├── odot-last.maxhelp
│ ├── odot-le.maxhelp
│ ├── odot-length.maxhelp
│ ├── odot-lgamma.maxhelp
│ ├── odot-list.maxhelp
│ ├── odot-list_lookup.maxhelp
│ ├── odot-lnten.maxhelp
│ ├── odot-lntwo.maxhelp
│ ├── odot-log.maxhelp
│ ├── odot-log10.maxhelp
│ ├── odot-logb.maxhelp
│ ├── odot-logtene.maxhelp
│ ├── odot-logtwoe.maxhelp
│ ├── odot-lreduce.maxhelp
│ ├── odot-lt.maxhelp
│ ├── odot-map.maxhelp
│ ├── odot-match.maxhelp
│ ├── odot-max.maxhelp
│ ├── odot-mean.maxhelp
│ ├── odot-median.maxhelp
│ ├── odot-min.maxhelp
│ ├── odot-minus1.maxhelp
│ ├── odot-mod.maxhelp
│ ├── odot-mod_assign.maxhelp
│ ├── odot-mtof.maxhelp
│ ├── odot-mul.maxhelp
│ ├── odot-mul_assign.maxhelp
│ ├── odot-ne.maxhelp
│ ├── odot-nextafter.maxhelp
│ ├── odot-nfill.maxhelp
│ ├── odot-nonzero.maxhelp
│ ├── odot-not.maxhelp
│ ├── odot-nth.maxhelp
│ ├── odot-ntoh32.maxhelp
│ ├── odot-ntoh64.maxhelp
│ ├── odot-nullcoalesce.maxhelp
│ ├── odot-nullcoalesce_assign.maxhelp
│ ├── odot-oneoverpi.maxhelp
│ ├── odot-or.maxhelp
│ ├── odot-orelse.maxhelp
│ ├── odot-phi.maxhelp
│ ├── odot-pi.maxhelp
│ ├── odot-plus1.maxhelp
│ ├── odot-pow.maxhelp
│ ├── odot-product.maxhelp
│ ├── odot-prog1.maxhelp
│ ├── odot-prog2.maxhelp
│ ├── odot-progn.maxhelp
│ ├── odot-quarterpi.maxhelp
│ ├── odot-quickhull.maxhelp
│ ├── odot-quote.maxhelp
│ ├── odot-radtodeg.maxhelp
│ ├── odot-range.maxhelp
│ ├── odot-readstring.maxhelp
│ ├── odot-remainder.maxhelp
│ ├── odot-rest.maxhelp
│ ├── odot-rev.maxhelp
│ ├── odot-round.maxhelp
│ ├── odot-rreduce.maxhelp
│ ├── odot-scale.maxhelp
│ ├── odot-settimetag.maxhelp
│ ├── odot-sign.maxhelp
│ ├── odot-sin.maxhelp
│ ├── odot-sinh.maxhelp
│ ├── odot-sort.maxhelp
│ ├── odot-sortidx.maxhelp
│ ├── odot-split.maxhelp
│ ├── odot-sqrt.maxhelp
│ ├── odot-sqrthalf.maxhelp
│ ├── odot-sqrttwo.maxhelp
│ ├── odot-strchar.maxhelp
│ ├── odot-strcmp.maxhelp
│ ├── odot-strfind.maxhelp
│ ├── odot-string.maxhelp
│ ├── odot-strlen.maxhelp
│ ├── odot-strtotime.maxhelp
│ ├── odot-sub.maxhelp
│ ├── odot-sub_assign.maxhelp
│ ├── odot-sum.maxhelp
│ ├── odot-tan.maxhelp
│ ├── odot-tanh.maxhelp
│ ├── odot-thirteenth_root_of_3.maxhelp
│ ├── odot-tokenize.maxhelp
│ ├── odot-twelfth_root_of_2.maxhelp
│ ├── odot-twooverpi.maxhelp
│ ├── odot-twopi.maxhelp
│ ├── odot-typetags.maxhelp
│ ├── odot-uint16.maxhelp
│ ├── odot-uint32.maxhelp
│ ├── odot-uint64.maxhelp
│ ├── odot-uint8.maxhelp
│ ├── odot-value.maxhelp
│ ├── odot-y0.maxhelp
│ ├── odot-y1.maxhelp
│ └── odot-yn.maxhelp
├── o.expr.codebox.maxhelp
├── o.flatten.maxhelp
├── o.if.maxhelp
├── o.intersection.maxhelp
├── o.listenumerate.maxhelp
├── o.messageiterate.maxhelp
├── o.pack.maxhelp
├── o.prepend.maxhelp
├── o.print.maxhelp
├── o.printbytes.maxhelp
├── o.route.maxhelp
├── o.schedule.maxhelp
├── o.select.maxhelp
├── o.timetag.maxhelp
├── o.union.maxhelp
└── o.var.maxhelp
├── icon.png
├── init
├── max-keycommands.txt
└── odot-objectlist.txt
├── interfaces
└── obj-qlookup.json
├── license.txt
├── make-release.sh
├── odot-logo.ai
├── patchers
├── namespace
│ ├── o.accum.maxhelp
│ ├── o.accum.maxpat
│ ├── o.gather.maxhelp
│ ├── o.gather.maxpat
│ ├── o.gather.select.maxhelp
│ ├── o.gather.select.maxpat
│ ├── o.insert.maxhelp
│ └── o.insert.maxpat
├── o.uniform.maxhelp
├── o.uniform.maxpat
├── o.was.maxhelp
├── o.was.maxpat
├── ordering
│ ├── o.lefttoright.maxpat
│ └── o.righttoleft.maxpat
├── recursion
│ ├── o.recurse.maxhelp
│ └── o.recurse.maxpat
├── tutorial
│ ├── 01_max_and_odot.maxpat
│ ├── 02_data_manipulation.maxpat
│ ├── 03_packing_processes.maxpat
│ ├── 04_build_merge_sep.maxpat
│ ├── 05_hierarchies.maxpat
│ ├── 06_expr1.maxpat
│ ├── 07_expr2.maxpat
│ ├── 08_expr3.maxpat
│ ├── 09_expr4.maxpat
│ ├── 10_subbundles_literals.maxpat
│ ├── 11_all_about_time.maxpat
│ ├── 12_abstractions.maxpat
│ ├── advance.maxpat
│ ├── close_parent.js
│ ├── filelist.txt
│ ├── n4m.o.tutorial-load.js
│ ├── n4m.o.tutorial-load.maxpat
│ ├── o.abstraction_example1.maxpat
│ ├── o.abstraction_example2.maxpat
│ ├── o.preset-ui.maxpat
│ ├── o.synthesizer.basic~.maxpat
│ ├── o.t.banner.maxpat
│ ├── o.t.io.mouse.maxpat
│ └── o.t.objects-covered.maxpat
└── utils
│ ├── o.autodoc_overview.maxpat
│ ├── o.helpfilehelper.maxpat
│ ├── o.overview.dep.maxpat
│ └── o.overview.dev.maxpat
├── pd
├── cnmat-meta.pd
├── deprecated
│ ├── o.expr-help.pd
│ ├── o.message-help.pd
│ ├── o.pak-help.pd
│ ├── o.unless-help.pd
│ └── o.when-help.pd
├── dev
│ ├── o.bundle-help.pd
│ ├── o.context-graph-example.pd
│ ├── o.context-help.pd
│ ├── o.slip.decode-help.pd
│ ├── o.slip.encode-help.pd
│ ├── o.table-help.pd
│ ├── o.udp.receive-help.pd
│ ├── o.udp.send-help.pd
│ └── o.validate-help.pd
├── o.atomize-help.pd
├── o.change-help.pd
├── o.collect-help.pd
├── o.cond-help.pd
├── o.difference-help.pd
├── o.downcast-help.pd
├── o.explode-help.pd
├── o.expr-dollar-test.pd
├── o.expr-functions.pd
├── o.flatten-help.pd
├── o.if-help.pd
├── o.intersection-help.pd
├── o.menu-help.pd
├── o.messageiterate-help.pd
├── o.pack-help.pd
├── o.print-help.pd
├── o.printbytes-help.pd
├── o.route-help.pd
├── o.schedule-help.pd
├── o.select-help.pd
├── o.timetag-help.pd
├── o.union-help.pd
├── o.var-help.pd
└── odot-object-list.pd
├── release-excludes.txt
├── src
├── Info.plist
├── Makefile
├── Makefile.mac.mk
├── Makefile.win.mk
├── Max-config.xcconfig
├── Max-deprecated.xcconfig
├── Max-unstable.xcconfig
├── PD-config.xcconfig
├── PD-deprecated.xcconfig
├── PD-unstable.xcconfig
├── README.md
├── include
│ ├── o.h
│ ├── odot.c
│ ├── odot_version.h
│ ├── opd_textbox.c
│ ├── opd_textbox.h
│ └── report_compiler.h
├── o-bundle
│ └── o.bundle.c
├── o.O
│ ├── .DS_Store
│ └── o.O.c
├── o.append
│ └── o.append.c
├── o.atomize
│ ├── Makefile
│ ├── o.atomize.c
│ └── o.atomize.xcodeproj
│ │ └── project.pbxproj
├── o.bufferfill~
│ ├── cnmat.o.sinusoids~2.maxpat
│ ├── o.bufferfill~.c
│ ├── o.bufferfill~.maxhelp
│ └── tester.maxpat
├── o.bundle
│ ├── Info.plist
│ └── o.bundle.c
├── o.change
│ ├── Makefile
│ ├── o.change.c
│ └── o.change.xcodeproj
│ │ ├── project.pbxproj
│ │ ├── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcuserdata
│ │ │ └── john.xcuserdatad
│ │ │ └── UserInterfaceState.xcuserstate
│ │ └── xcuserdata
│ │ └── john.xcuserdatad
│ │ └── xcschemes
│ │ ├── o.change.xcscheme
│ │ └── xcschememanagement.plist
├── o.collect
│ ├── Makefile
│ ├── o.collect.c
│ └── o.collect.xcodeproj
│ │ └── project.pbxproj
├── o.compose
│ ├── Makefile
│ └── o.compose.c
├── o.cond
│ ├── Makefile
│ ├── o.cond.c
│ └── o.cond.xcodeproj
│ │ ├── project.pbxproj
│ │ ├── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcuserdata
│ │ │ └── john.xcuserdatad
│ │ │ └── UserInterfaceState.xcuserstate
│ │ └── xcuserdata
│ │ └── john.xcuserdatad
│ │ └── xcschemes
│ │ ├── o.if.xcscheme
│ │ └── xcschememanagement.plist
├── o.context
│ └── o.context.c
├── o.daemon
│ ├── o.daemon-sysV.c
│ ├── o.daemon.c
│ ├── o.daemon.maxhelp
│ └── o.daemon_pipe.c
├── o.dict
│ ├── Makefile
│ └── o.dict.c
├── o.difference
│ ├── Makefile
│ ├── o.difference.c
│ └── o.difference.xcodeproj
│ │ ├── john.mode1v3
│ │ ├── john.pbxuser
│ │ ├── project.pbxproj
│ │ ├── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcuserdata
│ │ │ └── john.xcuserdatad
│ │ │ └── UserInterfaceState.xcuserstate
│ │ └── xcuserdata
│ │ └── john.xcuserdatad
│ │ └── xcschemes
│ │ ├── o.var.xcscheme
│ │ └── xcschememanagement.plist
├── o.display
│ ├── Makefile
│ └── o.display.c
├── o.downcast
│ └── o.downcast.c
├── o.edge~
│ └── o.edge~.c
├── o.explode
│ ├── Makefile
│ └── o.explode.c
├── o.expr.codebox.set
│ ├── Makefile
│ ├── o.expr.codebox.set.c
│ └── o.expr.codebox.set.test.maxpat
├── o.expr.codebox
│ ├── Makefile
│ └── o.expr.codebox.c
├── o.expr
│ ├── Makefile
│ ├── o.expr copy.maxhelp
│ ├── o.expr.c
│ └── o.expr.xcodeproj
│ │ └── project.pbxproj
├── o.flatten
│ ├── Makefile
│ └── o.flatten.c
├── o.gui.attach
│ ├── o.gui.attach-clock-tester.maxpat
│ ├── o.gui.attach-loadbang-test.maxhelp
│ ├── o.gui.attach-tester.maxpat
│ └── o.gui.attach.c
├── o.if
│ ├── Makefile
│ ├── o.if.c
│ └── o.if.xcodeproj
│ │ └── project.pbxproj
├── o.intersection
│ ├── Makefile
│ ├── o.intersection.c
│ └── o.intersection.xcodeproj
│ │ ├── john.mode1v3
│ │ ├── john.pbxuser
│ │ ├── project.pbxproj
│ │ ├── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcuserdata
│ │ │ └── john.xcuserdatad
│ │ │ └── UserInterfaceState.xcuserstate
│ │ └── xcuserdata
│ │ └── john.xcuserdatad
│ │ └── xcschemes
│ │ ├── o.var.xcscheme
│ │ └── xcschememanagement.plist
├── o.listenumerate
│ ├── Makefile
│ └── o.listenumerate.c
├── o.lookup~
│ ├── o.lookup~.cpp
│ ├── o.lookup~.hpp
│ ├── o.lookup~.maxhelp
│ └── o.phase.points~.maxhelp
├── o.mappatch
│ ├── Makefile
│ ├── o.mappatch.c
│ └── o.mappatch.xcodeproj
│ │ └── project.pbxproj
├── o.message
│ ├── Makefile
│ ├── o.message.c
│ └── o.message.xcodeproj
│ │ └── project.pbxproj
├── o.messageiterate
│ └── o.messageiterate.c
├── o.pack
│ ├── Makefile
│ ├── o.pack.c
│ └── o.pack.xcodeproj
│ │ └── project.pbxproj
├── o.pak
│ ├── Makefile
│ ├── o.pak.c
│ └── o.pak.xcodeproj
│ │ ├── john.mode1v3
│ │ ├── john.pbxuser
│ │ ├── project.pbxproj
│ │ ├── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcuserdata
│ │ │ └── john.xcuserdatad
│ │ │ └── UserInterfaceState.xcuserstate
│ │ └── xcuserdata
│ │ └── john.xcuserdatad
│ │ └── xcschemes
│ │ ├── o.build.xcscheme
│ │ └── xcschememanagement.plist
├── o.prepend
│ ├── Makefile
│ ├── o.prepend.c
│ ├── o.prepend.help.pat
│ └── o.prepend.xcodeproj
│ │ └── project.pbxproj
├── o.print
│ ├── Makefile
│ ├── o.print.c
│ └── o.print.xcodeproj
│ │ └── project.pbxproj
├── o.printbytes
│ ├── Makefile
│ ├── o.printbytes.c
│ └── o.printbytes.xcodeproj
│ │ ├── john.mode1v3
│ │ ├── john.pbxuser
│ │ └── project.pbxproj
├── o.route
│ ├── Makefile
│ ├── o.route.c
│ ├── o.route.help.pat
│ └── o.route.xcodeproj
│ │ └── project.pbxproj
├── o.schedule
│ ├── o.schedule.c
│ ├── pqops.c
│ └── pqops.h
├── o.schedule~
│ └── o.schedule~.c
├── o.select
│ ├── Makefile
│ ├── o.select.c
│ └── o.select.xcodeproj
│ │ └── project.pbxproj
├── o.slip.decode
│ └── o.slip.decode.c
├── o.slip.encode
│ └── o.slip.encode.c
├── o.snapshot~
│ └── o.snapshot~.c
├── o.svg
│ ├── o.svg.c
│ ├── svg-open-test.maxpat
│ └── svg-test.svg
├── o.table
│ ├── Makefile
│ ├── o.table.c
│ ├── o.table.xcodeproj
│ │ ├── john.mode1v3
│ │ ├── john.pbxuser
│ │ └── project.pbxproj
│ ├── otable_util.c
│ └── otable_util.h
├── o.timetag.join~
│ └── o.timetag.join~.c
├── o.timetag.split~
│ └── o.timetag.split~.c
├── o.timetag
│ ├── Makefile
│ ├── o.timetag.c
│ └── o.timetag.xcodeproj
│ │ └── project.pbxproj
├── o.timetag~
│ └── o.timetag~.c
├── o.todo.org
├── o.udp.receive
│ └── o.udp.receive.c
├── o.udp.send
│ ├── max-sender-test.maxpat
│ └── o.udp.send.c
├── o.uniform
│ ├── Makefile
│ └── o.uniform.c
├── o.union
│ ├── Makefile
│ ├── o.union.c
│ └── o.union.xcodeproj
│ │ ├── john.mode1v3
│ │ ├── john.pbxuser
│ │ ├── project.pbxproj
│ │ ├── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcuserdata
│ │ │ └── john.xcuserdatad
│ │ │ └── UserInterfaceState.xcuserstate
│ │ └── xcuserdata
│ │ └── john.xcuserdatad
│ │ └── xcschemes
│ │ ├── o.var.xcscheme
│ │ └── xcschememanagement.plist
├── o.unless
│ ├── Makefile
│ ├── o.unless.c
│ └── o.unless.xcodeproj
│ │ └── project.pbxproj
├── o.validate
│ └── o.validate.c
├── o.var
│ ├── Makefile
│ ├── o.var.c
│ └── o.var.xcodeproj
│ │ └── project.pbxproj
├── o.when
│ ├── Makefile
│ ├── o.when.c
│ └── o.when.xcodeproj
│ │ └── project.pbxproj
├── odot.xcodeproj
│ ├── project.pbxproj
│ └── project.xcworkspace
│ │ ├── contents.xcworkspacedata
│ │ └── xcshareddata
│ │ ├── IDEWorkspaceChecks.plist
│ │ ├── odot.xccheckout
│ │ └── odot.xcscmblueprint
├── odot_current_version.sh
├── omenu
│ └── o.menu.c
├── package.pl
└── pd-build
│ ├── Makefile
│ ├── cnmat-meta.pd
│ └── copy-src-files.sh
└── testing
└── init-all-externals.maxpat
/.gitignore:
--------------------------------------------------------------------------------
1 | *.[oa]
2 | *.mxo
3 | *.mxe
4 | *.pd_darwin
5 | *.class
6 | *.objinfo.txt
7 | *.tar.gz
8 | *.tgz
9 | *.zip
10 | *.def
11 | #*#
12 | xcuserdata
13 | .DS_Store
14 | build
15 | build-gcc
16 | *.pbxuser
17 | *.mode1v3
18 | *.mode2v3
19 | *.perspectivev3
20 | !default.pbxuser
21 | !default.mode1v3
22 | !default.mode2v3
23 | !default.perspectivev3
24 | !xcshareddata
25 | xcuserdata
26 | odot_current_version.h
27 | package-info.json
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # CNMAT-odot
2 |
3 | Odot is a set of externals and language developed by Adrian Freed and John MacCallum, with support from Andy Schmeder, Ilya Rostovtsev, Rama Gottfried, Jeff Lubow, and many others at the Center for New Music and Audio Technologies (CNMAT) between 2007 and 2016.
4 |
5 | As of 2022, odot is developed and maintained by John MacCallum with support from CNMAT, and HfMT Hamburg.
6 |
7 | Odot emerged out of a need for an aggregate data type that could be operated upon as it is passed around over patch cords. This aggregation describes a synthesis of control-rate computation in the past, present, and future. Odot requires a host environment (Max/MSP), within which a shim layer (libomax) can operate as middleware between libo and the host itself. The libo library – the current manifestation of Open Sound Control – is utilized at the core, whereby all lower-level OSC calls are made.
8 |
9 | The odot system augments dataflow languages like Max/MSP, PD and Node Red with the following:
10 |
11 | 1. The odot bundle aggregate data type, inspired by and currently encoded with OSC
12 | 2. An expression language supporting a diverse collection of ancient and modern programming paradigms including:
13 | functional, declarative, imperative, dynamic, delegation-based objects, dynamic class-based objects, aspect-oriented
14 | 3. Timing and scheduling primitives to support sequencing and synchronization aspects of media and network programming.
15 |
16 | # Installation
17 |
18 | ### Max/MSP
19 |
20 | Odot is now available through the Max Package Manager as well as the [releases](https://github.com/CNMAT/CNMAT-odot/releases) page.
21 |
22 | ### Pd
23 |
24 | Prebuilt binaries for Pd are available for a number of platforms on the [releases](https://github.com/CNMAT/CNMAT-odot/releases) page,
25 | including Mac OS X, Windows, Arch Linux, and Raspberry Pi OS.
26 |
27 | ### OM#
28 |
29 | An implementation of odot for OM# is available here: [https://github.com/cac-t-u-s/o.OM/](https://github.com/cac-t-u-s/o.OM/).
30 |
31 | ### Building
32 |
33 | Instructions for building can be found in the `src` folder. You will also need to build
34 | [libo](https://github.com/CNMAT/libo) and [libomax](https://github.com/CNMAT/libomax)--see those repos for instructions.
35 |
36 | # Bugs and Issues
37 |
38 | Please file issues on the [GitHub Issue Tracker](https://github.com/CNMAT/CNMAT-odot/issues).
39 |
40 | # Discussion
41 |
42 | Join us on Discord! https://discord.gg/EqHE8TG
43 |
44 | # History
45 |
46 | * Adrian Freed designed and developed the first iteration of odot as a series of patches and abstractions in order to broaden Max/MSP's patchchords from thin cables into trunk lines able to move heterogeneous bundles of data without tedious wiring. It was built on Matt Wright's OSC implementation in Max/MSP.
47 | * John MacCallum ported the bulk of these patches to C and contributed the expression language.
48 | * Andy Schmeder developed the deadline scheduling and time computation.
49 | * Rama Gottfried did the first port to Pure Data (PD).
50 | * Ilya Rostovtsev did the first port to Node Red.
51 | * Adrian Freed, John MacCallum, and Ilya Rostovtsev stabilized the design and released odot 1.0 in 2014.
52 |
53 | Integration of OSC encoding in a dataflow languages was pioneered by Amanda Chaudhary in the OSW language.
54 | The first release of odot integrates numerous user contributions from Dave Defilippo, Jeff Lubow, Derek Razo, Jules Espiau, and Yotam Mann.
55 |
--------------------------------------------------------------------------------
/deprecated/README.md:
--------------------------------------------------------------------------------
1 | ### Note about the deprecated folder
2 |
3 | These objects have been removed from the release for various reasons,
4 | usually having been replaced by a more useful version of the same object.
5 | Actual deletion from the release is possible, but not likely.
6 | The objects here are well tested, and were at one point heavily used,
7 | however they are entirely unsupported now.
8 |
9 | ### Installation
10 |
11 | To use these objects:
12 | you must manually add the dev folder to your search path.
13 | While this is annoying, the act of doing it represents tacit
14 | approval to use these with the knowledge that they are unsupported
15 | and may be deleted at some point in the future.
16 |
--------------------------------------------------------------------------------
/dev-internal/clippings/o.clipping.ComposeExprDisplay.maxpat:
--------------------------------------------------------------------------------
1 | {
2 | "patcher" : {
3 | "fileversion" : 1,
4 | "appversion" : {
5 | "major" : 6,
6 | "minor" : 1,
7 | "revision" : 6,
8 | "architecture" : "x86"
9 | }
10 | ,
11 | "rect" : [ 25.0, 69.0, 640.0, 480.0 ],
12 | "bglocked" : 0,
13 | "openinpresentation" : 0,
14 | "default_fontsize" : 12.0,
15 | "default_fontface" : 0,
16 | "default_fontname" : "Arial",
17 | "gridonopen" : 0,
18 | "gridsize" : [ 15.0, 15.0 ],
19 | "gridsnaponopen" : 0,
20 | "statusbarvisible" : 2,
21 | "toolbarvisible" : 1,
22 | "boxanimatetime" : 200,
23 | "imprint" : 0,
24 | "enablehscroll" : 1,
25 | "enablevscroll" : 1,
26 | "devicewidth" : 0.0,
27 | "description" : "",
28 | "digest" : "",
29 | "tags" : "",
30 | "boxes" : [ {
31 | "box" : {
32 | "fontname" : "Arial",
33 | "fontsize" : 12.0,
34 | "id" : "obj-3",
35 | "linecount" : 8,
36 | "maxclass" : "o.display",
37 | "numinlets" : 1,
38 | "numoutlets" : 1,
39 | "outlettype" : [ "" ],
40 | "patching_rect" : [ 27.0, 257.0, 150.0, 128.0 ],
41 | "text" : "/address : 3.,\n/list : [1, 4, true, false, nil],\n/subbundle : {\n\t/thing : 1\n},\n/value : 56.,\n/thing : [1, 2, 3],\n/foo : [4, 5, 6, 7, 8, 9, 10]",
42 | "textcolor" : [ 0.0, 0.0, 0.0, 1.0 ]
43 | }
44 |
45 | }
46 | , {
47 | "box" : {
48 | "fontname" : "Arial",
49 | "fontsize" : 12.0,
50 | "id" : "obj-2",
51 | "linecount" : 3,
52 | "maxclass" : "o.expr.codebox",
53 | "numinlets" : 1,
54 | "numoutlets" : 2,
55 | "outlettype" : [ "FullPacket", "FullPacket" ],
56 | "patching_rect" : [ 27.0, 171.0, 167.0, 59.0 ],
57 | "text" : "/value ??= 56.0,\n/thing = list(1, 2, 3),\n/foo = aseq(4, 10, 1)",
58 | "textcolor" : [ 0.0, 0.0, 0.0, 1.0 ]
59 | }
60 |
61 | }
62 | , {
63 | "box" : {
64 | "fontname" : "Arial",
65 | "fontsize" : 12.0,
66 | "id" : "obj-1",
67 | "linecount" : 5,
68 | "maxclass" : "o.compose",
69 | "numinlets" : 2,
70 | "numoutlets" : 1,
71 | "outlettype" : [ "" ],
72 | "patching_rect" : [ 27.0, 72.0, 166.0, 78.0 ],
73 | "text" : "/address : 3.,\n/list : [1, 4, true, false, nil],\n/subbundle : {\n\t/thing : 1\n}",
74 | "textcolor" : [ 0.0, 0.0, 0.0, 1.0 ]
75 | }
76 |
77 | }
78 | ],
79 | "lines" : [ {
80 | "patchline" : {
81 | "destination" : [ "obj-2", 0 ],
82 | "disabled" : 0,
83 | "hidden" : 0,
84 | "source" : [ "obj-1", 0 ]
85 | }
86 |
87 | }
88 | , {
89 | "patchline" : {
90 | "destination" : [ "obj-3", 0 ],
91 | "disabled" : 0,
92 | "hidden" : 0,
93 | "midpoints" : [ 36.5, 242.0, 36.5, 242.0 ],
94 | "source" : [ "obj-2", 0 ]
95 | }
96 |
97 | }
98 | ],
99 | "dependency_cache" : [ {
100 | "name" : "o.compose.mxo",
101 | "type" : "iLaX"
102 | }
103 | , {
104 | "name" : "o.expr.codebox.mxo",
105 | "type" : "iLaX"
106 | }
107 | , {
108 | "name" : "o.display.mxo",
109 | "type" : "iLaX"
110 | }
111 | ]
112 | }
113 |
114 | }
115 |
--------------------------------------------------------------------------------
/dev-internal/clippings/o.clipping.lambda.recursion.maxpat:
--------------------------------------------------------------------------------
1 | {
2 | "patcher" : {
3 | "fileversion" : 1,
4 | "appversion" : {
5 | "major" : 6,
6 | "minor" : 1,
7 | "revision" : 6,
8 | "architecture" : "x64"
9 | }
10 | ,
11 | "rect" : [ 516.0, 313.0, 640.0, 480.0 ],
12 | "bglocked" : 0,
13 | "openinpresentation" : 0,
14 | "default_fontsize" : 12.0,
15 | "default_fontface" : 0,
16 | "default_fontname" : "Arial",
17 | "gridonopen" : 0,
18 | "gridsize" : [ 15.0, 15.0 ],
19 | "gridsnaponopen" : 0,
20 | "statusbarvisible" : 2,
21 | "toolbarvisible" : 1,
22 | "boxanimatetime" : 200,
23 | "imprint" : 0,
24 | "enablehscroll" : 1,
25 | "enablevscroll" : 1,
26 | "devicewidth" : 0.0,
27 | "description" : "",
28 | "digest" : "",
29 | "tags" : "",
30 | "boxes" : [ {
31 | "box" : {
32 | "fontname" : "Arial",
33 | "fontsize" : 12.0,
34 | "id" : "obj-6",
35 | "maxclass" : "o.display",
36 | "numinlets" : 1,
37 | "numoutlets" : 1,
38 | "outlettype" : [ "" ],
39 | "patching_rect" : [ 42.0, 102.0, 297.0, 34.0 ],
40 | "text" : "/results : [6, 362880, 120]",
41 | "textcolor" : [ 0.0, 0.0, 0.0, 1.0 ]
42 | }
43 |
44 | }
45 | , {
46 | "box" : {
47 | "fontname" : "Arial",
48 | "fontsize" : 12.0,
49 | "id" : "obj-2",
50 | "linecount" : 2,
51 | "maxclass" : "o.expr.codebox",
52 | "numinlets" : 1,
53 | "numoutlets" : 2,
54 | "outlettype" : [ "FullPacket", "FullPacket" ],
55 | "patching_rect" : [ 42.0, 27.0, 336.0, 45.0 ],
56 | "text" : "/factorial = \"lambda(v, (v > 1)? v * /factorial(v - 1) : 1)\",\n/results = map(readstring(/factorial), [3,9,5]), delete(/factorial)",
57 | "textcolor" : [ 0.0, 0.0, 0.0, 1.0 ]
58 | }
59 |
60 | }
61 | ],
62 | "lines" : [ {
63 | "patchline" : {
64 | "destination" : [ "obj-6", 0 ],
65 | "disabled" : 0,
66 | "hidden" : 0,
67 | "source" : [ "obj-2", 0 ]
68 | }
69 |
70 | }
71 | ],
72 | "dependency_cache" : [ {
73 | "name" : "o.expr.codebox.mxo",
74 | "type" : "iLaX"
75 | }
76 | , {
77 | "name" : "o.display.mxo",
78 | "type" : "iLaX"
79 | }
80 | ]
81 | }
82 |
83 | }
84 |
--------------------------------------------------------------------------------
/dev-internal/clippings/o.clipping.mtof.maxpat:
--------------------------------------------------------------------------------
1 | {
2 | "patcher" : {
3 | "fileversion" : 1,
4 | "appversion" : {
5 | "major" : 6,
6 | "minor" : 1,
7 | "revision" : 6,
8 | "architecture" : "x64"
9 | }
10 | ,
11 | "rect" : [ 429.0, 377.0, 640.0, 480.0 ],
12 | "bglocked" : 0,
13 | "openinpresentation" : 0,
14 | "default_fontsize" : 12.0,
15 | "default_fontface" : 0,
16 | "default_fontname" : "Arial",
17 | "gridonopen" : 0,
18 | "gridsize" : [ 15.0, 15.0 ],
19 | "gridsnaponopen" : 0,
20 | "statusbarvisible" : 2,
21 | "toolbarvisible" : 1,
22 | "boxanimatetime" : 200,
23 | "imprint" : 0,
24 | "enablehscroll" : 1,
25 | "enablevscroll" : 1,
26 | "devicewidth" : 0.0,
27 | "description" : "",
28 | "digest" : "",
29 | "tags" : "",
30 | "boxes" : [ {
31 | "box" : {
32 | "fontname" : "Arial",
33 | "fontsize" : 12.0,
34 | "id" : "obj-6",
35 | "maxclass" : "o.display",
36 | "numinlets" : 1,
37 | "numoutlets" : 1,
38 | "outlettype" : [ "" ],
39 | "patching_rect" : [ 42.0, 102.0, 297.0, 34.0 ],
40 | "textcolor" : [ 0.0, 0.0, 0.0, 1.0 ]
41 | }
42 |
43 | }
44 | , {
45 | "box" : {
46 | "fontname" : "Arial",
47 | "fontsize" : 12.0,
48 | "id" : "obj-2",
49 | "linecount" : 2,
50 | "maxclass" : "o.expr.codebox",
51 | "numinlets" : 1,
52 | "numoutlets" : 2,
53 | "outlettype" : [ "FullPacket", "FullPacket" ],
54 | "patching_rect" : [ 42.0, 27.0, 366.0, 45.0 ],
55 | "text" : "/mtof = \"lambda(n, 440.0 * pow(2.0 , (n - 69) / 12.0))\",\n/frequencies = map(readstring(/mtof), aseq(0,127,1)), delete(/mtof)",
56 | "textcolor" : [ 0.0, 0.0, 0.0, 1.0 ]
57 | }
58 |
59 | }
60 | ],
61 | "lines" : [ {
62 | "patchline" : {
63 | "color" : [ 1.0, 0.8, 0.4, 1.0 ],
64 | "destination" : [ "obj-6", 0 ],
65 | "disabled" : 0,
66 | "hidden" : 0,
67 | "source" : [ "obj-2", 0 ]
68 | }
69 |
70 | }
71 | ],
72 | "dependency_cache" : [ {
73 | "name" : "o.expr.codebox.mxo",
74 | "type" : "iLaX"
75 | }
76 | , {
77 | "name" : "o.display.mxo",
78 | "type" : "iLaX"
79 | }
80 | ]
81 | }
82 |
83 | }
84 |
--------------------------------------------------------------------------------
/dev-internal/context-patcherargs/o.patcherargs.maxhelp:
--------------------------------------------------------------------------------
1 | {
2 | "patcher" : {
3 | "fileversion" : 1,
4 | "appversion" : {
5 | "major" : 7,
6 | "minor" : 3,
7 | "revision" : 4,
8 | "architecture" : "x64",
9 | "modernui" : 1
10 | }
11 | ,
12 | "rect" : [ 38.0, 79.0, 753.0, 531.0 ],
13 | "bglocked" : 0,
14 | "openinpresentation" : 0,
15 | "default_fontsize" : 12.0,
16 | "default_fontface" : 0,
17 | "default_fontname" : "Arial",
18 | "gridonopen" : 1,
19 | "gridsize" : [ 15.0, 15.0 ],
20 | "gridsnaponopen" : 1,
21 | "objectsnaponopen" : 1,
22 | "statusbarvisible" : 2,
23 | "toolbarvisible" : 1,
24 | "lefttoolbarpinned" : 0,
25 | "toptoolbarpinned" : 0,
26 | "righttoolbarpinned" : 0,
27 | "bottomtoolbarpinned" : 0,
28 | "toolbars_unpinned_last_save" : 0,
29 | "tallnewobj" : 0,
30 | "boxanimatetime" : 200,
31 | "enablehscroll" : 1,
32 | "enablevscroll" : 1,
33 | "devicewidth" : 0.0,
34 | "description" : "",
35 | "digest" : "",
36 | "tags" : "",
37 | "style" : "",
38 | "subpatcher_template" : "Default Max 7",
39 | "boxes" : [ {
40 | "box" : {
41 | "id" : "obj-2",
42 | "maxclass" : "newobj",
43 | "numinlets" : 1,
44 | "numoutlets" : 1,
45 | "outlettype" : [ "bang" ],
46 | "patching_rect" : [ 204.0, 110.0, 60.0, 22.0 ],
47 | "style" : "",
48 | "text" : "loadbang"
49 | }
50 |
51 | }
52 | , {
53 | "box" : {
54 | "id" : "obj-1",
55 | "linecount" : 2,
56 | "maxclass" : "newobj",
57 | "numinlets" : 1,
58 | "numoutlets" : 0,
59 | "patching_rect" : [ 204.0, 167.0, 342.0, 35.0 ],
60 | "style" : "",
61 | "text" : "o.patcherargs-inner 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 @foo 1 @bar 2 @steve a yep"
62 | }
63 |
64 | }
65 | ],
66 | "lines" : [ {
67 | "patchline" : {
68 | "destination" : [ "obj-1", 0 ],
69 | "source" : [ "obj-2", 0 ]
70 | }
71 |
72 | }
73 | ],
74 | "dependency_cache" : [ {
75 | "name" : "o.patcherargs-inner.maxpat",
76 | "bootpath" : "~/Documents/dev-lib/CNMAT-odot/dev-internal/context-patcherargs",
77 | "patcherrelativepath" : ".",
78 | "type" : "JSON",
79 | "implicit" : 1
80 | }
81 | , {
82 | "name" : "o.patcherargs.maxpat",
83 | "bootpath" : "~/Documents/dev-lib/CNMAT-odot/dev-internal/context-patcherargs",
84 | "patcherrelativepath" : ".",
85 | "type" : "JSON",
86 | "implicit" : 1
87 | }
88 | , {
89 | "name" : "o.context.mxo",
90 | "type" : "iLaX"
91 | }
92 | , {
93 | "name" : "o.route.mxo",
94 | "type" : "iLaX"
95 | }
96 | , {
97 | "name" : "o.print.mxo",
98 | "type" : "iLaX"
99 | }
100 | , {
101 | "name" : "o.compose.mxo",
102 | "type" : "iLaX"
103 | }
104 | ],
105 | "autosave" : 0,
106 | "bgfillcolor_type" : "gradient",
107 | "bgfillcolor_color1" : [ 0.376471, 0.384314, 0.4, 1.0 ],
108 | "bgfillcolor_color2" : [ 0.290196, 0.309804, 0.301961, 1.0 ],
109 | "bgfillcolor_color" : [ 0.290196, 0.309804, 0.301961, 1.0 ],
110 | "bgfillcolor_angle" : 270.0,
111 | "bgfillcolor_proportion" : 0.39
112 | }
113 |
114 | }
115 |
--------------------------------------------------------------------------------
/dev/README.md:
--------------------------------------------------------------------------------
1 | ### Note about the dev folder
2 |
3 | The contents of the dev folder should be considered "unstable",
4 | but not in the sense that they may have bugs or crash.
5 | In fact, most of the objects and abstractions in the dev folder are
6 | well-tested and integral to a number of projects.
7 |
8 | The instability is with respect to the design of the objects themselves,
9 | i.e. the configuration of inlets and outlets, what they take as input,
10 | and what they produce as output. Their inclusion in this folder as part
11 | of an odot release means that they are understood to be generally useful
12 | and necessary, but their design has not yet stabilized.
13 |
14 | The ultimate goal for each of these objects is either transition into the
15 | main externals folder once they have stabilized, or deprecation in the
16 | case that other additions have made them no longer necessary.
17 |
18 | ### Installation
19 |
20 | To use these objects:
21 | you must manually add the dev folder to your search path. While this is
22 | annoying, the act of doing it represents tacit approval to use these
23 | with the knowledge that they may change in the future.
24 |
--------------------------------------------------------------------------------
/dev/aspect/abstractions/o.aspect.receive.maxpat:
--------------------------------------------------------------------------------
1 | {
2 | "patcher" : {
3 | "fileversion" : 1,
4 | "appversion" : {
5 | "major" : 6,
6 | "minor" : 1,
7 | "revision" : 4,
8 | "architecture" : "x86"
9 | }
10 | ,
11 | "rect" : [ 805.0, 44.0, 640.0, 480.0 ],
12 | "bglocked" : 0,
13 | "openinpresentation" : 0,
14 | "default_fontsize" : 12.0,
15 | "default_fontface" : 0,
16 | "default_fontname" : "Arial",
17 | "gridonopen" : 0,
18 | "gridsize" : [ 8.0, 8.0 ],
19 | "gridsnaponopen" : 0,
20 | "statusbarvisible" : 2,
21 | "toolbarvisible" : 1,
22 | "boxanimatetime" : 200,
23 | "imprint" : 0,
24 | "enablehscroll" : 1,
25 | "enablevscroll" : 1,
26 | "devicewidth" : 0.0,
27 | "description" : "",
28 | "digest" : "",
29 | "tags" : "",
30 | "boxes" : [ {
31 | "box" : {
32 | "fontname" : "Arial",
33 | "fontsize" : 12.0,
34 | "id" : "obj-6",
35 | "maxclass" : "newobj",
36 | "numinlets" : 1,
37 | "numoutlets" : 0,
38 | "patching_rect" : [ 240.0, 96.0, 134.0, 20.0 ],
39 | "text" : "s o.aspect.probe.return"
40 | }
41 |
42 | }
43 | , {
44 | "box" : {
45 | "fontname" : "Arial",
46 | "fontsize" : 12.0,
47 | "id" : "obj-5",
48 | "maxclass" : "newobj",
49 | "numinlets" : 0,
50 | "numoutlets" : 1,
51 | "outlettype" : [ "" ],
52 | "patching_rect" : [ 240.0, 56.0, 97.0, 20.0 ],
53 | "text" : "r o.aspect.probe"
54 | }
55 |
56 | }
57 | , {
58 | "box" : {
59 | "comment" : "",
60 | "id" : "obj-3",
61 | "maxclass" : "outlet",
62 | "numinlets" : 1,
63 | "numoutlets" : 0,
64 | "patching_rect" : [ 104.0, 144.0, 25.0, 25.0 ]
65 | }
66 |
67 | }
68 | , {
69 | "box" : {
70 | "fontname" : "Arial",
71 | "fontsize" : 12.0,
72 | "id" : "obj-1",
73 | "maxclass" : "newobj",
74 | "numinlets" : 0,
75 | "numoutlets" : 1,
76 | "outlettype" : [ "" ],
77 | "patching_rect" : [ 104.0, 56.0, 63.0, 20.0 ],
78 | "text" : "r o.aspect"
79 | }
80 |
81 | }
82 | ],
83 | "lines" : [ {
84 | "patchline" : {
85 | "destination" : [ "obj-3", 0 ],
86 | "disabled" : 0,
87 | "hidden" : 0,
88 | "source" : [ "obj-1", 0 ]
89 | }
90 |
91 | }
92 | , {
93 | "patchline" : {
94 | "destination" : [ "obj-6", 0 ],
95 | "disabled" : 0,
96 | "hidden" : 0,
97 | "source" : [ "obj-5", 0 ]
98 | }
99 |
100 | }
101 | ],
102 | "dependency_cache" : [ ]
103 | }
104 |
105 | }
106 |
--------------------------------------------------------------------------------
/docs/_c74_common.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/docs/_c74_compat.html:
--------------------------------------------------------------------------------
1 |
19 |
20 |
21 |
23 |
24 |
25 |
26 |
27 | Compatibility Notice
28 |
29 |
30 |
31 |
32 |
33 |
34 | If you are reading this, you are running Max 5 on OSX 10.4.10 or below. Unfortunately, due to bugs in Apple's web browser support in these versions of the operating system, the Max 5 in-application documentation won't display properly.
35 |
36 |
37 | We recommend updating to OSX 10.4.11 and apologize for any inconvenience this may cause.
38 |
39 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/docs/_c74_platform.xsl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
21 |
22 |
23 |
24 |
25 | 1
26 |
27 |
28 | 1
29 | 0
30 |
31 |
32 |
33 |
34 |
--------------------------------------------------------------------------------
/docs/refpages/_c74_ref_modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
20 |
21 | jit-ref
22 | m4l-ref
23 | max-ref
24 | msp-ref
25 | odot_ref
26 |
--------------------------------------------------------------------------------
/docs/refpages/odot_ref/_c74_ref.xsl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
--------------------------------------------------------------------------------
/docs/refpages/odot_ref/template/template.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 | CNMAT
15 | odot
16 | odot objects
17 |
18 |
19 |
20 |
21 |
22 |
23 | OSC packet
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 | OSC packet WITH WHATEVER
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 | An odot bundle to operate on.
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 | The resulting odot bundle (FullPacket).
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 | odot, address, bundle
95 |
96 |
97 |
98 |
99 |
--------------------------------------------------------------------------------
/docs/tutorials/odot-tut/01_max_and_odot.maxref.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 | ODOT tutorial 1: Max and ODOT
10 |
11 | Learn about how Max and ODOT work together
12 | In this ODOT tutorial, we will learn about how Max and ODOT work together. This involves taking what we know about Max and extending it to the suite of externals included in the ODOT package.
13 | Open the tutorial.
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/docs/tutorials/odot-tut/_c74_tut.xsl:
--------------------------------------------------------------------------------
1 |
2 |
3 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/help/o.expr-helpers/odot-char.maxhelp:
--------------------------------------------------------------------------------
1 | {
2 | "patcher" : {
3 | "fileversion" : 1,
4 | "appversion" : {
5 | "major" : 8,
6 | "minor" : 1,
7 | "revision" : 10,
8 | "architecture" : "x64",
9 | "modernui" : 1
10 | }
11 | ,
12 | "classnamespace" : "box",
13 | "rect" : [ 62.0, 103.0, 524.0, 232.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" : "Default Max 7",
40 | "assistshowspatchername" : 0,
41 | "boxes" : [ {
42 | "box" : {
43 | "fontface" : 1,
44 | "id" : "obj-8",
45 | "maxclass" : "comment",
46 | "numinlets" : 1,
47 | "numoutlets" : 0,
48 | "patching_rect" : [ 270.0, 27.0, 57.0, 20.0 ],
49 | "text" : "char()"
50 | }
51 |
52 | }
53 | , {
54 | "box" : {
55 | "id" : "obj-3",
56 | "linecount" : 5,
57 | "maxclass" : "comment",
58 | "numinlets" : 1,
59 | "numoutlets" : 0,
60 | "patching_rect" : [ 270.0, 62.0, 227.0, 74.0 ],
61 | "text" : "cast data to a character value.\n\narguments:\n\n1. data to cast"
62 | }
63 |
64 | }
65 | , {
66 | "box" : {
67 | "id" : "obj-1",
68 | "maxclass" : "newobj",
69 | "numinlets" : 1,
70 | "numoutlets" : 1,
71 | "outlettype" : [ "bang" ],
72 | "patching_rect" : [ 28.0, 27.0, 60.0, 22.0 ],
73 | "text" : "loadbang"
74 | }
75 |
76 | }
77 | , {
78 | "box" : {
79 | "fontface" : 0,
80 | "id" : "obj-19",
81 | "linecount" : 2,
82 | "maxclass" : "o.expr.codebox",
83 | "numinlets" : 1,
84 | "numoutlets" : 2,
85 | "outlettype" : [ "FullPacket", "FullPacket" ],
86 | "patching_rect" : [ 28.0, 94.0, 156.0, 44.0 ],
87 | "text" : "/i = 55,\n/i/to/ascii = char(/i)"
88 | }
89 |
90 | }
91 | , {
92 | "box" : {
93 | "fontface" : 0,
94 | "id" : "obj-20",
95 | "linecount" : 2,
96 | "maxclass" : "o.display",
97 | "numinlets" : 1,
98 | "numoutlets" : 1,
99 | "outlettype" : [ "" ],
100 | "patching_rect" : [ 28.0, 162.0, 123.0, 46.0 ],
101 | "text" : "/i : 55,\n/i/to/ascii : '7'"
102 | }
103 |
104 | }
105 | ],
106 | "lines" : [ {
107 | "patchline" : {
108 | "destination" : [ "obj-19", 0 ],
109 | "source" : [ "obj-1", 0 ]
110 | }
111 |
112 | }
113 | , {
114 | "patchline" : {
115 | "destination" : [ "obj-20", 0 ],
116 | "source" : [ "obj-19", 0 ]
117 | }
118 |
119 | }
120 | ],
121 | "dependency_cache" : [ {
122 | "name" : "o.display.mxo",
123 | "type" : "iLaX"
124 | }
125 | , {
126 | "name" : "o.expr.codebox.mxo",
127 | "type" : "iLaX"
128 | }
129 | ],
130 | "autosave" : 0
131 | }
132 |
133 | }
134 |
--------------------------------------------------------------------------------
/help/o.expr-helpers/odot-e.maxhelp:
--------------------------------------------------------------------------------
1 | {
2 | "patcher" : {
3 | "fileversion" : 1,
4 | "appversion" : {
5 | "major" : 8,
6 | "minor" : 1,
7 | "revision" : 10,
8 | "architecture" : "x64",
9 | "modernui" : 1
10 | }
11 | ,
12 | "classnamespace" : "box",
13 | "rect" : [ 70.0, 97.0, 349.0, 227.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" : "Default Max 7",
40 | "assistshowspatchername" : 0,
41 | "boxes" : [ {
42 | "box" : {
43 | "fontface" : 1,
44 | "id" : "obj-8",
45 | "maxclass" : "comment",
46 | "numinlets" : 1,
47 | "numoutlets" : 0,
48 | "patching_rect" : [ 180.0, 44.0, 51.0, 20.0 ],
49 | "text" : "e()"
50 | }
51 |
52 | }
53 | , {
54 | "box" : {
55 | "id" : "obj-3",
56 | "linecount" : 3,
57 | "maxclass" : "comment",
58 | "numinlets" : 1,
59 | "numoutlets" : 0,
60 | "patching_rect" : [ 180.0, 79.0, 128.0, 47.0 ],
61 | "text" : "Return the constant e\n\narguments: n/a"
62 | }
63 |
64 | }
65 | , {
66 | "box" : {
67 | "fontsize" : 11.0,
68 | "id" : "obj-11",
69 | "maxclass" : "newobj",
70 | "numinlets" : 1,
71 | "numoutlets" : 1,
72 | "outlettype" : [ "bang" ],
73 | "patching_rect" : [ 40.0, 39.0, 56.0, 21.0 ],
74 | "text" : "loadbang"
75 | }
76 |
77 | }
78 | , {
79 | "box" : {
80 | "fontface" : 0,
81 | "id" : "obj-4",
82 | "maxclass" : "o.display",
83 | "numinlets" : 1,
84 | "numoutlets" : 1,
85 | "outlettype" : [ "" ],
86 | "patching_rect" : [ 40.0, 152.0, 118.0, 33.0 ],
87 | "text" : "/e : 2.71828"
88 | }
89 |
90 | }
91 | , {
92 | "box" : {
93 | "fontface" : 0,
94 | "id" : "obj-5",
95 | "maxclass" : "o.expr.codebox",
96 | "numinlets" : 1,
97 | "numoutlets" : 2,
98 | "outlettype" : [ "FullPacket", "FullPacket" ],
99 | "patching_rect" : [ 40.0, 79.0, 63.0, 31.0 ],
100 | "text" : "/e = e()"
101 | }
102 |
103 | }
104 | ],
105 | "lines" : [ {
106 | "patchline" : {
107 | "destination" : [ "obj-5", 0 ],
108 | "source" : [ "obj-11", 0 ]
109 | }
110 |
111 | }
112 | , {
113 | "patchline" : {
114 | "destination" : [ "obj-4", 0 ],
115 | "source" : [ "obj-5", 0 ]
116 | }
117 |
118 | }
119 | ],
120 | "dependency_cache" : [ {
121 | "name" : "o.expr.codebox.mxo",
122 | "type" : "iLaX"
123 | }
124 | , {
125 | "name" : "o.display.mxo",
126 | "type" : "iLaX"
127 | }
128 | ],
129 | "autosave" : 0
130 | }
131 |
132 | }
133 |
--------------------------------------------------------------------------------
/help/o.expr-helpers/odot-halfpi.maxhelp:
--------------------------------------------------------------------------------
1 | {
2 | "patcher" : {
3 | "fileversion" : 1,
4 | "appversion" : {
5 | "major" : 8,
6 | "minor" : 1,
7 | "revision" : 10,
8 | "architecture" : "x64",
9 | "modernui" : 1
10 | }
11 | ,
12 | "classnamespace" : "box",
13 | "rect" : [ 70.0, 97.0, 337.0, 193.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" : "Default Max 7",
40 | "assistshowspatchername" : 0,
41 | "boxes" : [ {
42 | "box" : {
43 | "fontface" : 1,
44 | "id" : "obj-8",
45 | "maxclass" : "comment",
46 | "numinlets" : 1,
47 | "numoutlets" : 0,
48 | "patching_rect" : [ 157.0, 29.0, 51.0, 20.0 ],
49 | "text" : "halfpi()"
50 | }
51 |
52 | }
53 | , {
54 | "box" : {
55 | "id" : "obj-3",
56 | "linecount" : 3,
57 | "maxclass" : "comment",
58 | "numinlets" : 1,
59 | "numoutlets" : 0,
60 | "patching_rect" : [ 157.0, 64.0, 159.0, 47.0 ],
61 | "text" : "Return the constant HALFPI\n\narguments: n/a"
62 | }
63 |
64 | }
65 | , {
66 | "box" : {
67 | "fontsize" : 11.0,
68 | "id" : "obj-11",
69 | "maxclass" : "newobj",
70 | "numinlets" : 1,
71 | "numoutlets" : 1,
72 | "outlettype" : [ "bang" ],
73 | "patching_rect" : [ 25.0, 24.0, 56.0, 21.0 ],
74 | "text" : "loadbang"
75 | }
76 |
77 | }
78 | , {
79 | "box" : {
80 | "fontface" : 0,
81 | "id" : "obj-4",
82 | "maxclass" : "o.display",
83 | "numinlets" : 1,
84 | "numoutlets" : 1,
85 | "outlettype" : [ "" ],
86 | "patching_rect" : [ 25.0, 137.0, 118.0, 33.0 ],
87 | "text" : "/hp : 1.5708"
88 | }
89 |
90 | }
91 | , {
92 | "box" : {
93 | "fontface" : 0,
94 | "id" : "obj-5",
95 | "maxclass" : "o.expr.codebox",
96 | "numinlets" : 1,
97 | "numoutlets" : 2,
98 | "outlettype" : [ "FullPacket", "FullPacket" ],
99 | "patching_rect" : [ 25.0, 64.0, 103.0, 31.0 ],
100 | "text" : "/hp = halfpi()"
101 | }
102 |
103 | }
104 | ],
105 | "lines" : [ {
106 | "patchline" : {
107 | "destination" : [ "obj-5", 0 ],
108 | "source" : [ "obj-11", 0 ]
109 | }
110 |
111 | }
112 | , {
113 | "patchline" : {
114 | "destination" : [ "obj-4", 0 ],
115 | "source" : [ "obj-5", 0 ]
116 | }
117 |
118 | }
119 | ],
120 | "dependency_cache" : [ {
121 | "name" : "o.expr.codebox.mxo",
122 | "type" : "iLaX"
123 | }
124 | , {
125 | "name" : "o.display.mxo",
126 | "type" : "iLaX"
127 | }
128 | ],
129 | "autosave" : 0
130 | }
131 |
132 | }
133 |
--------------------------------------------------------------------------------
/help/o.expr-helpers/odot-lnten.maxhelp:
--------------------------------------------------------------------------------
1 | {
2 | "patcher" : {
3 | "fileversion" : 1,
4 | "appversion" : {
5 | "major" : 8,
6 | "minor" : 1,
7 | "revision" : 10,
8 | "architecture" : "x64",
9 | "modernui" : 1
10 | }
11 | ,
12 | "classnamespace" : "box",
13 | "rect" : [ 70.0, 97.0, 349.0, 227.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" : "Default Max 7",
40 | "assistshowspatchername" : 0,
41 | "boxes" : [ {
42 | "box" : {
43 | "fontface" : 1,
44 | "id" : "obj-8",
45 | "maxclass" : "comment",
46 | "numinlets" : 1,
47 | "numoutlets" : 0,
48 | "patching_rect" : [ 180.0, 44.0, 51.0, 20.0 ],
49 | "text" : "lnten()"
50 | }
51 |
52 | }
53 | , {
54 | "box" : {
55 | "id" : "obj-3",
56 | "linecount" : 3,
57 | "maxclass" : "comment",
58 | "numinlets" : 1,
59 | "numoutlets" : 0,
60 | "patching_rect" : [ 180.0, 79.0, 152.0, 47.0 ],
61 | "text" : "The natural logarithm of 10\n\narguments: n/a"
62 | }
63 |
64 | }
65 | , {
66 | "box" : {
67 | "fontsize" : 11.0,
68 | "id" : "obj-11",
69 | "maxclass" : "newobj",
70 | "numinlets" : 1,
71 | "numoutlets" : 1,
72 | "outlettype" : [ "bang" ],
73 | "patching_rect" : [ 40.0, 39.0, 56.0, 21.0 ],
74 | "text" : "loadbang"
75 | }
76 |
77 | }
78 | , {
79 | "box" : {
80 | "fontface" : 0,
81 | "id" : "obj-4",
82 | "maxclass" : "o.display",
83 | "numinlets" : 1,
84 | "numoutlets" : 1,
85 | "outlettype" : [ "" ],
86 | "patching_rect" : [ 40.0, 152.0, 116.0, 33.0 ],
87 | "text" : "/lnten : 2.30259"
88 | }
89 |
90 | }
91 | , {
92 | "box" : {
93 | "fontface" : 0,
94 | "id" : "obj-5",
95 | "maxclass" : "o.expr.codebox",
96 | "numinlets" : 1,
97 | "numoutlets" : 2,
98 | "outlettype" : [ "FullPacket", "FullPacket" ],
99 | "patching_rect" : [ 40.0, 79.0, 116.0, 31.0 ],
100 | "text" : "/lnten = lnten()"
101 | }
102 |
103 | }
104 | ],
105 | "lines" : [ {
106 | "patchline" : {
107 | "destination" : [ "obj-5", 0 ],
108 | "source" : [ "obj-11", 0 ]
109 | }
110 |
111 | }
112 | , {
113 | "patchline" : {
114 | "destination" : [ "obj-4", 0 ],
115 | "source" : [ "obj-5", 0 ]
116 | }
117 |
118 | }
119 | ],
120 | "dependency_cache" : [ {
121 | "name" : "o.expr.codebox.mxo",
122 | "type" : "iLaX"
123 | }
124 | , {
125 | "name" : "o.display.mxo",
126 | "type" : "iLaX"
127 | }
128 | ],
129 | "autosave" : 0
130 | }
131 |
132 | }
133 |
--------------------------------------------------------------------------------
/help/o.expr-helpers/odot-lntwo.maxhelp:
--------------------------------------------------------------------------------
1 | {
2 | "patcher" : {
3 | "fileversion" : 1,
4 | "appversion" : {
5 | "major" : 8,
6 | "minor" : 1,
7 | "revision" : 10,
8 | "architecture" : "x64",
9 | "modernui" : 1
10 | }
11 | ,
12 | "classnamespace" : "box",
13 | "rect" : [ 87.0, 107.0, 349.0, 227.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" : "Default Max 7",
40 | "assistshowspatchername" : 0,
41 | "boxes" : [ {
42 | "box" : {
43 | "fontface" : 1,
44 | "id" : "obj-8",
45 | "maxclass" : "comment",
46 | "numinlets" : 1,
47 | "numoutlets" : 0,
48 | "patching_rect" : [ 180.0, 44.0, 51.0, 20.0 ],
49 | "text" : "lntwo()"
50 | }
51 |
52 | }
53 | , {
54 | "box" : {
55 | "id" : "obj-3",
56 | "linecount" : 3,
57 | "maxclass" : "comment",
58 | "numinlets" : 1,
59 | "numoutlets" : 0,
60 | "patching_rect" : [ 180.0, 79.0, 145.0, 47.0 ],
61 | "text" : "The natural logarithm of 2\n\narguments: n/a"
62 | }
63 |
64 | }
65 | , {
66 | "box" : {
67 | "fontsize" : 11.0,
68 | "id" : "obj-11",
69 | "maxclass" : "newobj",
70 | "numinlets" : 1,
71 | "numoutlets" : 1,
72 | "outlettype" : [ "bang" ],
73 | "patching_rect" : [ 40.0, 39.0, 56.0, 21.0 ],
74 | "text" : "loadbang"
75 | }
76 |
77 | }
78 | , {
79 | "box" : {
80 | "fontface" : 0,
81 | "id" : "obj-4",
82 | "maxclass" : "o.display",
83 | "numinlets" : 1,
84 | "numoutlets" : 1,
85 | "outlettype" : [ "" ],
86 | "patching_rect" : [ 40.0, 152.0, 123.0, 33.0 ],
87 | "text" : "/lntwo : 0.693147"
88 | }
89 |
90 | }
91 | , {
92 | "box" : {
93 | "fontface" : 0,
94 | "id" : "obj-5",
95 | "maxclass" : "o.expr.codebox",
96 | "numinlets" : 1,
97 | "numoutlets" : 2,
98 | "outlettype" : [ "FullPacket", "FullPacket" ],
99 | "patching_rect" : [ 40.0, 79.0, 116.0, 31.0 ],
100 | "text" : "/lntwo = lntwo()"
101 | }
102 |
103 | }
104 | ],
105 | "lines" : [ {
106 | "patchline" : {
107 | "destination" : [ "obj-5", 0 ],
108 | "source" : [ "obj-11", 0 ]
109 | }
110 |
111 | }
112 | , {
113 | "patchline" : {
114 | "destination" : [ "obj-4", 0 ],
115 | "source" : [ "obj-5", 0 ]
116 | }
117 |
118 | }
119 | ],
120 | "dependency_cache" : [ {
121 | "name" : "o.expr.codebox.mxo",
122 | "type" : "iLaX"
123 | }
124 | , {
125 | "name" : "o.display.mxo",
126 | "type" : "iLaX"
127 | }
128 | ],
129 | "autosave" : 0
130 | }
131 |
132 | }
133 |
--------------------------------------------------------------------------------
/help/o.expr-helpers/odot-logtene.maxhelp:
--------------------------------------------------------------------------------
1 | {
2 | "patcher" : {
3 | "fileversion" : 1,
4 | "appversion" : {
5 | "major" : 8,
6 | "minor" : 1,
7 | "revision" : 4,
8 | "architecture" : "x64",
9 | "modernui" : 1
10 | }
11 | ,
12 | "classnamespace" : "box",
13 | "rect" : [ 70.0, 97.0, 349.0, 227.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" : "Default Max 7",
40 | "assistshowspatchername" : 0,
41 | "boxes" : [ {
42 | "box" : {
43 | "fontface" : 1,
44 | "id" : "obj-8",
45 | "maxclass" : "comment",
46 | "numinlets" : 1,
47 | "numoutlets" : 0,
48 | "patching_rect" : [ 180.0, 44.0, 62.0, 20.0 ],
49 | "text" : "logtene()"
50 | }
51 |
52 | }
53 | , {
54 | "box" : {
55 | "id" : "obj-3",
56 | "linecount" : 3,
57 | "maxclass" : "comment",
58 | "numinlets" : 1,
59 | "numoutlets" : 0,
60 | "patching_rect" : [ 180.0, 79.0, 152.0, 47.0 ],
61 | "text" : "log(10 * e): 0.43420...\n\narguments: n/a"
62 | }
63 |
64 | }
65 | , {
66 | "box" : {
67 | "fontsize" : 11.0,
68 | "id" : "obj-11",
69 | "maxclass" : "newobj",
70 | "numinlets" : 1,
71 | "numoutlets" : 1,
72 | "outlettype" : [ "bang" ],
73 | "patching_rect" : [ 40.0, 39.0, 56.0, 21.0 ],
74 | "text" : "loadbang"
75 | }
76 |
77 | }
78 | , {
79 | "box" : {
80 | "fontface" : 0,
81 | "fontsize" : 11.0,
82 | "id" : "obj-4",
83 | "maxclass" : "o.display",
84 | "numinlets" : 1,
85 | "numoutlets" : 1,
86 | "outlettype" : [ "" ],
87 | "patching_rect" : [ 40.0, 152.0, 123.0, 33.0 ],
88 | "text" : "/l2e : 1.4427"
89 | }
90 |
91 | }
92 | , {
93 | "box" : {
94 | "fontface" : 0,
95 | "fontsize" : 11.0,
96 | "id" : "obj-5",
97 | "maxclass" : "o.expr.codebox",
98 | "numinlets" : 1,
99 | "numoutlets" : 2,
100 | "outlettype" : [ "FullPacket", "FullPacket" ],
101 | "patching_rect" : [ 40.0, 79.0, 116.0, 31.0 ],
102 | "text" : "/lte = logtene()"
103 | }
104 |
105 | }
106 | ],
107 | "lines" : [ {
108 | "patchline" : {
109 | "destination" : [ "obj-5", 0 ],
110 | "source" : [ "obj-11", 0 ]
111 | }
112 |
113 | }
114 | , {
115 | "patchline" : {
116 | "destination" : [ "obj-4", 0 ],
117 | "source" : [ "obj-5", 0 ]
118 | }
119 |
120 | }
121 | ],
122 | "dependency_cache" : [ {
123 | "name" : "o.expr.codebox.mxo",
124 | "type" : "iLaX"
125 | }
126 | , {
127 | "name" : "o.display.mxo",
128 | "type" : "iLaX"
129 | }
130 | ],
131 | "autosave" : 0
132 | }
133 |
134 | }
135 |
--------------------------------------------------------------------------------
/help/o.expr-helpers/odot-logtwoe.maxhelp:
--------------------------------------------------------------------------------
1 | {
2 | "patcher" : {
3 | "fileversion" : 1,
4 | "appversion" : {
5 | "major" : 8,
6 | "minor" : 1,
7 | "revision" : 10,
8 | "architecture" : "x64",
9 | "modernui" : 1
10 | }
11 | ,
12 | "classnamespace" : "box",
13 | "rect" : [ 70.0, 97.0, 349.0, 227.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" : "Default Max 7",
40 | "assistshowspatchername" : 0,
41 | "boxes" : [ {
42 | "box" : {
43 | "fontface" : 1,
44 | "id" : "obj-8",
45 | "maxclass" : "comment",
46 | "numinlets" : 1,
47 | "numoutlets" : 0,
48 | "patching_rect" : [ 180.0, 44.0, 62.0, 20.0 ],
49 | "text" : "logtwoe()"
50 | }
51 |
52 | }
53 | , {
54 | "box" : {
55 | "id" : "obj-3",
56 | "linecount" : 3,
57 | "maxclass" : "comment",
58 | "numinlets" : 1,
59 | "numoutlets" : 0,
60 | "patching_rect" : [ 180.0, 79.0, 152.0, 47.0 ],
61 | "text" : "log(2 * e): 1.44269...\n\narguments: n/a"
62 | }
63 |
64 | }
65 | , {
66 | "box" : {
67 | "fontsize" : 11.0,
68 | "id" : "obj-11",
69 | "maxclass" : "newobj",
70 | "numinlets" : 1,
71 | "numoutlets" : 1,
72 | "outlettype" : [ "bang" ],
73 | "patching_rect" : [ 40.0, 39.0, 56.0, 21.0 ],
74 | "text" : "loadbang"
75 | }
76 |
77 | }
78 | , {
79 | "box" : {
80 | "fontface" : 0,
81 | "id" : "obj-4",
82 | "maxclass" : "o.display",
83 | "numinlets" : 1,
84 | "numoutlets" : 1,
85 | "outlettype" : [ "" ],
86 | "patching_rect" : [ 40.0, 152.0, 116.0, 33.0 ],
87 | "text" : "/l2e : 1.4427"
88 | }
89 |
90 | }
91 | , {
92 | "box" : {
93 | "fontface" : 0,
94 | "id" : "obj-5",
95 | "maxclass" : "o.expr.codebox",
96 | "numinlets" : 1,
97 | "numoutlets" : 2,
98 | "outlettype" : [ "FullPacket", "FullPacket" ],
99 | "patching_rect" : [ 40.0, 79.0, 116.0, 31.0 ],
100 | "text" : "/l2e = logtwoe()"
101 | }
102 |
103 | }
104 | ],
105 | "lines" : [ {
106 | "patchline" : {
107 | "destination" : [ "obj-5", 0 ],
108 | "source" : [ "obj-11", 0 ]
109 | }
110 |
111 | }
112 | , {
113 | "patchline" : {
114 | "destination" : [ "obj-4", 0 ],
115 | "source" : [ "obj-5", 0 ]
116 | }
117 |
118 | }
119 | ],
120 | "dependency_cache" : [ {
121 | "name" : "o.expr.codebox.mxo",
122 | "type" : "iLaX"
123 | }
124 | , {
125 | "name" : "o.display.mxo",
126 | "type" : "iLaX"
127 | }
128 | ],
129 | "autosave" : 0
130 | }
131 |
132 | }
133 |
--------------------------------------------------------------------------------
/help/o.expr-helpers/odot-nextafter.maxhelp:
--------------------------------------------------------------------------------
1 | {
2 | "patcher" : {
3 | "fileversion" : 1,
4 | "appversion" : {
5 | "major" : 8,
6 | "minor" : 1,
7 | "revision" : 10,
8 | "architecture" : "x64",
9 | "modernui" : 1
10 | }
11 | ,
12 | "classnamespace" : "box",
13 | "rect" : [ 62.0, 103.0, 461.0, 232.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" : "Default Max 7",
40 | "assistshowspatchername" : 0,
41 | "boxes" : [ {
42 | "box" : {
43 | "fontface" : 1,
44 | "id" : "obj-8",
45 | "maxclass" : "comment",
46 | "numinlets" : 1,
47 | "numoutlets" : 0,
48 | "patching_rect" : [ 221.0, 27.0, 67.0, 20.0 ],
49 | "text" : "nextafter()"
50 | }
51 |
52 | }
53 | , {
54 | "box" : {
55 | "id" : "obj-3",
56 | "linecount" : 6,
57 | "maxclass" : "comment",
58 | "numinlets" : 1,
59 | "numoutlets" : 0,
60 | "patching_rect" : [ 221.0, 62.0, 227.0, 87.0 ],
61 | "text" : "return the next representable double-precision floating-point number\n\narguments:\n\n1. value (float)"
62 | }
63 |
64 | }
65 | , {
66 | "box" : {
67 | "id" : "obj-1",
68 | "maxclass" : "newobj",
69 | "numinlets" : 1,
70 | "numoutlets" : 1,
71 | "outlettype" : [ "bang" ],
72 | "patching_rect" : [ 32.0, 27.0, 60.0, 22.0 ],
73 | "text" : "loadbang"
74 | }
75 |
76 | }
77 | , {
78 | "box" : {
79 | "fontface" : 0,
80 | "id" : "obj-19",
81 | "maxclass" : "o.expr.codebox",
82 | "numinlets" : 1,
83 | "numoutlets" : 2,
84 | "outlettype" : [ "FullPacket", "FullPacket" ],
85 | "patching_rect" : [ 32.0, 62.0, 150.0, 31.0 ],
86 | "text" : "/next = nextafter(0.)"
87 | }
88 |
89 | }
90 | , {
91 | "box" : {
92 | "fontface" : 0,
93 | "id" : "obj-20",
94 | "maxclass" : "o.display",
95 | "numinlets" : 1,
96 | "numoutlets" : 1,
97 | "outlettype" : [ "" ],
98 | "patching_rect" : [ 32.0, 129.0, 143.0, 33.0 ],
99 | "text" : "/next : 4.94066e-324"
100 | }
101 |
102 | }
103 | ],
104 | "lines" : [ {
105 | "patchline" : {
106 | "destination" : [ "obj-19", 0 ],
107 | "source" : [ "obj-1", 0 ]
108 | }
109 |
110 | }
111 | , {
112 | "patchline" : {
113 | "destination" : [ "obj-20", 0 ],
114 | "source" : [ "obj-19", 0 ]
115 | }
116 |
117 | }
118 | ],
119 | "dependency_cache" : [ {
120 | "name" : "o.display.mxo",
121 | "type" : "iLaX"
122 | }
123 | , {
124 | "name" : "o.expr.codebox.mxo",
125 | "type" : "iLaX"
126 | }
127 | ],
128 | "autosave" : 0
129 | }
130 |
131 | }
132 |
--------------------------------------------------------------------------------
/help/o.expr-helpers/odot-oneoverpi.maxhelp:
--------------------------------------------------------------------------------
1 | {
2 | "patcher" : {
3 | "fileversion" : 1,
4 | "appversion" : {
5 | "major" : 8,
6 | "minor" : 1,
7 | "revision" : 10,
8 | "architecture" : "x64",
9 | "modernui" : 1
10 | }
11 | ,
12 | "classnamespace" : "box",
13 | "rect" : [ 70.0, 97.0, 406.0, 227.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" : "Default Max 7",
40 | "assistshowspatchername" : 0,
41 | "boxes" : [ {
42 | "box" : {
43 | "fontface" : 1,
44 | "id" : "obj-8",
45 | "maxclass" : "comment",
46 | "numinlets" : 1,
47 | "numoutlets" : 0,
48 | "patching_rect" : [ 191.0, 44.0, 74.0, 20.0 ],
49 | "text" : "oneoverpi()"
50 | }
51 |
52 | }
53 | , {
54 | "box" : {
55 | "id" : "obj-3",
56 | "linecount" : 3,
57 | "maxclass" : "comment",
58 | "numinlets" : 1,
59 | "numoutlets" : 0,
60 | "patching_rect" : [ 191.0, 79.0, 188.0, 47.0 ],
61 | "text" : "Return the constant 1 / pi\n\narguments: n/a"
62 | }
63 |
64 | }
65 | , {
66 | "box" : {
67 | "fontsize" : 11.0,
68 | "id" : "obj-11",
69 | "maxclass" : "newobj",
70 | "numinlets" : 1,
71 | "numoutlets" : 1,
72 | "outlettype" : [ "bang" ],
73 | "patching_rect" : [ 40.0, 39.0, 56.0, 21.0 ],
74 | "text" : "loadbang"
75 | }
76 |
77 | }
78 | , {
79 | "box" : {
80 | "fontface" : 0,
81 | "id" : "obj-4",
82 | "maxclass" : "o.display",
83 | "numinlets" : 1,
84 | "numoutlets" : 1,
85 | "outlettype" : [ "" ],
86 | "patching_rect" : [ 40.0, 152.0, 103.0, 33.0 ],
87 | "text" : "/1op : 0.31831"
88 | }
89 |
90 | }
91 | , {
92 | "box" : {
93 | "fontface" : 0,
94 | "id" : "obj-5",
95 | "maxclass" : "o.expr.codebox",
96 | "numinlets" : 1,
97 | "numoutlets" : 2,
98 | "outlettype" : [ "FullPacket", "FullPacket" ],
99 | "patching_rect" : [ 40.0, 79.0, 130.0, 31.0 ],
100 | "text" : "/1op = oneoverpi()"
101 | }
102 |
103 | }
104 | ],
105 | "lines" : [ {
106 | "patchline" : {
107 | "destination" : [ "obj-5", 0 ],
108 | "source" : [ "obj-11", 0 ]
109 | }
110 |
111 | }
112 | , {
113 | "patchline" : {
114 | "destination" : [ "obj-4", 0 ],
115 | "source" : [ "obj-5", 0 ]
116 | }
117 |
118 | }
119 | ],
120 | "dependency_cache" : [ {
121 | "name" : "o.expr.codebox.mxo",
122 | "type" : "iLaX"
123 | }
124 | , {
125 | "name" : "o.display.mxo",
126 | "type" : "iLaX"
127 | }
128 | ],
129 | "autosave" : 0
130 | }
131 |
132 | }
133 |
--------------------------------------------------------------------------------
/help/o.expr-helpers/odot-phi.maxhelp:
--------------------------------------------------------------------------------
1 | {
2 | "patcher" : {
3 | "fileversion" : 1,
4 | "appversion" : {
5 | "major" : 8,
6 | "minor" : 1,
7 | "revision" : 10,
8 | "architecture" : "x64",
9 | "modernui" : 1
10 | }
11 | ,
12 | "classnamespace" : "box",
13 | "rect" : [ 70.0, 97.0, 436.0, 227.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" : "Default Max 7",
40 | "assistshowspatchername" : 0,
41 | "boxes" : [ {
42 | "box" : {
43 | "fontface" : 1,
44 | "id" : "obj-8",
45 | "maxclass" : "comment",
46 | "numinlets" : 1,
47 | "numoutlets" : 0,
48 | "patching_rect" : [ 180.0, 44.0, 63.0, 20.0 ],
49 | "text" : "phi()"
50 | }
51 |
52 | }
53 | , {
54 | "box" : {
55 | "id" : "obj-3",
56 | "linecount" : 3,
57 | "maxclass" : "comment",
58 | "numinlets" : 1,
59 | "numoutlets" : 0,
60 | "patching_rect" : [ 180.0, 79.0, 217.0, 47.0 ],
61 | "text" : "Return the golden ratio: (1 + sqrt(5)) / 2\n\narguments: n/a"
62 | }
63 |
64 | }
65 | , {
66 | "box" : {
67 | "fontsize" : 11.0,
68 | "id" : "obj-11",
69 | "maxclass" : "newobj",
70 | "numinlets" : 1,
71 | "numoutlets" : 1,
72 | "outlettype" : [ "bang" ],
73 | "patching_rect" : [ 40.0, 39.0, 56.0, 21.0 ],
74 | "text" : "loadbang"
75 | }
76 |
77 | }
78 | , {
79 | "box" : {
80 | "fontface" : 0,
81 | "id" : "obj-4",
82 | "maxclass" : "o.display",
83 | "numinlets" : 1,
84 | "numoutlets" : 1,
85 | "outlettype" : [ "" ],
86 | "patching_rect" : [ 40.0, 152.0, 90.0, 33.0 ],
87 | "text" : "/p : 1.61803"
88 | }
89 |
90 | }
91 | , {
92 | "box" : {
93 | "fontface" : 0,
94 | "id" : "obj-5",
95 | "maxclass" : "o.expr.codebox",
96 | "numinlets" : 1,
97 | "numoutlets" : 2,
98 | "outlettype" : [ "FullPacket", "FullPacket" ],
99 | "patching_rect" : [ 40.0, 79.0, 83.0, 31.0 ],
100 | "text" : "/p = phi()"
101 | }
102 |
103 | }
104 | ],
105 | "lines" : [ {
106 | "patchline" : {
107 | "destination" : [ "obj-5", 0 ],
108 | "source" : [ "obj-11", 0 ]
109 | }
110 |
111 | }
112 | , {
113 | "patchline" : {
114 | "destination" : [ "obj-4", 0 ],
115 | "source" : [ "obj-5", 0 ]
116 | }
117 |
118 | }
119 | ],
120 | "dependency_cache" : [ {
121 | "name" : "o.expr.codebox.mxo",
122 | "type" : "iLaX"
123 | }
124 | , {
125 | "name" : "o.display.mxo",
126 | "type" : "iLaX"
127 | }
128 | ],
129 | "autosave" : 0
130 | }
131 |
132 | }
133 |
--------------------------------------------------------------------------------
/help/o.expr-helpers/odot-pi.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" : [ 70.0, 97.0, 349.0, 227.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" : "Default Max 7",
40 | "boxes" : [ {
41 | "box" : {
42 | "fontface" : 1,
43 | "id" : "obj-8",
44 | "maxclass" : "comment",
45 | "numinlets" : 1,
46 | "numoutlets" : 0,
47 | "patching_rect" : [ 180.0, 44.0, 51.0, 20.0 ],
48 | "text" : "pi()"
49 | }
50 |
51 | }
52 | , {
53 | "box" : {
54 | "id" : "obj-3",
55 | "linecount" : 3,
56 | "maxclass" : "comment",
57 | "numinlets" : 1,
58 | "numoutlets" : 0,
59 | "patching_rect" : [ 180.0, 79.0, 128.0, 47.0 ],
60 | "text" : "Return the constant PI\n\narguments: n/a"
61 | }
62 |
63 | }
64 | , {
65 | "box" : {
66 | "fontsize" : 11.0,
67 | "id" : "obj-11",
68 | "maxclass" : "newobj",
69 | "numinlets" : 1,
70 | "numoutlets" : 1,
71 | "outlettype" : [ "bang" ],
72 | "patching_rect" : [ 40.0, 39.0, 56.0, 21.0 ],
73 | "text" : "loadbang"
74 | }
75 |
76 | }
77 | , {
78 | "box" : {
79 | "fontface" : 0,
80 | "fontsize" : 11.0,
81 | "id" : "obj-4",
82 | "maxclass" : "o.display",
83 | "numinlets" : 1,
84 | "numoutlets" : 1,
85 | "outlettype" : [ "" ],
86 | "patching_rect" : [ 40.0, 152.0, 118.0, 33.0 ],
87 | "text" : "/pi : 3.14159"
88 | }
89 |
90 | }
91 | , {
92 | "box" : {
93 | "fontface" : 0,
94 | "fontsize" : 11.0,
95 | "id" : "obj-5",
96 | "maxclass" : "o.expr.codebox",
97 | "numinlets" : 1,
98 | "numoutlets" : 2,
99 | "outlettype" : [ "FullPacket", "FullPacket" ],
100 | "patching_rect" : [ 40.0, 79.0, 77.0, 31.0 ],
101 | "text" : "/pi = pi()"
102 | }
103 |
104 | }
105 | ],
106 | "lines" : [ {
107 | "patchline" : {
108 | "destination" : [ "obj-5", 0 ],
109 | "source" : [ "obj-11", 0 ]
110 | }
111 |
112 | }
113 | , {
114 | "patchline" : {
115 | "destination" : [ "obj-4", 0 ],
116 | "source" : [ "obj-5", 0 ]
117 | }
118 |
119 | }
120 | ],
121 | "dependency_cache" : [ {
122 | "name" : "o.expr.codebox.mxo",
123 | "type" : "iLaX"
124 | }
125 | , {
126 | "name" : "o.display.mxo",
127 | "type" : "iLaX"
128 | }
129 | ],
130 | "autosave" : 0
131 | }
132 |
133 | }
134 |
--------------------------------------------------------------------------------
/help/o.expr-helpers/odot-quarterpi.maxhelp:
--------------------------------------------------------------------------------
1 | {
2 | "patcher" : {
3 | "fileversion" : 1,
4 | "appversion" : {
5 | "major" : 8,
6 | "minor" : 1,
7 | "revision" : 10,
8 | "architecture" : "x64",
9 | "modernui" : 1
10 | }
11 | ,
12 | "classnamespace" : "box",
13 | "rect" : [ 70.0, 97.0, 408.0, 227.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" : "Default Max 7",
40 | "assistshowspatchername" : 0,
41 | "boxes" : [ {
42 | "box" : {
43 | "fontface" : 1,
44 | "id" : "obj-8",
45 | "maxclass" : "comment",
46 | "numinlets" : 1,
47 | "numoutlets" : 0,
48 | "patching_rect" : [ 187.0, 44.0, 68.0, 20.0 ],
49 | "text" : "quarterpi()"
50 | }
51 |
52 | }
53 | , {
54 | "box" : {
55 | "id" : "obj-3",
56 | "linecount" : 3,
57 | "maxclass" : "comment",
58 | "numinlets" : 1,
59 | "numoutlets" : 0,
60 | "patching_rect" : [ 187.0, 79.0, 186.0, 47.0 ],
61 | "text" : "Return the constant pi / 4.\n\narguments: n/a"
62 | }
63 |
64 | }
65 | , {
66 | "box" : {
67 | "fontsize" : 11.0,
68 | "id" : "obj-11",
69 | "maxclass" : "newobj",
70 | "numinlets" : 1,
71 | "numoutlets" : 1,
72 | "outlettype" : [ "bang" ],
73 | "patching_rect" : [ 40.0, 39.0, 56.0, 21.0 ],
74 | "text" : "loadbang"
75 | }
76 |
77 | }
78 | , {
79 | "box" : {
80 | "fontface" : 0,
81 | "id" : "obj-4",
82 | "maxclass" : "o.display",
83 | "numinlets" : 1,
84 | "numoutlets" : 1,
85 | "outlettype" : [ "" ],
86 | "patching_rect" : [ 40.0, 152.0, 103.0, 33.0 ],
87 | "text" : "/qp : 0.785398"
88 | }
89 |
90 | }
91 | , {
92 | "box" : {
93 | "fontface" : 0,
94 | "id" : "obj-5",
95 | "maxclass" : "o.expr.codebox",
96 | "numinlets" : 1,
97 | "numoutlets" : 2,
98 | "outlettype" : [ "FullPacket", "FullPacket" ],
99 | "patching_rect" : [ 40.0, 79.0, 123.0, 31.0 ],
100 | "text" : "/qp = quarterpi()"
101 | }
102 |
103 | }
104 | ],
105 | "lines" : [ {
106 | "patchline" : {
107 | "destination" : [ "obj-5", 0 ],
108 | "source" : [ "obj-11", 0 ]
109 | }
110 |
111 | }
112 | , {
113 | "patchline" : {
114 | "destination" : [ "obj-4", 0 ],
115 | "source" : [ "obj-5", 0 ]
116 | }
117 |
118 | }
119 | ],
120 | "dependency_cache" : [ {
121 | "name" : "o.expr.codebox.mxo",
122 | "type" : "iLaX"
123 | }
124 | , {
125 | "name" : "o.display.mxo",
126 | "type" : "iLaX"
127 | }
128 | ],
129 | "autosave" : 0
130 | }
131 |
132 | }
133 |
--------------------------------------------------------------------------------
/help/o.expr-helpers/odot-sqrthalf.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" : [ 70.0, 97.0, 391.0, 227.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" : "Default Max 7",
40 | "boxes" : [ {
41 | "box" : {
42 | "fontface" : 1,
43 | "id" : "obj-8",
44 | "maxclass" : "comment",
45 | "numinlets" : 1,
46 | "numoutlets" : 0,
47 | "patching_rect" : [ 210.0, 44.0, 64.0, 20.0 ],
48 | "text" : " sqrthalf()"
49 | }
50 |
51 | }
52 | , {
53 | "box" : {
54 | "id" : "obj-3",
55 | "linecount" : 2,
56 | "maxclass" : "comment",
57 | "numinlets" : 1,
58 | "numoutlets" : 0,
59 | "patching_rect" : [ 210.0, 79.0, 162.0, 33.0 ],
60 | "text" : "Return the square root of 0.5\narguments: n/a"
61 | }
62 |
63 | }
64 | , {
65 | "box" : {
66 | "fontsize" : 11.0,
67 | "id" : "obj-11",
68 | "maxclass" : "newobj",
69 | "numinlets" : 1,
70 | "numoutlets" : 1,
71 | "outlettype" : [ "bang" ],
72 | "patching_rect" : [ 40.0, 39.0, 56.0, 21.0 ],
73 | "text" : "loadbang"
74 | }
75 |
76 | }
77 | , {
78 | "box" : {
79 | "fontface" : 0,
80 | "fontsize" : 11.0,
81 | "id" : "obj-4",
82 | "maxclass" : "o.display",
83 | "numinlets" : 1,
84 | "numoutlets" : 1,
85 | "outlettype" : [ "" ],
86 | "patching_rect" : [ 40.0, 152.0, 143.0, 33.0 ],
87 | "text" : "/shalf : 0.707107"
88 | }
89 |
90 | }
91 | , {
92 | "box" : {
93 | "fontface" : 0,
94 | "fontsize" : 11.0,
95 | "id" : "obj-5",
96 | "maxclass" : "o.expr.codebox",
97 | "numinlets" : 1,
98 | "numoutlets" : 2,
99 | "outlettype" : [ "FullPacket", "FullPacket" ],
100 | "patching_rect" : [ 40.0, 79.0, 143.0, 31.0 ],
101 | "text" : "/shalf = sqrthalf()"
102 | }
103 |
104 | }
105 | ],
106 | "lines" : [ {
107 | "patchline" : {
108 | "destination" : [ "obj-5", 0 ],
109 | "source" : [ "obj-11", 0 ]
110 | }
111 |
112 | }
113 | , {
114 | "patchline" : {
115 | "destination" : [ "obj-4", 0 ],
116 | "source" : [ "obj-5", 0 ]
117 | }
118 |
119 | }
120 | ],
121 | "dependency_cache" : [ {
122 | "name" : "o.expr.codebox.mxo",
123 | "type" : "iLaX"
124 | }
125 | , {
126 | "name" : "o.display.mxo",
127 | "type" : "iLaX"
128 | }
129 | ],
130 | "autosave" : 0
131 | }
132 |
133 | }
134 |
--------------------------------------------------------------------------------
/help/o.expr-helpers/odot-sqrttwo.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" : [ 70.0, 97.0, 349.0, 227.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" : "Default Max 7",
40 | "boxes" : [ {
41 | "box" : {
42 | "fontface" : 1,
43 | "id" : "obj-8",
44 | "maxclass" : "comment",
45 | "numinlets" : 1,
46 | "numoutlets" : 0,
47 | "patching_rect" : [ 180.0, 44.0, 63.0, 20.0 ],
48 | "text" : " sqrttwo()"
49 | }
50 |
51 | }
52 | , {
53 | "box" : {
54 | "id" : "obj-3",
55 | "linecount" : 3,
56 | "maxclass" : "comment",
57 | "numinlets" : 1,
58 | "numoutlets" : 0,
59 | "patching_rect" : [ 180.0, 79.0, 153.0, 47.0 ],
60 | "text" : "Return the square root of 2\n\narguments: n/a"
61 | }
62 |
63 | }
64 | , {
65 | "box" : {
66 | "fontsize" : 11.0,
67 | "id" : "obj-11",
68 | "maxclass" : "newobj",
69 | "numinlets" : 1,
70 | "numoutlets" : 1,
71 | "outlettype" : [ "bang" ],
72 | "patching_rect" : [ 40.0, 39.0, 56.0, 21.0 ],
73 | "text" : "loadbang"
74 | }
75 |
76 | }
77 | , {
78 | "box" : {
79 | "fontface" : 0,
80 | "fontsize" : 11.0,
81 | "id" : "obj-4",
82 | "maxclass" : "o.display",
83 | "numinlets" : 1,
84 | "numoutlets" : 1,
85 | "outlettype" : [ "" ],
86 | "patching_rect" : [ 40.0, 152.0, 118.0, 33.0 ],
87 | "text" : "/s2 : 1.41421"
88 | }
89 |
90 | }
91 | , {
92 | "box" : {
93 | "fontface" : 0,
94 | "fontsize" : 11.0,
95 | "id" : "obj-5",
96 | "maxclass" : "o.expr.codebox",
97 | "numinlets" : 1,
98 | "numoutlets" : 2,
99 | "outlettype" : [ "FullPacket", "FullPacket" ],
100 | "patching_rect" : [ 40.0, 79.0, 116.0, 31.0 ],
101 | "text" : "/s2 = sqrttwo()"
102 | }
103 |
104 | }
105 | ],
106 | "lines" : [ {
107 | "patchline" : {
108 | "destination" : [ "obj-5", 0 ],
109 | "source" : [ "obj-11", 0 ]
110 | }
111 |
112 | }
113 | , {
114 | "patchline" : {
115 | "destination" : [ "obj-4", 0 ],
116 | "source" : [ "obj-5", 0 ]
117 | }
118 |
119 | }
120 | ],
121 | "dependency_cache" : [ {
122 | "name" : "o.expr.codebox.mxo",
123 | "type" : "iLaX"
124 | }
125 | , {
126 | "name" : "o.display.mxo",
127 | "type" : "iLaX"
128 | }
129 | ],
130 | "autosave" : 0
131 | }
132 |
133 | }
134 |
--------------------------------------------------------------------------------
/help/o.expr-helpers/odot-twelfth_root_of_2.maxhelp:
--------------------------------------------------------------------------------
1 | {
2 | "patcher" : {
3 | "fileversion" : 1,
4 | "appversion" : {
5 | "major" : 8,
6 | "minor" : 1,
7 | "revision" : 10,
8 | "architecture" : "x64",
9 | "modernui" : 1
10 | }
11 | ,
12 | "classnamespace" : "box",
13 | "rect" : [ 70.0, 97.0, 413.0, 227.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" : "Default Max 7",
40 | "assistshowspatchername" : 0,
41 | "boxes" : [ {
42 | "box" : {
43 | "fontface" : 1,
44 | "id" : "obj-8",
45 | "maxclass" : "comment",
46 | "numinlets" : 1,
47 | "numoutlets" : 0,
48 | "patching_rect" : [ 230.0, 44.0, 116.0, 20.0 ],
49 | "text" : "twelfth_root_of_2()"
50 | }
51 |
52 | }
53 | , {
54 | "box" : {
55 | "id" : "obj-3",
56 | "linecount" : 3,
57 | "maxclass" : "comment",
58 | "numinlets" : 1,
59 | "numoutlets" : 0,
60 | "patching_rect" : [ 230.0, 79.0, 153.0, 47.0 ],
61 | "text" : "Return the 12th root of 2\n\narguments: n/a"
62 | }
63 |
64 | }
65 | , {
66 | "box" : {
67 | "fontsize" : 11.0,
68 | "id" : "obj-11",
69 | "maxclass" : "newobj",
70 | "numinlets" : 1,
71 | "numoutlets" : 1,
72 | "outlettype" : [ "bang" ],
73 | "patching_rect" : [ 40.0, 39.0, 56.0, 21.0 ],
74 | "text" : "loadbang"
75 | }
76 |
77 | }
78 | , {
79 | "box" : {
80 | "fontface" : 0,
81 | "id" : "obj-4",
82 | "maxclass" : "o.display",
83 | "numinlets" : 1,
84 | "numoutlets" : 1,
85 | "outlettype" : [ "" ],
86 | "patching_rect" : [ 40.0, 152.0, 90.0, 33.0 ],
87 | "text" : "/x : 1.05946"
88 | }
89 |
90 | }
91 | , {
92 | "box" : {
93 | "fontface" : 0,
94 | "id" : "obj-5",
95 | "maxclass" : "o.expr.codebox",
96 | "numinlets" : 1,
97 | "numoutlets" : 2,
98 | "outlettype" : [ "FullPacket", "FullPacket" ],
99 | "patching_rect" : [ 40.0, 79.0, 176.0, 31.0 ],
100 | "text" : "/x = twelfth_root_of_2()"
101 | }
102 |
103 | }
104 | ],
105 | "lines" : [ {
106 | "patchline" : {
107 | "destination" : [ "obj-5", 0 ],
108 | "source" : [ "obj-11", 0 ]
109 | }
110 |
111 | }
112 | , {
113 | "patchline" : {
114 | "destination" : [ "obj-4", 0 ],
115 | "source" : [ "obj-5", 0 ]
116 | }
117 |
118 | }
119 | ],
120 | "dependency_cache" : [ {
121 | "name" : "o.expr.codebox.mxo",
122 | "type" : "iLaX"
123 | }
124 | , {
125 | "name" : "o.display.mxo",
126 | "type" : "iLaX"
127 | }
128 | ],
129 | "autosave" : 0
130 | }
131 |
132 | }
133 |
--------------------------------------------------------------------------------
/help/o.expr-helpers/odot-twooverpi.maxhelp:
--------------------------------------------------------------------------------
1 | {
2 | "patcher" : {
3 | "fileversion" : 1,
4 | "appversion" : {
5 | "major" : 8,
6 | "minor" : 1,
7 | "revision" : 10,
8 | "architecture" : "x64",
9 | "modernui" : 1
10 | }
11 | ,
12 | "classnamespace" : "box",
13 | "rect" : [ 70.0, 97.0, 406.0, 227.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" : "Default Max 7",
40 | "assistshowspatchername" : 0,
41 | "boxes" : [ {
42 | "box" : {
43 | "fontface" : 1,
44 | "id" : "obj-8",
45 | "maxclass" : "comment",
46 | "numinlets" : 1,
47 | "numoutlets" : 0,
48 | "patching_rect" : [ 191.0, 44.0, 74.0, 20.0 ],
49 | "text" : "twooverpi()"
50 | }
51 |
52 | }
53 | , {
54 | "box" : {
55 | "id" : "obj-3",
56 | "linecount" : 3,
57 | "maxclass" : "comment",
58 | "numinlets" : 1,
59 | "numoutlets" : 0,
60 | "patching_rect" : [ 191.0, 79.0, 190.0, 47.0 ],
61 | "text" : "Return the constant 2 / pi\n\narguments: n/a"
62 | }
63 |
64 | }
65 | , {
66 | "box" : {
67 | "fontsize" : 11.0,
68 | "id" : "obj-11",
69 | "maxclass" : "newobj",
70 | "numinlets" : 1,
71 | "numoutlets" : 1,
72 | "outlettype" : [ "bang" ],
73 | "patching_rect" : [ 40.0, 39.0, 56.0, 21.0 ],
74 | "text" : "loadbang"
75 | }
76 |
77 | }
78 | , {
79 | "box" : {
80 | "fontface" : 0,
81 | "id" : "obj-4",
82 | "maxclass" : "o.display",
83 | "numinlets" : 1,
84 | "numoutlets" : 1,
85 | "outlettype" : [ "" ],
86 | "patching_rect" : [ 40.0, 152.0, 103.0, 33.0 ],
87 | "text" : "/2op : 0.63662"
88 | }
89 |
90 | }
91 | , {
92 | "box" : {
93 | "fontface" : 0,
94 | "id" : "obj-5",
95 | "maxclass" : "o.expr.codebox",
96 | "numinlets" : 1,
97 | "numoutlets" : 2,
98 | "outlettype" : [ "FullPacket", "FullPacket" ],
99 | "patching_rect" : [ 40.0, 79.0, 130.0, 31.0 ],
100 | "text" : "/2op = twooverpi()"
101 | }
102 |
103 | }
104 | ],
105 | "lines" : [ {
106 | "patchline" : {
107 | "destination" : [ "obj-5", 0 ],
108 | "source" : [ "obj-11", 0 ]
109 | }
110 |
111 | }
112 | , {
113 | "patchline" : {
114 | "destination" : [ "obj-4", 0 ],
115 | "source" : [ "obj-5", 0 ]
116 | }
117 |
118 | }
119 | ],
120 | "dependency_cache" : [ {
121 | "name" : "o.expr.codebox.mxo",
122 | "type" : "iLaX"
123 | }
124 | , {
125 | "name" : "o.display.mxo",
126 | "type" : "iLaX"
127 | }
128 | ],
129 | "autosave" : 0
130 | }
131 |
132 | }
133 |
--------------------------------------------------------------------------------
/help/o.expr-helpers/odot-twopi.maxhelp:
--------------------------------------------------------------------------------
1 | {
2 | "patcher" : {
3 | "fileversion" : 1,
4 | "appversion" : {
5 | "major" : 8,
6 | "minor" : 1,
7 | "revision" : 10,
8 | "architecture" : "x64",
9 | "modernui" : 1
10 | }
11 | ,
12 | "classnamespace" : "box",
13 | "rect" : [ 70.0, 97.0, 349.0, 227.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" : "Default Max 7",
40 | "assistshowspatchername" : 0,
41 | "boxes" : [ {
42 | "box" : {
43 | "fontface" : 1,
44 | "id" : "obj-8",
45 | "maxclass" : "comment",
46 | "numinlets" : 1,
47 | "numoutlets" : 0,
48 | "patching_rect" : [ 172.0, 44.0, 51.0, 20.0 ],
49 | "text" : "twopi()"
50 | }
51 |
52 | }
53 | , {
54 | "box" : {
55 | "id" : "obj-3",
56 | "linecount" : 3,
57 | "maxclass" : "comment",
58 | "numinlets" : 1,
59 | "numoutlets" : 0,
60 | "patching_rect" : [ 172.0, 79.0, 156.0, 47.0 ],
61 | "text" : "Return the constant pi * 2\n\narguments: n/a"
62 | }
63 |
64 | }
65 | , {
66 | "box" : {
67 | "fontsize" : 11.0,
68 | "id" : "obj-11",
69 | "maxclass" : "newobj",
70 | "numinlets" : 1,
71 | "numoutlets" : 1,
72 | "outlettype" : [ "bang" ],
73 | "patching_rect" : [ 40.0, 39.0, 56.0, 21.0 ],
74 | "text" : "loadbang"
75 | }
76 |
77 | }
78 | , {
79 | "box" : {
80 | "fontface" : 0,
81 | "id" : "obj-4",
82 | "maxclass" : "o.display",
83 | "numinlets" : 1,
84 | "numoutlets" : 1,
85 | "outlettype" : [ "" ],
86 | "patching_rect" : [ 40.0, 152.0, 128.0, 33.0 ],
87 | "text" : "/2p : 6.28319"
88 | }
89 |
90 | }
91 | , {
92 | "box" : {
93 | "fontface" : 0,
94 | "id" : "obj-5",
95 | "maxclass" : "o.expr.codebox",
96 | "numinlets" : 1,
97 | "numoutlets" : 2,
98 | "outlettype" : [ "FullPacket", "FullPacket" ],
99 | "patching_rect" : [ 40.0, 79.0, 97.0, 31.0 ],
100 | "text" : "/2p = twopi()"
101 | }
102 |
103 | }
104 | ],
105 | "lines" : [ {
106 | "patchline" : {
107 | "destination" : [ "obj-5", 0 ],
108 | "source" : [ "obj-11", 0 ]
109 | }
110 |
111 | }
112 | , {
113 | "patchline" : {
114 | "destination" : [ "obj-4", 0 ],
115 | "source" : [ "obj-5", 0 ]
116 | }
117 |
118 | }
119 | ],
120 | "dependency_cache" : [ {
121 | "name" : "o.expr.codebox.mxo",
122 | "type" : "iLaX"
123 | }
124 | , {
125 | "name" : "o.display.mxo",
126 | "type" : "iLaX"
127 | }
128 | ],
129 | "autosave" : 0
130 | }
131 |
132 | }
133 |
--------------------------------------------------------------------------------
/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CNMAT/CNMAT-odot/ac753e280dcdc44b0e1aace9bc73714a025f0f35/icon.png
--------------------------------------------------------------------------------
/init/max-keycommands.txt:
--------------------------------------------------------------------------------
1 | max definecommand e patcher insertobj o.expr.codebox;
2 | max definecommandinstructions patcher e "o. expression";
3 | max definecommand d patcher insertobj o.display;
4 | max definecommandinstructions patcher d "o. display";
5 | max definecommand C patcher insertobj o.compose;
6 | max definecommandinstructions patcher C "o. compose";
7 | max definecommand O patcher inserttextobj o.;
8 | max definecommandinstructions patcher O "o.";
9 |
10 |
11 |
--------------------------------------------------------------------------------
/init/odot-objectlist.txt:
--------------------------------------------------------------------------------
1 | max oblist "odot objects" o.append;
2 | max oblist "odot objects" o.change;
3 | max oblist "odot objects" o.collect;
4 | max oblist "odot objects" o.compose;
5 | max oblist "odot objects" o.cond;
6 | max oblist "odot objects" o.dict;
7 | max oblist "odot objects" o.difference;
8 | max oblist "odot objects" o.display;
9 | max oblist "odot objects" o.edge~;
10 | max oblist "odot objects" o.explode;
11 | max oblist "odot objects" o.expr.codebox;
12 | max oblist "odot objects" o.flatten;
13 | max oblist "odot objects" o.if;
14 | max oblist "odot objects" o.intersection;
15 | max oblist "odot objects" o.listenumerate;
16 | max oblist "odot objects" o.pack;
17 | max oblist "odot objects" o.prepend;
18 | max oblist "odot objects" o.print;
19 | max oblist "odot objects" o.printbytes;
20 | max oblist "odot objects" o.route;
21 | max oblist "odot objects" o.schedule;
22 | max oblist "odot objects" o.select;
23 | max oblist "odot objects" o.timetag;
24 | max oblist "odot objects" o.union;
25 | max oblist "odot objects" o.var;
26 | max oblist "odot abstractions" o.gather;
27 | max oblist "odot abstractions" o.recurse;
28 | max oblist "odot abstractions" o.uniform;
29 | max oblist "odot abstractions" o.lefttoright;
30 | max oblist "odot abstractions" o.righttoleft;
31 | max oblist "odot abstractions" o.betweentimes;
32 | max oblist "odot abstractions" o.delay;
33 | max oblist "odot abstractions" o.metro;
34 | max oblist "odot abstractions" o.poissonprocess;
--------------------------------------------------------------------------------
/license.txt:
--------------------------------------------------------------------------------
1 | The Center for New Music and Audio Technologies,
2 | University of California, Berkeley. Copyright (c) 2008-14, The Regents of
3 | the University of California (Regents).
4 | Permission to use, copy, modify, distribute, and distribute modified versions
5 | of this software and its documentation without fee and without a signed
6 | licensing agreement, is hereby granted, provided that the above copyright
7 | notice, this paragraph and the following two paragraphs appear in all copies,
8 | modifications, and distributions.
9 |
10 | IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
11 | SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING
12 | OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF REGENTS HAS
13 | BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
14 |
15 | REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
16 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17 | PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED
18 | HEREUNDER IS PROVIDED "AS IS". REGENTS HAS NO OBLIGATION TO PROVIDE
19 | MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
--------------------------------------------------------------------------------
/odot-logo.ai:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CNMAT/CNMAT-odot/ac753e280dcdc44b0e1aace9bc73714a025f0f35/odot-logo.ai
--------------------------------------------------------------------------------
/patchers/tutorial/close_parent.js:
--------------------------------------------------------------------------------
1 | inlets = 0;
2 | outlet = 1;
3 |
4 | var p = this.patcher.parentpatcher;
5 |
6 | function bang(){
7 | p.message("wclose");
8 | }
--------------------------------------------------------------------------------
/patchers/tutorial/filelist.txt:
--------------------------------------------------------------------------------
1 | 1, 01_max_and_odot.maxpat "Max & odot";
2 | 2, 02_data_manipulation.maxpat "How to manipulate data";
3 | 3, 03_packing_processes.maxpat "Packing data together and setting a process in motion";
4 | 4, 04_build_merge_sep.maxpat "Building, merging, and separating data";
5 | 5, 05_hierarchies.maxpat "Hierarchies and persistence";
6 | 6, 06_expr1.maxpat "Expressions 1: functions, operators, addresses, types";
7 | 7, 07_expr2.maxpat "Expressions 2: more on lists";
8 | 8, 08_expr3.maxpat "Expressions 3: apply(), map(), and lambda()";
9 | 9, 09_expr4.maxpat "Expressions 4: dynamic assignment";
10 | 10, 10_subbundles_literals.maxpat "usage of subbundles and bundle literals in expressions";
11 | 11, 11_all_about_time.maxpat "dealing with time: history, o.schedule and o.timetag";
12 | 12, 12_abstractions.maxpat "Abstracting code, user interface design";
13 |
--------------------------------------------------------------------------------
/patchers/tutorial/n4m.o.tutorial-load.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | const fs = require('fs');
4 | const Max = require('max-api');
5 |
6 | var objary = [];
7 |
8 | function printvalues(o){
9 | for(var i in o){
10 | let mc = o[i]['box']['maxclass'];
11 |
12 | if(mc.match(/^(o.compose|o.display|o.expr.codebox|newobj)$/)){
13 | //console.log("class: " + mc);
14 | let tx = o[i]['text'];
15 |
16 |
17 | // if(tx != null){
18 | console.log("text: " + tx);
19 | let patt = new RegExp(/o\.+/);
20 | console.log("found: " + tx.match(patt));
21 | //objary.push(tx);
22 | // }
23 | }
24 | }
25 | let unique = [...new Set(objary)];
26 | console.log("full list: ", objary);
27 | console.log("filtered: ", unique);
28 | }
29 |
30 | //printvalues(tobjects);
31 |
32 | Max.addHandler("file", (msg) => {
33 | let rawdata = fs.readFileSync(msg);
34 | let tute = JSON.parse(rawdata);
35 | let tobjects = tute['patcher']['boxes'];
36 | objary = [];
37 | printvalues(tobjects)
38 | })
--------------------------------------------------------------------------------
/pd/cnmat-meta.pd:
--------------------------------------------------------------------------------
1 | #N canvas 15 49 200 200 10;
2 | #N canvas 490 133 420 300 META 0;
3 | #X text 10 25 AUTHOR John MacCallum \, Adrian Freed \, Rama Gottfried
4 | ;
5 | #X text 10 10 VERSION odot 1.3-124-g5057d51 (pd alpha version);
6 | #X text 11 41 NAME CNMAT / odot library;
7 | #X restore 10 10 pd META;
8 |
--------------------------------------------------------------------------------
/pd/deprecated/o.message-help.pd:
--------------------------------------------------------------------------------
1 | #N canvas 371 76 860 496 10;
2 | #X text 223 97 omessage is similar the standard message box except
3 | that it converts its data to OSC packets.;
4 | #X msg 615 100;
5 | #X floatatom 106 217 5 0 0 0 - - -;
6 | #X floatatom 490 218 5 0 0 0 - - -;
7 | #X text 213 245 $n style variable substitution;
8 | #X text 430 348 o.message can be used to display the contents of an
9 | OSC bundle;
10 | #N canvas 425 156 667 423 nested-bundles 0;
11 | #X msg 22 240 1 2 3;
12 | #N canvas 951 499 450 300 set 0;
13 | #X obj 71 85 inlet;
14 | #X obj 81 170 outlet;
15 | #X obj 72 108 list prepend set;
16 | #X obj 72 143 list trim;
17 | #X connect 0 0 2 0;
18 | #X connect 2 0 3 0;
19 | #X connect 3 0 1 0;
20 | #X restore 22 211 pd set;
21 | #X msg 71 240 a r s;
22 | #N canvas 951 499 450 300 set 0;
23 | #X obj 71 85 inlet;
24 | #X obj 81 170 outlet;
25 | #X obj 72 108 list prepend set;
26 | #X obj 72 143 list trim;
27 | #X connect 0 0 2 0;
28 | #X connect 2 0 3 0;
29 | #X connect 3 0 1 0;
30 | #X restore 71 211 pd set;
31 | #X msg 215 237 /foo FullPacket 1.12104e-43 0 -1.99904;
32 | #N canvas 951 499 450 300 set 0;
33 | #X obj 71 85 inlet;
34 | #X obj 81 170 outlet;
35 | #X obj 72 108 list prepend set;
36 | #X obj 72 143 list trim;
37 | #X connect 0 0 2 0;
38 | #X connect 2 0 3 0;
39 | #X connect 3 0 1 0;
40 | #X restore 215 208 pd set;
41 | #X text 207 80 the messages in a nested bundle must be on their own
42 | lines and the final square bracket must be on a new line;
43 | #X text 207 48 nested bundles can be constructed using square brackets
44 | in the arguments of a message.;
45 | #X obj 490 233 print nested;
46 | #X obj 22 53 o.message 164 62 binhex b#2F666F6F205B0A092F62617220312032
47 | b#20330A092F626C6F6F20226122202272 b#22202273220A5D;
48 | #X obj 22 153 o.route /foo;
49 | #X obj 22 183 o.route /bar /bloo;
50 | #X obj 215 167 o.atomize;
51 | #X obj 490 168 o.route /foo;
52 | #X obj 490 196 o.atomize /bar /bloo;
53 | #X connect 1 0 0 0;
54 | #X connect 3 0 2 0;
55 | #X connect 5 0 4 0;
56 | #X connect 9 0 10 0;
57 | #X connect 9 0 12 0;
58 | #X connect 9 0 13 0;
59 | #X connect 10 0 11 0;
60 | #X connect 11 0 1 0;
61 | #X connect 11 1 3 0;
62 | #X connect 12 0 5 0;
63 | #X connect 13 0 14 0;
64 | #X connect 14 0 8 0;
65 | #X connect 14 1 8 0;
66 | #X restore 106 363 pd nested-bundles;
67 | #X text 6 4 _;
68 | #N canvas 1012 621 450 300 alpha-release-notes 0;
69 | #X text 10 4 -;
70 | #X text 49 66 currently in the alpha release there are a few issues
71 | with omessage that will be fixed in the beta: - there appears to be
72 | some issue with recalling saved values on instantiation - if there
73 | is a stream of data coming into the object when closing the toplevel
74 | patch there could be a TCL/TK error due to input events to omessage
75 | causing state change after the canvas has been freed - the resize handle
76 | is not always in the right place;
77 | #X restore 106 397 pd alpha-release-notes;
78 | #X text 104 19 omessage;
79 | #X obj 106 245 o.message 88 23 binhex b#2F666F6F203120222431222033
80 | ;
81 | #X obj 103 103 o.message 88 23 binhex b#2F666F6F203120322033;
82 | #X obj 107 39 o.message 100 23 binhex b#0A;
83 | #X obj 103 140 o.print;
84 | #X obj 106 282 o.print;
85 | #X obj 490 254 o.pack /foo 0;
86 | #X obj 473 307 o.message 88 23 binhex b#2F666F6F20332E;
87 | #X connect 2 0 10 0;
88 | #X connect 3 0 15 0;
89 | #X connect 10 0 14 0;
90 | #X connect 11 0 13 0;
91 | #X connect 15 0 16 1;
92 |
--------------------------------------------------------------------------------
/pd/deprecated/o.pak-help.pd:
--------------------------------------------------------------------------------
1 | #N canvas 369 35 868 410 10;
2 | #X floatatom 266 94 5 0 0 0 - - -;
3 | #X msg 396 94 testo;
4 | #X msg 309 97 testo;
5 | #X obj 109 137 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
6 | -1 -1;
7 | #X floatatom 361 96 5 0 0 0 - - -;
8 | #X floatatom 89 76 5 0 0 0 - - -;
9 | #X msg 170 191 version;
10 | #X obj 236 228 print;
11 | #X obj 308 216 o.print pack;
12 | #X obj 308 158 o.pak /foo 11 /bar sam;
13 | #X obj 88 100 o.pak /subbundle;
14 | #X connect 0 0 9 0;
15 | #X connect 1 0 9 1;
16 | #X connect 2 0 9 0;
17 | #X connect 3 0 9 0;
18 | #X connect 4 0 9 1;
19 | #X connect 5 0 10 0;
20 | #X connect 6 0 9 0;
21 | #X connect 9 0 7 0;
22 | #X connect 9 0 8 0;
23 | #X connect 10 0 9 0;
24 |
--------------------------------------------------------------------------------
/pd/deprecated/o.unless-help.pd:
--------------------------------------------------------------------------------
1 | #N canvas 782 345 450 300 10;
2 | #X obj 128 166 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
3 | -1 -1;
4 | #X floatatom 149 50 5 0 0 0 - - -;
5 | #X obj 151 83 o.pack /foo;
6 | #X obj 151 110 o.unless /foo > 3;
7 | #X obj 151 165 o.print yes;
8 | #X connect 1 0 2 0;
9 | #X connect 2 0 3 0;
10 | #X connect 3 0 0 0;
11 | #X connect 3 0 4 0;
12 |
--------------------------------------------------------------------------------
/pd/deprecated/o.when-help.pd:
--------------------------------------------------------------------------------
1 | #N canvas 782 345 450 300 10;
2 | #X obj 128 166 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
3 | -1 -1;
4 | #X floatatom 149 50 5 0 0 0 - - -;
5 | #X obj 151 165 o.print yes;
6 | #X obj 151 110 o.when /foo > 3;
7 | #X obj 151 83 o.pack /foo;
8 | #X connect 1 0 4 0;
9 | #X connect 3 0 0 0;
10 | #X connect 3 0 2 0;
11 | #X connect 4 0 3 0;
12 |
--------------------------------------------------------------------------------
/pd/dev/o.bundle-help.pd:
--------------------------------------------------------------------------------
1 | #N canvas 78 133 981 559 10;
2 | #X obj 59 49 netreceive -u -b 7777;
3 | #X obj 59 133 o.bundle;
4 | #X obj 104 160 o.display 430 27;
5 | #X obj 59 240 o.display 430 92;
6 | #X obj 81 203 print not-a-bundle;
7 | #N canvas 0 22 450 300 prepend-set 0;
8 | #X obj 176 76 inlet;
9 | #X obj 176 102 list prepend set;
10 | #X obj 176 124 list trim;
11 | #X obj 176 146 outlet;
12 | #X connect 0 0 1 0;
13 | #X connect 1 0 2 0;
14 | #X connect 2 0 3 0;
15 | #X restore 580 127 pd prepend-set;
16 | #X msg 580 159 35 98 117 110 100 108 101 0 0 0 0 0 0 0 0 0 0 0 0 16
17 | 47 103 48 0 44 100 0 0 0 0 0 0 0 0 0 0 0 0 0 16 47 108 108 0 44 100
18 | 0 0 0 0 0 0 0 0 0 0 0 0 0 16 47 108 109 0 44 100 0 0 192 38 51 51 64
19 | 0 0 0 0 0 0 16 47 108 104 0 44 100 0 0 0 0 0 0 0 0 0 0 0 0 0 16 47
20 | 108 102 0 44 100 0 0 64 111 64 0 0 0 0 0 0 0 0 16 47 104 102 0 44 100
21 | 0 0 64 175 64 0 0 0 0 0;
22 | #X connect 0 0 1 0;
23 | #X connect 0 0 5 0;
24 | #X connect 1 0 3 0;
25 | #X connect 1 1 4 0;
26 | #X connect 1 2 2 0;
27 | #X connect 5 0 6 0;
28 |
--------------------------------------------------------------------------------
/pd/dev/o.context-graph-example.pd:
--------------------------------------------------------------------------------
1 | #N canvas 0 22 450 300 10;
2 | #X obj 205 82 inlet;
3 | #X obj 205 120 o.context;
4 | #X obj 205 162 outlet;
5 | #X connect 0 0 1 0;
6 | #X connect 1 0 2 0;
7 | #X coords 0 -1 1 1 85 60 1 100 100;
8 |
--------------------------------------------------------------------------------
/pd/dev/o.context-help.pd:
--------------------------------------------------------------------------------
1 | #N canvas 521 22 920 618 10;
2 | #X obj 45 53 o.context;
3 | #X obj 45 24 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
4 | -1;
5 | #X obj 45 86 o.message 539 23 binhex b#2F636F6E74657874205B0A092F6E616D
6 | b#6520226F2E636F6E746578742D68656C b#702E7064220A092F7061746820222F55
7 | b#736572732F722F446F63756D656E7473 b#2F6465762D6C69622F434E4D41542D6F
8 | b#646F742F70645F72656C656173655F70 b#61636B616765220A092F243020313030
9 | b#340A092F69736162737472616374696F b#6E2066616C73650A092F656469746D6F
10 | b#64652066616C73650A092F666F6E7420 b#224D6F6E61636F220A092F666F6E7473
11 | b#697A652031300A092F64697274792074 b#7275650A092F70697877696474682030
12 | b#0A092F70697868656967687420300A09 b#2F73637265656E2F7831203532310A09
13 | b#2F73637265656E2F79312032320A092F b#73637265656E2F783220313434310A09
14 | b#2F73637265656E2F7932203634300A09 b#2F786D617267696E20300A092F796D61
15 | b#7267696E20300A092F617267756D656E b#74730A5D;
16 | #X obj 78 364 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
17 | -1;
18 | #X obj 502 381 o.context-graph-example;
19 | #X obj 502 354 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
20 | -1 -1;
21 | #X obj 502 460 o.print GOP;
22 | #X obj 78 434 o.print subpatches;
23 | #N canvas 0 22 450 300 context 0;
24 | #X obj 163 55 inlet;
25 | #X obj 163 111 outlet;
26 | #N canvas 0 22 450 300 anothersubpatch 0;
27 | #X obj 164 55 inlet;
28 | #X obj 164 135 outlet;
29 | #N canvas 0 22 450 300 last-one 0;
30 | #X obj 206 32 inlet;
31 | #X obj 206 54 o.context;
32 | #X obj 206 76 outlet;
33 | #X obj 280 35 loadbang;
34 | #X connect 0 0 1 0;
35 | #X connect 1 0 2 0;
36 | #X connect 3 0 1 0;
37 | #X restore 164 92 pd last-one \, the deepest is first;
38 | #X connect 0 0 2 0;
39 | #X connect 2 0 1 0;
40 | #X restore 163 84 pd anothersubpatch bb 2;
41 | #X connect 0 0 2 0;
42 | #X connect 2 0 1 0;
43 | #X restore 78 390 pd context subpatch depth example 1 2 3 4 5 6 7 8
44 | 9 10 11 12 13;
45 | #X connect 0 0 2 1;
46 | #X connect 1 0 0 0;
47 | #X connect 3 0 8 0;
48 | #X connect 4 0 6 0;
49 | #X connect 5 0 4 0;
50 | #X connect 8 0 7 0;
51 |
--------------------------------------------------------------------------------
/pd/dev/o.slip.decode-help.pd:
--------------------------------------------------------------------------------
1 | #N canvas 640 344 450 300 10;
2 | #X obj 234 139 print bytes;
3 | #X obj 89 149 o.slip.decode;
4 | #X obj 89 109 o.slip.encode;
5 | #X obj 88 70 o.compose 100 31 binhex b#2F666F6F203A20312C0A2F626172203A
6 | b#2032;
7 | #X obj 80 189 o.compose 100 31 binhex b#2F666F6F203A20312C0A2F626172203A
8 | b#2032;
9 | #X connect 1 0 4 1;
10 | #X connect 2 0 0 0;
11 | #X connect 2 0 1 0;
12 | #X connect 3 0 2 0;
13 |
--------------------------------------------------------------------------------
/pd/dev/o.slip.encode-help.pd:
--------------------------------------------------------------------------------
1 | #N canvas 640 344 450 300 10;
2 | #X obj 234 139 print bytes;
3 | #X obj 89 109 o.slip.encode;
4 | #X obj 89 149 o.slip.decode;
5 | #X obj 89 43 o.compose 123 44 binhex b#2F666F6F203A20312C0A2F626172203A
6 | b#20322C0A2F7374657665202261626364 b#656667220A;
7 | #X obj 58 201 o.compose 123 23 binhex b#;
8 | #X connect 1 0 0 0;
9 | #X connect 1 0 2 0;
10 | #X connect 2 0 4 1;
11 | #X connect 3 0 1 0;
12 |
--------------------------------------------------------------------------------
/pd/dev/o.table-help.pd:
--------------------------------------------------------------------------------
1 | #N canvas 231 24 1033 559 10;
2 | #X floatatom 125 70 5 0 0 0 - - -;
3 | #X floatatom 275 70 5 0 0 0 - - -;
4 | #X msg 1 152 one;
5 | #X msg 36 151 two;
6 | #X msg 448 189 popfirst;
7 | #X msg 448 134 peeknth \$1;
8 | #X floatatom 448 106 5 0 0 0 - - -;
9 | #X floatatom 528 106 5 0 0 0 - - -;
10 | #X msg 528 134 popnth \$1;
11 | #X msg 528 189 peekfirst;
12 | #X msg 448 219 poplast;
13 | #X msg 528 219 peeklast;
14 | #X obj 125 99 o.pack /foo 1 /key one;
15 | #X obj 125 370 o.table @key /key;
16 | #X obj 125 415 o.if !emptybundle();
17 | #X obj 125 447 o.print;
18 | #X obj 230 445 o.print table_is_empty;
19 | #X msg 448 278 write /Users/r/table-test.txt;
20 | #X msg 448 310 read /Users/r/table-test.txt;
21 | #X text 244 372 @key argument sets address to use for entry key (must
22 | be a symbol);
23 | #X obj 275 99 o.pack /foo 1 /key two;
24 | #X text 148 37 set value with key;
25 | #X text -26 127 recall value with key;
26 | #X connect 0 0 12 0;
27 | #X connect 1 0 20 0;
28 | #X connect 2 0 13 0;
29 | #X connect 3 0 13 0;
30 | #X connect 4 0 13 0;
31 | #X connect 5 0 13 0;
32 | #X connect 6 0 5 0;
33 | #X connect 7 0 8 0;
34 | #X connect 8 0 13 0;
35 | #X connect 9 0 13 0;
36 | #X connect 10 0 13 0;
37 | #X connect 11 0 13 0;
38 | #X connect 12 0 13 0;
39 | #X connect 13 0 14 0;
40 | #X connect 14 0 15 0;
41 | #X connect 14 1 16 0;
42 | #X connect 17 0 13 0;
43 | #X connect 18 0 13 0;
44 | #X connect 20 0 13 0;
45 |
--------------------------------------------------------------------------------
/pd/dev/o.udp.receive-help.pd:
--------------------------------------------------------------------------------
1 | #N canvas 646 151 653 605 10;
2 | #X obj 129 220 o.display 302 40;
3 | #X msg 129 24 status;
4 | #X obj 129 55 o.udp.receive 7777;
5 | #X obj 234 82 route received total from multicast;
6 | #X floatatom 234 108 5 0 0 0 - - -, f 5;
7 | #X floatatom 285 108 5 0 0 0 - - -, f 5;
8 | #X obj 337 142 unpack 0 0 0 0 0, f 25;
9 | #X floatatom 337 170 5 0 0 0 - - -, f 5;
10 | #X floatatom 373 170 5 0 0 0 - - -, f 5;
11 | #X floatatom 410 170 5 0 0 0 - - -, f 5;
12 | #X floatatom 447 170 5 0 0 0 - - -, f 5;
13 | #X floatatom 484 170 5 0 0 0 - - -, f 5;
14 | #X obj 389 107 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
15 | 1;
16 | #X obj 129 144 o.timetag /time/received;
17 | #X obj 88 134 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
18 | -1;
19 | #X connect 1 0 2 0;
20 | #X connect 2 0 13 0;
21 | #X connect 2 0 14 0;
22 | #X connect 2 1 3 0;
23 | #X connect 3 0 4 0;
24 | #X connect 3 1 5 0;
25 | #X connect 3 2 6 0;
26 | #X connect 3 3 12 0;
27 | #X connect 6 0 7 0;
28 | #X connect 6 1 8 0;
29 | #X connect 6 2 9 0;
30 | #X connect 6 3 10 0;
31 | #X connect 6 4 11 0;
32 | #X connect 13 0 0 0;
33 |
--------------------------------------------------------------------------------
/pd/dev/o.udp.send-help.pd:
--------------------------------------------------------------------------------
1 | #N canvas 742 173 552 285 10;
2 | #X obj 98 39 o.pack /foo;
3 | #X floatatom 98 11 5 0 0 0 - - -, f 5;
4 | #X msg 150 99 connect 127.0.0.1 8888;
5 | #X obj 98 188 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
6 | 1;
7 | #X text 124 190 connected;
8 | #X obj 98 65 o.timetag /time/sent;
9 | #X obj 98 131 o.udp.send 127.0.0.1 8888;
10 | #X text 189 190 << this isn't working for some reason;
11 | #X connect 0 0 5 0;
12 | #X connect 1 0 0 0;
13 | #X connect 2 0 6 0;
14 | #X connect 5 0 6 0;
15 | #X connect 6 0 3 0;
16 |
--------------------------------------------------------------------------------
/pd/dev/o.validate-help.pd:
--------------------------------------------------------------------------------
1 | #N canvas 390 208 816 487 10;
2 | #X obj 273 247 o.validate;
3 | #X obj 177 146 + 10;
4 | #X obj 161 118 unpack s 0 0 0;
5 | #X obj 161 62 o.message 100 36 binhex b#2F666F6F2031300A2F626172203230
6 | ;
7 | #X obj 160 184 pack s 0 0 0;
8 | #X obj 138 285 o.print valid;
9 | #X obj 333 286 o.print error;
10 | #X obj 293 89 o.message 100 36 binhex b#2F666F6F2031300A2F626172203230
11 | ;
12 | #X obj 160 212 route list;
13 | #X obj 230 286 print;
14 | #X connect 0 0 5 0;
15 | #X connect 0 1 9 0;
16 | #X connect 0 2 6 0;
17 | #X connect 1 0 4 1;
18 | #X connect 2 0 4 0;
19 | #X connect 2 1 1 0;
20 | #X connect 2 2 4 2;
21 | #X connect 2 3 4 3;
22 | #X connect 3 0 2 0;
23 | #X connect 4 0 8 0;
24 | #X connect 7 0 0 0;
25 | #X connect 8 0 0 0;
26 |
--------------------------------------------------------------------------------
/pd/o.atomize-help.pd:
--------------------------------------------------------------------------------
1 | #N canvas 336 66 921 609 10;
2 | #X obj 461 319 o.atomize;
3 | #X obj 24 35 o.display 858 144;
4 | #N canvas 687 212 450 300 doc-text 0;
5 | #X obj 36 48 loadbang;
6 | #X obj 36 179 outlet;
7 | #X obj 36 110 o.atomize;
8 | #X msg 36 85 doc;
9 | #X obj 36 149 o.route /doc;
10 | #X connect 0 0 3 0;
11 | #X connect 2 0 4 0;
12 | #X connect 3 0 2 0;
13 | #X connect 4 0 1 0;
14 | #X restore 24 8 pd doc-text;
15 | #X floatatom 37 237 5 0 0 0 - - -, f 5;
16 | #X obj 37 269 o.pack /mysynth/2/gain 0;
17 | #X obj 215 261 o.compose 166 31 binhex b#2F6D7973796E74682F322F6672657120
18 | b#3A203434302C0A2F6E616461203A2022 b#7269656E22;
19 | #X obj 461 259 o.compose 166 44 binhex b#2F6D7973796E74682F322F6672657120
20 | b#3A203434302C0A2F6D7973796E74682F b#322F6761696E203A20302E352C0A2F6E
21 | b#616461203A20227269656E22;
22 | #X obj 215 261 o.compose 166 31 binhex b#2F6D7973796E74682F322F6672657120
23 | b#3A203434302C0A2F6E616461203A2022 b#7269656E22;
24 | #X obj 461 361 print;
25 | #X text 531 317 with no arguments \, o.atomize unpacks the bundle and
26 | outputs each message as a Max message in the order they appear in the
27 | bundle.;
28 | #X obj 215 226 loadbang;
29 | #X obj 37 319 o.union;
30 | #X obj 37 341 o.atomize /mysynth/2/freq /mysynth/2/gain;
31 | #X obj 37 374 print left;
32 | #X obj 280 373 print right;
33 | #X obj 158 375 print middle;
34 | #X connect 0 0 8 0;
35 | #X connect 2 0 1 0;
36 | #X connect 3 0 4 0;
37 | #X connect 4 0 11 0;
38 | #X connect 5 0 11 1;
39 | #X connect 6 0 0 0;
40 | #X connect 10 0 5 0;
41 | #X connect 11 0 12 0;
42 | #X connect 12 0 13 0;
43 | #X connect 12 1 15 0;
44 | #X connect 12 2 14 0;
45 |
--------------------------------------------------------------------------------
/pd/o.change-help.pd:
--------------------------------------------------------------------------------
1 | #N canvas 479 89 744 561 10;
2 | #X text 15 4 -;
3 | #X obj 63 404 o.change;
4 | #X obj 23 65 o.display 642 157;
5 | #N canvas 750 23 450 300 doc-text 0;
6 | #X obj 36 179 outlet;
7 | #X obj 36 68 loadbang;
8 | #X msg 36 92 doc;
9 | #X obj 36 156 o.route /doc;
10 | #X obj 36 117 o.change;
11 | #X connect 1 0 2 0;
12 | #X connect 2 0 4 0;
13 | #X connect 3 0 0 0;
14 | #X connect 4 0 3 0;
15 | #X restore 23 38 pd doc-text;
16 | #X obj 37 270 o.compose 131 31 binhex b#2F626172203A205B342C20352C20365D
17 | b#2C0A2F666F6F203A205B312C20322C20 b#335D;
18 | #X obj 186 269 o.compose 131 31 binhex b#2F666F6F203A205B312C20322C20335D
19 | b#2C0A2F626172203A205B342C20352C20 b#365D;
20 | #X obj 332 269 o.compose 131 23 binhex b#2F666F6F203A205B312C20322C20335D
21 | b#;
22 | #X obj 477 268 o.compose 131 31 binhex b#2F666F6F203A205B312C20322C20335D
23 | b#2C0A2F626172203A205B342C20352C20 b#375D;
24 | #X obj 63 463 o.display 126 27;
25 | #X obj 222 465 o.display 136 27;
26 | #X text 92 514 different;
27 | #X text 266 514 same;
28 | #X connect 1 0 8 0;
29 | #X connect 1 1 9 0;
30 | #X connect 3 0 2 0;
31 | #X connect 4 0 1 0;
32 | #X connect 5 0 1 0;
33 | #X connect 6 0 1 0;
34 | #X connect 7 0 1 0;
35 |
--------------------------------------------------------------------------------
/pd/o.collect-help.pd:
--------------------------------------------------------------------------------
1 | #N canvas 440 145 807 514 10;
2 | #X msg 143 285 /bar 1 \, /foo 11;
3 | #X obj 265 260 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
4 | -1 -1;
5 | #X floatatom 451 426 5 0 0 0 - - -, f 5;
6 | #X floatatom 501 426 5 0 0 0 - - -, f 5;
7 | #X msg 26 285 /bar 11 \, /foo 1;
8 | #X obj 517 264 + 1;
9 | #X obj 594 285 + 1;
10 | #X obj 265 348 o.collect;
11 | #X obj 451 380 o.route /foo /bar;
12 | #X obj 436 264 o.pack /foo;
13 | #X obj 517 290 o.pack /bar;
14 | #X obj 594 311 o.pack /steve;
15 | #X obj 30 39 o.display 642 131;
16 | #N canvas 750 23 450 300 doc-text 0;
17 | #X obj 36 179 outlet;
18 | #X obj 36 58 loadbang;
19 | #X msg 36 85 doc;
20 | #X obj 36 149 o.route /doc;
21 | #X obj 36 110 o.collect;
22 | #X connect 1 0 2 0;
23 | #X connect 2 0 4 0;
24 | #X connect 3 0 0 0;
25 | #X connect 4 0 3 0;
26 | #X restore 30 12 pd doc-text;
27 | #X obj 264 401 o.display 153 27;
28 | #X obj 417 236 t b f f;
29 | #X floatatom 417 193 5 0 0 0 - - -, f 5;
30 | #X text 73 230 bang triggers output and clears the internal buffer
31 | ;
32 | #X text 48 457 messages in the resulting bundle are in the order they
33 | were received;
34 | #X connect 0 0 7 0;
35 | #X connect 1 0 7 0;
36 | #X connect 4 0 7 0;
37 | #X connect 5 0 6 0;
38 | #X connect 5 0 10 0;
39 | #X connect 6 0 11 0;
40 | #X connect 7 0 8 0;
41 | #X connect 7 0 14 0;
42 | #X connect 8 0 2 0;
43 | #X connect 8 1 3 0;
44 | #X connect 9 0 7 0;
45 | #X connect 10 0 7 0;
46 | #X connect 11 0 7 0;
47 | #X connect 13 0 12 0;
48 | #X connect 15 0 1 0;
49 | #X connect 15 1 9 0;
50 | #X connect 15 2 5 0;
51 | #X connect 16 0 15 0;
52 |
--------------------------------------------------------------------------------
/pd/o.cond-help.pd:
--------------------------------------------------------------------------------
1 | #N canvas 782 345 450 300 10;
2 | #X floatatom 58 82 5 0 0 0 - - -, f 5;
3 | #X obj 58 107 o.pack /foo;
4 | #X obj 138 197 o.print ==;
5 | #X obj 230 197 o.print >;
6 | #X obj 58 198 o.print <;
7 | #X obj 58 134 o.cond /foo < 3 \, /foo == 3 \, /foo > 3;
8 | #X connect 0 0 1 0;
9 | #X connect 1 0 5 0;
10 | #X connect 5 0 4 0;
11 | #X connect 5 1 2 0;
12 | #X connect 5 2 3 0;
13 |
--------------------------------------------------------------------------------
/pd/o.difference-help.pd:
--------------------------------------------------------------------------------
1 | #N canvas 373 108 756 577 10;
2 | #X obj 30 60 o.display 642 144;
3 | #N canvas 750 23 450 300 doc-text 0;
4 | #X obj 36 179 outlet;
5 | #X obj 36 58 loadbang;
6 | #X msg 36 85 doc;
7 | #X obj 36 149 o.route /doc;
8 | #X obj 36 110 o.difference;
9 | #X connect 1 0 2 0;
10 | #X connect 2 0 4 0;
11 | #X connect 3 0 0 0;
12 | #X connect 4 0 3 0;
13 | #X restore 30 33 pd doc-text;
14 | #X obj 73 354 o.display 183 27;
15 | #X obj 73 256 o.compose 131 31 binhex b#2F666F6F203A205B312C20322C20335D
16 | b#2C0A2F626172203A205B342C20352C20 b#365D;
17 | #X obj 221 255 o.compose 222 31 binhex b#2F666F6F203A205B2271222C20226522
18 | b#2C202272222C202274222C202279225D b#2C0A2F626C6F6F203A205B2261222C20
19 | b#2262222C202263225D;
20 | #X obj 73 315 o.difference;
21 | #X connect 1 0 0 0;
22 | #X connect 3 0 5 0;
23 | #X connect 4 0 5 1;
24 | #X connect 5 0 2 0;
25 |
--------------------------------------------------------------------------------
/pd/o.downcast-help.pd:
--------------------------------------------------------------------------------
1 | #N canvas 543 22 818 715 10;
2 | #X obj 74 115 o.expr /bar = int64(/bar);
3 | #X obj 74 58 o.message 100 36 binhex b#2F666F6F2036362E360A2F6261722031
4 | b#30;
5 | #X obj 74 146 o.timetag /time;
6 | #X obj 124 193 o.downcast @headertimetag /time;
7 | #X obj 124 228 o.expr map(lambda(a)#[ assign(quote(/typetags)+a \,
8 | typetags(value(a))) \; ]# \, getaddresses());
9 | #X obj 122 299 o.message 283 88 binhex b#2F666F6F2036362E360A2F6261722031
10 | b#300A2F74696D65203239333130393138 b#35202D3738393033353330350A2F7479
11 | b#7065746167732F666F6F202766270A2F b#74797065746167732F62617220276927
12 | b#0A2F74797065746167732F74696D6520 b#27692720276927;
13 | #X obj 74 449 o.expr map(lambda(a)#[ assign(quote(/typetags)+a \, typetags(value(a)))
14 | \; ]# \, getaddresses());
15 | #X obj 72 520 o.message 283 88 binhex b#2F666F6F2036362E360A2F6261722031
16 | b#300A2F74696D65203239333130393138 b#35202D3738393033353330350A2F7479
17 | b#7065746167732F666F6F202764270A2F b#74797065746167732F62617220276927
18 | b#0A2F74797065746167732F74696D6520 b#27692720276927;
19 | #X obj 74 414 o.downcast @doubles 0;
20 | #X obj 439 299 o.message 283 88 binhex b#2F666F6F2036362E360A2F6261722031
21 | b#300A2F74696D6520323031342D30362D b#31345431363A33373A33362E37353538
22 | b#32315A0A2F74797065746167732F666F b#6F202764270A2F74797065746167732F
23 | b#626172202768270A2F74797065746167 b#732F74696D65202774270A;
24 | #X obj 439 210 o.expr map(lambda(a)#[ assign(quote(/typetags)+a \,
25 | typetags(value(a))) \; ]# \, getaddresses());
26 | #X text 323 82 Downcasts optional types supported by the odot objects
27 | to the required types of OSC 1.0.;
28 | #X text 322 55 Returns a bundle that conforms to OSC 1;
29 | #X text 321 25 o.downcast;
30 | #X connect 0 0 2 0;
31 | #X connect 1 0 0 0;
32 | #X connect 2 0 3 0;
33 | #X connect 2 0 8 0;
34 | #X connect 2 0 10 0;
35 | #X connect 3 0 4 0;
36 | #X connect 4 0 5 1;
37 | #X connect 6 0 7 1;
38 | #X connect 8 0 6 0;
39 | #X connect 10 0 9 1;
40 |
--------------------------------------------------------------------------------
/pd/o.explode-help.pd:
--------------------------------------------------------------------------------
1 | #N canvas 473 80 743 668 10;
2 | #X obj 195 338 o.explode;
3 | #X obj 246 363 o.flatten;
4 | #X obj 195 259 o.compose 159 57 binhex b#2F73796E74682F312F66726571203A20
5 | b#3434302E2C0A2F73796E74682F312F61 b#6D70203A20312E2C0A2F73796E74682F
6 | b#322F66726571203A203434372E2C0A2F b#73796E74682F322F616D70203A20302E
7 | b#35;
8 | #X obj 27 91 o.display 642 131;
9 | #N canvas 750 23 450 300 doc-text 0;
10 | #X obj 36 213 outlet;
11 | #X obj 36 44 loadbang;
12 | #X msg 36 85 doc;
13 | #X obj 36 149 o.route /doc;
14 | #X obj 36 110 o.explode;
15 | #X connect 1 0 2 0;
16 | #X connect 2 0 4 0;
17 | #X connect 3 0 0 0;
18 | #X connect 4 0 3 0;
19 | #X restore 27 64 pd doc-text;
20 | #X obj 195 485 o.display 237 144;
21 | #X obj 246 399 o.display 150 66;
22 | #X text 3 10 -;
23 | #X connect 0 0 1 0;
24 | #X connect 0 0 5 0;
25 | #X connect 1 0 6 0;
26 | #X connect 2 0 0 0;
27 | #X connect 4 0 3 0;
28 |
--------------------------------------------------------------------------------
/pd/o.expr-dollar-test.pd:
--------------------------------------------------------------------------------
1 | #N canvas 591 188 450 300 10;
2 | #X obj 169 74 inlet;
3 | #X obj 170 167 outlet;
4 | #X obj 170 120 o.expr /foo = \$1 + \$2;
5 | #X connect 0 0 2 0;
6 | #X connect 2 0 1 0;
7 |
--------------------------------------------------------------------------------
/pd/o.flatten-help.pd:
--------------------------------------------------------------------------------
1 | #N canvas 473 80 734 604 10;
2 | #X obj 29 42 o.display 642 118;
3 | #N canvas 750 23 450 300 doc-text 0;
4 | #X obj 36 179 outlet;
5 | #X obj 36 58 loadbang;
6 | #X msg 36 85 doc;
7 | #X obj 36 149 o.route /doc;
8 | #X obj 36 110 o.flatten;
9 | #X connect 1 0 2 0;
10 | #X connect 2 0 4 0;
11 | #X connect 3 0 0 0;
12 | #X connect 4 0 3 0;
13 | #X restore 29 15 pd doc-text;
14 | #X text 31 458 addresses are created by concatenating the addresses
15 | of each sub-bundle;
16 | #X obj 399 321 o.flatten;
17 | #X obj 399 231 o.compose 256 83 binhex b#2F666F6F2F626172203A207B0A092F62
18 | b#6C6F6F203A205B312C20322C20335D0A b#7D2C0A2F666F6F203A207B0A092F6261
19 | b#722F626C6F6F203A205B2261222C2022 b#72222C202273225D0A7D;
20 | #X obj 399 357 o.display 201 27;
21 | #X obj 44 328 o.flatten;
22 | #X obj 44 238 o.compose 256 70 binhex b#2F666F6F203A205B2261222C207B0A09
23 | b#2F626172203A205B312C20322C207B0A b#09092F626C6F6F203A205B2261222C20
24 | b#2262222C20335D0A097D5D0A7D2C2022 b#76225D;
25 | #X obj 44 364 o.display 201 27;
26 | #X text 391 401 duplicate addresses are discarded.;
27 | #X connect 1 0 0 0;
28 | #X connect 3 0 5 0;
29 | #X connect 4 0 3 0;
30 | #X connect 6 0 8 0;
31 | #X connect 7 0 6 0;
32 |
--------------------------------------------------------------------------------
/pd/o.if-help.pd:
--------------------------------------------------------------------------------
1 | #N canvas 495 89 749 544 10;
2 | #X floatatom 53 245 5 0 0 0 - - -, f 5;
3 | #X obj 53 270 o.pack /foo;
4 | #X obj 29 42 o.display 642 144;
5 | #N canvas 750 23 450 300 doc-text 0;
6 | #X obj 36 179 outlet;
7 | #X obj 36 58 loadbang;
8 | #X msg 36 85 doc;
9 | #X obj 36 149 o.route /doc;
10 | #X obj 36 110 o.if /foo == 0;
11 | #X connect 1 0 2 0;
12 | #X connect 2 0 4 0;
13 | #X connect 3 0 0 0;
14 | #X connect 4 0 3 0;
15 | #X restore 29 15 pd doc-text;
16 | #X obj 53 300 o.display 100 27;
17 | #X obj 53 387 o.display 100 27;
18 | #X obj 53 347 o.if /foo < 10, f 25;
19 | #X obj 200 388 o.display 100 27;
20 | #X connect 0 0 1 0;
21 | #X connect 1 0 4 0;
22 | #X connect 3 0 2 0;
23 | #X connect 4 0 6 0;
24 | #X connect 6 0 5 0;
25 | #X connect 6 1 7 0;
26 |
--------------------------------------------------------------------------------
/pd/o.intersection-help.pd:
--------------------------------------------------------------------------------
1 | #N canvas 623 46 800 479 10;
2 | #X obj 29 42 o.display 642 157;
3 | #N canvas 750 23 450 300 doc-text 0;
4 | #X obj 36 179 outlet;
5 | #X obj 36 58 loadbang;
6 | #X msg 36 85 doc;
7 | #X obj 36 149 o.route /doc;
8 | #X obj 36 110 o.intersection;
9 | #X connect 1 0 2 0;
10 | #X connect 2 0 4 0;
11 | #X connect 3 0 0 0;
12 | #X connect 4 0 3 0;
13 | #X restore 29 15 pd doc-text;
14 | #X obj 73 354 o.display 138 27;
15 | #X obj 73 256 o.compose 131 31 binhex b#2F666F6F203A205B312C20322C20335D
16 | b#2C0A2F626172203A205B342C20352C20 b#365D;
17 | #X obj 221 255 o.compose 222 31 binhex b#2F666F6F203A205B2271222C20226522
18 | b#2C202272222C202274222C202279225D b#2C0A2F626C6F6F203A205B2261222C20
19 | b#2262222C202263225D;
20 | #X obj 73 315 o.intersection;
21 | #X connect 1 0 0 0;
22 | #X connect 3 0 5 0;
23 | #X connect 4 0 5 1;
24 | #X connect 5 0 2 0;
25 |
--------------------------------------------------------------------------------
/pd/o.menu-help.pd:
--------------------------------------------------------------------------------
1 | #N canvas 666 281 606 300 10;
2 | #X obj 115 44 o.message 100 62 binhex b#2F666F6F202231220A2F626172202232220A2F7374657665202233220A2F6269
3 | b#6C6C79202234220A;
4 | #X obj 115 136 o.menu;
5 | #X obj 115 191 print L;
6 | #X obj 215 191 print R;
7 | #X obj 245 9 loadbang;
8 | #X msg 245 100 displaymode 1;
9 | #X msg 345 100 displaymode 0;
10 | #X connect 0 0 1 0;
11 | #X connect 1 0 2 0;
12 | #X connect 1 1 3 0;
13 | #X connect 4 0 5 0;
14 | #X connect 4 0 0 0;
15 | #X connect 5 0 1 0;
16 | #X connect 6 0 1 0;
17 |
--------------------------------------------------------------------------------
/pd/o.messageiterate-help.pd:
--------------------------------------------------------------------------------
1 | #N canvas 324 232 752 501 10;
2 | #X obj 84 303 o.messageiterate;
3 | #X obj 84 229 o.compose 248 57 binhex b#2F666F6F203A20312C0A2F626172203A
4 | b#20322C0A2F7374657665203A2022616C b#6962616261222C0A2F626F6F203A205B
5 | b#312C20322C20332C20342C20352C2022 b#6F74686572207374756666225D;
6 | #X obj 84 368 o.print;
7 | #X text 195 302 iterate messages in bundle;
8 | #X obj 94 340 print ---;
9 | #X obj 29 42 o.display 642 118;
10 | #N canvas 1023 23 450 300 doc-text 0;
11 | #X obj 36 179 outlet;
12 | #X obj 36 48 loadbang;
13 | #X obj 57 344 o.messageiterate;
14 | #X msg 36 85 doc;
15 | #X obj 36 149 o.route /doc;
16 | #X obj 36 110 o.messageiterate;
17 | #X connect 1 0 3 0;
18 | #X connect 3 0 5 0;
19 | #X connect 4 0 0 0;
20 | #X connect 5 0 4 0;
21 | #X restore 29 15 pd doc-text;
22 | #X connect 0 0 2 0;
23 | #X connect 0 0 4 0;
24 | #X connect 1 0 0 0;
25 | #X connect 6 0 5 0;
26 |
--------------------------------------------------------------------------------
/pd/o.pack-help.pd:
--------------------------------------------------------------------------------
1 | #N canvas 534 23 796 718 10;
2 | #X obj 32 40 o.display 642 144;
3 | #N canvas 750 23 450 300 doc-text 0;
4 | #X obj 36 179 outlet;
5 | #X obj 36 58 loadbang;
6 | #X msg 36 85 doc;
7 | #X obj 36 149 o.route /doc;
8 | #X obj 36 110 o.pack /foo;
9 | #X connect 1 0 2 0;
10 | #X connect 2 0 4 0;
11 | #X connect 3 0 0 0;
12 | #X connect 4 0 3 0;
13 | #X restore 32 13 pd doc-text;
14 | #X obj 66 302 o.pack /foo /bar /boom 0;
15 | #X floatatom 66 274 5 0 0 0 - - -, f 5;
16 | #X msg 136 272 1 2 3;
17 | #X text 57 229 left inlet triggers output;
18 | #X text 229 303 default arguments can be placed after OSC addresses
19 | ;
20 | #X obj 66 339 o.display 149 27;
21 | #X obj 69 519 o.display 185 27;
22 | #X obj 69 482 o.pack /foo /bar a b c;
23 | #X obj 69 433 o.compose 123 31 binhex b#2F626C6F6F203A205B312C20322C2033
24 | b#5D2C0A2F626C6F62203A205B342C2035 b#2C20365D;
25 | #X text 228 473 a bundle sent in to one of the inlets will become a
26 | nested bundle;
27 | #X connect 1 0 0 0;
28 | #X connect 2 0 7 0;
29 | #X connect 3 0 2 0;
30 | #X connect 4 0 2 1;
31 | #X connect 9 0 8 0;
32 | #X connect 10 0 9 0;
33 |
--------------------------------------------------------------------------------
/pd/o.print-help.pd:
--------------------------------------------------------------------------------
1 | #N canvas 624 93 758 444 10;
2 | #X obj 29 42 o.display 642 131;
3 | #N canvas 750 23 450 300 doc-text 0;
4 | #X obj 36 179 outlet;
5 | #X obj 36 58 loadbang;
6 | #X obj 57 344 o.messageiterate;
7 | #X msg 36 85 doc;
8 | #X obj 36 149 o.route /doc;
9 | #X obj 36 110 o.print;
10 | #X connect 1 0 3 0;
11 | #X connect 3 0 5 0;
12 | #X connect 4 0 0 0;
13 | #X connect 5 0 4 0;
14 | #X restore 29 15 pd doc-text;
15 | #X obj 88 244 o.compose 152 23 binhex b#2F666F6F203A205B312C20322C202262
16 | b#6172225D;
17 | #X obj 88 287 o.print;
18 | #X obj 88 331 o.display 152 27;
19 | #X obj 309 249 o.compose 152 23 binhex b#2F666F6F203A205B312C20322C202262
20 | b#6172225D;
21 | #X obj 309 292 o.print foo;
22 | #X text 261 336 input is passed through to the outlet unchanged;
23 | #X connect 1 0 0 0;
24 | #X connect 2 0 3 0;
25 | #X connect 3 0 4 0;
26 | #X connect 5 0 6 0;
27 |
--------------------------------------------------------------------------------
/pd/o.printbytes-help.pd:
--------------------------------------------------------------------------------
1 | #N canvas 545 188 764 466 10;
2 | #X obj 29 42 o.display 642 131;
3 | #N canvas 750 23 450 300 doc-text 0;
4 | #X obj 36 179 outlet;
5 | #X obj 36 58 loadbang;
6 | #X obj 57 344 o.messageiterate;
7 | #X msg 36 85 doc;
8 | #X obj 36 149 o.route /doc;
9 | #X obj 36 110 o.printbytes;
10 | #X connect 1 0 3 0;
11 | #X connect 3 0 5 0;
12 | #X connect 4 0 0 0;
13 | #X connect 5 0 4 0;
14 | #X restore 29 15 pd doc-text;
15 | #X obj 73 271 o.printbytes;
16 | #X obj 73 228 o.compose 279 23 binhex b#2F666F6F203A205B31322C2022626172
17 | b#222C2038392E3333332C20222F626172 b#222C2032355D;
18 | #X obj 73 310 o.display 237 27;
19 | #X text 67 368 input is passed through to the outlet;
20 | #X connect 1 0 0 0;
21 | #X connect 2 0 4 0;
22 | #X connect 3 0 2 0;
23 |
--------------------------------------------------------------------------------
/pd/o.route-help.pd:
--------------------------------------------------------------------------------
1 | #N canvas 368 23 961 587 10;
2 | #X obj 24 35 o.display 858 157;
3 | #N canvas 216 32 450 300 doc-text 0;
4 | #X obj 36 58 loadbang;
5 | #X obj 36 179 outlet;
6 | #X msg 36 85 doc;
7 | #X obj 36 149 o.route /doc;
8 | #X obj 36 110 o.route /foo;
9 | #X connect 0 0 2 0;
10 | #X connect 2 0 4 0;
11 | #X connect 3 0 1 0;
12 | #X connect 4 0 3 0;
13 | #X restore 24 8 pd doc-text;
14 | #X floatatom 62 229 5 0 0 0 - - -, f 5;
15 | #X obj 62 248 o.pack /mysynth/2/gain /mysynth/2/freq 440 /nada rien
16 | ;
17 | #X obj 173 304 o.route /mysynth;
18 | #X obj 56 342 o.display 100 27;
19 | #X obj 266 349 o.display 100 27;
20 | #X obj 173 390 o.route /1 /2, f 54;
21 | #X floatatom 411 229 5 0 0 0 - - -, f 5;
22 | #X obj 411 248 o.pack /mysynth/*/freq /mysynth/*/gain 0.5 /nada rien
23 | ;
24 | #X obj 207 431 o.display 100 27;
25 | #X obj 362 431 o.display 100 27;
26 | #X obj 174 489 o.route /freq /gain;
27 | #X floatatom 174 520 5 0 0 0 - - -, f 5;
28 | #X floatatom 229 520 5 0 0 0 - - -, f 5;
29 | #X obj 333 489 o.route /freq /gain;
30 | #X floatatom 333 520 5 0 0 0 - - -, f 5;
31 | #X floatatom 388 520 5 0 0 0 - - -, f 5;
32 | #X text 288 306 o.route strips off the portion of the address that
33 | matched;
34 | #X text 379 353 unmatched (delegation);
35 | #X connect 1 0 0 0;
36 | #X connect 2 0 3 0;
37 | #X connect 3 0 4 0;
38 | #X connect 4 0 5 0;
39 | #X connect 4 0 7 0;
40 | #X connect 4 1 6 0;
41 | #X connect 7 0 10 0;
42 | #X connect 7 0 12 0;
43 | #X connect 7 1 11 0;
44 | #X connect 7 1 15 0;
45 | #X connect 8 0 9 0;
46 | #X connect 9 0 4 0;
47 | #X connect 12 0 13 0;
48 | #X connect 12 1 14 0;
49 | #X connect 15 0 16 0;
50 | #X connect 15 1 17 0;
51 |
--------------------------------------------------------------------------------
/pd/o.schedule-help.pd:
--------------------------------------------------------------------------------
1 | #N canvas 201 65 921 687 10;
2 | #X obj 246 224 o.schedule /time/activate;
3 | #X obj 246 306 o.timetag /time/activated;
4 | #X obj 246 338 o.expr /time/diff = /time/activated - /time/activate
5 | ;
6 | #X obj 246 153 o.timetag /time/acquired;
7 | #X msg 154 144 clear;
8 | #X obj 773 258 o.print queue-full;
9 | #X text 441 303 late bundles come out second outlet (from left) \,
10 | here /time/diff tells us how late the bundle is;
11 | #X obj 249 63 hsl 128 15 0 127 0 0 empty empty empty -2 -8 0 10 -262144
12 | -1 -1 6400 1;
13 | #X obj 246 90 o.pack /slider;
14 | #X obj 246 261 o.expr /late = fase;
15 | #X obj 379 261 o.expr /late = true;
16 | #X obj 509 261 o.expr /late = true \, /immediate = false;
17 | #X obj 246 455 o.route /slider;
18 | #X obj 249 487 hsl 128 15 0 127 0 0 empty empty empty -2 -8 0 10 -262144
19 | -1 -1 6400 1;
20 | #X obj 380 379 o.compose 310 88 binhex b#2F736C69646572203A2036342E2C0A2F
21 | b#74696D652F6163717569726564203A20 b#323031342D30372D32395430303A3534
22 | b#3A34362E3937313238335A2C0A2F7469 b#6D652F6163746976617465203A203230
23 | b#31342D30372D32395430303A35343A34 b#362E3937313238335A2C0A2F6C617465
24 | b#203A20747275652C0A2F74696D652F61 b#6374697661746564203A20323031342D
25 | b#30372D32395430303A35343A34362E39 b#37313332315A2C0A2F74696D652F6469
26 | b#6666203A20332E3730303033652D3035 b#;
27 | #X obj 246 184 o.expr /time/activate = /time/acquired + 0.5;
28 | #X connect 0 0 9 0;
29 | #X connect 0 1 10 0;
30 | #X connect 0 2 11 0;
31 | #X connect 0 3 5 0;
32 | #X connect 1 0 2 0;
33 | #X connect 2 0 12 0;
34 | #X connect 2 0 14 1;
35 | #X connect 3 0 15 0;
36 | #X connect 4 0 0 0;
37 | #X connect 7 0 8 0;
38 | #X connect 8 0 3 0;
39 | #X connect 9 0 1 0;
40 | #X connect 10 0 1 0;
41 | #X connect 11 0 1 0;
42 | #X connect 12 0 13 0;
43 | #X connect 15 0 0 0;
44 |
--------------------------------------------------------------------------------
/pd/o.select-help.pd:
--------------------------------------------------------------------------------
1 | #N canvas 462 226 796 511 10;
2 | #X floatatom 251 185 5 0 0 0 - - -, f 5;
3 | #X msg 309 184 testo;
4 | #X floatatom 375 140 5 0 0 0 - - -, f 5;
5 | #X msg 384 180 /foo/10 \$1;
6 | #X msg 142 144 1 2 3 foo 5 6;
7 | #X msg 476 183 /bar \$1;
8 | #X floatatom 472 156 5 0 0 0 - - -, f 5;
9 | #X floatatom 210 50 5 0 0 0 - - -, f 5;
10 | #X obj 111 262 print;
11 | #X obj 214 31 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
12 | -1;
13 | #X obj 208 82 o.pack /postbar;
14 | #X obj 162 269 o.print pack_monitor;
15 | #X obj 252 232 o.pack /foo;
16 | #X floatatom 546 154 5 0 0 0 - - -, f 5;
17 | #X msg 550 181 /bob \$1;
18 | #X obj 333 270 o.select /foo /bar;
19 | #X obj 448 316 o.print unmatched;
20 | #X obj 222 332 o.compose 100 23 binhex b#2F666F6F2F3130203A2033372E
21 | ;
22 | #X obj 336 335 o.compose 100 23 binhex b#2F626172203A20352E;
23 | #X msg 453 239 set 2 /bob;
24 | #X msg 539 238 set 2 /bar;
25 | #X connect 0 0 12 0;
26 | #X connect 1 0 12 0;
27 | #X connect 2 0 3 0;
28 | #X connect 3 0 15 0;
29 | #X connect 4 0 12 0;
30 | #X connect 5 0 15 0;
31 | #X connect 6 0 5 0;
32 | #X connect 7 0 10 0;
33 | #X connect 9 0 7 0;
34 | #X connect 10 0 12 0;
35 | #X connect 12 0 8 0;
36 | #X connect 12 0 11 0;
37 | #X connect 12 0 15 0;
38 | #X connect 13 0 14 0;
39 | #X connect 14 0 15 0;
40 | #X connect 15 0 17 1;
41 | #X connect 15 1 18 1;
42 | #X connect 15 2 16 0;
43 | #X connect 19 0 15 0;
44 | #X connect 20 0 15 0;
45 |
--------------------------------------------------------------------------------
/pd/o.timetag-help.pd:
--------------------------------------------------------------------------------
1 | #N canvas 618 212 450 300 10;
2 | #X floatatom 118 72 5 0 0 0 - - -;
3 | #X obj 118 116 o.pack /foo;
4 | #X obj 118 165 o.timetag /timetag;
5 | #X obj 118 203 o.print;
6 | #X connect 0 0 1 0;
7 | #X connect 1 0 2 0;
8 | #X connect 2 0 3 0;
9 |
--------------------------------------------------------------------------------
/pd/o.union-help.pd:
--------------------------------------------------------------------------------
1 | #N canvas 859 292 450 300 10;
2 | #X floatatom 87 15 5 0 0 0 - - -;
3 | #X floatatom 177 15 5 0 0 0 - - -;
4 | #X floatatom 266 16 5 0 0 0 - - -;
5 | #X obj 88 44 o.pack /foo;
6 | #X obj 178 44 o.pack /foo /bar;
7 | #X obj 99 181 o.print;
8 | #X obj 88 114 o.union;
9 | #X connect 0 0 3 0;
10 | #X connect 1 0 4 0;
11 | #X connect 2 0 4 1;
12 | #X connect 3 0 6 0;
13 | #X connect 4 0 6 1;
14 | #X connect 6 0 5 0;
15 |
--------------------------------------------------------------------------------
/pd/o.var-help.pd:
--------------------------------------------------------------------------------
1 | #N canvas 738 376 762 300 10;
2 | #X obj 351 109 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144
3 | -1 -1;
4 | #X floatatom 411 97 5 0 0 0 - - -;
5 | #X floatatom 268 96 5 0 0 0 - - -;
6 | #X msg 197 137 /fooM \$1;
7 | #X floatatom 216 91 5 0 0 0 - - -;
8 | #X obj 262 137 o.pack /foo0;
9 | #X obj 352 186 o.var;
10 | #X obj 352 208 o.print;
11 | #X obj 405 138 o.pack /foo1;
12 | #X connect 0 0 6 0;
13 | #X connect 1 0 8 0;
14 | #X connect 2 0 5 0;
15 | #X connect 3 0 6 0;
16 | #X connect 4 0 3 0;
17 | #X connect 5 0 6 0;
18 | #X connect 6 0 7 0;
19 | #X connect 8 0 6 1;
20 |
--------------------------------------------------------------------------------
/pd/odot-object-list.pd:
--------------------------------------------------------------------------------
1 | #N canvas 40 22 781 792 10;
2 | #X obj 112 95 o.atomize;
3 | #X obj 112 63 o.append;
4 | #X obj 112 278 o.difference;
5 | #X obj 112 219 o.cond;
6 | #X obj 549 523 o.expr;
7 | #X obj 112 157 o.change;
8 | #X obj 112 305 o.explode;
9 | #X obj 112 337 o.flatten;
10 | #X obj 112 369 o.if /foo == 1;
11 | #X obj 112 401 o.intersection;
12 | #X obj 111 432 o.mappatch;
13 | #X obj 111 507 o.menu;
14 | #X obj 547 579 o.message 100 23 binhex b#0A;
15 | #X obj 333 57 o.pack /foo;
16 | #X obj 548 552 o.pak /foo;
17 | #X obj 333 125 o.prepend;
18 | #X obj 333 159 o.print;
19 | #X obj 333 193 o.printbytes;
20 | #X obj 333 227 o.route /foo;
21 | #X obj 333 261 o.schedule /timetag;
22 | #X obj 333 295 o.select;
23 | #X obj 581 300 o.table;
24 | #X obj 333 363 o.timetag;
25 | #X obj 333 397 o.union;
26 | #X obj 333 465 o.var;
27 | #X obj 333 431 o.unless /foo > 0;
28 | #X obj 333 499 o.when /foo < 0;
29 | #X text 69 20 list of odot objects;
30 | #X obj 112 463 o.messageiterate;
31 | #X obj 111 556 o.compose 100 23 binhex b#;
32 | #X obj 115 618 o.expr.codebox 100 36 binhex b#;
33 | #X obj 116 691 o.display 100 27;
34 | #X text 544 499 deprecated:;
35 | #X text 124 532 o.compose;
36 | #X text 124 597 o.expr.codebox;
37 | #X text 131 668 o.display;
38 | #X text 127 489 o.menu;
39 | #X obj 112 126 o.bundle;
40 | #X obj 112 247 o.context;
41 | #X obj 111 186 o.collect;
42 | #X text 583 270 dev:;
43 |
--------------------------------------------------------------------------------
/release-excludes.txt:
--------------------------------------------------------------------------------
1 | */.git/*
2 | */.gitignore
3 | */src/*
4 | */make-release.sh
5 | */dev-internal/*
6 | */testing/*
7 | */release-excludes.txt
8 |
--------------------------------------------------------------------------------
/src/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | English
7 | CFBundleExecutable
8 | $(PRODUCT_NAME)
9 | CFBundleIconFile
10 |
11 | CFBundleIdentifier
12 | $(PRODUCT_BUNDLE_IDENTIFIER)
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundlePackageType
16 | iLaX
17 | CFBundleSignature
18 | ????
19 | CFBundleVersion
20 | 1.0
21 | CSResourcesFileMapped
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/src/Makefile:
--------------------------------------------------------------------------------
1 | BUILDTARGETS = mac all
2 | OTHERTARGETS = clean install archive win win64
3 |
4 | UNAME = $(shell uname)
5 |
6 | ifeq ($(UNAME), Darwin)
7 | MAKEFILE = Makefile.mac.mk
8 | else
9 | MAKEFILE = Makefile.win.mk
10 | endif
11 |
12 | $(BUILDTARGETS):
13 | @$(MAKE) -f $(MAKEFILE)
14 |
15 | $(OTHERTARGETS):
16 | @$(MAKE) -f $(MAKEFILE) $@
17 |
18 | .PHONY: $(BUILDTARGETS) $(CLEANTARGETS)
19 |
--------------------------------------------------------------------------------
/src/Makefile.mac.mk:
--------------------------------------------------------------------------------
1 | all: $(CURRENT_VERSION_FILE)
2 | xcodebuild -target "Build all" -project odot.xcodeproj -configuration Release
3 |
4 | max-all: $(CURRENT_VERSION_FILE)
5 | xcodebuild -target "Build all Max" -project odot.xcodeproj -configuration Release
6 |
7 | max-dev: $(CURRENT_VERSION_FILE)
8 | xcodebuild -target "Build all Max Unstable" -project odot.xcodeproj -configuration Release
9 |
10 | max-deprecated: $(CURRENT_VERSION_FILE)
11 | xcodebuild -target "Build all Max Deprecated" -project odot.xcodeproj -configuration Release
12 |
13 | pd-all: $(CURRENT_VERSION_FILE)
14 | xcodebuild -target "Build all PD" -project odot.xcodeproj -configuration Release
15 |
16 | pd-dev: $(CURRENT_VERSION_FILE)
17 | xcodebuild -target "Build all PD Unstable" -project odot.xcodeproj -configuration Release
18 |
19 | pd-deprecated: $(CURRENT_VERSION_FILE)
20 | xcodebuild -target "Build all PD Deprecated" -project odot.xcodeproj -configuration Release
21 |
22 | .PHONY: clean
23 | clean:
24 | rm -rf build ../externals ../dev/externals ../deprecated/externals
25 | rm -rf ../pd/*.pd_darwin ../pd/dev/*.pd_darwin ../pd/deprecated/*.pd_darwin
26 | rm -f $(CURRENT_VERSION_FILE)
27 |
28 | $(CURRENT_VERSION_FILE):
29 | sh odot_current_version.sh
30 | # echo "#define ODOT_VERSION \""`git describe --tags --long`"\"" > $(CURRENT_VERSION_FILE)
31 | # echo "#define ODOT_COMPILE_DATE \""`date`"\"" >> $(CURRENT_VERSION_FILE)
32 |
--------------------------------------------------------------------------------
/src/Makefile.win.mk:
--------------------------------------------------------------------------------
1 | EXTERNALS_BASENAMES = o.append \
2 | o.atomize \
3 | o.change \
4 | o.collect \
5 | o.cond \
6 | o.compose \
7 | o.dict \
8 | o.difference \
9 | o.display \
10 | o.downcast \
11 | o.explode \
12 | o.expr.codebox \
13 | o.flatten \
14 | o.if \
15 | o.intersection \
16 | o.listenumerate \
17 | o.messageiterate \
18 | o.pack \
19 | o.prepend \
20 | o.print \
21 | o.printbytes \
22 | o.route \
23 | o.schedule \
24 | o.select \
25 | o.timetag \
26 | o.union \
27 | o.var
28 |
29 | DEPRECATED_BASENAMES = o.edge~ \
30 | o.expr \
31 | o.message \
32 | o.pak \
33 | o.unless \
34 | o.when
35 |
36 | DEV_BASENAMES = \
37 | o.context \
38 | o.gui.attach \
39 | o.mappatch \
40 | o.schedule~ \
41 | o.slip.decode \
42 | o.slip.encode \
43 | o.snapshot~ \
44 | o.table \
45 | o.timetag.join~ \
46 | o.timetag.split~ \
47 | o.timetag~ \
48 | o.validate
49 |
50 | EXTERNALS_MXE64 = $(foreach f, $(EXTERNALS_BASENAMES), $(f).mxe64)
51 | DEPRECATED_MXE64 = $(foreach f, $(DEPRECATED_BASENAMES), $(f).mxe64)
52 | DEV_MXE64 = $(foreach f, $(DEV_BASENAMES), $(f).mxe64)
53 |
54 | ALL_OBJECTS_BASENAMES = $(EXTERNALS_BASENAMES) $(DEPRECATED_BASENAMES) $(DEV_BASENAMES)
55 | # ALL_OBJECTS_CFILES = $(foreach f, $(ALL_OBJECTS_BASENAMES), $(f)/$(f).c)
56 | ALL_OBJECTS_MXE64 = $(EXTERNALS_MXE64) $(DEPRECATED_MXE64) $(DEV_MXE64)
57 |
58 | VPATH = $(ALL_OBJECTS_BASENAMES)
59 |
60 | C74SUPPORT = ../../max-sdk-base/c74support
61 | MAX_INCLUDES = $(C74SUPPORT)/max-includes
62 | MSP_INCLUDES = $(C74SUPPORT)/msp-includes
63 |
64 | PLATFORM = Windows
65 |
66 | win64: EXT = .mxe64
67 | win64: CC = /mingw64/bin/x86_64-w64-mingw32-gcc
68 | win64: LD = $(CC)
69 | win64: LIBS = -L../../libomax -lomax -L$(MAX_INCLUDES) -L$(MSP_INCLUDES) -lx64/MaxAPI -lx64/MaxAudio -L../../libo -lo -lws2_32 $(C74SUPPORT)/max-includes/x64/MaxAPI.lib
70 |
71 | INCLUDES = -I$(MAX_INCLUDES) -I$(MSP_INCLUDES) -I../../libo -I../../libomax -Iinclude
72 | CFLAGS += -DWIN_VERSION -DWIN_EXT_VERSION -U__STRICT_ANSI__ -U__ANSI_SOURCE -std=c99 -O3 -DNO_TRANSLATION_SUPPORT -DWIN32_LEAN_AND_MEAN
73 | LDFLAGS = -shared -static -static-libgcc
74 |
75 | CURRENT_VERSION_FILE = include/odot_current_version.h
76 |
77 | # clean-obj:
78 | # rm -f *.o
79 |
80 | win64: $(ALL_OBJECTS_MXE64)
81 | $(MAKE) install
82 |
83 | commonsyms.o:
84 | $(CC) $(CFLAGS) $(INCLUDES) -c -o commonsyms.o $(MAX_INCLUDES)/common/commonsyms.c
85 |
86 | pqops.o:
87 | $(CC) $(CFLAGS) $(INCLUDES) -Io.schedule -c -o pqops.o o.schedule/pqops.c
88 |
89 | %.mxe64: %.c commonsyms.o pqops.o $(CURRENT_VERSION_FILE)
90 | $(CC) $(CFLAGS) $(INCLUDES) -c -o $*.o $<
91 | $(LD) $(LDFLAGS) -o $*$(EXT) $*.o commonsyms.o pqops.o $(LIBS)
92 |
93 | .PHONY: install
94 | install:
95 | [ ! -d "../externals" ] && mkdir ../externals; mv $(EXTERNALS_MXE64) ../externals
96 | [ ! -d "../deprecated/externals" ] && mkdir ../deprecated/externals; mv $(DEPRECATED_MXE64) ../deprecated/externals
97 | [ ! -d "../dev/externals" ] && mkdir ../dev/externals; mv $(DEV_MXE64) ../dev/externals
98 |
99 | .PHONY: clean
100 | clean:
101 | rm -rf *.mxe64 *.o
102 | rm -rf ../externals ../deprecated/externals ../dev/externals $(CURRENT_VERSION_FILE)
103 |
104 | $(CURRENT_VERSION_FILE):
105 | echo "#define ODOT_VERSION \""`git describe --tags --long`"\"" > $(CURRENT_VERSION_FILE)
106 | echo "#define ODOT_COMPILE_DATE \""`date`"\"" >> $(CURRENT_VERSION_FILE)
107 |
--------------------------------------------------------------------------------
/src/Max-config.xcconfig:
--------------------------------------------------------------------------------
1 | //
2 | // Max-config.xcconfig
3 | // odot
4 | //
5 | // Created by John MacCallum on 6/22/14.
6 | // Copyright (c) 2014 edu.berkeley.cnmat. All rights reserved.
7 | //
8 |
9 | DSTROOT = $(SRCROOT)/..
10 | INSTALL_PATH = externals
11 | DEPLOYMENT_POSTPROCESSING = YES
12 | DEPLOYMENT_LOCATION = YES
13 |
14 |
--------------------------------------------------------------------------------
/src/Max-deprecated.xcconfig:
--------------------------------------------------------------------------------
1 | //
2 | // Max-config.xcconfig
3 | // odot
4 | //
5 | // Created by John MacCallum on 6/22/14.
6 | // Copyright (c) 2014 edu.berkeley.cnmat. All rights reserved.
7 | //
8 |
9 | DSTROOT = $(SRCROOT)/..
10 | INSTALL_PATH = deprecated/externals
11 | DEPLOYMENT_POSTPROCESSING = YES
12 | DEPLOYMENT_LOCATION = YES
13 | OTHER_CFLAGS=-DODOT_DEPRECATED -g -DNO_TRANSLATION_SUPPORT
14 |
--------------------------------------------------------------------------------
/src/Max-unstable.xcconfig:
--------------------------------------------------------------------------------
1 | //
2 | // Max-config.xcconfig
3 | // odot
4 | //
5 | // Created by John MacCallum on 6/22/14.
6 | // Copyright (c) 2014 edu.berkeley.cnmat. All rights reserved.
7 | //
8 |
9 | DSTROOT = $(SRCROOT)/..
10 | INSTALL_PATH = dev/externals
11 | DEPLOYMENT_POSTPROCESSING = YES
12 | DEPLOYMENT_LOCATION = YES
13 | OTHER_CFLAGS=-DODOT_UNSTABLE -g -DNO_TRANSLATION_SUPPORT
14 |
--------------------------------------------------------------------------------
/src/PD-config.xcconfig:
--------------------------------------------------------------------------------
1 | //
2 | // Config.xcconfig
3 | // odot
4 | //
5 | // Created by John MacCallum on 6/22/14.
6 | // Copyright (c) 2014 edu.berkeley.cnmat. All rights reserved.
7 | //
8 |
9 | DSTROOT = $(SRCROOT)/../pd
10 | INSTALL_PATH = /
11 | DEPLOYMENT_POSTPROCESSING = YES
12 | DEPLOYMENT_LOCATION = YES
13 |
--------------------------------------------------------------------------------
/src/PD-deprecated.xcconfig:
--------------------------------------------------------------------------------
1 | //
2 | // Config.xcconfig
3 | // odot
4 | //
5 | // Created by John MacCallum on 6/22/14.
6 | // Copyright (c) 2014 edu.berkeley.cnmat. All rights reserved.
7 | //
8 |
9 | DSTROOT = $(SRCROOT)/../pd
10 | INSTALL_PATH = deprecated
11 | DEPLOYMENT_POSTPROCESSING = YES
12 | DEPLOYMENT_LOCATION = YES
13 |
--------------------------------------------------------------------------------
/src/PD-unstable.xcconfig:
--------------------------------------------------------------------------------
1 | //
2 | // Config.xcconfig
3 | // odot
4 | //
5 | // Created by John MacCallum on 6/22/14.
6 | // Copyright (c) 2014 edu.berkeley.cnmat. All rights reserved.
7 | //
8 |
9 | DSTROOT = $(SRCROOT)/../pd
10 | INSTALL_PATH = dev
11 | DEPLOYMENT_POSTPROCESSING = YES
12 | DEPLOYMENT_LOCATION = YES
13 |
--------------------------------------------------------------------------------
/src/README.md:
--------------------------------------------------------------------------------
1 | # Odot for Max / MSP on Mac OS X and Windows, and PD on Mac OS X,
2 | Windows, and Linux
3 |
4 | ## Prerequisites
5 |
6 | The odot objects rely on two libraries, `libo`, and `libomax / libopd`,
7 | as well as the Max and / or PD SDKs.
8 |
9 | * Max / MSP SDK (only necessary if building externals for Max):
10 | [https://github.com/cycling74/max-sdk-base](https://github.com/cycling74/max-sdk-base)
11 | * PD source (only necessary if building externals for PD):
12 | [https://github.com/pure-data/pure-data](https://github.com/pure-data/pure-data)
13 | * libo: [https://github.com/CNMAT/libo](https://github.com/CNMAT/libo)
14 | * libomax: [https://github.com/CNMAT/libomax](https://github.com/CNMAT/libomax)
15 |
16 | Please see the instructions in the readme for building `libo` and `libomax`.
17 |
18 | The dependencies should all be placed in the same folder as CNMAT-odot:
19 |
20 | ```
21 | $ ls
22 | CNMAT-odot libo libomax max-sdk pure-data
23 | ```
24 |
25 | ## Odot for Max / MSP
26 |
27 | ### Mac OS X
28 |
29 | ```
30 | $ cd
31 | $ make
32 | ```
33 |
34 | Alternatively, the objects can be made in Xcode using by opening
35 | `odot.xcodeproj`.
36 |
37 | ### Windows 10
38 |
39 | The Windows 10 build is done using MinGW under MSYS2. Make sure
40 | you have installed the 64-bit GCC toolchain
41 | (`pacman -S mingw-w64-x86_64-toolchain`).
42 | (If you have already successfully built `libo` and `libomax`,
43 | you're good to go.)
44 |
45 | ```
46 | $ cd
47 | $ make win64
48 | ```
49 |
50 | Note that 32-bit builds on Windows are not supported.
51 |
52 | ## Odot for PD
53 |
54 | ### Mac OS X
55 |
56 | ```
57 | $ cd
58 | $ make
59 | ```
60 |
61 | ### Windows 10
62 |
63 | The Windows 10 build is done using MinGW under MSYS2. Make sure
64 | you have installed the 64-bit GCC toolchain
65 | (`pacman -S mingw-w64-x86_64-toolchain`).
66 | (If you have already successfully built `libo` and `libomax`,
67 | you're good to go.)
68 |
69 | ```
70 | $ cd
71 | $ ./copy-src-files.sh
72 | $ make
73 | ```
74 |
75 | ### Linux
76 |
77 | ```
78 | $ cd
79 | $ ./copy-src-files.sh
80 | $ make
81 | ```
82 |
--------------------------------------------------------------------------------
/src/include/odot.c:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | #include "m_pd.h"
5 |
6 | static t_class *odot_class;
7 |
8 | static void *odot_new(void)
9 | {
10 | t_object *x = (t_object *)pd_new(odot_class);
11 |
12 | return (x);
13 | }
14 |
15 | int setup_o0x2eappend(void);
16 | int setup_o0x2eatomize(void);
17 | int setup_o0x2echange(void);
18 | int setup_o0x2ecollect(void);
19 | int setup_o0x2econd(void);
20 | int setup_o0x2econtext(void);
21 | int setup_o0x2edifference(void);
22 | int setup_o0x2edowncast(void);
23 | int setup_o0x2eexplode(void);
24 | int setup_o0x2eexpr(void);
25 | int setup_o0x2eexpr0x2ecodebox(void);
26 | int setup_o0x2eflatten(void);
27 | int setup_o0x2eif(void);
28 | int setup_o0x2eintersection(void);
29 | int setup_o0x2emessageiterate(void);
30 | int setup_o0x2elistenumerate(void);
31 | int setup_o0x2emappatch(void);
32 | int setup_o0x2emessage(void);
33 | int setup_o0x2epack(void);
34 | int setup_o0x2epak(void);
35 | int setup_o0x2eprepend(void);
36 | int setup_o0x2eprint(void);
37 | int setup_o0x2eprintbytes(void);
38 | int setup_o0x2eroute(void);
39 | int setup_o0x2eschedule(void);
40 | int setup_o0x2eselect(void);
41 | //int setup_o0x2eslip.decode(void);
42 | //int setup_o0x2eslip.encode(void);
43 | int setup_o0x2eslip0x2edecode(void);
44 | int setup_o0x2eslip0x2eencode(void);
45 | int setup_o0x2etable(void);
46 | int setup_o0x2etimetag(void);
47 | int setup_o0x2eunion(void);
48 | int setup_o0x2eunless(void);
49 | int setup_o0x2evalidate(void);
50 | int setup_o0x2evar(void);
51 | int setup_o0x2ewhen(void);
52 |
53 | /* ------------------------ setup routine ------------------------- */
54 |
55 | void odot_setup(void)
56 | {
57 | odot_class = class_new(gensym("odot"), odot_new, 0,
58 | sizeof(t_object), CLASS_NOINLET, 0);
59 |
60 | setup_o0x2eappend();
61 | setup_o0x2eatomize();
62 | setup_o0x2echange();
63 | setup_o0x2ecollect();
64 | setup_o0x2econd();
65 | setup_o0x2econtext();
66 | setup_o0x2edifference();
67 | setup_o0x2edowncast();
68 | setup_o0x2eexplode();
69 | setup_o0x2eexpr();
70 | setup_o0x2eexpr0x2ecodebox();
71 | setup_o0x2eflatten();
72 | setup_o0x2eif();
73 | setup_o0x2eintersection();
74 | setup_o0x2emessageiterate();
75 | setup_o0x2elistenumerate();
76 | setup_o0x2emappatch();
77 | setup_o0x2emessage();
78 | setup_o0x2epack();
79 | setup_o0x2epak();
80 | setup_o0x2eprepend();
81 | setup_o0x2eprint();
82 | setup_o0x2eprintbytes();
83 | setup_o0x2eroute();
84 | //setup_o0x2eschedule();
85 | setup_o0x2eselect();
86 | setup_o0x2eslip0x2edecode();
87 | setup_o0x2eslip0x2eencode();
88 | setup_o0x2etable();
89 | setup_o0x2etimetag();
90 | setup_o0x2eunion();
91 | setup_o0x2eunless();
92 | setup_o0x2evalidate();
93 | setup_o0x2evar();
94 | setup_o0x2ewhen();
95 |
96 | post("odot library loaded! (c)2014 cnmat, uc berkeley");
97 | }
98 |
--------------------------------------------------------------------------------
/src/include/odot_version.h:
--------------------------------------------------------------------------------
1 | #ifndef __ODOT_VERSION_H__
2 | #define __ODOT_VERSION_H__
3 |
4 | #ifdef OMAX_PD_VERSION
5 | #include "m_pd.h"
6 | #else
7 | #include "ext.h"
8 | #endif
9 |
10 | #include "odot_current_version.h"
11 | #include "report_compiler.h"
12 | //#define ODOT_VERSION "1.2.11"
13 | //#define ODOT_RELEASE_DATE "[2012-12-21 Fri]"
14 | #define ODOT_COPYRIGHT_YEARS "2008-21"
15 | #define ODOT_AUTHORS "John MacCallum, Adrian Freed, Rama Gottfried, Ilya Rostovtsev"
16 | #define ODOT_COPYRIGHT_STRING "Regents of the University of California. All rights reserved."
17 |
18 | void __odot_version(void)
19 | {
20 | post("odot version %s (compiled %s)", ODOT_VERSION, ODOT_COMPILE_DATE);
21 | post("by %s\n", ODOT_AUTHORS);
22 |
23 | #ifdef OMAX_PD_VERSION
24 | post("alpha pd version");
25 | #endif
26 | post("Copyright (c) %s %s", ODOT_COPYRIGHT_YEARS, ODOT_COPYRIGHT_STRING);
27 | }
28 |
29 | void odot_version(void *x)
30 | {
31 | if(!x){
32 | // called from main()--post only once
33 | if(!(gensym("odot_version_has_been_posted")->s_thing)){
34 | __odot_version();
35 | gensym("odot_version_has_been_posted")->s_thing = (t_object *)1;
36 | }
37 | }else{
38 | // called in response to the version message
39 | __odot_version();
40 | post_compiler();
41 | }
42 | #ifdef ODOT_DEPRECATED
43 | if(x){
44 | object_error((t_object *)x, "warning: %s is no longer supported and may be removed from the release at any time", OMAX_DOC_NAME);
45 | }else{
46 | //error("warning: %s is no longer supported and may be removed from the release at any time", OMAX_DOC_NAME);
47 | }
48 | #endif
49 | }
50 | #define ODOT_PRINT_VERSION odot_version(NULL);
51 |
52 | #endif
53 |
--------------------------------------------------------------------------------
/src/include/report_compiler.h:
--------------------------------------------------------------------------------
1 | #ifndef __REPORT_COMPILER_H__
2 | #define __REPORT_COMPILER_H__
3 |
4 | #ifdef __clang__
5 |
6 | #define CNMAT_HAVE_COMPILER 1
7 | #define CNMAT_COMPILER "clang (llvm)"
8 | #define CNMAT_COMPILER_MAJOR __clang_major__
9 | #define CNMAT_COMPILER_MINOR __clang_minor__
10 | #define CNMAT_COMPILER_PATCHLEVEL __clang_patchlevel__
11 |
12 | #elif defined __GNUC__
13 |
14 | #define CNMAT_HAVE_COMPILER 1
15 | #define CNMAT_COMPILER "gcc"
16 | #define CNMAT_COMPILER_MAJOR __GNUC__
17 | #define CNMAT_COMPILER_MINOR __GNUC_MINOR__
18 | #define CNMAT_COMPILER_PATCHLEVEL __GNUC_PATCHLEVEL__
19 |
20 | #else
21 |
22 | #define CNMAT_COMPILER "unknown compiler"
23 | #define CNMAT_COMPILER_MAJOR
24 | #define CNMAT_COMPILER_MINOR
25 | #define CNMAT_COMPILER_PATCHLEVEL
26 |
27 | #endif
28 |
29 | void post_compiler(void)
30 | {
31 | #ifdef CNMAT_HAVE_COMPILER
32 | post("Compiled on %s at %s with %s version %d.%d.%d", __DATE__, __TIME__, CNMAT_COMPILER, CNMAT_COMPILER_MAJOR, CNMAT_COMPILER_MINOR, CNMAT_COMPILER_PATCHLEVEL);
33 | #else
34 | post("Compiled by something other than clang or gcc");
35 | #endif
36 | }
37 |
38 | #endif
39 |
--------------------------------------------------------------------------------
/src/o.O/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CNMAT/CNMAT-odot/ac753e280dcdc44b0e1aace9bc73714a025f0f35/src/o.O/.DS_Store
--------------------------------------------------------------------------------
/src/o.append/o.append.c:
--------------------------------------------------------------------------------
1 | /*
2 | Written by John MacCallum, The Center for New Music and Audio Technologies,
3 | University of California, Berkeley. Copyright (c) 2013, The Regents of
4 | the University of California (Regents).
5 | Permission to use, copy, modify, distribute, and distribute modified versions
6 | of this software and its documentation without fee and without a signed
7 | licensing agreement, is hereby granted, provided that the above copyright
8 | notice, this paragraph and the following two paragraphs appear in all copies,
9 | modifications, and distributions.
10 |
11 | IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
12 | SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING
13 | OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF REGENTS HAS
14 | BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
15 |
16 | REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
17 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
18 | PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED
19 | HEREUNDER IS PROVIDED "AS IS". REGENTS HAS NO OBLIGATION TO PROVIDE
20 | MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
21 |
22 | */
23 |
24 | #define APPEND
25 | #ifdef APPEND
26 | #define OMAX_DOC_NAME "o.append"
27 | #define OMAX_DOC_SHORT_DESC "Append an OSC address to every OSC address in a bundle"
28 | #define OMAX_DOC_LONG_DESC "o.append takes an OSC address as an argument and appends it to every address in the bundle."
29 | #define OMAX_DOC_INLETS_DESC (char *[]){"OSC packet"}
30 | #define OMAX_DOC_OUTLETS_DESC (char *[]){"OSC packet with argument appended"}
31 | #define OMAX_DOC_SEEALSO (char *[]){"o.prepend", "prepend", "append"}
32 | #endif
33 | #include "../o.prepend/o.prepend.c"
34 |
--------------------------------------------------------------------------------
/src/o.atomize/Makefile:
--------------------------------------------------------------------------------
1 | win: CFLAGS += -O3 -funroll-loops -DSPEW
2 | win: INCLUDES += -I../libo -I../libomax
3 | win: LIBDIRS += -L../libo -L../libomax
4 | win: LIBS += -lomax -lo
5 |
6 | include ../makefile.per-object
7 |
--------------------------------------------------------------------------------
/src/o.atomize/o.atomize.c:
--------------------------------------------------------------------------------
1 | #define ATOMIZE
2 | #ifdef ATOMIZE
3 | #define OMAX_DOC_NAME "o.atomize"
4 | #define OMAX_DOC_SHORT_DESC "Dispatch OSC messages according to an address hierarchy and convert them to Max messages."
5 | #define OMAX_DOC_SEEALSO (char *[]){"o.route", "o.select", "route"}
6 | #define OMAX_DOC_LONG_DESC "o.atomize does pattern matching on addresses contained in OSC packets. All messages in a bundle with addresses that match an address specified as an argument to o.atomize are bundled together and sent out the corresponding outlet with their addresses kept in tact and as Max messages. With no arguments, o.atomize simply iterates over the messages in a bundle sending them out as Max messages."
7 | #endif
8 | #include "../o.route/o.route.c"
9 |
--------------------------------------------------------------------------------
/src/o.bundle/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | English
7 | CFBundleExecutable
8 | o.bundle
9 | CFBundleIconFile
10 |
11 | CFBundleIdentifier
12 | edu.cnmat.berkeley.o.bundle
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundlePackageType
16 | iLaX
17 | CFBundleSignature
18 | ????
19 | CFBundleVersion
20 | 1.0
21 | CSResourcesFileMapped
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/src/o.change/Makefile:
--------------------------------------------------------------------------------
1 | win: CFLAGS += -O3 -funroll-loops
2 | win: INCLUDES += -I../libo -I../libomax
3 | win: LIBDIRS += -L../libo -L../libomax
4 | win: LIBS += -lomax -lo
5 |
6 | include ../makefile.per-object
7 |
--------------------------------------------------------------------------------
/src/o.change/o.change.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/src/o.change/o.change.xcodeproj/project.xcworkspace/xcuserdata/john.xcuserdatad/UserInterfaceState.xcuserstate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CNMAT/CNMAT-odot/ac753e280dcdc44b0e1aace9bc73714a025f0f35/src/o.change/o.change.xcodeproj/project.xcworkspace/xcuserdata/john.xcuserdatad/UserInterfaceState.xcuserstate
--------------------------------------------------------------------------------
/src/o.change/o.change.xcodeproj/xcuserdata/john.xcuserdatad/xcschemes/o.change.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
4 |
7 |
8 |
14 |
20 |
21 |
22 |
23 |
24 |
29 |
30 |
31 |
32 |
38 |
39 |
40 |
41 |
46 |
47 |
49 |
50 |
53 |
54 |
55 |
--------------------------------------------------------------------------------
/src/o.change/o.change.xcodeproj/xcuserdata/john.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | o.change.xcscheme
8 |
9 | orderHint
10 | 0
11 |
12 |
13 | SuppressBuildableAutocreation
14 |
15 | 8D01CCC60486CAD60068D4B7
16 |
17 | primary
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/src/o.collect/Makefile:
--------------------------------------------------------------------------------
1 | win: CFLAGS += -O3 -funroll-loops
2 | win: INCLUDES += -I../libo -I../libomax
3 | win: LIBDIRS += -L../libo -L../libomax
4 | win: LIBS += -lomax -lo
5 |
6 | include ../makefile.per-object
7 |
--------------------------------------------------------------------------------
/src/o.compose/Makefile:
--------------------------------------------------------------------------------
1 | win: CFLAGS += -O3 -funroll-loops
2 | win: INCLUDES += -I../libo -I../libomax
3 | win: LIBDIRS += -L../libo -L../libomax
4 | win: LIBS += -lomax -lo
5 |
6 | include ../makefile.per-object
7 |
8 |
--------------------------------------------------------------------------------
/src/o.cond/Makefile:
--------------------------------------------------------------------------------
1 | win: CFLAGS += -O3 -funroll-loops -DOIF
2 | win: INCLUDES += -I../libo -I../libomax
3 | win: LIBDIRS += -L../libo -L../libomax
4 | win: LIBS += -lomax -lo
5 |
6 | include ../makefile.per-object
7 |
--------------------------------------------------------------------------------
/src/o.cond/o.cond.c:
--------------------------------------------------------------------------------
1 | #define OCOND
2 | #if defined (OCOND)
3 |
4 | #define OMAX_DOC_NAME "o.cond"
5 |
6 | #define OMAX_DOC_SHORT_DESC "Route an OSC packet out an outlet based on the results of an expression"
7 | #define OMAX_DOC_LONG_DESC "o.cond creates one outlet for each expression separated by a comma. The bundle will come out the outlet that corresponds to the first expression that evaluates to true or non-zero."
8 | #define OMAX_DOC_INLETS_DESC (char *[]){"OSC packet containing addresses that the expression will be applied to"}
9 | #define OMAX_DOC_SEEALSO (char *[]){"o.expr.codebox", "o.if", "o.when", "o.unless", "o.callpatch", "expr", "jit.expr"}
10 | #endif
11 |
12 | #include "../o.expr/o.expr.c"
13 |
--------------------------------------------------------------------------------
/src/o.cond/o.cond.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/src/o.cond/o.cond.xcodeproj/project.xcworkspace/xcuserdata/john.xcuserdatad/UserInterfaceState.xcuserstate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CNMAT/CNMAT-odot/ac753e280dcdc44b0e1aace9bc73714a025f0f35/src/o.cond/o.cond.xcodeproj/project.xcworkspace/xcuserdata/john.xcuserdatad/UserInterfaceState.xcuserstate
--------------------------------------------------------------------------------
/src/o.cond/o.cond.xcodeproj/xcuserdata/john.xcuserdatad/xcschemes/o.if.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
4 |
7 |
8 |
14 |
20 |
21 |
22 |
23 |
24 |
29 |
30 |
31 |
32 |
40 |
41 |
42 |
43 |
49 |
50 |
52 |
53 |
56 |
57 |
58 |
--------------------------------------------------------------------------------
/src/o.cond/o.cond.xcodeproj/xcuserdata/john.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | o.if.xcscheme
8 |
9 | orderHint
10 | 0
11 |
12 |
13 | SuppressBuildableAutocreation
14 |
15 | 8D01CCC60486CAD60068D4B7
16 |
17 | primary
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/src/o.dict/Makefile:
--------------------------------------------------------------------------------
1 | win: CFLAGS += -O3 -funroll-loops
2 | win: INCLUDES += -I../libo -I../libomax
3 | win: LIBDIRS += -L../libo -L../libomax
4 | win: LIBS += -lomax -lo
5 |
6 | include ../makefile.per-object
7 |
--------------------------------------------------------------------------------
/src/o.difference/Makefile:
--------------------------------------------------------------------------------
1 | win: CFLAGS += -O3 -funroll-loops
2 | win: INCLUDES += -I../libo -I../libomax
3 | win: LIBDIRS += -L../libo -L../libomax
4 | win: LIBS += -lomax -lo
5 |
6 | include ../makefile.per-object
7 |
--------------------------------------------------------------------------------
/src/o.difference/o.difference.c:
--------------------------------------------------------------------------------
1 | /*
2 | Written by John MacCallum, The Center for New Music and Audio Technologies,
3 | University of California, Berkeley. Copyright (c) 2011, The Regents of
4 | the University of California (Regents).
5 | Permission to use, copy, modify, distribute, and distribute modified versions
6 | of this software and its documentation without fee and without a signed
7 | licensing agreement, is hereby granted, provided that the above copyright
8 | notice, this paragraph and the following two paragraphs appear in all copies,
9 | modifications, and distributions.
10 |
11 | IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
12 | SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING
13 | OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF REGENTS HAS
14 | BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
15 |
16 | REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
17 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
18 | PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED
19 | HEREUNDER IS PROVIDED "AS IS". REGENTS HAS NO OBLIGATION TO PROVIDE
20 | MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
21 |
22 |
23 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
24 | NAME: o.difference
25 | DESCRIPTION: Get the difference (addresses not in common) between two OSC bundles
26 | AUTHORS: John MacCallum
27 | COPYRIGHT_YEARS: 2011
28 | SVN_REVISION: $LastChangedRevision: 587 $
29 | VERSION 0.0: First try
30 | VERSION 1.0: using libo
31 | VERSION 2.0: refactored out of o.var
32 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
33 | */
34 |
35 | #define ODOT_DIFFERENCE
36 | #if defined ODOT_DIFFERENCE
37 | #define OMAX_DOC_NAME "o.difference"
38 | #define OMAX_DOC_SHORT_DESC "Output a bundle containing the difference between two bundles"
39 | #define OMAX_DOC_LONG_DESC "o.difference takes two bundles and forms a new bundle that contains the messages with addresses that are not common to both bundles."
40 | #define OMAX_DOC_INLETS_DESC (char *[]){"OSC packet", "OSC packet"}
41 | #define OMAX_DOC_OUTLETS_DESC (char *[]){"OSC Packet containing the difference of the two packets"}
42 | #define OMAX_DOC_SEEALSO (char *[]){"o.union", "o.intersection"}
43 | #endif
44 |
45 | #include "../o.var/o.var.c"
46 |
--------------------------------------------------------------------------------
/src/o.difference/o.difference.xcodeproj/john.pbxuser:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | 089C1669FE841209C02AAC07 /* Project object */ = {
4 | activeBuildConfigurationName = Deployment;
5 | activeTarget = 8D01CCC60486CAD60068D4B7 /* o.var */;
6 | addToTargets = (
7 | 8D01CCC60486CAD60068D4B7 /* o.var */,
8 | );
9 | codeSenseManager = 5258CB51131C8E6E00E29B7C /* Code sense */;
10 | perUserDictionary = {
11 | PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
12 | PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
13 | PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
14 | PBXFileTableDataSourceColumnWidthsKey = (
15 | 20,
16 | 341,
17 | 20,
18 | 48,
19 | 43,
20 | 43,
21 | 20,
22 | );
23 | PBXFileTableDataSourceColumnsKey = (
24 | PBXFileDataSource_FiletypeID,
25 | PBXFileDataSource_Filename_ColumnID,
26 | PBXFileDataSource_Built_ColumnID,
27 | PBXFileDataSource_ObjectSize_ColumnID,
28 | PBXFileDataSource_Errors_ColumnID,
29 | PBXFileDataSource_Warnings_ColumnID,
30 | PBXFileDataSource_Target_ColumnID,
31 | );
32 | };
33 | PBXConfiguration.PBXTargetDataSource.PBXTargetDataSource = {
34 | PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
35 | PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
36 | PBXFileTableDataSourceColumnWidthsKey = (
37 | 20,
38 | 316,
39 | 60,
40 | 20,
41 | 48,
42 | 43,
43 | 43,
44 | );
45 | PBXFileTableDataSourceColumnsKey = (
46 | PBXFileDataSource_FiletypeID,
47 | PBXFileDataSource_Filename_ColumnID,
48 | PBXTargetDataSource_PrimaryAttribute,
49 | PBXFileDataSource_Built_ColumnID,
50 | PBXFileDataSource_ObjectSize_ColumnID,
51 | PBXFileDataSource_Errors_ColumnID,
52 | PBXFileDataSource_Warnings_ColumnID,
53 | );
54 | };
55 | PBXPerProjectTemplateStateSaveDate = 335983008;
56 | PBXWorkspaceStateSaveDate = 335983008;
57 | };
58 | sourceControlManager = 5258CB50131C8E6E00E29B7C /* Source Control */;
59 | userBuildSettings = {
60 | };
61 | };
62 | 5249DFB112E7C17300B3ABA5 /* o.var.c */ = {
63 | uiCtxt = {
64 | sepNavIntBoundsRect = "{{0, 0}, {565, 8229}}";
65 | sepNavSelRange = "{0, 0}";
66 | sepNavVisRange = "{0, 428}";
67 | sepNavWindowFrame = "{{15, 40}, {1665, 987}}";
68 | };
69 | };
70 | 5258CB50131C8E6E00E29B7C /* Source Control */ = {
71 | isa = PBXSourceControlManager;
72 | fallbackIsa = XCSourceControlManager;
73 | isSCMEnabled = 0;
74 | scmConfiguration = {
75 | repositoryNamesForRoots = {
76 | "" = "";
77 | };
78 | };
79 | };
80 | 5258CB51131C8E6E00E29B7C /* Code sense */ = {
81 | isa = PBXCodeSenseManager;
82 | indexTemplatePath = "";
83 | };
84 | 8D01CCC60486CAD60068D4B7 /* o.var */ = {
85 | activeExec = 0;
86 | };
87 | }
88 |
--------------------------------------------------------------------------------
/src/o.difference/o.difference.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/src/o.difference/o.difference.xcodeproj/project.xcworkspace/xcuserdata/john.xcuserdatad/UserInterfaceState.xcuserstate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CNMAT/CNMAT-odot/ac753e280dcdc44b0e1aace9bc73714a025f0f35/src/o.difference/o.difference.xcodeproj/project.xcworkspace/xcuserdata/john.xcuserdatad/UserInterfaceState.xcuserstate
--------------------------------------------------------------------------------
/src/o.difference/o.difference.xcodeproj/xcuserdata/john.xcuserdatad/xcschemes/o.var.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
4 |
7 |
8 |
14 |
20 |
21 |
22 |
23 |
24 |
29 |
30 |
31 |
32 |
38 |
39 |
40 |
41 |
46 |
47 |
49 |
50 |
53 |
54 |
55 |
--------------------------------------------------------------------------------
/src/o.difference/o.difference.xcodeproj/xcuserdata/john.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | o.var.xcscheme
8 |
9 | orderHint
10 | 0
11 |
12 |
13 | SuppressBuildableAutocreation
14 |
15 | 8D01CCC60486CAD60068D4B7
16 |
17 | primary
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/src/o.display/Makefile:
--------------------------------------------------------------------------------
1 | win: CFLAGS += -O3 -funroll-loops
2 | win: INCLUDES += -I../libo -I../libomax
3 | win: LIBDIRS += -L../libo -L../libomax
4 | win: LIBS += -lomax -lo
5 |
6 | include ../makefile.per-object
7 |
8 |
--------------------------------------------------------------------------------
/src/o.explode/Makefile:
--------------------------------------------------------------------------------
1 | include ../../../makefile.per-object
2 |
--------------------------------------------------------------------------------
/src/o.expr.codebox.set/Makefile:
--------------------------------------------------------------------------------
1 | win: CFLAGS += -O3 -funroll-loops
2 | win: INCLUDES += -I../libo -I../libomax
3 | win: LIBDIRS += -L../libo -L../libomax
4 | win: LIBS += -lomax -lo
5 |
6 | include ../makefile.per-object
7 |
--------------------------------------------------------------------------------
/src/o.expr.codebox/Makefile:
--------------------------------------------------------------------------------
1 | win: CFLAGS += -O3 -funroll-loops
2 | win: INCLUDES += -I../libo -I../libomax
3 | win: LIBDIRS += -L../libo -L../libomax
4 | win: LIBS += -lomax -lo
5 |
6 | include ../makefile.per-object
7 |
--------------------------------------------------------------------------------
/src/o.expr/Makefile:
--------------------------------------------------------------------------------
1 | win: CFLAGS += -O3 -funroll-loops
2 | win: INCLUDES += -I../libo -I../libomax
3 | win: LIBDIRS += -L../libo -L../libomax
4 | win: LIBS += -lomax -lo
5 |
6 | include ../makefile.per-object
7 |
--------------------------------------------------------------------------------
/src/o.flatten/Makefile:
--------------------------------------------------------------------------------
1 | win: CFLAGS += -O3 -funroll-loops
2 | win: INCLUDES += -I../libo -I../libomax
3 | win: LIBDIRS += -L../libo -L../libomax
4 | win: LIBS += -lomax -lo
5 |
6 | include ../makefile.per-object
7 |
--------------------------------------------------------------------------------
/src/o.if/Makefile:
--------------------------------------------------------------------------------
1 | win: CFLAGS += -O3 -funroll-loops -DOIF
2 | win: INCLUDES += -I../libo -I../libomax
3 | win: LIBDIRS += -L../libo -L../libomax
4 | win: LIBS += -lomax -lo
5 |
6 | include ../makefile.per-object
7 |
--------------------------------------------------------------------------------
/src/o.if/o.if.c:
--------------------------------------------------------------------------------
1 | #define OIF
2 | #if defined (OIF)
3 |
4 | #define OMAX_DOC_NAME "o.if"
5 |
6 | #define OMAX_DOC_SHORT_DESC "Route an OSC packet based on the results of an expression"
7 | #define OMAX_DOC_LONG_DESC "o.if routs the incoming bundle out the left outlet if the result of the expression is true or non-zero, and out the right outlet otherwise."
8 | #define OMAX_DOC_INLETS_DESC (char *[]){"OSC packet containing addresses that the expression will be applied to."}
9 | #define OMAX_DOC_OUTLETS_DESC (char *[]){"Input OSC FullPacket if the expression returns true or non-zero", "Input OSC FullPacket if the expression returns false or zero"}
10 | #define OMAX_DOC_SEEALSO (char *[]){"o.expr.codebox", "o.cond", "o.when", "o.unless", "expr", "jit.expr"}
11 | #endif
12 |
13 | #include "../o.expr/o.expr.c"
14 |
--------------------------------------------------------------------------------
/src/o.intersection/Makefile:
--------------------------------------------------------------------------------
1 | win: CFLAGS += -O3 -funroll-loops
2 | win: INCLUDES += -I../libo -I../libomax
3 | win: LIBDIRS += -L../libo -L../libomax
4 | win: LIBS += -lomax -lo
5 |
6 | include ../makefile.per-object
7 |
--------------------------------------------------------------------------------
/src/o.intersection/o.intersection.c:
--------------------------------------------------------------------------------
1 | /*
2 | Written by John MacCallum, The Center for New Music and Audio Technologies,
3 | University of California, Berkeley. Copyright (c) 2011, The Regents of
4 | the University of California (Regents).
5 | Permission to use, copy, modify, distribute, and distribute modified versions
6 | of this software and its documentation without fee and without a signed
7 | licensing agreement, is hereby granted, provided that the above copyright
8 | notice, this paragraph and the following two paragraphs appear in all copies,
9 | modifications, and distributions.
10 |
11 | IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
12 | SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING
13 | OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF REGENTS HAS
14 | BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
15 |
16 | REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
17 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
18 | PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED
19 | HEREUNDER IS PROVIDED "AS IS". REGENTS HAS NO OBLIGATION TO PROVIDE
20 | MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
21 |
22 |
23 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
24 | NAME: o.intersection
25 | DESCRIPTION: Get the intersection (addresses in common) between two OSC bundles
26 | AUTHORS: John MacCallum
27 | COPYRIGHT_YEARS: 2011
28 | SVN_REVISION: $LastChangedRevision: 587 $
29 | VERSION 0.0: First try
30 | VERSION 1.0: using libo
31 | VERSION 2.0: refactored out of o.var
32 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
33 | */
34 |
35 | #define ODOT_INTERSECTION
36 | #if defined ODOT_INTERSECTION
37 | #define OMAX_DOC_NAME "o.intersection"
38 | #define OMAX_DOC_SHORT_DESC "Output a bundle containing the intersection of messages between two bundles"
39 | #define OMAX_DOC_LONG_DESC "o.intersection takes two bundles and forms a new bundle that contains the OSC messages from the bundle received in the left inlet whose addresses are also present in the bundle received in the right inlet."
40 | #define OMAX_DOC_INLETS_DESC (char *[]){"OSC packet", "OSC packet"}
41 | #define OMAX_DOC_OUTLETS_DESC (char *[]){"OSC Packet containing the intersection of the two packets"}
42 | #define OMAX_DOC_SEEALSO (char *[]){"o.difference", "o.union"}
43 | #endif
44 |
45 | #include "../o.var/o.var.c"
46 |
--------------------------------------------------------------------------------
/src/o.intersection/o.intersection.xcodeproj/john.pbxuser:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | 089C1669FE841209C02AAC07 /* Project object */ = {
4 | activeBuildConfigurationName = Deployment;
5 | activeTarget = 8D01CCC60486CAD60068D4B7 /* o.var */;
6 | addToTargets = (
7 | 8D01CCC60486CAD60068D4B7 /* o.var */,
8 | );
9 | codeSenseManager = 5258CB51131C8E6E00E29B7C /* Code sense */;
10 | perUserDictionary = {
11 | PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
12 | PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
13 | PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
14 | PBXFileTableDataSourceColumnWidthsKey = (
15 | 20,
16 | 341,
17 | 20,
18 | 48,
19 | 43,
20 | 43,
21 | 20,
22 | );
23 | PBXFileTableDataSourceColumnsKey = (
24 | PBXFileDataSource_FiletypeID,
25 | PBXFileDataSource_Filename_ColumnID,
26 | PBXFileDataSource_Built_ColumnID,
27 | PBXFileDataSource_ObjectSize_ColumnID,
28 | PBXFileDataSource_Errors_ColumnID,
29 | PBXFileDataSource_Warnings_ColumnID,
30 | PBXFileDataSource_Target_ColumnID,
31 | );
32 | };
33 | PBXConfiguration.PBXTargetDataSource.PBXTargetDataSource = {
34 | PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
35 | PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
36 | PBXFileTableDataSourceColumnWidthsKey = (
37 | 20,
38 | 316,
39 | 60,
40 | 20,
41 | 48,
42 | 43,
43 | 43,
44 | );
45 | PBXFileTableDataSourceColumnsKey = (
46 | PBXFileDataSource_FiletypeID,
47 | PBXFileDataSource_Filename_ColumnID,
48 | PBXTargetDataSource_PrimaryAttribute,
49 | PBXFileDataSource_Built_ColumnID,
50 | PBXFileDataSource_ObjectSize_ColumnID,
51 | PBXFileDataSource_Errors_ColumnID,
52 | PBXFileDataSource_Warnings_ColumnID,
53 | );
54 | };
55 | PBXPerProjectTemplateStateSaveDate = 335984082;
56 | PBXWorkspaceStateSaveDate = 335984082;
57 | };
58 | sourceControlManager = 5258CB50131C8E6E00E29B7C /* Source Control */;
59 | userBuildSettings = {
60 | };
61 | };
62 | 5249DFB112E7C17300B3ABA5 /* o.var.c */ = {
63 | uiCtxt = {
64 | sepNavIntBoundsRect = "{{0, 0}, {565, 8229}}";
65 | sepNavSelRange = "{0, 0}";
66 | sepNavVisRange = "{0, 428}";
67 | sepNavWindowFrame = "{{15, 40}, {1665, 987}}";
68 | };
69 | };
70 | 5258CB50131C8E6E00E29B7C /* Source Control */ = {
71 | isa = PBXSourceControlManager;
72 | fallbackIsa = XCSourceControlManager;
73 | isSCMEnabled = 0;
74 | scmConfiguration = {
75 | repositoryNamesForRoots = {
76 | "" = "";
77 | };
78 | };
79 | };
80 | 5258CB51131C8E6E00E29B7C /* Code sense */ = {
81 | isa = PBXCodeSenseManager;
82 | indexTemplatePath = "";
83 | };
84 | 8D01CCC60486CAD60068D4B7 /* o.var */ = {
85 | activeExec = 0;
86 | };
87 | }
88 |
--------------------------------------------------------------------------------
/src/o.intersection/o.intersection.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/src/o.intersection/o.intersection.xcodeproj/project.xcworkspace/xcuserdata/john.xcuserdatad/UserInterfaceState.xcuserstate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CNMAT/CNMAT-odot/ac753e280dcdc44b0e1aace9bc73714a025f0f35/src/o.intersection/o.intersection.xcodeproj/project.xcworkspace/xcuserdata/john.xcuserdatad/UserInterfaceState.xcuserstate
--------------------------------------------------------------------------------
/src/o.intersection/o.intersection.xcodeproj/xcuserdata/john.xcuserdatad/xcschemes/o.var.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
4 |
7 |
8 |
14 |
20 |
21 |
22 |
23 |
24 |
29 |
30 |
31 |
32 |
38 |
39 |
40 |
41 |
46 |
47 |
49 |
50 |
53 |
54 |
55 |
--------------------------------------------------------------------------------
/src/o.intersection/o.intersection.xcodeproj/xcuserdata/john.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | o.var.xcscheme
8 |
9 | orderHint
10 | 0
11 |
12 |
13 | SuppressBuildableAutocreation
14 |
15 | 8D01CCC60486CAD60068D4B7
16 |
17 | primary
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/src/o.listenumerate/Makefile:
--------------------------------------------------------------------------------
1 | include ../../../makefile.per-object
2 |
--------------------------------------------------------------------------------
/src/o.mappatch/Makefile:
--------------------------------------------------------------------------------
1 | win: CFLAGS += -O3 -funroll-loops
2 | win: INCLUDES += -I../libo -I../libomax
3 | win: LIBDIRS += -L../libo -L../libomax
4 | win: LIBS += -lomax -lo
5 |
6 | include ../makefile.per-object
7 |
--------------------------------------------------------------------------------
/src/o.message/Makefile:
--------------------------------------------------------------------------------
1 | win: CFLAGS += -O3 -funroll-loops
2 | win: INCLUDES += -I../libo -I../libomax
3 | win: LIBDIRS += -L../libo -L../libomax
4 | win: LIBS += -lomax -lo
5 |
6 | include ../makefile.per-object
7 |
8 |
--------------------------------------------------------------------------------
/src/o.pack/Makefile:
--------------------------------------------------------------------------------
1 | win: CFLAGS += -O3 -funroll-loops
2 | win: INCLUDES += -I../libo -I../libomax
3 | win: LIBDIRS += -L../libo -L../libomax
4 | win: LIBS += -lomax -lo
5 |
6 | include ../makefile.per-object
7 |
--------------------------------------------------------------------------------
/src/o.pak/Makefile:
--------------------------------------------------------------------------------
1 | win: CFLAGS += -O3 -funroll-loops -DBILD
2 | win: INCLUDES += -I../libo -I../libomax
3 | win: LIBDIRS += -L../libo -L../libomax
4 | win: LIBS += -lomax -lo
5 |
6 | include ../makefile.per-object
7 |
--------------------------------------------------------------------------------
/src/o.pak/o.pak.c:
--------------------------------------------------------------------------------
1 | #define PAK
2 | #ifdef PAK
3 | #define OMAX_DOC_NAME "o.pak"
4 | #define OMAX_DOC_SHORT_DESC "Bind data to addresses"
5 | #define OMAX_DOC_LONG_DESC "o.pak takes a OSC addresses as arguments and creates an inlet for each one. Anything sent into an inlet is bound to the corresponding address and the OSC packet is output with all other addresses bound to their most recent values."
6 | #define OMAX_DOC_OUTLETS_DESC (char *[]){"OSC FullPacket"}
7 | #define OMAX_DOC_SEEALSO (char *[]){"o.pack", "pack", "pak"}
8 | #endif
9 |
10 | #include "../o.pack/o.pack.c"
11 |
--------------------------------------------------------------------------------
/src/o.pak/o.pak.xcodeproj/john.pbxuser:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | 089C1669FE841209C02AAC07 /* Project object */ = {
4 | activeBuildConfigurationName = Development;
5 | activeTarget = 8D01CCC60486CAD60068D4B7 /* o.bild */;
6 | addToTargets = (
7 | 8D01CCC60486CAD60068D4B7 /* o.bild */,
8 | );
9 | codeSenseManager = 5211307811A4BCE100B71D00 /* Code sense */;
10 | perUserDictionary = {
11 | PBXConfiguration.PBXFileTableDataSource3.PBXExecutablesDataSource = {
12 | PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
13 | PBXFileTableDataSourceColumnSortingKey = PBXExecutablesDataSource_NameID;
14 | PBXFileTableDataSourceColumnWidthsKey = (
15 | 22,
16 | 300,
17 | 229,
18 | );
19 | PBXFileTableDataSourceColumnsKey = (
20 | PBXExecutablesDataSource_ActiveFlagID,
21 | PBXExecutablesDataSource_NameID,
22 | PBXExecutablesDataSource_CommentsID,
23 | );
24 | };
25 | PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
26 | PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
27 | PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
28 | PBXFileTableDataSourceColumnWidthsKey = (
29 | 20,
30 | 341,
31 | 20,
32 | 48,
33 | 43,
34 | 43,
35 | 20,
36 | );
37 | PBXFileTableDataSourceColumnsKey = (
38 | PBXFileDataSource_FiletypeID,
39 | PBXFileDataSource_Filename_ColumnID,
40 | PBXFileDataSource_Built_ColumnID,
41 | PBXFileDataSource_ObjectSize_ColumnID,
42 | PBXFileDataSource_Errors_ColumnID,
43 | PBXFileDataSource_Warnings_ColumnID,
44 | PBXFileDataSource_Target_ColumnID,
45 | );
46 | };
47 | PBXConfiguration.PBXTargetDataSource.PBXTargetDataSource = {
48 | PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
49 | PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
50 | PBXFileTableDataSourceColumnWidthsKey = (
51 | 20,
52 | 316,
53 | 60,
54 | 20,
55 | 48,
56 | 43,
57 | 43,
58 | );
59 | PBXFileTableDataSourceColumnsKey = (
60 | PBXFileDataSource_FiletypeID,
61 | PBXFileDataSource_Filename_ColumnID,
62 | PBXTargetDataSource_PrimaryAttribute,
63 | PBXFileDataSource_Built_ColumnID,
64 | PBXFileDataSource_ObjectSize_ColumnID,
65 | PBXFileDataSource_Errors_ColumnID,
66 | PBXFileDataSource_Warnings_ColumnID,
67 | );
68 | };
69 | PBXPerProjectTemplateStateSaveDate = 335145063;
70 | PBXWorkspaceStateSaveDate = 335145063;
71 | };
72 | sourceControlManager = 5211307711A4BCE100B71D00 /* Source Control */;
73 | userBuildSettings = {
74 | };
75 | };
76 | 5211307711A4BCE100B71D00 /* Source Control */ = {
77 | isa = PBXSourceControlManager;
78 | fallbackIsa = XCSourceControlManager;
79 | isSCMEnabled = 0;
80 | scmConfiguration = {
81 | repositoryNamesForRoots = {
82 | "" = "";
83 | };
84 | };
85 | };
86 | 5211307811A4BCE100B71D00 /* Code sense */ = {
87 | isa = PBXCodeSenseManager;
88 | indexTemplatePath = "";
89 | };
90 | 8D01CCC60486CAD60068D4B7 /* o.bild */ = {
91 | activeExec = 0;
92 | };
93 | }
94 |
--------------------------------------------------------------------------------
/src/o.pak/o.pak.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/src/o.pak/o.pak.xcodeproj/project.xcworkspace/xcuserdata/john.xcuserdatad/UserInterfaceState.xcuserstate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CNMAT/CNMAT-odot/ac753e280dcdc44b0e1aace9bc73714a025f0f35/src/o.pak/o.pak.xcodeproj/project.xcworkspace/xcuserdata/john.xcuserdatad/UserInterfaceState.xcuserstate
--------------------------------------------------------------------------------
/src/o.pak/o.pak.xcodeproj/xcuserdata/john.xcuserdatad/xcschemes/o.build.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
4 |
7 |
8 |
14 |
20 |
21 |
22 |
23 |
24 |
29 |
30 |
31 |
32 |
38 |
39 |
40 |
41 |
46 |
47 |
49 |
50 |
53 |
54 |
55 |
--------------------------------------------------------------------------------
/src/o.pak/o.pak.xcodeproj/xcuserdata/john.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | o.build.xcscheme
8 |
9 | orderHint
10 | 0
11 |
12 |
13 | SuppressBuildableAutocreation
14 |
15 | 8D01CCC60486CAD60068D4B7
16 |
17 | primary
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/src/o.prepend/Makefile:
--------------------------------------------------------------------------------
1 | win: CFLAGS += -O3 -funroll-loops
2 | win: INCLUDES += -I../libo -I../libomax
3 | win: LIBDIRS += -L../libo -L../libomax
4 | win: LIBS += -lomax -lo
5 |
6 | include ../makefile.per-object
7 |
--------------------------------------------------------------------------------
/src/o.prepend/o.prepend.help.pat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CNMAT/CNMAT-odot/ac753e280dcdc44b0e1aace9bc73714a025f0f35/src/o.prepend/o.prepend.help.pat
--------------------------------------------------------------------------------
/src/o.print/Makefile:
--------------------------------------------------------------------------------
1 | win: CFLAGS += -O3 -funroll-loops
2 | win: INCLUDES += -I../libo -I../libomax
3 | win: LIBDIRS += -L../libo -L../libomax
4 | win: LIBS += -lomax -lo
5 |
6 | include ../makefile.per-object
7 |
--------------------------------------------------------------------------------
/src/o.printbytes/Makefile:
--------------------------------------------------------------------------------
1 | win: CFLAGS += -O3 -funroll-loops
2 | win: INCLUDES += -I../libo -I../libomax
3 | win: LIBDIRS += -L../libo -L../libomax
4 | win: LIBS += -lomax -lo
5 |
6 | include ../makefile.per-object
7 |
--------------------------------------------------------------------------------
/src/o.route/Makefile:
--------------------------------------------------------------------------------
1 | win: CFLAGS += -O3 -funroll-loops
2 | win: INCLUDES += -I../libo -I../libomax
3 | win: LIBDIRS += -L../libo -L../libomax
4 | win: LIBS += -lomax -lo
5 |
6 | include ../makefile.per-object
7 |
--------------------------------------------------------------------------------
/src/o.route/o.route.help.pat:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CNMAT/CNMAT-odot/ac753e280dcdc44b0e1aace9bc73714a025f0f35/src/o.route/o.route.help.pat
--------------------------------------------------------------------------------
/src/o.schedule/pqops.h:
--------------------------------------------------------------------------------
1 | /* File: pqops.h
2 | * Desc: header file for heap manipulation functions
3 | * Author: Sriranga Veeraraghavan
4 | * Revision: $Id: pqops.h 434 2005-06-16 23:24:22Z ranga $
5 | */
6 |
7 | #ifndef pqops_h
8 | #define pqops_h
9 |
10 | /* define some constants, */
11 |
12 | #define MSGSIZE 128 /* max size of a debug message */
13 | #define FAILED -1 /* define -1 to indicate failure of some operations */
14 | #define EMPTY 1 /* define 1 to indicate that the heap is empty */
15 |
16 | /* just in case NULL is not defined */
17 |
18 | #ifndef NULL
19 | #define NULL 0
20 | #endif
21 |
22 | /* define some macros */
23 |
24 | #define FREE(x) free(x) ; x = NULL /* core if free'ed pointer is used */
25 | #define LEFT(x) (2*x) /* left child of a node */
26 | #define RIGHT(x) ((2*x)+1) /* right child of a node */
27 | #define PARENT(x) (x/2) /* parent of a node */
28 |
29 | typedef unsigned long long int priority;
30 |
31 | /* define a structure representing an individual node in the heap, and
32 | * make it a valid type for convenience */
33 |
34 | /* create a global node tmp, for swaping purposes */
35 |
36 | #include "osc_timetag.h"
37 |
38 | typedef struct _node
39 | {
40 | int sentinel;
41 | unsigned int id;
42 | unsigned int length;
43 | t_osc_timetag timestamp;
44 | } node;
45 |
46 |
47 | /* for convience in function declarations, typedef a pointer to a node
48 | * as its own type, node_ptr */
49 |
50 | typedef node * node_ptr;
51 |
52 | /* define a structure representing the heap, and make it a valid type
53 | * for convenience */
54 |
55 | typedef struct binary_heap {
56 | int heap_size;
57 | int max_elems;
58 | node_ptr elements;
59 | } binary_heap ;
60 |
61 |
62 | /* function prototypes for functions which operate on a binary heap */
63 |
64 | extern void heapify(binary_heap *a,int i);
65 | extern node_ptr heap_max(binary_heap *a);
66 | extern node heap_extract_max(binary_heap *a);
67 | extern int heap_insert(binary_heap *a,node key);
68 | extern void heap_delete(binary_heap *a,int i);
69 | extern void heap_increase_key(binary_heap *a,int i,priority p);
70 | extern void heap_initialize(binary_heap *a,int nodes);
71 | extern void heap_finalize(binary_heap *a);
72 |
73 | /* function prototypes for functions which operate on a node */
74 |
75 | extern int node_find(binary_heap a,unsigned int id);
76 |
77 | /* function prototypes for helper functions */
78 |
79 | extern int compare_priority(node i, node j);
80 | extern void print_error(char *msg);
81 |
82 | #endif
83 |
--------------------------------------------------------------------------------
/src/o.select/Makefile:
--------------------------------------------------------------------------------
1 | win: CFLAGS += -O3 -funroll-loops -DSELECT
2 | win: INCLUDES += -I../libo -I../libomax
3 | win: LIBDIRS += -L../libo -L../libomax
4 | win: LIBS += -lomax -lo
5 |
6 | include ../makefile.per-object
7 |
--------------------------------------------------------------------------------
/src/o.select/o.select.c:
--------------------------------------------------------------------------------
1 | #define SELECT
2 | #ifdef SELECT
3 | #define OMAX_DOC_NAME "o.select"
4 | #define OMAX_DOC_SHORT_DESC "Dispatch OSC messages according to an address hierarchy preserving the address"
5 | #define OMAX_DOC_LONG_DESC "o.select does pattern matching on addresses contained in OSC packets. All messages in a bundle with addresses that match an address specified as an argument to o.select are bundled together and sent out the corresponding outlet with their addresses kept intact."
6 | #define OMAX_DOC_SEEALSO (char *[]){"o.route", "o.atomize", "route", "routepass"}
7 | #endif
8 | #include "../o.route/o.route.c"
9 |
--------------------------------------------------------------------------------
/src/o.slip.decode/o.slip.decode.c:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CNMAT/CNMAT-odot/ac753e280dcdc44b0e1aace9bc73714a025f0f35/src/o.slip.decode/o.slip.decode.c
--------------------------------------------------------------------------------
/src/o.slip.encode/o.slip.encode.c:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CNMAT/CNMAT-odot/ac753e280dcdc44b0e1aace9bc73714a025f0f35/src/o.slip.encode/o.slip.encode.c
--------------------------------------------------------------------------------
/src/o.table/Makefile:
--------------------------------------------------------------------------------
1 | win: CFLAGS += -O3 -funroll-loops
2 | win: INCLUDES += -I../libo -I../libomax
3 | win: LIBDIRS += -L../libo -L../libomax
4 | win: LIBS += -lomax -lo
5 |
6 | include ../../../makefile.per-object
7 |
--------------------------------------------------------------------------------
/src/o.timetag/Makefile:
--------------------------------------------------------------------------------
1 | include ../../../makefile.per-object
2 |
--------------------------------------------------------------------------------
/src/o.udp.receive/o.udp.receive.c:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CNMAT/CNMAT-odot/ac753e280dcdc44b0e1aace9bc73714a025f0f35/src/o.udp.receive/o.udp.receive.c
--------------------------------------------------------------------------------
/src/o.udp.send/o.udp.send.c:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CNMAT/CNMAT-odot/ac753e280dcdc44b0e1aace9bc73714a025f0f35/src/o.udp.send/o.udp.send.c
--------------------------------------------------------------------------------
/src/o.uniform/Makefile:
--------------------------------------------------------------------------------
1 | include ../../../makefile.per-object
2 |
--------------------------------------------------------------------------------
/src/o.union/Makefile:
--------------------------------------------------------------------------------
1 | win: CFLAGS += -O3 -funroll-loops
2 | win: INCLUDES += -I../libo -I../libomax
3 | win: LIBDIRS += -L../libo -L../libomax
4 | win: LIBS += -lomax -lo
5 |
6 | include ../makefile.per-object
7 |
--------------------------------------------------------------------------------
/src/o.union/o.union.c:
--------------------------------------------------------------------------------
1 | /*
2 | Written by John MacCallum, The Center for New Music and Audio Technologies,
3 | University of California, Berkeley. Copyright (c) 2011, The Regents of
4 | the University of California (Regents).
5 | Permission to use, copy, modify, distribute, and distribute modified versions
6 | of this software and its documentation without fee and without a signed
7 | licensing agreement, is hereby granted, provided that the above copyright
8 | notice, this paragraph and the following two paragraphs appear in all copies,
9 | modifications, and distributions.
10 |
11 | IN NO EVENT SHALL REGENTS BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT,
12 | SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING
13 | OUT OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF REGENTS HAS
14 | BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
15 |
16 | REGENTS SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
17 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
18 | PURPOSE. THE SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED
19 | HEREUNDER IS PROVIDED "AS IS". REGENTS HAS NO OBLIGATION TO PROVIDE
20 | MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
21 |
22 |
23 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
24 | NAME: o.union
25 | DESCRIPTION: Get the union (all addresses in both bundles excluding duplicates) between two OSC bundles
26 | AUTHORS: John MacCallum
27 | COPYRIGHT_YEARS: 2011
28 | SVN_REVISION: $LastChangedRevision: 587 $
29 | VERSION 0.0: First try
30 | VERSION 1.0: using libo
31 | VERSION 2.0: refactored out of o.var
32 | @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
33 | */
34 |
35 | #define ODOT_UNION
36 | #ifdef ODOT_UNION
37 | #define OMAX_DOC_NAME "o.union"
38 | #define OMAX_DOC_SHORT_DESC "Output a bundle containing the union of all messages between two bundles"
39 | #define OMAX_DOC_LONG_DESC "o.union takes a bundle in the left and right inlets and takes the union of their addresses and outputs the result. Messages with duplicate addresses are discarded with the most recent message (the one that came in the left inlet) taking precedence."
40 | #define OMAX_DOC_INLETS_DESC (char *[]){"OSC packet", "OSC packet"}
41 | #define OMAX_DOC_OUTLETS_DESC (char *[]){"OSC Packet containing the union of the two packets"}
42 | #define OMAX_DOC_SEEALSO (char *[]){"o.difference", "o.intersection"}
43 | #endif
44 |
45 | #include "../o.var/o.var.c"
46 |
--------------------------------------------------------------------------------
/src/o.union/o.union.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/src/o.union/o.union.xcodeproj/project.xcworkspace/xcuserdata/john.xcuserdatad/UserInterfaceState.xcuserstate:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/CNMAT/CNMAT-odot/ac753e280dcdc44b0e1aace9bc73714a025f0f35/src/o.union/o.union.xcodeproj/project.xcworkspace/xcuserdata/john.xcuserdatad/UserInterfaceState.xcuserstate
--------------------------------------------------------------------------------
/src/o.union/o.union.xcodeproj/xcuserdata/john.xcuserdatad/xcschemes/o.var.xcscheme:
--------------------------------------------------------------------------------
1 |
2 |
4 |
7 |
8 |
14 |
20 |
21 |
22 |
23 |
24 |
29 |
30 |
31 |
32 |
38 |
39 |
40 |
41 |
46 |
47 |
49 |
50 |
53 |
54 |
55 |
--------------------------------------------------------------------------------
/src/o.union/o.union.xcodeproj/xcuserdata/john.xcuserdatad/xcschemes/xcschememanagement.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | SchemeUserState
6 |
7 | o.var.xcscheme
8 |
9 | orderHint
10 | 0
11 |
12 |
13 | SuppressBuildableAutocreation
14 |
15 | 8D01CCC60486CAD60068D4B7
16 |
17 | primary
18 |
19 |
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/src/o.unless/Makefile:
--------------------------------------------------------------------------------
1 | win: CFLAGS += -O3 -funroll-loops -DOIF
2 | win: INCLUDES += -I../libo -I../libomax
3 | win: LIBDIRS += -L../libo -L../libomax
4 | win: LIBS += -lomax -lo
5 |
6 | include ../makefile.per-object
7 |
--------------------------------------------------------------------------------
/src/o.unless/o.unless.c:
--------------------------------------------------------------------------------
1 | #define OUNLESS
2 | #if defined (OUNLESS)
3 | #define OMAX_DOC_NAME "o.unless"
4 | #define OMAX_DOC_SHORT_DESC "Passes the bundle through if the result of the expression is false or zero"
5 | #define OMAX_DOC_LONG_DESC "o.unless behaves like o.if with only the right-most outlet (i.e. the \"else\" outlet)."
6 | #define OMAX_DOC_INLETS_DESC (char *[]){"OSC packet containing addresses that the expression will be applied to"}
7 | #define OMAX_DOC_OUTLETS_DESC (char *[]){"Input OSC packet if the expression returns false or zero"}
8 | #define OMAX_DOC_SEEALSO (char *[]){"o.if", "o.cond", "o.when", "o.expr.codebox", "expr", "jit.expr"}
9 | #endif
10 |
11 | #include "../o.expr/o.expr.c"
12 |
--------------------------------------------------------------------------------
/src/o.var/Makefile:
--------------------------------------------------------------------------------
1 | win: CFLAGS += -O3 -funroll-loops
2 | win: INCLUDES += -I../libo -I../libomax
3 | win: LIBDIRS += -L../libo -L../libomax
4 | win: LIBS += -lomax -lo
5 |
6 | include ../makefile.per-object
7 |
--------------------------------------------------------------------------------
/src/o.when/Makefile:
--------------------------------------------------------------------------------
1 | win: CFLAGS += -O3 -funroll-loops -DOIF
2 | win: INCLUDES += -I../libo -I../libomax
3 | win: LIBDIRS += -L../libo -L../libomax
4 | win: LIBS += -lomax -lo
5 |
6 | include ../makefile.per-object
7 |
--------------------------------------------------------------------------------
/src/o.when/o.when.c:
--------------------------------------------------------------------------------
1 | #define OWHEN
2 | #if defined (OWHEN)
3 | #define OMAX_DOC_NAME "o.when"
4 | #define OMAX_DOC_SHORT_DESC "Passes the bundle through if the result of the expression is true or non-zero"
5 | #define OMAX_DOC_LONG_DESC "o.when behaves like o.if with only the left-most outlet (i.e. the \"then\" outlet)"
6 | #define OMAX_DOC_INLETS_DESC (char *[]){"OSC packet containing addresses that the expression will be applied to"}
7 | #define OMAX_DOC_OUTLETS_DESC (char *[]){"Input OSC packet if the expression returns true or non-zero"}
8 | #define OMAX_DOC_SEEALSO (char *[]){"o.if", "o.cond", "o.unless", "o.expr.codebox", "expr", "jit.expr"}
9 | #endif
10 |
11 | #include "../o.expr/o.expr.c"
12 |
--------------------------------------------------------------------------------
/src/odot.xcodeproj/project.xcworkspace/contents.xcworkspacedata:
--------------------------------------------------------------------------------
1 |
2 |
4 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/src/odot.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | IDEDidComputeMac32BitWarning
6 |
7 |
8 |
9 |
--------------------------------------------------------------------------------
/src/odot.xcodeproj/project.xcworkspace/xcshareddata/odot.xcscmblueprint:
--------------------------------------------------------------------------------
1 | {
2 | "DVTSourceControlWorkspaceBlueprintPrimaryRemoteRepositoryKey" : "F288EB3F860EB37FE32803469C923EC7E08714D7",
3 | "DVTSourceControlWorkspaceBlueprintWorkingCopyRepositoryLocationsKey" : {
4 |
5 | },
6 | "DVTSourceControlWorkspaceBlueprintWorkingCopyStatesKey" : {
7 | "BFE38AA7F3B3EE5D839CDF960E9B1411A92C41B2" : 0,
8 | "73CD3912FF7E5D839C8BDA43B346354BE088DDE8" : 0,
9 | "43DDD4A1012A81E5C2F5DA96FCA0DABF5263B8FC" : 0,
10 | "B26B9CAFBF9E1C2E2CA45220D163A2372E2095E0" : 0,
11 | "F288EB3F860EB37FE32803469C923EC7E08714D7" : 0
12 | },
13 | "DVTSourceControlWorkspaceBlueprintIdentifierKey" : "16143F64-14C0-4BB9-AF05-5475F3AC108A",
14 | "DVTSourceControlWorkspaceBlueprintWorkingCopyPathsKey" : {
15 | "BFE38AA7F3B3EE5D839CDF960E9B1411A92C41B2" : "libomax\/",
16 | "73CD3912FF7E5D839C8BDA43B346354BE088DDE8" : "libo\/",
17 | "43DDD4A1012A81E5C2F5DA96FCA0DABF5263B8FC" : "max6-sdk\/",
18 | "B26B9CAFBF9E1C2E2CA45220D163A2372E2095E0" : "",
19 | "F288EB3F860EB37FE32803469C923EC7E08714D7" : "CNMAT-odot\/"
20 | },
21 | "DVTSourceControlWorkspaceBlueprintNameKey" : "odot",
22 | "DVTSourceControlWorkspaceBlueprintVersion" : 204,
23 | "DVTSourceControlWorkspaceBlueprintRelativePathToProjectKey" : "src\/odot.xcodeproj",
24 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoriesKey" : [
25 | {
26 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "https:\/\/github.com\/Cycling74\/max6-sdk.git",
27 | "DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git",
28 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "43DDD4A1012A81E5C2F5DA96FCA0DABF5263B8FC"
29 | },
30 | {
31 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "https:\/\/github.com\/CNMAT\/libo.git",
32 | "DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git",
33 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "73CD3912FF7E5D839C8BDA43B346354BE088DDE8"
34 | },
35 | {
36 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "https:\/\/github.com\/CNMAT\/CNMAT.git",
37 | "DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git",
38 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "B26B9CAFBF9E1C2E2CA45220D163A2372E2095E0"
39 | },
40 | {
41 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "https:\/\/github.com\/CNMAT\/libomax.git",
42 | "DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git",
43 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "BFE38AA7F3B3EE5D839CDF960E9B1411A92C41B2"
44 | },
45 | {
46 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoryURLKey" : "https:\/\/github.com\/CNMAT\/CNMAT-odot.git",
47 | "DVTSourceControlWorkspaceBlueprintRemoteRepositorySystemKey" : "com.apple.dt.Xcode.sourcecontrol.Git",
48 | "DVTSourceControlWorkspaceBlueprintRemoteRepositoryIdentifierKey" : "F288EB3F860EB37FE32803469C923EC7E08714D7"
49 | }
50 | ]
51 | }
--------------------------------------------------------------------------------
/src/odot_current_version.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | if [ "$1" = "clean" ]; then
3 | exit 0
4 | fi
5 | echo "#define ODOT_VERSION \""`git describe --tags --long`"\"" > include/odot_current_version.h
6 | echo "#define ODOT_COMPILE_DATE \""`date`"\"" >> include/odot_current_version.h
7 |
--------------------------------------------------------------------------------
/src/package.pl:
--------------------------------------------------------------------------------
1 | #!/usr/bin/perl
2 | use strict;
3 | use warnings;
4 | use File::Copy;
5 |
6 | #my $platform = shift or die "you must specify an argument (mac or win)";
7 | my $platform = $^O;
8 |
9 | my $objpath = "./build/objects";
10 | my @patches = ("help", "abstractions", "demos", "overview");
11 |
12 | my $version = 0.0;
13 |
14 | open odot_version, "odot_version.h" or die "couldn't find odot_version.h!";
15 |
16 | while(){
17 | if(/\#define\s+ODOT_VERSION\s+\"(.*)\"/){
18 | $version = $1;
19 | last;
20 | }
21 | }
22 |
23 | my $dirname = "odot-$platform-$version";
24 |
25 | my $version_file;
26 | open($version_file, ">latest-$platform-version") or die("can't open file: $version_file");
27 | print $version_file "VERSION: $version\n";
28 | print $version_file "PLATFORM: $platform\n";
29 | print $version_file "FILENAME: $dirname.tgz\n";
30 | close($version_file);
31 |
32 | if((@ARGV) > 0){
33 | if($ARGV[0] eq "clean"){
34 | system("rm", "-rf", $dirname);
35 | system("rm", "-rf", $dirname . ".tgz");
36 | exit;
37 | }
38 | }
39 |
40 | if(-d $dirname){
41 | system("rm", "-rf", $dirname);
42 | }
43 |
44 | mkdir($dirname);
45 | system("cp", "-r", "$objpath", "$dirname/");
46 | foreach my $p (@patches){
47 | system("cp", "-r", "patches/$p", "$dirname/");
48 | }
49 |
50 | system("cp", "README_ODOT.txt", "$dirname/");
51 |
52 | if((@ARGV) > 0){
53 | if($ARGV[0] eq "archive"){
54 | system("tar", "--exclude=.svn", "-z", "-c", "-v", "-f", "$dirname.tgz", $dirname);
55 | }elsif($ARGV[0] eq "install"){
56 | unless(-d "$ARGV[1]/odot"){
57 | system("mkdir", "$ARGV[1]/odot");
58 | }
59 | system("(cd $dirname; tar --exclude='.svn' -c -f - *) | (cd $ARGV[1]/odot; tar xfp -)");
60 | }
61 | }
62 |
--------------------------------------------------------------------------------
/src/pd-build/cnmat-meta.pd:
--------------------------------------------------------------------------------
1 | #N canvas 15 49 200 200 10;
2 | #N canvas 490 133 420 300 META 0;
3 | #X text 10 25 AUTHOR John MacCallum \, Adrian Freed \, Rama Gottfried
4 | ;
5 | #X text 10 10 VERSION odot 1.3-124-g5057d51 (pd alpha version);
6 | #X text 11 41 NAME CNMAT / odot library;
7 | #X restore 10 10 pd META;
8 |
--------------------------------------------------------------------------------
/src/pd-build/copy-src-files.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | # move all odot files into one place?
3 |
4 | COBJECT_LIST=(o.compose o.display o.append o.atomize o.bundle o.change o.collect o.cond o.context o.dict o.difference o.downcast o.explode o.expr o.expr.codebox o.flatten o.if o.intersection o.messageiterate o.listenumerate o.mappatch o.message o.pack o.pak o.prepend o.print o.printbytes o.route o.schedule o.select o.slip.decode o.slip.encode o.table o.timetag o.union o.unless o.validate o.var o.when)
5 |
6 | for f in ${COBJECT_LIST[*]}
7 | do
8 | cp ../$f/*.c .
9 | cp ../$f/*.h . 2> /dev/null
10 | done
11 |
12 | cp ../include/odot.c .
13 | cp ../include/opd_textbox.[ch] .
14 |
--------------------------------------------------------------------------------