Визуализатор музыки на магнитной ленте EL
Компоненты и расходные материалы
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Об этом проекте
EL Shield и разъемыЛента EL с экраном EL от SeeedStudio использовалась с Arduino UNO. Лента подключалась к экрану на 3 из 4 каналов.
Как только это будет завершено, просто загрузите код и начните воспроизведение музыки!
Код использует обработку, а также библиотеку обработки Arduino. Вам нужно, чтобы оба они работали, чтобы использовать его.
Загрузите библиотеку для Arduino здесь.
Получите обработку на https://processing.org/
После того, как все это установлено, переместите библиотеку arduino в папку библиотек в папке с альбомом обработки и откройте код в редакторе обработки.
Измените строку:
song =minim.loadFile ("/ home / paul / Music / dope.mp3", 2048);
в строке 38 Beat Запишите в локальный MP3-файл на вашем компьютере и нажмите "Воспроизвести"!
Код
- BeatWrite
- BeatListener
BeatWrite Java
Скетч BeatWrite для обработки 2/ ** * Этот рисунок демонстрирует, как использовать объект BeatDetect в режиме FREQ_ENERGY.
* Вы можете использоватьisKick
,isSnare
, isHat ,isRange
, * иisOnset (int)
для отслеживания любых видов ударов, которые вы хотите отслеживать, они сообщат * true или ложно в зависимости от состояния анализа. Чтобы "отметить" анализ, вы должны вызватьdetect
* с последовательными буферами звука. Вы можете сделать это внутриdraw
, но вы, вероятно, пропустите некоторые * аудио буферы, если сделаете это. В скетче реализован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 1int ledPin2 =2; // светодиод подключен к каналу EL 2int ledPin3 =3; // светодиод, подключенный к каналу EL 3float kickSize, snareSize, hatSize; void setup () {size (512, 200, P3D); минимум =новый минимум (это); arduino =новый Arduino (это, «/ dev / ttyACM1», 57600); song =minim.loadFile ("/ home / paul / Music / dope.mp3", 2048); song.play (); // объект обнаружения ударов, который находится в режиме FREQ_ENERGY, который // ожидает в буфере длину размера буфера песни // и сэмплы, захваченные с частотой дискретизации песни beat =new BeatDetect (song.bufferSize (), song.sampleRate ()); // установить чувствительность на 300 миллисекунд // После обнаружения биения алгоритм будет ждать 300 миллисекунд // перед тем, как разрешить сообщение о другом биении. Вы можете использовать это для смягчения // алгоритма, если он дает слишком много ложных срабатываний. Значение по умолчанию - 10, // что практически не имеет демпфирования. Если вы попытаетесь установить чувствительность на отрицательное значение, // будет сообщено об ошибке, и вместо этого будет установлено значение 10. beat.setSensitivity (100); kickSize =snareSize =hatSize =16; // создаем нового слушателя битов, чтобы не пропустить ни одного буфера для анализа bl =new BeatListener (beat, song); textFont (createFont ("Helvetica", 16)); textAlign (ЦЕНТР); arduino.pinMode (ledPin + 3, Arduino.OUTPUT); arduino.pinMode (ledPin2 + 3, Arduino.OUTPUT); arduino.pinMode (ledPin3 + 3, Arduino.OUTPUT); } void draw () {фон (0); заполнить (255); если (beat.isKick ()) {arduino.digitalWrite (ledPin + 3, Arduino.HIGH); // включаем светодиод kickSize =32; } если (beat.isSnare ()) {arduino.digitalWrite (ledPin2 + 3, Arduino.HIGH); // включаем светодиод snareSize =32; } если (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); текст («УДАР», ширина / 4, высота / 2); textSize (размер ловушки); текст ("SNARE", ширина / 2, высота / 2); textSize (размер шляпы); текст ("ШЛЯПА", 3 * ширина / 4, высота / 2); kickSize =ограничение (kickSize * 0,95, 16, 32); snareSize =ограничить (snareSize * 0.95, 16, 32); hatSize =ограничение (размер шляпы * 0,95, 16, 32); } void stop () {// всегда закрываем минимальные классы аудио по завершении работы с ними song.close (); // всегда останавливаем Minim перед выходом из minim.stop (); // это закрывает скетч super.stop ();}
BeatListener Java
класс BeatListener реализует AudioListener {частный BeatDetect beat; частный источник AudioPlayer; BeatListener (BeatDetect beat, источник AudioPlayer) {this.source =source; this.source.addListener (это); this.beat =beat; } пустые образцы (float [] samps) {beat.detect (source.mix); } пустые образцы (float [] sampsL, float [] sampsR) {beat.detect (source.mix); }}
Производственный процесс