Quantcast
Channel: Library Questions - Processing 2.x and 3.x Forum
Viewing all articles
Browse latest Browse all 2896

¿How can I solve this Menu to work?

$
0
0

(Srry for bad english) Well here´s the thing. My teacher wants this project about using 2D and 3D stuff. I had the idea to make a Music visualizer. But I have this problem. I did already my Main Menu code, and a couple of visualizers, but I can´t fuse them to work. Everytime I put them together my program crash. Do you have any ideas?

Here´s my code.

import processing.sound.*;

SoundFile sample; FFT fft; AudioDevice device; int scale = 5; int bands = 128; float r_width; float[] sum = new float[bands]; float smooth_factor = 0.2;

SoundFile menu;//Este conjunto de variables, manipulan los sonidos del menú. int rectX=100; // Posición de los botones con respecto a x (Como los botones estarán a la misma altura, lo asigno a constante) int largo = 50, alto=20; // Diametro de los cuadrados int opcion=1; //Parametro que controla la opción de los botones color rectColor; // Color de los botones. color rectHighlight;//Color de la iluminación de los botones al estar "En la mira"

void setup() { fullScreen(P3D); //Creo una pantalla sin "tamaño". Se adapta a la pantalla y resolucion de la pc en cuestión.

//Config de las barras //Si el BufferSize es mayor al tamaño del FFT, el FFT, fallará. //Así que, hacemos que el Buffersize sea igual a la banda device = new AudioDevice(this, 44000, bands); //Calculo el ancho de las rectas, dependiendo de cuantas bandas tenemos r_width = width/float(bands); //Cargamos y reproducimos el archivo de sonido y hacemos loop. //lo hacemos ANTES de llamar al FFT. menu = new SoundFile(this, "menu.mp3"); menu.loop(); //Cargamos el analizador de FFT fft = new FFT(this, bands); fft.input(menu);

//Config del Menu rectColor = color(0); //Elijo del color de los bloques cuando no están "En la mira" rectHighlight = color(#6CFF6D);//Elijo el color de la iluminación de los bloques, al estar "En la mira" textSize(15);//Establezco el tamaño de las letras que se encontrarán en el programa }

void draw() { Menu();//Mando llamar el método que contiene mi codigo de los botones Barras(); } void keyReleased() { if (keyCode == UP) {//Al soltar la tecla "ARRIBA", la variable "opcion" aumenta en 1. opcion++; } else if (keyCode ==DOWN) {//Al soltar la tecla "ABAJO", la variable "opcion" disminuye en 1. opcion--; } }

void Barras() { fill(#00FC1B); noStroke(); fft.analyze(); for (int i = 0; i < bands; i++) { // Smooth the FFT data by smoothing factor sum[i] += (fft.spectrum[i] - sum[i]) * smooth_factor; // Draw the rects with a scale factor rect(ir_width, height, r_width, -sum[i]height*scale); } }

void Menu() {
background(0);//Elijo el color del fondo de pantalla del reproductor, en este caso, es Azul Cielo stroke(#03FF04);//Elijo el color de la linea //Movimiento de los botones if (opcion==3) { fill(rectHighlight);//Esto cambia el color del botón, iluminandolo al estar seleccionado. } else { fill(rectColor);//Esto, cambia el color del botón, regresandolo a su valor original al estar des-seleccionado. } rect(rectX, 256, largo, alto);//Creo el rectangulo que representa el botón. if (opcion==2) { fill(rectHighlight); } else { fill(rectColor); } rect(rectX, 353, largo, alto); if (opcion==1) { fill(rectHighlight); } else { fill(rectColor); } rect(rectX, 450, largo, alto);

//Retorno de los botones(Para que los botones no salgan de los parametros del menú) if (opcion>3) { opcion=1; } if (opcion<1) { opcion=3; }

//Creación del texto de los botones. fill(#00FF01); //Declaro el texto dentro de los botones text("Caso 1", 100, 268); text("Caso 2", 100, 365); text("Caso 3", 100, 462); }

And this is what I want to put inside this Menu, at "Opcion1":

import processing.sound.*; // Se declaran las variables de sonido SoundFile sample; Amplitude rms; PImage img; // Declara un valor de escala float scale = 5.0; // Declara un valor de suavizado float smoothFactor = 0.25; // Suavizado float sum;

void setup() { fullScreen(P3D); //size(640, 360, P3D); img= loadImage("dig.jpg"); //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() { Digimon(); }

void Digimon() { float rmsScaled = sum * (height/2) * scale; // rms.analyze() regresa un valo entre 0 y 1 // se escala a height/2 y luego se multiplica por el valor de escala //Doy color al fondo de la pantalla //background(rmsScaled,100,255); background(0); fill(255, 255, 255); // Suavizo el valor tosco de rms, con el valor de suavizado sum sum += (rms.analyze() - sum) * smoothFactor;
// Dibujo un cubo usando el valor rmsScaled para manipular su tamaño deacuerdo al sonido translate(1366/2, 768/2); //Esto va a rotar al cubo, tambien al ritmo de la musica. rotateX(rmsScaled/250); rotateY(rmsScaled/100); lights();
beginShape(); box(rmsScaled); texture(img); endShape(); fill(0, 0, 0);

}

Please! Help! PD: Just use any song at the "data" folder.


Viewing all articles
Browse latest Browse all 2896

Trending Articles