Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Productieproces

EL-tape Muziekvisualisator – Verlicht je geluid met Arduino

Onderdelen en benodigdheden

Arduino UNO 1
EL Shield voor Arduino 1
EL-tape - Groen 1m 1
EL-tape - Rood 1m 1
EL-tape - Blauw 1m 1

Over dit project

EL-tape Muziekvisualisator – Verlicht je geluid met Arduino

Er is een EL Shield en connectors van SeeedStudio gebruikt met een Arduino UNO. De tape was aangesloten op de shield op 3 van de 4 kanalen.

Zodra dit voltooid is, upload je de code en begin je muziek te spelen!

De code maakt gebruik van Processing en de Processing Arduino-bibliotheek. Je hebt beide nodig om het te laten werken.

Zodra alles geïnstalleerd is, verplaats de Arduino-bibliotheek naar de libraries-map van je Processing-sketchboekmap en open de code in de Processing-editor.

Wijzig de regel:

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

op regel 38 van BeatWrite naar een lokaal MP3-bestand op je computer en klik op play!

Code

BeatWrite (Java/Processing)

/**
 * Deze sketch demonstreert hoe de BeatDetect-object in FREQ_ENERGY-modus te gebruiken.
 * Je kunt isKick, isSnare, isHat, isRange,
 * en isOnset(int) gebruiken om welke beats je wilt volgen te traceren.
 * Ze rapporteren true of false gebaseerd op de analyse-status.
 * Om de analyse te „tikken” moet je detect aanroepen met opeenvolgende audiobuffers.
 * Je kunt dit in draw doen, maar je mist waarschijnlijk sommige audiobuffers.
 * De sketch implementeert een AudioListener genaamd BeatListener
 * zodat het detect kan aanroepen op elke verwerkte audiobuffer zonder een buffer te herhalen of te missen.
 * 

* Deze sketch speelt een heel nummer af, dus het kan even duren om te laden. */ 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 aangesloten op EL-kanaal 1 int ledPin2 = 2; // LED aangesloten op EL-kanaal 2 int ledPin3 = 3; // LED aangesloten op EL-kanaal 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(); // een beatdetectie-object in FREQ_ENERGY-modus dat // buffers verwacht van de lengte van song's buffer-grootte // en samples vastgelegd met song's sample-rate beat = new BeatDetect(song.bufferSize(), song.sampleRate()); // gevoeligheid instellen op 300 milliseconden // Na detectie van een beat wacht het algoritme 300 ms voordat een andere beat gerapporteerd wordt. // Je kunt dit gebruiken om het algoritme te dempen als het te veel false-positives geeft. // Standaardwaarde is 10, wat eigenlijk geen demping is. // Als je een negatieve waarde instelt, wordt een fout gerapporteerd en wordt het op 10 gezet. beat.setSensitivity(100); kickSize = snareSize = hatSize = 16; // nieuwe beat-listener maken, zodat we geen buffers missen voor de analyse 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); // LED aan voor kick kickSize = 32; } if(beat.isSnare()) { arduino.digitalWrite(ledPin2+3, Arduino.HIGH); // LED aan voor snare snareSize = 32; } if(beat.isHat()) { arduino.digitalWrite(ledPin3+3, Arduino.HIGH); // LED aan voor hat hatSize = 32; } arduino.digitalWrite(ledPin+3, Arduino.LOW); // LED uit arduino.digitalWrite(ledPin2+3, Arduino.LOW); // LED uit arduino.digitalWrite(ledPin3+3, Arduino.LOW); // LED uit 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() { // altijd Minim-audioklassen sluiten wanneer je er klaar mee bent song.close(); // altijd Minim stoppen voor het afsluiten minim.stop(); // dit sluit de sketch 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);
  }
}

Productieproces

  1. UX Ontwerpen Voor Senioren: Een Uitgebreide Gids
  2. Alleskunner tape: kracht, flexibiliteit en alledaags gebruik
  3. Het Erfgoed en de Evolutie van de Klassieke Jukebox
  4. Bladmuziek: Van Middeleeuwse Handschriften tot Moderne Uitgeverij – Een Brancheoverzicht
  5. Streepjescodescanner: Technologie, Ontwerp en Toekomstige Trends
  6. Cellofaan Tape: Geschiedenis, Productie en Milieueffect
  7. Waarom digitaal geheugen belangrijk is
  8. Kiezen Tussen Data Matrix En QR Codes: Wat Is Best Voor Uw Bedrijf
  9. CNC G-codes uitgelegd: essentiële gids voor CNC programmeurs
  10. Muziekdraadveren: Kracht, Duurzaamheid en Moderne Toepassingen
  11. C++ comments: best practices voor leesbare, onderhoudbare code