class1.maxpatch: basic repeated note scheduling
-
// STRUM2(outsk, dur, AMP, PITCH, squish, decay_time[, PAN])
start = 0
for (i = 0; i < 14; i = i+1) {
STRUM2(start, 3.5, 20000, 478.973, 1, 3.5, 0.5)
start = start + 0.2
}
class2.maxpatch: use random pitches
-
// STRUM2(outsk, dur, AMP, PITCH, squish, decay_time[, PAN])
start = 0
for (i = 0; i < 14; i = i+1) {
randompitch = irand(200, 700)
STRUM2(start, 3.5, 20000, randompitch, 1, 3.5, 0.5)
start = start + 0.2
}
class3.maxpatch: flow-of-control; add a decision in the loop
-
// STRUM2(outsk, dur, AMP, PITCH, squish, decay_time[, PAN])
start = 0
randompitch = 127
for (i = 0; i < 100; i = i+1) {
if (i > 20) {
randompitch = irand(200, 700)
}
STRUM2(start, 0.5, 20000, randompitch, 1, 0.5, 0.5)
start = start + 0.05
}
class4.maxpatch: use the WAVETABLE instrument
-
// WAVETABLE(outsk, dur, AMP, PITCH[, PAN, WAVETABLE])
start = 0
for (i = 0; i < 7; i = i+1) {
randompitch = irand(200, 700)
WAVETABLE(start, 2.0, 10000, randompitch, random())
start = start + 0.5
}
class5.maxpatch: add an amplitude envelope
-
// WAVETABLE(outsk, dur, AMP, PITCH[, PAN, WAVETABLE])
amplitude = maketable("line", 1000, 0,0, 1.0,1, 2.0,0)
start = 0
for (i = 0; i < 7; i = i+1) {
randompitch = irand(200, 700)
WAVETABLE(start, 2.0, 10000*amplitude, randompitch, random())
start = start + 0.5
}
class6.maxpatch: add a wavetable
-
// WAVETABLE(outsk, dur, AMP, PITCH[, PAN, WAVETABLE])
amplitude = maketable("line", 1000, 0,0, 50,1, 100,0)
wavetable = maketable("wave", 1000, "buzz7")
start = 0
for (i = 0; i < 7; i = i+1) {
randompitch = irand(200, 700)
WAVETABLE(start, 2.0, 10000*amplitude, randompitch, random(), wavetable)
start = start + 0.5
}
class7.maxpatch: add vibrato (LFO) to each note. There is a bug
with this, see if you can tell! I'll discuss it in the next class
-
// WAVETABLE(outsk, dur, AMP, PITCH[, PAN, WAVETABLE])
amplitude = maketable("line", 1000, 0,0, 50,1, 100,0)
wavetable = maketable("wave", 1000, "buzz7")
vibrato = makeLFO("sine", 3.0, 0, 10)
start = 0
for (i = 0; i < 7; i = i+1) {
randompitch = irand(200, 700)
WAVETABLE(start, 2.0, 10000*amplitude, randompitch+vibrato, random(), wavetable)
start = start + 0.5
}
class8.maxpatch: very basic vibrato (should probably precede class7.maxpatch)
-
// WAVETABLE(outsk, dur, AMP, PITCH[, PAN, WAVETABLE])
amplitude = maketable("line", 1000, 0,0, 50,1, 100,0)
wavetable = maketable("wave", 1000, "buzz7")
vibrato = makeLFO("sine", 1.0, 110, 200)
randompitch = irand(200, 700)
WAVETABLE(0, 10.0, 10000*amplitude, vibrato, random(), wavetable)
class9.maxpatch: use makeconnection() to allow an external slider to
control pitch
-
// WAVETABLE(outsk, dur, AMP, PITCH[, PAN, WAVETABLE])
amplitude = maketable("line", 1000, 0,0, 50,1, 100,0)
wavetable = maketable("wave", 1000, "buzz7")
slidepitch = makeconnection("inlet", 1, 100)
WAVETABLE(0, 10.0, 10000*amplitude, slidepitch, random(), wavetable)
class10.maxpatch: make a simple MSAXOFONY sound
-
// MSAXOFONY(outsk, dur, AMP, FREQ, NOISEAMP, maxpressure, REEDSTUFF, APERTURE, BLOWPOS[, PAN, BREATHENV])
MSAXOFONY(0, 3.4, 20000, 345, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5)
class11.maxpatch: get pitches from an array
-
// MSAXOFONY(outsk, dur, AMP, FREQ, NOISEAMP, maxpressure, REEDSTUFF, APERTURE, BLOWPOS[, PAN, BREATHENV])
scale = { 8.00, 8.02, 8.034, 8.05, 8.07, 8.10, 9.00 }
lenscale = len(scale)
start = 0
for (i = 0; i < 7; i = i+1) {
index = trand(0, lenscale)
freq = cpspch(scale[index])
MSAXOFONY(start, 1.5, 20000, freq, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5)
start = start + 1.0
}
class12.maxpatch: use a larger array, shorter pitches
-
// MSAXOFONY(outsk, dur, AMP, FREQ, NOISEAMP, maxpressure, REEDSTUFF, APERTURE, BLOWPOS[, PAN, BREATHENV])
scale = { 7.00, 7.02, 7.03, 7.05, 7.07, 7.10, 8.00, 8.02,
8.034, 8.05, 8.07, 8.10, 9.00, 9.02, 9.03, 9.04, 9.05,
9.07, 9.10, 10.00 }
lenscale = len(scale)
start = 0
for (i = 0; i < 15; i = i+1) {
index = trand(0, lenscale)
freq = cpspch(scale[index])
MSAXOFONY(start, 0.1, 20000, freq, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5)
start = start + 0.2
}
class13.maxpatch: control the amount of array being consulted with an
external "$1" variable
-
// MSAXOFONY(outsk, dur, AMP, FREQ, NOISEAMP, maxpressure, REEDSTUFF, APERTURE, BLOWPOS[, PAN, BREATHENV])
scale = { 7.00, 7.02, 7.03, 7.05, 7.07, 7.10, 8.00, 8.02,
8.034, 8.05, 8.07, 8.10, 9.00, 9.02, 9.03, 9.04, 9.05,
9.07, 9.10, 10.00 }
lenscale = len(scale)
lookuplength = lenscale * $1
start = 0
for (i = 0; i < 15; i = i+1) {
index = trand(0, lookuplength)
freq = cpspch(scale[index])
MSAXOFONY(start, 0.1, 20000, freq, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5)
start = start + 0.1
}
class14.maxpatch: use MAXBANG() to keep the process going
-
// MSAXOFONY(outsk, dur, AMP, FREQ, NOISEAMP, maxpressure, REEDSTUFF, APERTURE, BLOWPOS[, PAN, BREATHENV])
scale = { 7.00, 7.02, 7.03, 7.05, 7.07, 7.10, 8.00, 8.02,
8.034, 8.05, 8.07, 8.10, 9.00, 9.02, 9.03, 9.04, 9.05,
9.07, 9.10, 10.00 }
lenscale = len(scale)
lookuplength = lenscale * $1
start = 0
for (i = 0; i < 15; i = i+1) {
index = trand(0, lookuplength)
freq = cpspch(scale[index])
MSAXOFONY(start, 0.1, 20000, freq, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5)
start = start + 0.1
}
MAXBANG(start)