Annonce

>>> Bienvenue sur codelab! >>> Première visite ? >>> quelques mots sur codelab //// partage de liens //// une carte des membres//// (apéros) codelab


#1 2016-06-10 12:18:54 Séquenceur visuel + p5.sound

ExDrummer
nouveau membre
Date d'inscription: 2014-01-23
Messages: 6
Site web

Séquenceur visuel + p5.sound



var carres = [];
var osc; //an oscillator
var env; //an enveloppe

function setup() {
	createCanvas(640, 480);
	//create a array of squares
	for (var i = 0; i < 10; i++) {
		carres[i] = new Carre(random(width), random(height), random(1, 4));
	}

}

function draw() {
	background(250);
	//var fall = createVector(0, 1);


	for (var i = 0; i < carres.length; i++) {
		//if(mouseIsPressed) carres[i].applyForce(fall);
		carres[i].update();
		carres[i].edges();
		carres[i].play();
		carres[i].display();
	}

}

function Carre(x, y, v) {
	this.pos = createVector(x, y);
	this.vel = createVector(v, 0);
	this.acc = createVector(0, 0);

	//faster the square is, bigger it is
	this.side = v * 20;

	//create an enveloppe
	this.env = new p5.Env();
	this.env.setADSR(0.001, 0.2, 0.2, 1);
	this.env.setRange(map(v, 0, 4, 0.2, 1), 0);

	//create an triangular oscillator
	this.osc = new p5.Oscillator('triangle');
	this.osc.amp(this.env);
	this.osc.start();

	// higher the square is, higher is the pitch
	this.osc.freq(height - this.pos.y + 100);

	// play note when the square hit right edge
	this.play = function() {
		if (this.warp) {
				this.env.play();
				this.warp = false;
		}
	}

	this.applyForce = function(force) {
		var f = force.copy();
		this.acc.add(f);
	}

	this.update = function() {
		this.vel.add(this.acc);
		this.pos.add(this.vel);

		this.acc.mult(0);
	}

	this.display = function() {

		fill(50);
		noStroke();
		rect(this.pos.x, this.pos.y, this.side, this.side);

	}

	// warp effect
	this.edges = function() {
		if (this.pos.x > width + this.side) {
			this.pos.x = -this.side;
			this.warp = true;
		}
	}
}

Salut à tous!
Voici un essai de séquenceur avec la librairie audio de p5. L'idée, c'est qu'une note soit déclenchée quand les carrés touchent le bord droit du canvas. Si vous avez une idée du pourquoi ça ne marche pas, ça serait grandement apprécié tongue

PS: je passe de temps en temps du côté de ce slack public: https://genart.slack.com/messages/processing/

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2017