This directory contains demonstrations in support of the keynote talk, "The Sampling Theorem and Its Discontents", ICMC 2015, Denton, Texas. The writeup can be found on msp.ucsd.edu/Publications/icmc15.pdf . The examples are all realized as Pure Data patches, and were tested in Pd 0.47. They should run on Windows XP or later, MacOS 10.6 or later, or any version of linux. No extra libraries are needed as long as the directory structure here is maintained with subdirectories "lib" and "rungekutte~". The patches (in the order that they are mentioned in the paper) are: mathews-table-lookup-example.pd - a Max Mathews sampling theorem demo bentbob-test.pd - a spin on the Moog ladder filter forcedosc-test.pd - a forced oscillator lorenz-test.pd - the Lorenz attractor coupled-sampled.pd - two coupled oscillators, using a non-RK approach About the three examples using the rungekutte~ object: bentbob-test.pd is a modified Moog ladder filter whose cutoff frequency may take different values depending on the sign of one of the state variables, so that in "oscillation" mode one half of the waveform plays faster than the other. forcedosc-test.pd is a simple nonlinear forced oscillator. lorenz-test.pd realizes the Lorenz dynamic system. Other examples (not using rungekutte~): mathews-table-lookup-example.pd : an example due to Max Mathews demonstrating foldover in non-interpolated table lookup oscillators. coupled-sampled.pd - two coupled oscillators demonstrating how a flow on a surgically modified torus can be solved exactly in discrete time even though the system modeled is continuous-time. This "realization" is actually the genesis of the idea, and doesn't implement the idea as it is (more correctly) described in the paper. Instead, there are two sampled oscillators, each based on rotating a vector about the origin and correcting its amplitude to 1 at each sample. Then, of the two oscillators, considered as masses on springs, "hit" each other, the phases are further altered as if they has rebounded off each other. About the rungekujtte~ object: rungekutte~ loads a shared object file defining a differential equation and integrates teh rquation using the runge-kutte technique. The differential equation is supplied as a shared object loaded by the rungekutte~ object at run time. The shared object should provide two integers: int nstate; int nparam; initialized to the number of state variables and of input parameters to the system, and a function: void derivative(float *result, float *state, float *params) where: result is the routine's output (the calculated derivitaves, nstate elements) state is the current state of the system (nstate elements) params is an array of additional parameters (nparams elements) The rungekutte~ object takes "nparams" and "nstate" as creation arguments and has "nparams" inlets and "nstate" outputs, all signals. Two sample differential equation sets are included: 'bob' is a model of the Moog voltage-controlled resonant filter, which is described in the dicumentation for Pd's bob~ object. The equations are: y1' = k * (S(x - r * y4) - S(y1)) y2' = k * (S(y1) - S(y2)) y3' = k * (S(y2) - S(y3)) y4' = k * (S(y3) - S(y4)) where k controls the cutoff frequency, r is feedback (<= 4 for stability), and S(x) is a saturation function. The second is the Lorentz attractor: x' = alpha * (sigma * (y - x)) y' = alpha * (x * (rho - z) - y) z' = alpha * (x * y - beta * z) Here we've added a parameter alpha to control the overall time scale, in addition to the three classical parameters sigma, rho, and beta (CF. the Wikipedia page). The rungekutte~ object is BSD licensed; copyright notice is in the source code.