CNMAT / CNMAT-odot

Multi-paradigm Dynamic Programming
Other
115 stars 11 forks source link

CNMAT-odot

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.

As of 2022, odot is developed and maintained by John MacCallum with support from CNMAT, and HfMT Hamburg.

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.

The odot system augments dataflow languages like Max/MSP, PD and Node Red with the following:

  1. The odot bundle aggregate data type, inspired by and currently encoded with OSC
  2. An expression language supporting a diverse collection of ancient and modern programming paradigms including: functional, declarative, imperative, dynamic, delegation-based objects, dynamic class-based objects, aspect-oriented
  3. Timing and scheduling primitives to support sequencing and synchronization aspects of media and network programming.

Installation

Max/MSP

Odot is now available through the Max Package Manager as well as the releases page.

Pd

Prebuilt binaries for Pd are available for a number of platforms on the releases page, including Mac OS X, Windows, Arch Linux, and Raspberry Pi OS.

OM

An implementation of odot for OM# is available here: https://github.com/cac-t-u-s/o.OM/.

Building

Instructions for building can be found in the src folder. You will also need to build libo and libomax--see those repos for instructions.

Bugs and Issues

Please file issues on the GitHub Issue Tracker.

Discussion

Join us on Discord! https://discord.gg/EqHE8TG

History

Integration of OSC encoding in a dataflow languages was pioneered by Amanda Chaudhary in the OSW language. The first release of odot integrates numerous user contributions from Dave Defilippo, Jeff Lubow, Derek Razo, Jules Espiau, and Yotam Mann.