Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Музыкальный визуализатор на EL-ленте с Arduino — оживите звук светом

Компоненты и материалы

Arduino UNO 1
EL Shield для Arduino (SeeedStudio) 1
EL-лента зеленая 1 м 1
EL-лента красная 1 м 1
EL-лента синяя 1 м 1

О проекте

Музыкальный визуализатор на EL-ленте с Arduino — оживите звук светом

Использовался EL Shield от SeeedStudio с Arduino UNO. Лента подключена к 3 из 4 каналов шилда.

После сборки просто загрузите код и включайте музыку!

Код использует Processing и библиотеку Processing Arduino Library. Вам понадобятся оба инструмента.

  1. Библиотеку для Arduino: ссылка
  2. Processing: processing.org

Положите библиотеку Arduino в папку libraries скетчбука Processing и откройте код в редакторе Processing.

Измените строку 38 в BeatWrite:

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

на путь к вашему локальному MP3-файлу и нажмите Play!

Код

BeatWrite (Processing / Java)

/**
 * Демонстрация BeatDetect в режиме FREQ_ENERGY.
 * Используйте isKick, isSnare, isHat, isRange, isOnset(int) для отслеживания бит.
 * Вызывайте detect() с последовательными аудиобуферами.
 * AudioListener (BeatListener) вызывает detect() на каждом буфере без пропусков.
 */
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;   // EL канал 1
int ledPin2 = 2;  // EL канал 2
int ledPin3 = 3;  // 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); // демпфирование 300 мс

  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 (Processing / 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);
  }
}

Производственный процесс

  1. Пружины из музыкальной проволоки: прочность, долговечность и современное применение
  2. Проектирование UX для пожилых пользователей: исчерпывающее руководство
  3. Почему важна цифровая память
  4. Универсальный скотч: прочность, гибкость и бытовое применение
  5. Наследие и эволюция классического джукебокса
  6. Нотные издания: от средневековых манускриптов к современному издательству — обзор отрасли
  7. Сканеры штрих-кода: технологии, дизайн и будущие тренды
  8. Комментарии в C++: лучшие практики для читаемого и поддерживаемого кода
  9. Выбор между Data Matrix и QR-кодами: что лучше для вашего бизнеса
  10. G-коды ЧПУ объяснены: основное руководство для программистов ЧПУ