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
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.
- Arduino-Bibliothek hier herunterladen.
- Processing unter https://processing.org/ beziehen.
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
- Music-Wire-Federn: Festigkeit, Haltbarkeit und moderne Anwendungen
- UX für Senioren designen: Ein umfassender Guide
- Warum digitaler Speicher wichtig ist
- Vielseitiges Gewebeband (Duct Tape): Stärke, Flexibilität und Alltagsanwendungen
- Das Vermächtnis und die Evolution der klassischen Jukebox
- Notenblätter: Von mittelalterlichen Manuskripten zum modernen Verlag – Ein Branchenüberblick
- Strichcodescanner: Technologie, Design und Zukunftstrends
- C++-Kommentare: Best Practices für lesbaren, wartbaren Code
- Data Matrix vs. QR Codes: Welcher ist am besten für Ihr Business?
- CNC G-Codes erklärt: Essentieller Leitfaden für CNC-Programmierer