Digital Orchestra Toolbox

Authors: Joseph Malloch, Stephen Sinclair

This “toolbox” is a collection of Max/MSP objects that we have found useful in creating gesture processing patches for digital musical instruments. Each patch is accompanied with a help patch to demonstrate its use.

Download:

Current Dependencies:

Patch Name Function
dot.3dpolar Converts xyz to amplitude, angle, and elevation.
dot.addresscoll A coll wrapper for storing and managing OSC addresses and associated properties.
dot.admin Takes care of all mapping and network communications for the Digital Orchestra DMIs and synths.
dot.alloc Using a shared bus, deliberate to allocate a unique identifier.
dot.appendaddr Append text to the end of the first item of a list.
dot.atoi Convert a symbol that starts with a decimal number to an integer.
dot.attackslope Given two thresholds, determine the slope between the points at which they are crossed in the positive direction. (i.e., attack speed)
dot.autoexpr User-definable expr-based scaling with autoscale and mapper-compatible output.
dot.autoscale Rescales signals according to auto-detected maximum and minimum values.
dot.bitstobyte Converts 8 bits into a single decimal byte.
dot.bytetobits Converts a single decimal byte into 8 binary bits.
dot.centre Automatically offsets input to re-centre signal around zero, with user-definable delay, ramp time, and time grain.
dot.channelthresh Combines ID-tagged channels into lists using a delay threshold. Like “thresh,” but keeps channel information.
dot.clip Clips a stream of numbers to a minimum, maximum, or both.
dot.combinote Combines 8 input signals into a single value such that any given combination will be a unique number.
dot.dampedenvelope Audio-rate envelope-generator with damping.
dot.debounce Filters multiple messages.
dot.distance Finds maximum or minimum distance between a scalar and a list.
dot.extrema Outputs values of local maxima and minima.
dot.fraction Looks at divisions of a list and outputs the highest value corresponding to nodes at 2 3 4 5 and 6 part divisions. Intended for use with dot.harmonicfilter.
dot.harmonicfilter For damping gains in modal synthesis based on a harmonic series. Handles “string division” at 0.5, 0.3, 0.25, 0.2, 0.167
dot.history Outputs list of delayed samples: x[n], x[n-1], …, x[n-m].
dot.index Generates the lowest unused index (for coll storage). Argument sets maximum index.
dot.leakyintegrator An accumulator with a hole in it. The leakiness is highly customizable.
dot.listinterpolate Interpolates/extrapolates between two lists of equal length.
dot.listinterpolate4 The same for four lists.
dot.listpipe Delays a stream of input like pipe, but also works for lists.
dot.mappingcoll A coll wrapper for storing and managing mapping information.
dot.median Outputs median value of a user-definable sample size.
dot.midiout Helper for quickly configuring MIDI output.
dot.namealloc Using a multicast OSC bus, deliberate to allocate a unique device number with the given root.
dot.namespaceparse A regexp-based function for reading device definitions formatted as XML and dumping them into a coll.
dot.oscroute A wrapper for jmod.oscroute allowing multiple OSC addresses to be dynamically added and removed.
dot.playabsolute Play files recorded by dot.recordabsolute.
dot.polar Converts x/y into amplitude and angle. Change in agle with wrap-around correction is also calculated.
dot.portalloc Using a multicast OSC bus, deliberate to allocate a unique port number.
dot.prependaddr Prepend text to the beginning of the first item of a list.
dot.probgate A probabilistic gate with remote control.
dot.properties regexp wrapper for parsing tagged message properties expressed in the form @<label> <data>. Second outlet outputs number of backreferences.
dot.recordabsolute Record an arbitrary number of datastreams with absolute timestamping.
dot.region Outputs and centre of multiple selected areas of a list (binary).
dot.router Performs OSC namespace translation, scaling, and clipping for an arbitrary number of mapping connections.
dot.slipdecode Parses slip-encoded data with user-defined delimiter and escape character.
dot.slipencode Encodes data using slip-coding with user-defined delimiter and escape character.
dot.slope Output the slope between each successive point.
dot.smooth Simple sample-averaging filter.
dot.squeuedlim Limits the speed of messages passing through like speedlim, but queued like zl queue.
dot.thresh A little hack to allow thresh to work with symbols.
dot.threshtrig Output a value only once after passing the threshold in the positive or negative directions.
dot.timedsmooth Downsampled audio-rate averaging filter.
dot.transfer Table-based waveshaping with customizable transfer function.
dot.wrap Simple offset with wrap-around.
dot.xmlread A native-Max XML parser - no externals!
dot.xmlwrite A native-Max XML parser - no externals!