In Max, go to help > examples > gen to view the gen~ examples. Below are some selected examples that you may find helpful in completing this assignment.
Sound sources (synthesis)
karplus strong
flute
ola.pulsar
fm_bells
feedback AM
feedback FM
Effects
flange chorus
creepy verb
gigaverb
overdrive
resonator bank
moog ladder
dattoro reverb
comb
Homework
Pressure Build no. 2: Welcome to Hardware
Port your pressure build to the Daisy using the Oopsy library.
Set your daisy up with the amplifier.
Video record your example set up somewhere on campus.
let w = 50;
let a = 0;
function setup() {
createCanvas(400, 400);
}
function draw() {
background(220);
noFill();
// must first translate to change the point of origin by addition
translate(width / 2, height / 2);
// before we THEN rotate
a += 0.02;
// push and pop allow us to isolate a drawing state
push(); // start a drawing state
rotate(a);
// center square; square uses left and top x y positions
square(-(w / 2), -(w / 2), w);
pop(); // exit that drawing state
// // canvas border and quadrant
square(-width / 4, -height / 4, width / 2);
// line(0,-height/2,0,height/2);
// line(-width/2,0,width/2,0)
}
let w = 50;
let aD = 0; // difference in angles between each shape
let aToggle = 1; // toggle which is either 1 or -1
function setup() {
createCanvas(400, 400);
angleMode(DEGREES);
}
function draw() {
background(220);
noFill();
// must first translate to change the point of origin by addition
translate(width / 2, height / 2);
// before we THEN rotate
let a = 0;
for (let w = 10; w < width; w += 10) {
rotate(a);
square(-(w / 2), -(w / 2), w);
a += aD;
}
aD += 0.01 * aToggle; // increase the difference in angles over time;
if (a > 60) {
aToggle = -1;
} else if (a < 0) {
aToggle = 1;
}
}
let w = 50;
let aD = 0; // difference in angles between each shape
let aToggle = 1; // toggle which is either 1 or -1
let s = 1; // scale factor of our sketch
let sToggle = 1; // toggle for scale which is either 1 or -1.
let globalA = 0; // rotate the entire sketch
function setup() {
createCanvas(400, 400);
angleMode(DEGREES);
}
function draw() {
background(220);
noFill();
// must first translate to change the point of origin by addition
translate(width / 2, height / 2);
// before we THEN rotate
rotate(globalA);
globalA++;
scale(s);
s += 0.01 * sToggle;
if (s < 0.25) {
sToggle = 1;
} else if (s > 4) {
sToggle = -1;
}
let a = 0;
for (let w = 10; w < width; w += 5) {
rotate(a);
square(-(w / 2), -(w / 2), w);
a += aD;
}
aD += noise(a * 0.01) * 0.01 * aToggle; // increase the difference in angles over time;
if (a > 60) {
aToggle = -1;
} else if (a < 0) {
aToggle = 1;
}
}
// note, I have to comment out filters because of a bug in how my website converts them to be displayed.
// also note that the image locations are different from how they will look when you upload them to the p5 editor for the same reasons.
let img1, img2, img3, img4;
let s = 1; //scalar factor for currentImage1
// opacity of our second image
let a = 50;
// the threshold of our posterize
let t = 0.0;
let s2 = 2; // scalar factor for currentImage2
// carousel state
let state = 0; // state is either 0 or 1;
let counter1 = 0;
let counter2 = 0;
let ang = 0;
let currentImage1, currentImage2;
function preload() {
img1 = loadImage("/assets/p5img/texture1.jpeg");
img2 = loadImage("/assets/p5img/texture2.jpeg");
img3 = loadImage("/assets/p5img/texture3.jpeg");
img4 = loadImage("/assets/p5img/texture4.jpeg");
}
function setup() {
createCanvas(640, 480);
imageMode(CENTER);
// set current images
currentImage1 = img1;
currentImage2 = img2;
}
function draw() {
// drawing operations
background(0);
translate(width / 2, height / 2);
ang += 0.001;
push();
scale(s);
rotate(ang);
tint(0, 255, 0, 126);
image(currentImage1, 0, 0, img1.width, img1.height);
// filter(THRESHOLD, t); // range between 0 and 1
// filter(INVERT);
// filter(BLUR);
pop();
push();
scale(s2);
tint(0, 255, 0, a); // r,g,b,a
image(currentImage2, 0, 0, img1.width, img1.height);
//filter(BLUR);
//filter(BLUR);
pop();
// logic counter animations operations
a += 0.125;
t += 0.0001;
s += 0.0005;
s2 -= 0.0005;
//currentImage1 counter
counter1++;
if (counter1 > 1000) {
s = 1; // reset scale of currentImage1
counter1 = 0;
a = 50;
t = 0.0;
if (currentImage1 == img1) {
currentImage1 = img3;
} else {
currentImage1 = img1;
}
// cuurentImage2
counter2++;
if (counter2 > 1500) {
s2 = 2;
counter2 = 0;
if (currentImage2 == img2) {
currentImage2 = img4;
} else {
currentImage2 = img2;
}
}
}
}
// note, I have to comment out filters because of a bug in how my website converts them to be displayed.
// also note that the image locations are different from how they will look when you upload them to the p5 editor for the same reasons.
let img1, img2, img3, img4;
let a = 0;
let r = 0;
let dir = 1;
function preload() {
img1 = loadImage("/assets/p5img/texture1.jpeg");
img2 = loadImage("/assets/p5img/texture2.jpeg");
img3 = loadImage("/assets/p5img/texture3.jpeg");
img4 = loadImage("/assets/p5img/texture4.jpeg");
}
function setup() {
createCanvas(640, 480);
imageMode(CENTER);
angleMode(DEGREES);
}
function draw() {
a += 1;
r += 0.5 * dir;
if (r > width / 2 || r < 0) {
dir *= -1;
}
x = width / 2 + sin(a) * r;
y = height / 2 + cos(a) * r;
background(220);
translate(width / 2, height / 2);
push(); // start a drawing state
rotate(90);
let img2a = map(x, 0, width, 0, 127);
tint(255, 0, 127, img2a);
image(img2, 0, 0);
pop(); // forgets everything after push
let img1a = map(x, width, 0, 0, 127);
tint(255, 0, 0, img1a);
image(img1, 0, 0);
let img3a = map(y, 0, height, 0, 127);
tint(255, 0, 120, img3a);
image(img3, 0, 0);
let img4a = map(y, height, 0, 0, 127);
tint(127, 0, 120, img4a);
image(img4, 0, 0, width, height);
//filter(BLUR);
//filter(POSTERIZE, 4);
//filter(BLUR);
// //filter(THRESHOLD, 0.5);
// filter(BLUR);
// // filter(INVERT);
// fill(0, 0, 255);
// noStroke();
// circle(x, y, 3);
}