Proyección asignados visualización audio (2 / 5 paso)

Paso 2: Audio cumple con procesamiento (entonces OSC)

En primer lugar, necesita una fuente de audio a procesar. Esto puede ser desde un micrófono, una canción, etc.. Puesto que la música se reproduce desde mi laptop, he querido analizar esta fuente. Esto significa activar y seleccionar "Mezcla estéreo" como dispositivo en mi panel de sonido de grabación por defecto. Un poco de googling sobre cómo hacer me ahorra tener que ir a través de él. Es bastante fácil de hacer.

Ahora que tienes una fuente de audio, tenemos que bucear en el código:

/*
Mapeo de proyección en 3D con VPT vía OSC
Grillo de NIC
Cataratas bajo internacional 4.0 Reconocimiento-NoComercial-CompartirIgual (CC BY-NC-SA 4.0)
Abril de 2014
*/

Import oscP5.*;
Import netP5.*;
Import controlP5.*;

ControlP5 cp5;
Perilla de ganancia;
int gainVal;

OscP5 de OscP5;
MyRemoteLocation NetAddress;

Import ddf.minim.analysis.*;
Import ddf.minim.*;

Mínima mínima;
Jingle AudioInput;
FFT fft;

void setup()
{
tamaño (450, 300);
frameRate(60);
frame.setResizable(true);

CP5 = nuevo ControlP5(this);
placeButtons();

oscP5 = new OscP5(this,6666);
myRemoteLocation = new NetAddress("127.0.0.1",6666);

mínima = nuevo Minim(this);

Jingle = minim.getLineIn();
FFT = FFT nuevos (jingle.bufferSize(), jingle.sampleRate());
fft.logAverages (86, 1);
}

int escala = 2; cambio de la sensibilidad general
Boolean FFTon = false;
String viewOSC; para mostrar el flujo de OSC. utilizado en la ficha OSC.

void draw()
{
Background(0);
Fill(0,40);
noStroke();
Rect(0,0,width,height);
Fill(50);
Rect(0,0,width,47);
textSize(30);
Fill(200);
textAlign(LEFT);
Text("OSC_panel",10,35);
textSize(10);
texto ("Nic grilletes", 170, 35);
realizar una FFT hacia adelante en las muestras en el buffer
FFT.Forward (jingle.mix);
if(FFTon)analyseAndSend(); Si activa, difusión de valores a FFT través de OSC

}

void placeButtons() {}
ganancia = cp5.addKnob("gainVal")
.setRange(0,50)
.setValue(1)
.setPosition(300,70)
.setRadius(50)
.setDragDirection(Knob.VERTICAL)
;


CP5.addButton("Toggle_FFT_broadcast")
.setValue(0)
.setPosition(50,70)
.setSize(200,19)
;
}

anular la perilla (int gainVal) {}

gainVal = gainVal;
}

público vacío controlEvent (ControlEvent evento) {}
println(theEvent.getController().getName());
}

público void Toggle_FFT_broadcast (int theValue) {
FFTon =! FFTon;
}

void enviar (String ruta, flotador val) {}
OscMessage myMessage = nuevo OscMessage(path);

myMessage.add(val);
/ * enviar el mensaje * /
oscP5.send (myMessage, myRemoteLocation);
println (myMessage + "Enviados");
viewOSC = "flujo de OSC:" + myMessage;

}

void analyseAndSend() {}
el siguiente "envía" son si usas objetos de lados múltiples que requieren tres caras para mostrar lo mismo
//Three caras de la caja "banda 1"
enviar ("/" + str(1) + "layer/fade",fft.getAvg(1)/100*gainVal);
enviar ("/" + str(2) + "layer/fade",fft.getAvg(1)/100*gainVal);
enviar ("/" + str(3) + "layer/fade",fft.getAvg(1)/100*gainVal);
//
//Three caras de la caja de la banda 2
enviar ("/" + str(4) + "layer/fade",fft.getAvg(2)*2/100*gainVal);
enviar ("/" + str(5) + "layer/fade",fft.getAvg(2)*2/100*gainVal);
enviar ("/" + str(6) + "layer/fade",fft.getAvg(2)*2/100*gainVal);
//
//Three caras de la caja de la banda 3
enviar ("/" + str(7) + "layer/fade",fft.getAvg(3)*3/100*gainVal);
enviar ("/" + str(8) + "layer/fade",fft.getAvg(3)*3/100*gainVal);
enviar ("/" + str(9) + "layer/fade",fft.getAvg(3)*3/100*gainVal);
//
//Three caras de la caja de la banda 4
enviar ("/" + str(10) + "layer/fade",fft.getAvg(4)*4/100*gainVal);
enviar ("/" + str(11) + "layer/fade",fft.getAvg(4)*4/100*gainVal);
enviar ("/" + str(12) + "layer/fade",fft.getAvg(4)*4/100*gainVal);
//
//Three caras de la caja de la banda 5
enviar ("/" + str(13) + "layer/fade",fft.getAvg(5)*5/100*gainVal);
enviar ("/" + str(14) + "layer/fade",fft.getAvg(5)*5/100*gainVal);
enviar ("/" + str(15) + "layer/fade",fft.getAvg(5)*5/100*gainVal);
//
//Three caras de la caja de la banda 6 de
enviar ("/" + str(16) + "layer/fade",fft.getAvg(6)*6/100*gainVal);
enviar ("/" + str(17) + "layer/fade",fft.getAvg(6)*6/100*gainVal);
enviar ("/" + str(18) + "layer/fade",fft.getAvg(6)*6/100*gainVal);
//
//Three caras de la caja de la banda 7
enviar ("/" + str(19) + "layer/fade",fft.getAvg(7)*8/100*gainVal);
enviar ("/" + str(20) + "layer/fade",fft.getAvg(7)*8/100*gainVal);
enviar ("/" + str(21) + "layer/fade",fft.getAvg(7)*8/100*gainVal);

el siguiente "envía" son si usas los objetos de un solo lado que requieren solamente un valor enviado
para (int i = 0; i < 9; i ++) //iterate a través de las bandas
{

Si (i == 8 || i == 9) {enviar ("/" + str(i) + "layer/fade",(fft.getAvg(i)*i/100)*gainVal*2);} //trebles necesitan un poco de un empuje para demostrar para arriba muy bien
Else {enviar ("/" + str(i) + "layer/fade",(fft.getAvg(i)*i/100)*gainVal);}
Stroke(25*i,50,50);
strokeWeight(5);
line(120,100+i*10,120+FFT.getAvg(i)*i*gainVal,100+i*10);
textSize(10);
Fill(150);
texto ("banda/capa" + str(i),50,104+i*10);
}
Fill(150);
textSize(12);
Text(viewOSC,50,60);
}

¿Sacaste todo eso?

Un rápido pase por:
Audio se carga en un búfer. Eso almacenador intermediario es FFTed y un promedio de 9 bandas. Esas bandas son iteración para obtener su valor con un rango de aproximadamente 0 a 1 (por lo tanto un punto flotante de valor). Ese valor se concatena con un string que corresponde a un comando OSC que destinado para VPT. Esa cadena es entonces transmitida sobre OSC en dirección IP 127.0.0.1 (número de Puerto 6666). También hay una interfaz gráfica que muestra las frecuencias para cada banda y una perilla de ganancia, que puede aumentar la señal si su fuente es un poco suave.

Nota: Nunca trabajé con análisis de audio antes de esto, así que admito mi algoritmo para obtener un espectro exacto es probablemente un poco apagado. Si alguien clued para arriba más en esto, me encantaría escuchar de una mejor manera de hacerlo (tengo la sensación con algunos matemáticas sabroso!)

Artículos Relacionados

Interactivo Arduino Powered mesa

Interactivo Arduino Powered mesa

una rápida delantera Nota: este es mi primer Instructable y mi primer gran proyecto de Arduino, así que si ves cualquier error estúpido o tener una idea de cómo las cosas podrían hacerse mejor, entonces por favor hágamelo saber.Ahora que el que está
Cómo utilizar un mezclador de audio (soundboard)

Cómo utilizar un mezclador de audio (soundboard)

en este instructable voy a ir a través de todas las funciones de control encontradas la mayoría de los mezcladores (mezcla de consolas, mezcla de escritorio, consolas de audio, soundboards - todos ellos se refieren a lo mismo). Voy a empezar con los
Fogscreen proyección pantalla Replica - imágenes flotaba!

Fogscreen proyección pantalla Replica - imágenes flotaba!

Primero: me gustaría dar las gracias a todos por su apoyo, comentarios y votos! Esta ha sido una experiencia increíble y estoy muy contenta de todas mis pruebas y tribulaciones pueden hacer nuevos amigos sus propias pantallas :DHe siempre han sido en
Solución de sonido con Control y visualización en un Raspberry Pi con pantalla táctil (funcionalidad Squeezebox Touch)

Solución de sonido con Control y visualización en un Raspberry Pi con pantalla táctil (funcionalidad Squeezebox Touch)

Te presentamos una posibilidad de seleccionar y controlar su reproductor de audio de frambuesa Pi directamente a través de una pantalla táctil. Nuestro programa de instalación se basa en la tecnología de Squeezebox y por lo tanto también permite solu
Pared de respiración: mapeo de proyección sobre una superficie móvil con una cámara de profundidad

Pared de respiración: mapeo de proyección sobre una superficie móvil con una cámara de profundidad

¿No sería bueno si podríamos detectar información sobre la superficie de los objetos a nuestro alcance? La manera de cómo tocamos objetos, firma apretamos en ellos y, en general cómo pasar información del espacio físico puede todos reflejarse sobre l
Anacrónico Audio: La Radio Catedral

Anacrónico Audio: La Radio Catedral

A principios de 2014 tuve la maravillosa experiencia de ser una artista en residencia en el taller de Autodesk/Instructables muelle 9. Durante este tiempo, me embarqué en una exploración de proyectos audio re-imaginado en el estilo del taller de Medi
Una proyección Simple trazado pantalla con Pixel traz LEDs

Una proyección Simple trazado pantalla con Pixel traz LEDs

Como diseñador de circuitos que se ocupa sobre todo de sistemas de control LED, acumulo un alijo de tira de LED, barras, discos y otros controladores de las compañías que hemos adquirido para clientes, conciertos o evaluaciones. Cada ahora y después
BOMBARDEO de proyección

BOMBARDEO de proyección

un tutorial por El Graffiti Research Lab, el Eyebeam OpenLab y Paul Notzold.Proyección digital al aire libre en entornos urbanos es un gran método para levantarse su contenido grande ante los ojos y en la mente de sus habitantes de la ciudad compañer
Audio de la línea de comandos de Linux.

Audio de la línea de comandos de Linux.

Lo que nos gustaría hacer es poder escuchar música y podcasts desde cualquier internet o por el aire. Incluso debe escuchar a los archivos que hablan. Sólo porque no tienes una tarjeta gráfica de lujo no significan que no puede escuchar música. Otra
Visualización de texto desplazamiento de matriz de LED bicolor 7

Visualización de texto desplazamiento de matriz de LED bicolor 7

A continuación, os mostramos cómo un bicolor 7 8 x 8 pantalla de texto de desplazamiento de matriz de LED se construye, en el que mensajes y comandos pueden enviarse a él vía Bluetooth con un teléfono inteligente Android. Lógicamente, cualquier dispo
Visualizador de espectro de bi-color LED matriz Audio basados en Arduino

Visualizador de espectro de bi-color LED matriz Audio basados en Arduino

Después de que surgió con el kit del módulo de controlador de matriz de LED de Bi-color, hemos estado buscando de proyectos interesantes para trabajar con él.Está interesado en algunos de los proyectos que hemos puesto en instructables con este kit d
Banda de LED 10 100 MSGEQ7 de atmega32 de espectro de Audio con pico sostenga y caer

Banda de LED 10 100 MSGEQ7 de atmega32 de espectro de Audio con pico sostenga y caer

MSGEQ7 y atmega32 basado en espectro de Audio.10 nivel de altura y anchura de banda 10.retención de picos y caídas hacia abajo estilo de visualizaciónPaso 1: Lista de componentes lista de componentes-------------------------------------1, atmega32 -
Pantalla de proyección controlada de Arduino y Android

Pantalla de proyección controlada de Arduino y Android

esta es mi primera vez usando Arduino o cualquier microcontrolador. Me alegro funcionó tan bien, pero mi esposa no puede ser, debido a las pilas de los microcontroladores que se aparece en nuestra puerta pronto para futuros proyectos. Cualquier comen
Arduino / procesamiento de analizador de espectro Audio

Arduino / procesamiento de analizador de espectro Audio

En este Instructable voy a mostrar cómo hacer un programa en el proceso que analiza el sonido en su computadora y envía los datos a un Arduino que controla una matriz de LED para mostrar el análisis de espectro.Yo se explicar donde conseguir material