Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

Visualiseur Musical à Ruban EL – Illuminez Votre Son avec Arduino

Composants et fournitures

Arduino UNO × 1
Shield EL pour Arduino × 1
Ruban EL - Vert 1m × 1
Ruban EL - Rouge 1m × 1
Ruban EL - Bleu 1m × 1

À propos de ce projet

Visualiseur Musical à Ruban EL – Illuminez Votre Son avec Arduino

Un ruban EL avec un Shield EL de SeeedStudio a été utilisé avec un Arduino UNO. Le ruban était connecté au shield sur 3 des 4 canaux.

Une fois cela fait, il suffit de téléverser le code et de lancer votre musique !

Le code utilise Processing ainsi que la bibliothèque Processing Arduino. Vous devrez faire fonctionner ces deux éléments pour l'utiliser.

Une fois tout installé, déplacez la bibliothèque Arduino dans le dossier « libraries » de votre dossier de carnet de croquis Processing et ouvrez le code dans l'éditeur Processing.

Modifiez la ligne :

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

à la ligne 38 de BeatWrite pour pointer vers un fichier MP3 local sur votre ordinateur et cliquez sur play !

Code

BeatWrite (Java - Processing)

/**
 * Ce sketch montre comment utiliser l'objet BeatDetect en mode FREQ_ENERGY.
 * Vous pouvez utiliser <code>isKick</code>, <code>isSnare</code>, <code>isHat</code>, <code>isRange</code>,
 * et <code>isOnset(int)</code> pour suivre le type de beats que vous cherchez, ils renverront
 * true ou false selon l'état de l'analyse. Pour « ticker » l'analyse, vous devez appeler <code>detect</code>
 * avec des tampons audio successifs. Vous pouvez faire cela dans <code>draw</code>, mais vous risquez de manquer certains
 * tampons audio si vous le faites ainsi. Le sketch implémente un <code>AudioListener</code> appelé <code>BeatListener</code>
 * afin qu'il puisse appeler <code>detect</code> sur chaque tampon audio traité par le système sans répéter un tampon
 * ou en manquer un.
 * <p>
 * Ce sketch joue une chanson entière, il peut donc être un peu lent à charger.
 */
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 connectée au canal EL 1
int ledPin2 = 2; // LED connectée au canal EL 2
int ledPin3 = 3; // LED connectée au 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();
  // objet de détection de beat en mode FREQ_ENERGY qui
  // attend des tampons de la longueur de la taille du tampon de song
  // et des échantillons capturés au taux d'échantillonnage de song
  beat = new BeatDetect(song.bufferSize(), song.sampleRate());
  // régler la sensibilité à 300 millisecondes
  // Après qu'un beat a été détecté, l'algorithme attendra 300 millisecondes
  // avant d'autoriser un autre beat à être signalé. Vous pouvez utiliser ceci pour amortir
  // l'algorithme s'il donne trop de faux positifs. La valeur par défaut est 10,
  // ce qui est essentiellement sans amortissement. Si vous essayez de régler la sensibilité à une valeur négative,
  // une erreur sera signalée et elle sera réglée sur 10 à la place.
  beat.setSensitivity(100);
  kickSize = snareSize = hatSize = 16;
  // créer un nouvel écouteur de beat, pour ne manquer aucun tampon pour l'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); // allumer la LED pour kick
    kickSize = 32;
  }
  if(beat.isSnare()) {
    arduino.digitalWrite(ledPin2+3, Arduino.HIGH); // allumer la LED pour snare
    snareSize = 32;
  }
  if(beat.isHat()) {
    arduino.digitalWrite(ledPin3+3, Arduino.HIGH); // allumer la LED pour hat
    hatSize = 32;
  }
  arduino.digitalWrite(ledPin+3, Arduino.LOW); // éteindre la LED
  arduino.digitalWrite(ledPin2+3, Arduino.LOW); // éteindre la LED
  arduino.digitalWrite(ledPin3+3, Arduino.LOW); // éteindre la LED
  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() {
  // toujours fermer les classes audio Minim quand vous avez fini avec elles
  song.close();
  // toujours arrêter Minim avant de quitter
  minim.stop();
  // cela ferme le sketch
  super.stop();
}

BeatListener (Java)

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);
  }
}

Processus de fabrication

  1. Ressorts en fil à musique : Résistance, durabilité et applications modernes
  2. Conception UX pour seniors : Guide complet
  3. Pourquoi la mémoire numérique est importante
  4. Ruban Adhésif Polyvalent : Force, Flexibilité et Usages Quotidiens
  5. L'héritage et l'évolution du jukebox classique
  6. La partition : Des manuscrits médiévaux à l'édition moderne — Aperçu de l'industrie
  7. Commentaires C++ : Bonnes pratiques pour un code lisible et maintenable
  8. Choisir entre Data Matrix et QR Codes : lequel est le meilleur pour votre entreprise
  9. Codes G CNC expliqués : guide essentiel pour programmeurs