Visualizador de cinta musical EL
Componentes y suministros
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Acerca de este proyecto
EL Shield y conectoresEL Tape con un EL Shield de SeeedStudio se usó con un Arduino UNO. La cinta se conectó al blindaje en 3 de los 4 canales.
Una vez que esté completo, simplemente cargue el código y comience a reproducir su música.
El código utiliza Processing y la biblioteca Processing Arduino. Deberá hacer que ambos funcionen para poder usarlo.
Coge la biblioteca para Arduino aquí.
Obtenga procesamiento en https://processing.org/
Una vez que todo lo que esté instalado, mueva la biblioteca arduino a la carpeta de bibliotecas de la carpeta de su cuaderno de bocetos de procesamiento y abra el código en el editor de procesamiento.
Cambiar la línea:
song =minim.loadFile ("/ home / paul / Music / dope.mp3", 2048);
en la línea 38 de BeatWrite a un archivo MP3 local en su computadora y haga clic en reproducir!
Código
- BeatWrite
- BeatListener
BeatWrite Java
Bosquejo BeatWrite para Processing 2/ ** * Este bosquejo demuestra cómo usar el objeto BeatDetect en modo FREQ_ENERGY.
* Puede usarisKick
,isSnare
, isHat ,isRange
, * yisOnset (int)
para rastrear cualquier tipo de latidos que esté buscando rastrear, informarán * verdadero o falso según el estado del análisis. Para "marcar" el análisis debe llamar adetect
* con sucesivos búferes de audio. Puede hacer esto dentro dedraw
, pero es probable que pierda algunos * búferes de audio si hace esto. El boceto implementa unAudioListener
llamadoBeatListener
* para que pueda llamar adetect
en cada búfer de audio procesado por el sistema sin repetir un búfer * o perdiendo uno. ** Este boceto reproduce una canción completa, por lo que puede tardar un poco en cargarse. * / 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 conectado al canal EL 1int ledPin2 =2; // LED conectado al canal EL 2int ledPin3 =3; // LED conectado al canal EL 3float kickSize, snareSize, hatSize; void setup () {size (512, 200, P3D); minim =new Minim (esto); arduino =nuevo Arduino (esto, "/ dev / ttyACM1", 57600); song =minim.loadFile ("/ home / paul / Music / dope.mp3", 2048); song.play (); // un objeto de detección de ritmo que es el modo FREQ_ENERGY que // espera búferes de la longitud del tamaño del búfer de la canción // y muestras capturadas a la frecuencia de muestreo de las canciones beat =new BeatDetect (song.bufferSize (), song.sampleRate ()); // establece la sensibilidad en 300 milisegundos // Después de que se ha detectado un latido, el algoritmo esperará 300 milisegundos // antes de permitir que se informe de otro latido. Puede usar esto para amortiguar el // algoritmo si está dando demasiados falsos positivos. El valor predeterminado es 10, // que esencialmente no es amortiguación. Si intenta establecer la sensibilidad en un valor negativo, // se informará un error y se establecerá en 10 en su lugar. beat.setSensitivity (100); kickSize =snareSize =hatSize =16; // crea un nuevo oyente de ritmo, de modo que no perdamos ningún búfer para el análisis bl =new BeatListener (ritmo, canción); textFont (createFont ("Helvetica", 16)); textAlign (CENTRO); arduino.pinMode (ledPin + 3, Arduino.OUTPUT); arduino.pinMode (ledPin2 + 3, Arduino.OUTPUT); arduino.pinMode (ledPin3 + 3, Arduino.OUTPUT); } vacío dibujar () {fondo (0); llenar (255); if (beat.isKick ()) {arduino.digitalWrite (ledPin + 3, Arduino.HIGH); // establece el LED en kickSize =32; } if (beat.isSnare ()) {arduino.digitalWrite (ledPin2 + 3, Arduino.HIGH); // establece el LED en snareSize =32; } if (beat.isHat ()) {arduino.digitalWrite (ledPin3 + 3, Arduino.HIGH); // establece el LED en hatSize =32; } arduino.digitalWrite (ledPin + 3, Arduino.LOW); // apaga el LED arduino.digitalWrite (ledPin2 + 3, Arduino.LOW); // apaga el LED arduino.digitalWrite (ledPin3 + 3, Arduino.LOW); // apaga el LED textSize (kickSize); texto ("PATADA", ancho / 4, alto / 2); textSize (snareSize); texto ("SNARE", ancho / 2, alto / 2); textSize (hatSize); texto ("SOMBRERO", 3 * ancho / 4, alto / 2); kickSize =restringir (kickSize * 0.95, 16, 32); snareSize =restringir (snareSize * 0.95, 16, 32); hatSize =restringir (hatSize * 0.95, 16, 32); } void stop () {// siempre cierre las clases de audio Minim cuando haya terminado con ellas song.close (); // siempre detiene Minim antes de salir de minim.stop (); // esto cierra el sketch super.stop ();}
BeatListener Java
clase BeatListener implementa AudioListener {ritmo privado BeatDetect; fuente de AudioPlayer privada; BeatListener (ritmo BeatDetect, fuente AudioPlayer) {this.source =fuente; this.source.addListener (esto); this.beat =latido; } muestras vacías (float [] samps) {beat.detect (source.mix); } muestras vacías (float [] sampsL, float [] sampsR) {beat.detect (source.mix); }}
Proceso de manufactura