webdevelopment: Alain Brusch
Back
Time As A Trigger – Inspired by Nature

Trying to learn from moon with odd and flood.

Screenshot
let posterF4 = 0.699;
let sel;
let h1 = [];
let h2 = [];
let f1, f2, f3, f4;
let mode = 1,
	useBackground = true,
	useHeader = true,
	useFooter = true;

let tilesX = 100;
let tilesY = 200;
////////////////////////////
////////////////////////////


var dragging = false; // Is the object being dragged?
var rollover = false; // Is the mouse over the ellipse?

var xdrag, ydrag, wdrag, hdrag; // Location and size
var offsetXdrag, offsetYdrag; // Mouseclick offset

////////////////////////////
////////////////////////////
//typeWave
let rows, columns;
let xSpace, ySpace;
let yWave;
let yWaveSize = 20;
let yWaveSpeed = 0.1;
let time = 2;
////////////////////////////
////////////////////////////
//layers
let og;
let infoLayer;
let typeLayer;
let graphicLayer;
let layer3D;
let myModel;
////////////////////////////
////////////////////////////
//audio
let pts;
let font;
let bounds;
let txtA, txtSize, txtOptions;
let soundLayer;
////////////////////////////
////////////////////////////
function preload() {
	// for(let o of objLoc) {
	// 	objFiles.push(loadModel(o));
	// }
	//font = loadFont('data/fonts/AkzidenzGrotesk-LightExtended.otf');
	font = loadFont('data/fonts/Lausanne/Lausanne-300.otf');
}
////////////////////////////
////////////////////////////
function setup() {
	createCanvas(windowWidth, windowHeight);

	xdrag = 50;
	ydrag = 350;
	// Dimensions
	w = 75;
	h = 50;

	///
	sel = createSelect();
	sel.position(windowWidth - 133, 400);
	sel.option('drawmode1');
	sel.option('drawmode2');
	sel.option('drawmode3');
	sel.option('drawmode4');
	sel.option('drawmode5');
	//sel.option('drawmode6');
	sel.changed(changeModes);
	///
	// objMenu = createSelect();
	// 	objMenu.position(windowWidth-114, 420);
	// 	for(let i=0;i<objNames.length;i++){
	// 		objMenu.option(objNames[i],i); 
	// 		}
	// 	objMenu.changed(changeObject);
	///

	inp = createInput('TYPE').position(width - 100, 340).style('width', '50px');
	inp.input(updateInput);

	oh = createInput('2384').position(width - 100, 60).style('width', '50px');
	th1 = createInput('MA').position(width - 100, 120).style('width', '50px');
	th2 = createInput('THESIS').position(width - 100, 140).style('width', '50px');
	th3 = createInput('EXPERIMENT').position(width - 100, 160).style('width', '50px');
	th4 = createInput('001').position(width - 100, 180).style('width', '50px');

	tf1 = createInput('ALAIN').position(width - 100, 220).style('width', '50px');
	tf2 = createInput('BRUSCH').position(width - 100, 240).style('width', '50px');
	tf3 = createInput('HGK').position(width - 100, 260).style('width', '50px');
	tf4 = createInput('BASEL').position(width - 100, 280).style('width', '50px');
	scl = createInput('0.40').position(width - 100, 80).style('width', '50px');

	th1.input(updateInput);
	th2.input(updateInput);
	th3.input(updateInput);
	th4.input(updateInput);
	tf1.input(updateInput);
	tf2.input(updateInput);
	tf3.input(updateInput);
	tf4.input(updateInput);
	scl.input(updateInput);

	////////////////////////////
	//ADD FUNCTIONS
	createSliders();
	labels();
	checkboxes();
	updateSlider(); //--> not working:/
	////////////////////////////
	//ADDING LAYERS	
	createLayers();
	////////////////////////////
	//ADDING AUDIO TXT INPUTS
	//audio add ons drawmode4
	inp2 = createInput('O');
	inp2.position(width - 100, 367).style('width', '50px');
	inp2.input(updateInputA);
	txtA = 'O';
	txtSize = 350; //txtS.value() -> doesn't work | maybe try 2 * window.innerWidth + size?
	txtOptions = { //amounts of points using
		sampleFactor: .15,
		simplifyThreshold: 0
	}
	genType()
	//end of audio add ons dm4
	////////////////////////////

	updateInput();
	imageMode(CENTER)

}
////////////////////////////
////////////////////////////
function createLayers() {
	og = createGraphics(oh.value() * posterF4, oh.value());
	infoLayer = createGraphics(oh.value() * posterF4, oh.value());
	typeLayer = createGraphics(oh.value() * posterF4, oh.value());
	graphicLayer = createGraphics(oh.value() * posterF4, oh.value());
	layer3D = createGraphics(oh.value() * posterF4, oh.value(), WEBGL);
	soundLayer = createGraphics(oh.value() * posterF4, oh.value());
}

function genType() {
	pts = font.textToPoints(txtA, 0, 0, txtS.value(), txtOptions)
	bounds = font.textBounds(txtA, 0, 0, txtS.value(), txtOptions);
}

function updateInputA() {
	txtA = inp2.value();
	genType()
}

function updateInput() {
	//f1.txt = tf1.value()
	txt = inp.value();
	scl = scl.value();

}
////////////////////////////
////////////////////////////
//MAIN DRAW FUNCTION
function draw() {

	// Adjust location if being dragged
	if(dragging) {
		xdrag = mouseX + offsetX;
		ydrag = mouseY + offsetY;
	}

	if(useBackground) {
		background('ORANGE');
		og.background(0, fadeSlider.value()); //**maybe remove -> DISCUSS WITH ANDREA & TED
	}
	if(mode == 1) {
		//background(0, 0, 255);
		drawmode1(); //DRAWING LAYER
	} else if(mode == 2) {
		drawmode2();
	} else if(mode == 3) {
		drawmode3();
	} else if(mode == 4) {
		drawmode4();
	} else if(mode == 5) {
		drawmode5();
	} else if(mode == 6) {
		drawmode6();
	}
	infoLayers(); //ADDING INFO LINES ON TOP

	//DRAW OUTPUT GRAPHIC LAYER (OG)
	image(og, width / 2, height / 2, (oh.value() * posterF4) * scl, oh.value() * scl);
	image(infoLayer, width / 2, height / 2, (oh.value() * posterF4) * scl, oh.value() * scl);



}
////////////////////////////
////////////////////////////
//INFO LINES HEADER & FOOTER
function infoLayers() {
	//new header info
	infoLayer.clear();
	h1 = new Header(th1.value(), 40, 30, 20);
	h2 = new Header(th2.value(), (og.width / 1.5) / 2, 30, 20);
	h3 = new Header(th3.value(), og.width / 2.5 + ((og.width / 2) / 2), 30, 20);
	h4 = new Header(th4.value(), og.width - 40, 30, 20);
	//new footer info	
	f1 = new Footer(tf1.value(), 40, og.height - 20, 20);
	f2 = new Footer(tf2.value(), (og.width / 1.5) / 2, og.height - 20, 20);
	f3 = new Footer(tf3.value(), og.width / 2.5 + ((og.width / 2) / 2), og.height - 20, 20);
	f4 = new Footer(tf4.value(), og.width - 40, og.height - 20, 20);
	//draw header info
	h1.display();
	h2.display();
	h3.display();
	h4.display();

	//draw footer info
	f1.display();
	f2.display();
	f3.display();
	f4.display();
}
////////////////////////////
////////////////////////////
//DRAWMODE1 * INSTRUCTIONS

function drawmode1() {
	//WE NEED TO DRAW EVERYTHING TO OG LAYER (OUTPUT GRAPHICS)
	let wave = atan(sin(radians(frameCount/PI))*20)*26.75
	og.background(0);
	og.fill(255)
	og.push();
	
	og.textFont(font)
	og.textSize(680);
	og.textAlign(LEFT);
	og.text('wave', 10*(wave), 530, wdrag, hdrag);
	og.text('wave', 10*(-wave), height - 100, wdrag, hdrag);
	og.text('wave', 10*(wave), height + 300, wdrag, hdrag);
	og.text('wave', 10*(-wave), height + 700, wdrag, hdrag);
	og.text('wave', 10*(wave), height + 1100, wdrag, hdrag);

	////og.text('THE MENUE NEXT TO THE CANVAS', 50, 300); //INSTRUCTION TEXT
	og.pop();
	og.push();
	og.fill(255)
og.blendMode(DIFFERENCE)
	// og.stroke(255);
	og.noStroke()
	og.strokeWeight(5);
	og.ellipse(og.width - 400, wave * ampEase, mouseY);
	og.ellipse(og.width - 550 - wave * ampEase, 800 - wave * ampEase, mouseX);
	og.ellipse(og.width - 150 + wave * 100, og.height - ampEase - wave * ampEase, mouseY);
	og.ellipse(150, og.height - 100, mouseX);
	og.ellipse(wave * 100, og.height / 2, mouseY);
	og.pop();

	//textSize(txtS.value());
	//text(th1.value(), width / 2, height / 2, 500,100);
}

function drawmode2() {
	//WE NEED TO DRAW EVERYTHING TO OG LAYER (OUTPUT GRAPHICS)
	wave = sin(radians(frameCount))
	og.background(0);
	og.fill(255)
	og.push();
	og.textFont(font)
	og.textSize(680);
	og.textAlign(LEFT);
	og.text('wave', 10, 530, wdrag, hdrag);
	og.text('wave', 10, height - 100, wdrag, hdrag);
	og.text('wave', 10, height + 300, wdrag, hdrag);
	og.text('wave', 10, height + 700, wdrag, hdrag);
	og.text('wave', 10, height + 1100, wdrag, hdrag);

	////og.text('THE MENUE NEXT TO THE CANVAS', 50, 300); //INSTRUCTION TEXT
	og.pop();
	og.push();
	og.fill(255)
	og.blendMode(DIFFERENCE)
	og.noStroke()
	og.strokeWeight(5);
	// og.ellipse(og.width-400,wave*100,mouseY&ampEase);
	// og.ellipse(og.width-550-wave*100,800-wave*100,mouseX&amp);
	// og.ellipse(og.width-150+wave*100,og.height-100-wave*100,mouseY&amp);
	// og.ellipse(150-wave*100,og.height-100,mouseX&amp);
	// og.ellipse(wave*100,og.height/2,mouseY&amp);
	og.pop();

	og.push();
	og.fill(255)
	og.blendMode(DIFFERENCE)
	og.noStroke();

	let maxDistance = 100;
	let audioX = map(ampEase, 0, ampEase, 0, og.width)
	let stepX = 40
	let stepY = 40
	
	for(let xg = 0; xg < og.width; xg += stepX) {
		for(let yg = 0; yg < og.height; yg += stepY) {
			let distPoints = dist(mouseX, mouseY, xg, yg);
			let waveAudio = fract(map(ampEase, 0, ampEase, 0, 100))

			let diameter = distPoints / maxDistance;
			og.ellipse(xg, yg, diameter, diameter)

		}
	}
	og.pop();

	//textSize(txtS.value());
	//text(th1.value(), width / 2, height / 2, 500,100);
}

////////////////////////////////	
////////////////////////////////	
//////////////////////////////////	 *** create DOM Elements 

////////////////////////////////	
//CREATE SLIDERS

function createSliders() {
	columnsSlider = createSlider(1, 100, 20).position(30, 80).style('width', '100px');
	columnsSlider.input(updateSlider);
	rowsSlider = createSlider(1, 100, 25).position(30, 130).style('width', '100px');
	rowsSlider.input(updateSlider);
	xSpaceSlider = createSlider(0, 400, 200).position(150, 80).style('width', '100px');
	xSpaceSlider.input(updateSlider);
	ySpaceSlider = createSlider(0, 400, 200).position(150, 130).style('width', '100px');
	ySpaceSlider.input(updateSlider);
	yWaveSizeSlider = createSlider(0, 100, 20).position(30, 180).style('width', '100px');
	yWaveSizeSlider.input(updateSlider);
	yWaveLengthSlider = createSlider(0, PI, 0.5, 0.01).position(30, 230).style('width', '100px');
	yWaveLengthSlider.input(updateSlider);
	yWaveOffsetSlider = createSlider(0, PI, 0.5, 0.01).position(30, 280).style('width', '100px');
	yWaveOffsetSlider.input(updateSlider);
	yWaveSpeedSlider = createSlider(0, 0.25, 0.05, 0.01).position(30, 330).style('width', '100px');
	yWaveSpeedSlider.input(updateSlider);

	txtS = createSlider(10, 1600, 400, 1).position(30, 380).style('width', '100px')
	txtS.input(updateSlider);
	fadeSlider = createSlider(0, 100, 90, 0).position(30, 430).style('width', '100px')
	fadeSlider.input(updateSlider);


	objSlider = createSlider(0, 1500, 250, 1).position(30, windowHeight - 150).style('width', '100px')
	objSlider.input(updateSlider);

	traXslider = createSlider(-width * 4, width * 4, 0, 0).position(155, windowHeight - 150).style('width', '100px')
	traXslider.input(updateSlider);
	traYslider = createSlider(-height * 4, height * 4, (height * 4) / 3, 0).position(270, height - 150).style('width', '100px')
	traYslider.input(updateSlider);

	//bottom sliders
	clrSlider = createSlider(0, 255, 0, 0).position(30, windowHeight - 100).style('width', '100px')
	clrSlider.input(updateSlider);
	clrSliderG = createSlider(0, 255, frameCount % 255, 0).position(150, height - 100).style('width', '100px')
	clrSliderG.input(updateSlider);
	clrSliderB = createSlider(0, 255, 255, 0).position(270, windowHeight - 100).style('width', '100px')
	clrSliderB.input(updateSlider);

	rotXslider = createSlider(0, 360, 10, 0).position(30, windowHeight - 40).style('width', '100px')
	rotXslider.input(updateSlider);
	rotYslider = createSlider(0, 360, 0, 0).position(150, windowHeight - 40).style('width', '100px')
	rotYslider.input(updateSlider);
	rotZslider = createSlider(0, 360, 0, 0).position(270, windowHeight - 40).style('width', '100px')
	rotZslider.input(updateSlider);



}

function updateSlider() {
	columnsSlider.html("sliderValue:" + columnsSlider.value());
	rowsSlider.html("sliderValue:" + rowsSlider.value());
	xSpaceSlider.html("sliderValue:" + xSpaceSlider.value());
	ySpaceSlider.html("sliderValue:" + ySpaceSlider.value());
	yWaveSizeSlider.html("sliderValue:" + yWaveSizeSlider.value());
	yWaveLengthSlider.html("sliderValue:" + yWaveLengthSlider.value());
	yWaveOffsetSlider.html("sliderValue:" + yWaveOffsetSlider.value());
	yWaveSpeedSlider.html("sliderValue:" + yWaveSpeedSlider.value());
	clrSlider.html("sliderValue:" + clrSlider.value());
	clrSliderG.html("sliderValue:" + clrSliderG.value());
	clrSliderB.html("sliderValue:" + clrSliderB.value());
	fadeSlider.html("sliderValue:" + fadeSlider.value());
	objSlider.html("sliderValue:" + objSlider.value());
	rotXslider.html("sliderValue:" + rotXslider.value());
	rotYslider.html("sliderValue:" + rotXslider.value());
	rotZslider.html("sliderValue:" + rotXslider.value());
	txtS.html("sliderValue:" + txtS.value());
	traXslider.html("sliderValue:" + traXslider.value());
	traYslider.html("sliderValue:" + traYslider.value());


	//
	if(mode == 3) {
		genType()
	} else if(mode == 4) {
		genType()
	}
	if(mode == 5) {
		genType()
	}

}

////////////////////////////////	
////////////////////////////////	
//CREATE LABELS

function labels() {
	columns = createDiv("Columns:"); //create Div
	columns.position(30, 60); //position label
	columns.style("color", '#fff');
	columns.style("font-size", '6');
	columns.style("font-family", 'sans-serif');

	rows = createDiv("Rows:"); //create Div
	rows.position(30, 110); //position label
	rows.style("color", '#fff');
	rows.style("font-size", '6');
	rows.style("font-family", 'sans-serif');

	cSpac = createDiv("Column spacing:"); //create Div
	cSpac.position(150, 60); //position label
	cSpac.style("color", '#fff');
	cSpac.style("font-size", '6');
	cSpac.style("font-family", 'sans-serif');

	rSpac = createDiv("Row spacing:"); //create Div
	rSpac.position(150, 110); //position label
	rSpac.style("color", '#fff');
	rSpac.style("font-size", '6');
	rSpac.style("font-family", 'sans-serif');

	wSize = createDiv("WaveSize:"); //create Div
	wSize.position(30, 160); //position label
	wSize.style("color", '#fff');
	wSize.style("font-size", '6');
	wSize.style("font-family", 'sans-serif');

	wLength = createDiv("WaveLength:"); //create Div
	wLength.position(30, 210); //position label
	wLength.style("color", '#fff');
	wLength.style("font-size", '6');
	wLength.style("font-family", 'sans-serif');

	wOff = createDiv("WaveOffset:"); //create Div
	wOff.position(30, 260); //position label
	wOff.style("color", '#fff');
	wOff.style("font-size", '6');
	wOff.style("font-family", 'sans-serif');

	wS = createDiv("WaveSpeed:"); //create Div
	wS.position(30, 310); //position label
	wS.style("color", '#fff');
	wS.style("font-size", '6');
	wS.style("font-family", 'sans-serif');

	LabelTsize = createDiv("TextSize:"); //create Div
	LabelTsize.position(30, 360); //position label
	LabelTsize.style("color", '#fff');
	LabelTsize.style("font-size", '8');
	LabelTsize.style("font-family", 'sans-serif');

	LabelFade = createDiv("Fade:"); //create Div
	LabelFade.position(30, 410); //position label
	LabelFade.style("color", '#fff');
	LabelFade.style("font-size", '8');
	LabelFade.style("font-family", 'sans-serif');

	LabelFade = createDiv("Scale 3D OBJ:"); //create Div
	LabelFade.position(30, windowHeight - 170); //position label
	LabelFade.style("color", '#fff');
	LabelFade.style("font-size", '8');
	LabelFade.style("font-family", 'sans-serif');

	LabeltrX = createDiv("TranslateX:"); //create Div
	LabeltrX.position(150, windowHeight - 170); //position label
	LabeltrX.style("color", '#fff');
	LabeltrX.style("font-size", '8');
	LabeltrX.style("font-family", 'sans-serif');

	LabeltrY = createDiv("TranslateY:"); //create Div
	LabeltrY.position(270, windowHeight - 170); //position label
	LabeltrY.style("color", '#fff');
	LabeltrY.style("font-size", '8');
	LabeltrY.style("font-family", 'sans-serif');

	LabelR = createDiv("Color R:"); //create Div
	LabelR.position(30, windowHeight - 120); //position label
	LabelR.style("color", '#fff');
	LabelR.style("font-size", '8');
	LabelR.style("font-family", 'sans-serif');

	LabelG = createDiv("Color G:"); //create Div
	LabelG.position(155, windowHeight - 120); //position label
	LabelG.style("color", '#fff');
	LabelG.style("font-size", '8');
	LabelG.style("font-family", 'sans-serif');

	LabelB = createDiv("Color B:"); //create Div
	LabelB.position(270, windowHeight - 120); //position label
	LabelB.style("color", '#fff');
	LabelB.style("font-size", '8');
	LabelB.style("font-family", 'sans-serif');

	LabelRx = createDiv("RotateX:"); //create Div
	LabelRx.position(30, windowHeight - 60); //position label
	LabelRx.style("color", '#fff');
	LabelRx.style("font-size", '8');
	LabelRx.style("font-family", 'sans-serif');

	LabelRy = createDiv("RotateY:"); //create Div
	LabelRy.position(155, windowHeight - 60); //position label
	LabelRy.style("color", '#fff');
	LabelRy.style("font-size", '8');
	LabelRy.style("font-family", 'sans-serif');

	LabelRz = createDiv("RotateZ:"); //create Div
	LabelRz.position(270, windowHeight - 60); //position label
	LabelRz.style("color", '#fff');
	LabelRz.style("font-size", '8');
	LabelRz.style("font-family", 'sans-serif');

	/*labelC1 = createDiv("CanvasWidth"); //create Div
	labelC1.position(windowWidth - 210, 40); //position label
	labelC1.style("color", '#fff');
	labelC1.style("font-size", '8');
	labelC1.style("font-family", 'sans-serif');*/

	labelC2 = createDiv("CanvasHeight"); //create Div
	labelC2.position(windowWidth - 205, 60); //position label
	labelC2.style("color", '#fff');
	labelC2.style("font-size", '8');
	labelC2.style("font-family", 'sans-serif');

	//labels for header info
	labelh1 = createDiv("Header Info"); //create Div
	labelh1.position(windowWidth - 205, 120); //position label
	labelh1.style("color", '#fff');
	labelh1.style("font-size", '8');
	labelh1.style("font-family", 'sans-serif');

	labelh2 = createDiv("Header Info2"); //create Div
	labelh2.position(windowWidth - 205, 140); //position label
	labelh2.style("color", '#fff');
	labelh2.style("font-size", '8');
	labelh2.style("font-family", 'sans-serif');

	labelh3 = createDiv("Header Info3"); //create Div
	labelh3.position(windowWidth - 205, 160); //position label
	labelh3.style("color", '#fff');
	labelh3.style("font-size", '8');
	labelh3.style("font-family", 'sans-serif');

	labelh4 = createDiv("Header Info4"); //create Div
	labelh4.position(windowWidth - 205, 180); //position label
	labelh4.style("color", '#fff');
	labelh4.style("font-size", '8');
	labelh4.style("font-family", 'sans-serif');

	//labels for footer info
	labelf1 = createDiv("Footer Info"); //create Div
	labelf1.position(windowWidth - 200, 220); //position label
	labelf1.style("color", '#fff');
	labelf1.style("font-size", '8');
	labelf1.style("font-family", 'sans-serif');

	labelf2 = createDiv("Footer Info2"); //create Div
	labelf2.position(windowWidth - 200, 240); //position label
	labelf2.style("color", '#fff');
	labelf2.style("font-size", '8');
	labelf2.style("font-family", 'sans-serif');

	labelf3 = createDiv("Footer Info3"); //create Div
	labelf3.position(windowWidth - 200, 260); //position label
	labelf3.style("color", '#fff');
	labelf3.style("font-size", '8');
	labelf3.style("font-family", 'sans-serif');

	labelf4 = createDiv("Footer Info4"); //create Div
	labelf4.position(windowWidth - 200, 280); //position label
	labelf4.style("color", '#fff');
	labelf4.style("font-size", '8');
	labelf4.style("font-family", 'sans-serif');

	labelMainT = createDiv("Main Text"); //create Div
	labelMainT.position(windowWidth - 185, 340); //position label
	labelMainT.style("color", '#fff');
	labelMainT.style("font-size", '8');
	labelMainT.style("font-family", 'sans-serif');
	labelMainT.style("text-align", 'right');

	labelAudioT = createDiv("Text for audiomodes"); //create Div
	labelAudioT.position(windowWidth - 260, 370); //position label
	labelAudioT.style("color", '#fff');
	labelAudioT.style("font-size", '8');
	labelAudioT.style("font-family", 'sans-serif');

	//scale

	labelSCL = createDiv("Display Scale"); //create Div
	labelSCL.position(windowWidth - 205, 80); //position label
	labelSCL.style("color", '#fff');
	labelSCL.style("font-size", '8');
	labelSCL.style("font-family", 'sans-serif');

}

function inputs() {
	//ow = createInput('1468').position(width - 100, 40).style('width', '50px');
	oh = createInput('2384').position(width - 100, 60).style('width', '50px');
	th1 = createInput('WHAT').position(width - 100, 120).style('width', '50px');
	th2 = createInput('WHERE').position(width - 100, 140).style('width', '50px');
	th3 = createInput('WHO').position(width - 100, 160).style('width', '50px');
	th4 = createInput('WHEN').position(width - 100, 180).style('width', '50px');

	tf1 = createInput('INFO').position(width - 100, 220).style('width', '50px');
	tf2 = createInput('INFO').position(width - 100, 240).style('width', '50px');
	tf3 = createInput('INFO').position(width - 100, 260).style('width', '50px');
	tf4 = createInput('INFO').position(width - 100, 280).style('width', '50px');

	scl = createInput('0.33').position(width - 100, 80).style('width', '50px');

}

function changeObject() {
	for(let i = 0; i < objNames.length; i++) {
		if(objMenu.value() == i) {
			myModel = objFiles[objMenu.value()];
		}
	}
}

function changeModes() {
	if(sel.value() == 'drawmode1') {
		mode = 1;
	} else if(sel.value() == 'drawmode2') {
		mode = 2;
	} else if(sel.value() == 'drawmode3') {
		mode = 3;
	} else if(sel.value() == 'drawmode4') {
		mode = 4;
	} else if(sel.value() == 'drawmode5') {
		mode = 5;
	}
	/* else if(sel.value()=='drawmode6'){
	        mode=6;
	    }*/

}

function checkboxes() {
	let activatemode1;
	//c1 = createCheckbox(activatemode1, 1);
	//c1.position(windowWidth - 100, 80);
}

class Header {
	constructor(txt, x, y, s) {
		this.txt = txt;
		this.x = x;
		this.y = y;
		this.s = s;
	}
	//update() {
	//	if(mouseIsPressed) {
	//		this.x = mouseX;
	//		this.y = mouseY;
	//	}

	display() {
		push();
		infoLayer.textAlign(CENTER);
		infoLayer.fill(255);
		infoLayer.textSize(this.s);
		infoLayer.text(this.txt, this.x, this.y);
		pop();
	}
}

class Footer {
	constructor(txt, x, y, s) {
		this.txt = txt;
		this.x = x;
		this.y = y;
		this.s = s;
	}

	display() {
		push();
		infoLayer.textAlign(CENTER);
		infoLayer.fill(255);
		infoLayer.textSize(this.s);
		infoLayer.text(this.txt, this.x, this.y);
		pop();
	}
}

function mousePressed() {
	// Did I click on the rectangle?
	if(mouseX > xdrag && mouseX < xdrag + wdrag && mouseY > ydrag && mouseY < ydrag + hdrag) {
		dragging = true;
		// If so, keep track of relative location of click to corner of rectangle
		offsetXdrag = xdrag - mouseX;
		offsetYdrag = ydrag - mouseY;
	}
}

function mouseReleased() {
	// Quit dragging
	dragging = false;
}

ogAverages(fftRaw.getOctaveBands(bands)); // array (0, 255)
}

/* CUSTOM FUNCTIONS FOR P5LIVE */
// keep fullscreen if window resized
function windowResized() {
	resizeCanvas(windowWidth, windowHeight);
}

// custom ease function
function ease(iVal, oVal, eVal) {
	let targetX = iVal;
	let dx = targetX - oVal;
	return oVal += dx * eVal;
}

// processing compatibility
function println(msg) {
	print(msg);
}