Visualizador de Música con Cinta EL: Ilumina tu Sonido con Arduino
Componentes y Suministros
| Componente | Cantidad |
|---|---|
| Arduino UNO | 1 |
| EL Shield para Arduino (SeeedStudio) | 1 |
| Cinta EL - Verde 1m | 1 |
| Cinta EL - Roja 1m | 1 |
| Cinta EL - Azul 1m | 1 |
Descripción del Proyecto
Se utilizó un EL Shield de SeeedStudio con un Arduino UNO. La cinta EL se conectó al shield en 3 de los 4 canales disponibles.
Una vez completado el montaje, simplemente suba el código y ¡comience a reproducir su música!
El código hace uso de Processing junto con la librería Processing Arduino. Necesitará tener ambos funcionando para poder usarlo.
- Obtenga la librería para Arduino aquí.
- Descargue Processing en https://processing.org/
Una vez instalado todo, mueva la librería de Arduino a la carpeta libraries de su sketchbook de Processing y abra el código en el editor de Processing.
Cambie la línea:
song = minim.loadFile("/home/paul/Music/dope.mp3", 2048);
en la línea 38 de BeatWrite por un archivo MP3 local en su computadora y haga clic en reproducir.
Código
BeatWrite (Java/Processing)
/**
* Este sketch demuestra cómo usar el objeto BeatDetect en modo FREQ_ENERGY.
* Puede usar isKick, isSnare, isHat, isRange, e isOnset(int) para rastrear
* el tipo de beats que busca. Reportarán true o false según el estado
* del análisis. Para "activar" el análisis debe llamar a detect con
* buffers sucesivos de audio. Puede hacerlo dentro de draw(), pero es
* probable que pierda algunos buffers de audio. El sketch implementa un
* AudioListener llamado BeatListener para llamar a detect en cada buffer
* de audio procesado por el sistema sin repetir ni perder ninguno.
*/
import processing.serial.*;
import ddf.minim.*;
import ddf.minim.analysis.*;
import cc.arduino.*;
Minim minim;
AudioPlayer song;
BeatDetect beat;
BeatListener bl;
Arduino arduino;
int ledPin = 1; // LED conectado a canal EL 1
int ledPin2 = 2; // LED conectado a canal EL 2
int ledPin3 = 3; // LED conectado a canal EL 3
float kickSize, snareSize, hatSize;
void setup() {
size(512, 200, P3D);
minim = new Minim(this);
arduino = new Arduino(this, "/dev/ttyACM1", 57600);
song = minim.loadFile("/home/paul/Music/dope.mp3", 2048);
song.play();
beat = new BeatDetect(song.bufferSize(), song.sampleRate());
beat.setSensitivity(100);
kickSize = snareSize = hatSize = 16;
bl = new BeatListener(beat, song);
textFont(createFont("Helvetica", 16));
textAlign(CENTER);
arduino.pinMode(ledPin+3, Arduino.OUTPUT);
arduino.pinMode(ledPin2+3, Arduino.OUTPUT);
arduino.pinMode(ledPin3+3, Arduino.OUTPUT);
}
void draw() {
background(0);
fill(255);
if(beat.isKick()) {
arduino.digitalWrite(ledPin+3, Arduino.HIGH);
kickSize = 32;
}
if(beat.isSnare()) {
arduino.digitalWrite(ledPin2+3, Arduino.HIGH);
snareSize = 32;
}
if(beat.isHat()) {
arduino.digitalWrite(ledPin3+3, Arduino.HIGH);
hatSize = 32;
}
arduino.digitalWrite(ledPin+3, Arduino.LOW);
arduino.digitalWrite(ledPin2+3, Arduino.LOW);
arduino.digitalWrite(ledPin3+3, Arduino.LOW);
textSize(kickSize);
text("KICK", width/4, height/2);
textSize(snareSize);
text("SNARE", width/2, height/2);
textSize(hatSize);
text("HAT", 3*width/4, height/2);
kickSize = constrain(kickSize * 0.95, 16, 32);
snareSize = constrain(snareSize * 0.95, 16, 32);
hatSize = constrain(hatSize * 0.95, 16, 32);
}
void stop() {
song.close();
minim.stop();
super.stop();
}
BeatListener (Java/Processing)
class BeatListener implements AudioListener {
private BeatDetect beat;
private AudioPlayer source;
BeatListener(BeatDetect beat, AudioPlayer source) {
this.source = source;
this.source.addListener(this);
this.beat = beat;
}
void samples(float[] samps) {
beat.detect(source.mix);
}
void samples(float[] sampsL, float[] sampsR) {
beat.detect(source.mix);
}
}
Proceso de manufactura
- Diseñando UX para Personas Mayores: Guía Completa
- Cinta adhesiva de tela (duct tape): resistencia, flexibilidad y usos cotidianos
- El legado y evolución del jukebox clásico
- Partituras: De manuscritos medievales a edición moderna — Visión de la industria
- Escáner de código de barras: Tecnología, diseño y tendencias futuras
- Cinta adhesiva transparente: Historia, producción e impacto ambiental
- Por Qué Importa la Memoria Digital
- Elección entre Data Matrix y Códigos QR: ¿Cuál es Mejor para su Negocio?
- Códigos G CNC Explicados: Guía Esencial para Programadores
- Resortes de Alambre Musical: Resistencia, Durabilidad y Aplicaciones Modernas
- Comentarios en C++: Mejores Prácticas para Código Legible y Mantenible