We are about to switch to a new forum software. Until then we have removed the registration on this forum.
¡Need your help! I managed to do this.
import processing.sound.*;
PGraphics gui;
PFont font;
// Se declaran las variables de sonido
SoundFile sample;
Amplitude rms;
// Declara un valor de escala
float scale = 5.0;
// Declara un valor de suavizado
float smoothFactor = 0.25;
// Suavizado
float sum;
float z=1000;
void setup() {
fullScreen(P3D);
//noStroke();
//Se carga el archivo y se hace un loop.(Se reinicia automaticamente)
sample = new SoundFile(this, "digimon.mp3");
sample.loop();
// Se crea y se redirige el medidor de RMS
rms = new Amplitude(this);
rms.input(sample);
}
void draw() {
background(0);
translate(width/2, height/2, 0);
scale(100);
lights();
rotateY(map(mouseX, 0, width, -PI, PI));
rotateX(map(mouseY, 0, height, -PI, PI));
informacion();
circulo();
ellipse(width/2, height/2, 1000, 1000);
fill(64, 64, 196);
fractal(2);
}
float r(float theta, float a, float b, float m, float n1, float n2, float n3) {
return pow(pow(abs(cos(m*theta/4.0)/a), n2)+
pow(abs(sin(m*theta/4.0)/b), n3), -1.0/n1);
}
This is my "fractal" function.
void fractal(int level) {
//noStroke();
float rmsScaled = sum * (height/2) * scale;
sum += (rms.analyze() - sum) * smoothFactor;
box(rmsScaled/300.0);
if (level<=0) return;
for (int x=-1; x<2; x+=2) {
for (int y=-1; y<2; y+=2) {
for (int z=-1; z<2; z+=2) {
pushMatrix();
translate(x, y, z);
scale(1/2f);
fractal(level-1);
popMatrix();
}
}
}
}
And this is my "informacion" function
void informacion() {
pushMatrix();
camera();
hint(DISABLE_DEPTH_TEST);
fill(255, 255, 255);
text("Rainerio Amézquita Sánchez", 10, 20 );
text("Proyecto Graficación", 10, 30 );
text("Visualizador de Audio versión 3.0", 10, 40 );
noFill();
popMatrix();
}
My problem is that I have this function and I want to show it on screen, but it doesn´t work. I used camera(); and hint(DISABLE_DEPTH_TEST); to "separate" 2D figures from 3D. Oh, I just forgot. The 2D figures doesn´t have to be affected by the camera movement, just the 3D ones. This function just show a Circle, and change his size using the music. HELP!!
void circulo() {
pushMatrix();
camera();
hint(DISABLE_DEPTH_TEST);
beginShape();
float rmsScaled = sum * (height/2) * scale;
sum += (rms.analyze() - sum) * smoothFactor;
//Vertices...
for (float theta=0; theta<=2*PI; theta+=0.1) {
float rad=r(theta,
rmsScaled/100.0, //a
rmsScaled/100.0, //b
0, //m
1, //n1
1, //n2
1 //n3
);
float x=rad*cos(theta)*50;
float y=rad*sin(theta)*50;
vertex(x, y);
}
endShape();
popMatrix();
}
Answers
Srry, I forgot. I'm just a little nervous about posting my code haha. This code is a "Music Visualizer", that´s what I'm trying to do. :v
@Sefiro10 -- re:
So you are saying that you expect
circulo()
to draw something on the screen, but nothing happens -- is that right?