Prof. J. Walter - Informationstechnik, Mikrocomputertechnik, Digitale Medien Ausgewählte Lösung
Hochschule Karlsruhe Logo Mikrokontroller + energieeffiziente Mikrokontroller + Mechatronik Dialog
Swimming Pixel - MIDI über MQTT
Wintersemester 2021
Jin Yun Ng

Lujaini Ali

Ausgewählte Lösung

WAV to MIDI Converter

AnyConv WAV to MIDI
Abb. 1: AnyConv Online WAV-to-MIDI-Converter

Als WAV-to-MIDI-Converter haben wir AnyConv ausgewählt. Es ist ein Online-Umwandler, mit dem man jederzeit ein WAV Musikdatei in MIDI umwandeln kann.

DAW MusikSoftware

PreSonus Studio One
Abb. 2: PreSonus Studio One

Ein DAW ist benötigt, um die MusikDatei zu bearbeiten, damit die MIDI-Informationen extrahiert werden können. Die DAW PreSonus Studio One erlaubt uns, die MIDI-Datei zu importieren. Auf der Abb. 2 kann man sehen, dass es gelbe und blaue Tracks gibt, welche jeweils MIDI und WAV Musikdateien beinhalten. WAV braucht man, um die Musikaudio abzuspielen. Auf dieser DAW kann man die MIDI-Dateien wie z.B. Tonhöhe und Lautstärke bearbeiten.

Virtueller MIDI-Anschluss

loopMIDI
Abb. 3: loopMIDI Anschluss

Einen virtuellen MIDI-Anschluss wie loopMIDI brauchen wir, um die MIDI-Dateien von DAW zu Python-Programm zu übertragen.

Python Programm am Laptop und C Programm im Mikrokontroller

Im Python Programm benutzen wir die Bibliothek mido, um die MIDI-Dateien von DAW zu importieren, wenn die Musik abgespielt ist. In dieser Bibliothek dürfen wir drei Größen extrahieren:
1. type - der Anfang und das Ende einer MusikNote (ON/OFF)
2. note - die Tonhöhe einer MusikNote
3. velocity - die Lautstärke einer MusikNote

Diese Größen brauchen wir, damit die Swimming Pixel unterschiedliche Lichteffekte darstellen können:
Oktavband note (Tonhöhe) Farbe (RGB) Swimming Pixel
C0 - B0 24 - 35 rot (255, 0, 0) 1 und 13
C1 - B1 36 - 47 orange (255, 125, 0) 2 und 12
C2 - B2 48 - 59 gelb (255, 255 ,0) 3 und 11
C3 - B3 60 - 71 gruen (0, 255, 0) 4 und 10
C4 - B4 72 - 83 ocean (0, 125, 255) 5 und 9
C5 - B5 84 - 95 violet (125, 0 ,255)  6 und 8
C6 - B6 96 - 107 magenta (255, 0, 255)  7

Die Musikgröße velocity (Lautstärke) wird verwendet, um die Helligkeit der Swimming Pixel anzusteuern. Jede Tonhöhe hat ihre eigene Lautstärke (1 bis 127) und der durchschnittliche Wert der Lautstärken von einem Oktavband (z.B. C3 - B3) wird in die Helligkeit der Pixel (0 bis 255) umgewandelt.

  Mit Unterstützung von Prof. J. Walter Wintersemester 2021