Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Herstellungsprozess

EL-Tape Musik-Visualisierer – Deinen Sound mit Arduino beleuchten

Komponenten und Materialien

Arduino UNO × 1
EL Shield für Arduino (SeeedStudio) × 1
EL-Tape – Grün 1m × 1
EL-Tape – Rot 1m × 1
EL-Tape – Blau 1m × 1

Über dieses Projekt

EL Shield und Anschlüsse

EL-Tape Musik-Visualisierer – Deinen Sound mit Arduino beleuchten

Ein EL Shield von SeeedStudio wurde mit einem Arduino UNO verwendet. Das Tape wurde an 3 der 4 Kanäle des Shields angeschlossen.

Sobald dies erledigt ist, einfach den Code hochladen und Musik abspielen!

Der Code nutzt Processing sowie die Processing-Arduino-Bibliothek. Sie müssen beides funktionsfähig machen, um den Code zu nutzen.

Nach der Installation verschieben Sie die Arduino-Bibliothek in den Bibliotheken-Ordner Ihres Processing-Sketchbook-Ordners und öffnen den Code im Processing-Editor.

Ändern Sie die Zeile:

song = minim.loadFile("/home/paul/Music/dope.mp3", 2048);

in Zeile 38 von BeatWrite zu einer lokalen MP3-Datei auf Ihrem Computer und klicken Sie auf Play!

Code

BeatWrite (Java/Processing)

/**
 * Dieses Sketch demonstriert die Verwendung des BeatDetect-Objekts im FREQ_ENERGY-Modus.
 * Sie können isKick, isSnare, isHat, isRange und isOnset(int) verwenden, um verschiedene Beat-Arten zu verfolgen.
 * Um die Analyse zu "ticken", müssen Sie detect mit aufeinanderfolgenden Audio-Puffern aufrufen.
 * Dies kann in draw() geschehen, aber Sie werden wahrscheinlich einige Audio-Puffer verpassen.
 * Der Sketch implementiert einen AudioListener namens BeatListener,
 * damit er detect auf jedem vom System verarbeiteten Audio-Puffer aufrufen kann,
 * ohne einen Puffer zu wiederholen oder zu verpassen.
 * Dieser Sketch spielt einen ganzen Song ab, daher kann das Laden etwas dauern.
 */
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 an EL-Kanal 1
int ledPin2 = 2;   // LED an EL-Kanal 2
int ledPin3 = 3;   // LED an EL-Kanal 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-Erkennungsobjekt im FREQ_ENERGY-Modus
  beat = new BeatDetect(song.bufferSize(), song.sampleRate());

  // Empfindlichkeit auf 300 Millisekunden setzen
  beat.setSensitivity(100);

  kickSize = snareSize = hatSize = 16;

  // Neuer Beat-Listener, damit keine Puffer für die Analyse verpasst werden
  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);
  }
}

Herstellungsprozess

  1. Music-Wire-Federn: Festigkeit, Haltbarkeit und moderne Anwendungen
  2. UX für Senioren designen: Ein umfassender Guide
  3. Warum digitaler Speicher wichtig ist
  4. Vielseitiges Gewebeband (Duct Tape): Stärke, Flexibilität und Alltagsanwendungen
  5. Das Vermächtnis und die Evolution der klassischen Jukebox
  6. Notenblätter: Von mittelalterlichen Manuskripten zum modernen Verlag – Ein Branchenüberblick
  7. Strichcodescanner: Technologie, Design und Zukunftstrends
  8. C++-Kommentare: Best Practices für lesbaren, wartbaren Code
  9. Data Matrix vs. QR Codes: Welcher ist am besten für Ihr Business?
  10. CNC G-Codes erklärt: Essentieller Leitfaden für CNC-Programmierer