MULTICOMB


MULTICOMB takes an input file and runs it through four comb filters. Funny thing is, you can only specify the upper and lower range of the filters -- the actual frequencies are chosen randomly (insert insane laughter from Brad here). MULTICOMB works great in stereo, as the filters are spread across a two-channel output field automatically.

Syntax:


makegen(1, 24, 1000, t0, a0, t1, a1) /* the amplitude envelope of the output signal in time/amplitude pairs */

MULTICOMB(outskip, inskip, duration, amplitude, comblow, combhigh, reverb)

in comment form:

/* MULTICOMB -- 4 simultaneous comb filters randomly chosen within
*       a specified range (spread across a stereo field)
*  p0 = output skip
*  p1 = input skip
*  p2 = output duration
*  p3 = amplitude multiplier
*  p4 = comb frequency range bottom
*  p5 = comb frequency range top
*  p6 = reverb time
*  assumes function table 1 is the amplitude envelope
*
*/

An example score:

rtsetparams(44100, 2)
load("MULTICOMB")
rtinput("/sndh/bob.dole.mono.snd")
reset(20000)
makegen(1, 24, 1000, 0,0, 0.5,1, 4.0,1, 4.3,0)
MULTICOMB(0, 0, 4.3, 0.02, cpspch(6.02), cpspch(9.05), 1)

Another score:

rtsetparams(44100, 2)
load("MULTICOMB")
rtinput("/sndh/bob.dole.mono.snd")
reset(20000)
makegen(1, 24, 1000, 0,0, 0.5,1, 8.6,1, 8.7,0, 8.8,0)
MULTICOMB(0, 0, 8.8, 0.01, cpspch(7.02), cpspch(8.05), 5)

Another example, using the real-time audio input:

set_option("full_duplex_on")
rtsetparams(44100, 2, 256)
load("MULTICOMB")
rtinput("AUDIO")
reset(20000)

srand(87)

makegen(1, 24, 1000, 0,0, 1,1, 3,1, 5,0)
for(start = 0; start < 30; start = start + 2.5) {
	low = random() * 500.0 + 50.0
	hi = low + (random() * 300.0)
	MULTICOMB(start, 0, 5, 0.01, low, hi, 2.5)
	}