Digital Orchestra Toolbox
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:
- dot_max5_20100707.zip - digital orchestra toolbox for Max5 (492 KB)
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! |
