Digital Orchestra Toolbox

Digital Orchestra Tools

Authors: Joseph Malloch, Stephen Sinclair, Marlon Schumacher

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 by a help patch to demonstrate its use.

License: LGPL

Download:

Current Dependencies:

  • Two objects from the Jamoma project
    • jcom.oscroute
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.aggregate Calculates aggregate of a list or a windowed stream.
dot.alloc Using a shared bus, deliberate to allocate a unique identifier.
dot.alloc2 Using a shared bus, deliberate to allocate a unique identifier. Peer with root index suggests identifiers to newcomers.
dot.appendaddr Append text to the end of the first item of a list.
dot.asyncdemod~ Asynchrouous demodulation of baseband signal from an AM-carrier.
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.autoscale Rescales signals according to auto-detected maximum and minimum values.
dot.autoscale~ Automatically scale incoming signal to a defined output-range.
dot.bitstobyte Converts 8 bits into a single decimal byte.
dot.boundary Mutes, clamps, wraps, or folds a stream of numbers at a predefined minimum and/or maximum value.
dot.bus Patcher-local communications.
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.change Just like the change object, but works for symbols and lists.
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.covariance Calculates covariance of two windowed streams of numbers.
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.dynamicexpr User-definable expr-based scaling with autoscale and dot mapper compatible output.
dot.extrema Outputs values of local maxima and minima.
dot.filein Adds dump command to the filein object.
dot.for Outputs a sequence of incremented numbers when triggered.
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.fromsignal~ Samples a signal triggered by change.
dot.getindex Retrieves indexes of data entries that match the query.
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.hz↔smp~ Converts between frequency in hz (cycles/second) and samples/cycle.
dot.index Generates the lowest unused index (for coll storage). Argument sets maximum index.
dot.interpolate4~ A sort of spectral interpolation of 4 signals via magnitude and phase vector.
dot.leakyintegrator An accumulator with a hole in it. The leakiness is highly customizable.
dot.leakyintegrator2 Integrator with a leak… handles floating-point numbers, signed values.
dot.line A wrapper for the line object so it accepts breakpoint trajectory lists like line~.
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.mass-spring Implements a simple mass–spring-damper model.
dot.matchNth Outputs message if the nth item matches the argument.
dot.matcNth Outputs message if the nth item address pattern matches the argument (partial match).
dot.median Outputs median value of a user-definable sample size.
dot.midiout Helper for quickly configuring MIDI output.
dot.midipedal~ Detect triggers from a MIDI-pedal through an audio-input.
dot.mix4~ Mixes four signals via XY-coordinates.
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.normalize Normalizes a list of ints or floats, or a windowed stream.
dot.nth Works like zl nth, but can match multiple indexes.
dot.orient Calculates absolute orientation from gravity and magnetic field vectors.
dot.OSCalias Shortens long OSC addresses by giving them aliases.
dot.OSCcompress Simply removes spaces in OSC address strings.
dot.OSCexpand Simply expands OSC address strings so that the route object can parse them.
dot.OSCroute A wrapper for jmod.oscroute allowing multiple OSC addresses to be dynamically added and removed.
dot.OSCunalias Restores OSC addresses that have been aliased using dot.OSCalias.
dot.phase→freq~ Instantaneous frequency estimation from phase deltas.
dot.playabsolute Play files recorded by dot.recordabsolute.
dot.polar Converts x/y into amplitude and angle. Change in angle 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.rad→norm~ Scales 2pi-radians to normalized range (0-1) with optional wraparound.
dot.recordabsolute Record an arbitrary number of datastreams with absolute timestamping.
dot.reg Like “zl reg” but right outlet bangs when empty.
dot.region Outputs and centre of multiple selected areas of a list (binary).
dot.repeat Repeats a message a sqecified number of times.
dot.route~ Separates signals from max-messages.
dot.router Performs OSC namespace translation, scaling, and clipping for an arbitrary number of mapping connections.
dot.scale~ MSP version of the Max scale-object (with 'proper' exponent).
dot.schmitt A trigger with hysteresis.
dot.schmitt~ Detect triggers from envelope of a signal.
dot.serial An abstraction containing the serial object, with menu generation and built-in polling and repeated-reading functionality.
dot.signaccum Accumulates positive vs. negative same-sign deltas.
dot.sintrack~ Track magnitude, instantaneous phase, and instantaneous freq. of a sinusoid.
dot.slide Simple sliding filter.
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.sparkline Draws a sparkline from a list or stream onto an lcd object.
dot.split Right outlet if greater then threshold, left outlet otherwise.
dot.squeuedlim Limits the speed of messages passing through like speedlim, but queued like zl queue.
dot.std Calculates the Standard Deviation of a windowed stream of numbers.
dot.swap Like the swap object, but for symbols and lists too!
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.timedextrema Outputs the minimum and maximum value received with the last n milliseconds.
dot.timedsmooth Downsampled audio-rate averaging filter.
dot.timedsmooth2 Time-windowed averaging filter in which each input sample has the same weight.
dot.transfer Table-based waveshaping with customizable transfer function.
dot.typecheck The dot.typecheck object routes input according to data type
dot.unwrap Assumes input is polar and lies between arg1 and arg2. Output is the shortest polar distance from the last sample.
dot.urn Generate random numbers without duplicates (like “urn”), but you can put numbers back in the pot.
dot.vscale Just like the scale object, but also for vectors. Includes clipping feature.
dot.wait Outputs a bang if input is over-threshold for longer than wait time.
dot.wrap Simple offset with wrap-around.
dot.xmlread2 A native-Max XML parser - no externals!
dot.xmlwrite2 A native-Max XML parser - no externals!