EL Tape Music Visualiser
Komponenten und Verbrauchsmaterialien
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Über dieses Projekt
EL-Schirm und AnschlüsseEL Tape mit einem EL Shield von SeeedStudio wurde mit einem Arduino UNO verwendet. Das Band wurde auf 3 der 4 Kanäle mit dem Schirm verbunden.
Sobald dies abgeschlossen ist, laden Sie einfach den Code hoch und beginnen Sie mit der Wiedergabe Ihrer Musik!
Der Code verwendet Processing sowie die Processing Arduino-Bibliothek. Sie müssen beides zum Laufen bringen, um es verwenden zu können.
Holen Sie sich die Bibliothek für Arduino hier.
Holen Sie sich die Verarbeitung unter https://processing.org/
Sobald alles installiert ist, verschieben Sie die Arduino-Bibliothek in den Bibliotheksordner Ihres Verarbeitungsskizzenbuchordners und öffnen Sie den Code im Verarbeitungseditor.
Ändere die Zeile:
song =minim.loadFile("/home/paul/Music/dope.mp3", 2048);
in Zeile 38 von BeatWrite in eine lokale MP3-Datei auf Ihrem Computer und klicken Sie auf Play!
Code
- BeatWrite
- BeatListener
BeatWriteJava
BeatWrite-Skizze für Processing 2/** * Diese Skizze zeigt, wie das BeatDetect-Objekt im FREQ_ENERGY-Modus verwendet wird.
* Sie könnenisKick
,isSnare
. verwenden , isHat,isRange
, * undisOnset(int)
Um zu verfolgen, welche Art von Beats Sie verfolgen möchten, melden sie * true oder falsch basierend auf dem Stand der Analyse. Um die Analyse zu "ankreuzen", müssen Siedetect
* mit aufeinanderfolgenden Audiopuffern aufrufen. Sie können dies innerhalb vondraw
tun, aber Sie werden wahrscheinlich einige * Audiopuffer verpassen, wenn Sie dies tun. Der Sketch implementiert einenAudioListener
namensBeatListener
*, damit erdetect
für jeden vom System verarbeiteten Audiopuffer aufrufen kann, ohne einen Puffer zu wiederholen * oder fehlt eins. ** Dieser Sketch spielt einen ganzen Song ab, daher kann das Laden etwas langsam sein. */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 mit EL-Kanal verbunden 1int ledPin2 =2; // LED mit EL-Kanal verbunden 2int ledPin3 =3; // LED an EL-Kanal 3float angeschlossen kickSize, snareSize, hatSize;void setup () {size (512, 200, P3D); minim =neues Minim (dieses); arduino =neues Arduino (dies, "/dev/ttyACM1", 57600); song =minim.loadFile("/home/paul/Music/dope.mp3", 2048); song.play(); // ein Beat-Erkennungsobjekt im FREQ_ENERGY-Modus, das // erwartet, die Länge der Puffergröße des Songs zu puffern // und Samples mit der Sample-Rate des Songs aufzunehmen beat =new BeatDetect(song.bufferSize(), song.sampleRate()); // Sensibilität auf 300 Millisekunden einstellen // Nachdem ein Schlag erkannt wurde, wartet der Algorithmus 300 Millisekunden // bevor er zulässt, dass ein weiterer Schlag gemeldet wird. Sie können dies verwenden, um den // Algorithmus zu dämpfen, wenn er zu viele falsch-positive Ergebnisse liefert. Der Standardwert ist 10, // was im Wesentlichen keine Dämpfung ist. Wenn Sie versuchen, die Empfindlichkeit auf einen negativen Wert zu setzen, // wird ein Fehler gemeldet und stattdessen auf 10 gesetzt. beat.setSensitivity(100); kickSize =snareSize =hatSize =16; // einen neuen Beat-Listener erstellen, damit wir keine Puffer für die Analyse verpassen bl =new BeatListener(beat, song); textFont(createFont("Helvetica", 16)); textAlign (MITTE); arduino.pinMode (ledPin + 3, Arduino.OUTPUT); arduino.pinMode (ledPin2+3, Arduino.OUTPUT); arduino.pinMode (ledPin3 + 3, Arduino.OUTPUT); } Ungültiges Zeichnen () { Hintergrund (0); füllen(255); if (beat.isKick ()) {arduino.digitalWrite (ledPin + 3, Arduino.HIGH); // setze die LED auf kickSize =32; aufrechtzuerhalten. Wenn (beat.isSnare ()) { arduino.digitalWrite (ledPin2 + 3, Arduino.HIGH); // setze die LED auf snareSize =32; aufrechtzuerhalten. Wenn (beat.isHat()) {arduino.digitalWrite (ledPin3+3, Arduino.HIGH); // setze die LED auf hatSize =32; } arduino.digitalWrite (ledPin + 3, Arduino.LOW); // LED ausschalten arduino.digitalWrite (ledPin2 + 3, Arduino.LOW); // LED ausschalten arduino.digitalWrite (ledPin3 + 3, Arduino.LOW); // setze die LED aus textSize (kickSize); text("KICK", Breite/4, Höhe/2); textSize(snareSize); text("SNARE", Breite/2, Höhe/2); Textgröße (Hutgröße); text("HUT", 3*Breite/4, Höhe/2); kickSize =einschränken(kickSize * 0,95, 16, 32); snareSize =einschränken(snareSize * 0,95, 16, 32); HatSize =Constrain (HatSize * 0,95, 16, 32); }void stop() { // Minim-Audioklassen immer schließen, wenn Sie damit fertig sind song.close(); // Immer Minim stoppen, bevor minim.stop(); // dies schließt die Skizze super.stop();}
BeatListenerJava
class BeatListener implementiert AudioListener{ private BeatDetect beat; private AudioPlayer-Quelle; BeatListener(BeatDetect beat, AudioPlayer source) { this.source =source; this.source.addListener(this); this.beat =schlagen; aufrechtzuerhalten. Void Samples (float[] samps) { beat.detect (source.mix); aufrechtzuerhalten. Void Samples (float[] sampsL, float[] sampsR) { beat.detect (source.mix); }}
Herstellungsprozess