beaterkennung section

This commit is contained in:
Alexander Alber 2022-08-03 21:12:00 +02:00
parent caab5de64d
commit 48bf493f9b
3 changed files with 32 additions and 5 deletions

View File

@ -1,8 +1,19 @@
# Beaterkennung
Die erste von zwei Animationen besteht aus einer Welle, welche von jedem zweiten beat bis zum jeweils nächten beat von oben nach unten läuft.
Dafür muss zu jedem Zeitpunkt sowohl die Frequenz als auch die Phase des beats bekannt sein, und das auch über kürzere Störungen oder komplexere Rythmen hinweg.
Die zentrale Idee des Algorithmus ist es, Bandpassfilter mit schwacher Dämpfung als Phasenschätzer zu missbrauchen.
Hierfür wird eine ganze Reihe an Bandpässen mit unterschiedlichen Durchlassfrequenzen parallel geschaltet. Diese Durchlassfrequenzen gehören zu unterschiedlichen beat-Geschwindigkeiten. In unserem Fall von 105 bis 150bpm, weil sich hier die elektronische Tanzmusik meistens abspielt. Auf jeden dieser Bandpässe wird nun die Signalenergie gegeben. Der Bandpass, der sich daraufhin am meisten aufschwingt, hat dann offensichtlich am besten die richtige Geschwindigkeit getroffen.
Jetzt nochmal von vorne und im Detail - diesen Abschnitt gerne überspringen: Zuerst sammeln wir samples vom Mikrofon. Wir ziehen den gleitenden Durchschnitt ab, um ein Audiosignal zu erzeugen, welches um Null herum schwingt. Über jeweils ein chunk - eine Vierzigstelsekunde - summieren wir über quadrierte samples, um die Signalenergie in diesem chunk zu erhalten. Alles weitere passiert nun ebenfalls 40 mal die Sekunde. Wir geben die Signalenergie gleichzeitig auf alle Bandpässe - ebenfalls 40 an der Zahl - und schauen welcher davon sich am weitesten aufschwingt. Als relativen Amplitudenschätzer filtern wir die Absolutwerte aller Bandpassausgänge und setzen regelmäßig den Bandpass mit dem höchsten entsprechenden Wert auf aktiv. Nun haben wir das Problem, dass der Bandpass einmal pro beat schwingt, unsere gewollte Animation aber zwei beats benötigt. Wir müssen also irgendwie die Frequenz halbieren. Dafür verzögern wir das Signal um Pi/4 und schätzen mit der atan2-Funktion die Phase. Mit der bekannten Phase und einem einfachen Zustandsautomat konstruieren wir uns eine neue Phase, die nur halb so schnell steigt. Diese skalieren wir linear auf eine Sollposition des Maximums der Lichtwelle.
Wir wissen nun also zu jedem Zeitpunkt die Position des Scheitelpunktes der Lichtwelle. Die LEDs davor und dahinter werden ebenfalls angesteuert aber mit abfallender Helligkeit, so dass ein Verlauf entsteht.
Die Maxima für den roten und blauen Kanal sind dabei gegenläufig verschoben, so dass ein räumlicher Farbverlauf entsteht.
Das Ganze ist hier illustriert:
![Blockdiagramm Beaterkennung](grafiken/illustrationen/beaterkennung.PNG "Blockdiagramm Beaterkennung")
![Blockdiagramm Beaterkennung](grafiken/illustrationen/beaterkennung.PNG "Blockdiagramm Beaterkennung")

View File

@ -6,6 +6,6 @@ Ein Flugzeug mit schlagenden Flügeln. Ein handgeschriebenes Schild mit der Aufs
Ungewöhnliche Eindrücke findet man auf dem Fusion Festival genug. Doch die deutsche Variante des Burning Man ist auch bekannt für sogenannte Festivaltotems:
Kunstwerke und Basteleien, die mit auf die Tanzfläche genommen werden, damit sich die eigene crew auch findet. Mobilfunk sucht man nämlich meist vergeblich.
Heute erzählen wir die Geschichte unseres Festivaltotems. Sie beginnt ein paar Wochen vor dem großen Einsatz mit einer zentralen Idee:
Wir wollten ein Totem, das auf Musik reagiert. In der Mitte der Geschichte warten einige technische Stolpersteine. Am Ende steht ein 3D-gedrucktes Ei, gefüllt mit einem
Heute erzählen wir die Geschichte unseres Festivaltotems. Sie beginnt ein paar Wochen vor dem großen Einsatz mit einer zentralen Idee -
es soll auf Musik reagieren. Weiter geht es mit einigen interessanten technischen Rätseln. Am Ende steht ein 3D-gedrucktes Ei, gefüllt mit einem
lasergedruckten Holzskelett, LED-Ketten und Elektronik. Es tanzt zum beat, lässt sich über Gesten steuern und verbreitet wo es hinkommt gute Laune.

16
make_artikel/notes.md Normal file
View File

@ -0,0 +1,16 @@
# Bandpass
# Biquad
# Vasenmodus
# Signalenergie
# PT1