Max
What it is
Two externals, max.o.se and max.o.se.gui, and a couple of dozen Max
objects written in the language itself and kept in code/: o.route,
o.pack, o.collect, o.if, o.var, the set operations, and the rest.
An object is a program, so it can be read, changed and reloaded without a
compiler.
Get it running
Needs Xcode and the Max SDK, which is vendored as source/max-sdk-base.
In the workspace:
make -C hosts/max.o.se/source
As a standalone clone:
git clone --recursive https://github.com/asomadev/max.o.se
cd max.o.se/source
make # modules, externals, then copies the .so files into ../misc
The default target copies the built modules into max.o.se/misc; it does
not touch a Max installation. Source and releases:
github.com/asomadev/max.o.se.
First program
Open help/o.se.maxhelp in Max. It puts an [o.se] object in a patch,
sends it a message of instructions, and shows a bang making the object
answer with the time. An [o.se] object takes instructions as messages,
last to first; an object named o.se.o.<name> loads <name>.ose from
the search path when it is created.
What it adds
Into the host register, as /o/ verbs a program calls like the
language’s own:
/o/inlet/make,/o/outlet/make— an inlet or an outlet on the object./o/inlet/make/machine,/o/outlet/make/machine— the object’s inlet for a whole suspended machine, and the outlet that sends one out; one of each per object./o/outlet— a value sent out of an outlet./o/outletatoms— values sent out of an outlet as Max atoms./o/post—(x) -> nothing; x printed to the Max console/o/error—(x) -> nothing; x printed to the Max console as an error/o/gettext— the object’s text./o/addmsg—("maxname", "/osc/name") -> nothing; the object answers the Max message by calling the function bound at the osc name/o/addtypedmsg—("maxname", "/osc/name", types) -> the same, with Max argument types; /o/nil for none/o/def/msg/anything—(msg, inlet) -> nothing; a Max message of any name delivered to /FullPacket as a bundle/o/time/now—() -> the time now, as a timetag
And as instructions: /makeinlet, /makeoutlet, /outlet,
/outlet/left, /outletatoms, /post, /maxobj, and a second kind of
inlet and outlet for machines (/makeinlet/machine,
/makeoutlet/machine, /outlet/machine).