Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Manufacturing Technology >> Proceso de manufactura

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.

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

  1. Diseñando UX para Personas Mayores: Guía Completa
  2. Cinta adhesiva de tela (duct tape): resistencia, flexibilidad y usos cotidianos
  3. El legado y evolución del jukebox clásico
  4. Partituras: De manuscritos medievales a edición moderna — Visión de la industria
  5. Escáner de código de barras: Tecnología, diseño y tendencias futuras
  6. Cinta adhesiva transparente: Historia, producción e impacto ambiental
  7. Por Qué Importa la Memoria Digital
  8. Elección entre Data Matrix y Códigos QR: ¿Cuál es Mejor para su Negocio?
  9. Códigos G CNC Explicados: Guía Esencial para Programadores
  10. Resortes de Alambre Musical: Resistencia, Durabilidad y Aplicaciones Modernas
  11. Comentarios en C++: Mejores Prácticas para Código Legible y Mantenible