Go Down

Topic: An Statistiker/Mathematiker/Programmierer: Daten selektiv "weichzeichnen" (Read 1 time) previous topic - next topic

Helmuth

Die Mitte wäre ja wieder nur ein gleitender Durchschnitt.

Ich will den letzten Wert nehmen, den ich (bzw. der zu entwerfende Algorithmus) für gültig befindet.

Gruß,

Helmuth

DrDiettrich

Die Latenz hängt davon ab, wie schnell die Daten reinkommen. Selbst bei einem Filter 5. Ordnung (aus 5 aufeinanderfolgenden Meßwerten) wärst Du dann nur zwei Messungen hinterher. Ein Blick in die Zukunft wäre nur möglich, wenn Du den Zustand eines Systems aus den zurückliegenden Messungen genügend genau vorhersagen kannst - was bei unsystematischem Rauschen nicht möglich ist. Bei Musik auch höchstens dann, wenn man die Partitur schon kennt.

Helmuth

Mir raucht der Kopf. Den ganzen Tag mit Excel Konzepte probiert und wieder verworfen. Frustriert einen doppelten Whisky getrunken.

Dann den Messaufbau überarbeitet. Wenn mit 5V betrieben, sind die Werte vom Analyzer IC besser, als mit 3.3V. Fein. Aufbau komplett umgebaut. Alles näher zusammen, Kürzestmögliche Kabel, die "Datenleitung" abgeschirmt, den AudioDAC dabeben gestellt, auch da ein ganz kurzes Audiokabel zum Steckbrett. Ergebnisse noch besser.

Schön. Nächster Punkt: mir die Datenübertragung vom MSGEQ7 angesehen und das Timing innerhalb der Messung gestrafft - und die Messung selbst auch verkürzt - ich brauche nur die ersten 2 Bänder. Das geht jetzt in 94µs, danach kann ich abbrechen, weil ich habe, was ich brauche. Ist ca. um den Faktor 3 schneller als vorher. Ohne den ADC vom Teensy anzufassen. Jetzt kann ich mir ein paar mehr Messungen leisten und damit auch die 2 Messungen Zeitversatz für den vorgeschlagenen Filter. Basta für heute.




Eisebaer

hi,

verstehe ich das richtig?

Du machst alle 94µS eine messung?

na dann würde ich erst nach 10 messungen eine änderung der led-werte vornehmen. solange braucht der ton von den lautsprechern nämlich in etwa, um Deine ohren zu erreichen, nachdem das licht der LEDs bei Deinen augen angekommen ist.

falls Du da wirklich eine synchronität erreichen willst (die Dein hirn niemals wahrnehmen kann), mußt Du in die andere richtung denken,.

gruß stefan

Eisebaer

was mir grade noch dazu einfällt:

falls es (entgegen dem, was ich oben geschrieben habe) wirklich so ist, daß Dein licht hinter dem ton herhinkt: gibt es keine schaltung, die (verlustfrei) die signale der tonleitung - sagen wir mal - eine zehntelsekunde verzögert? dann könntest Du mit dem arduino/teensy bequem nach vorne oder hinten justieren, bis es genau paßt.

...und natürlich "in der zukunft" messen.

noch ein gruß, noch ein stefan

combie

Hey Eisebaer ..
Keine Grundsatzdiskussionen!
Wenn der Mensch bestenfalls 30 Lichtbilder pro Sec unterscheiden kann, dann ist 100µs keine Basis, über die man nachdenken darf.
Also Bitte!

Wer seine Meinung nie zurückzieht, liebt sich selbst mehr als die Wahrheit.

Quelle: Joseph Joubert

Eisebaer

hi,

 :)  na gut, combie.

ich hab' damit aber in erster linie gemeint, daß er über das ganze konzept nachdenken muß. wenn es eine verzögerung gibt.
 woher kommt die?
wenn der ton durch die unterschiedliche geschwindigkeit in der luft um, sagen wir mal, 10 millisekunden länger zu helmuts kopf braucht als das licht der leds, sollte er doch später ankommen, selbst wenn das programm langsam ist.

und die zweite idee mit der verzögerung des tonsignals gefällt mir, weil man ja wirklich "in die zukunft schauen" könnte.

gruß stefan

Helmuth

Moin, ja, die Schallgeschwindigkeit schenkt mir ca. 3ms pro m Lautsprecherabstand.

Die Messung allein ist ja nicht alles. Momentan habe ich lahme WS2812 dran, alle in Serie. Im Leerlauf kann ich die mit ca. 130 fps beschreiben (definiert durch die Anzahl der LEDs).

Ich habe also 7,6 ms pro Frame, wenn ich nichts anderes mache. Alles, was ich mache (z.B. Simplex Noise Berechnung und die Animation überhaupt), gibt es nicht umsonst und schlägt sich sofort in einer geringeren Framerate nieder.

Quote
Wenn der Mensch bestenfalls 30 Lichtbilder pro Sec unterscheiden kann
Das hat combie geschickt forumliert. UNTERSCHEIDEN mag schon sein. Aber je mehr es sind, umso weicher und flüssiger wird der Eindruck. Auch, wenn man die Frames (schon lange) nicht mehr unterscheiden kann, sehen mehr davon dennoch deutlich besser aus. Was glaubt ihr, warum bessere Fernseher 100 fps oder gar 200 fps ausgeben und ziemlich aufwändig zig Zwischenbilder berechnen. Schaut Euch im Technikmarkt um die Ecke mal einen schnellen Kameraschwenk mit 50 und mit interpolierten 200 Bildern pro Sekunde an. Danach reden wir weiter über den Sinn von möglichst vielen fps.

Ich habe desweiteren nicht gesagt, dass es eine sichtbare Latenz gibt, ich sagte ich will sie unter allen Umständen vermeiden. Die Sache ist die: selbst im einstelligen ms Bereich FÜHLT man einen Unterschied. Bei diesen LEDs zum Sound Geschichten gibt es immer einen Punkt im Raum (bzw. Abstand zum Lautsprecher), wo es PERFEKT passt. Ich habe das mehrfach mit Freunden getestet - sie sollten sich im (großen) Zimmer dahin stellen, wo sie den Eindruck haben, "dass sie jetzt die Musik sehen". Sie standen alle im selben Abstand.

Wer das bezweifelt, gehe mal irgendwohin, wo 10 geübte Trommler im Kreis spielen. Klingt geil, oder? Jetzt sucht die Position, wo es perfekt klingt, wo der Rhythmus praktisch einrastet. Es ist die Mitte des Kreises, wo ihr den gleichen Abstand zu jeder einzelnen Schallquelle habt. 2m daneben klingt auch gut, aber eben nicht perfekt und das spürt man. Aus diesem Grunde lernen Djembe Spieler als erstes, sich gegenseitig auf die Hände zu schauen, um dieses Delay rauszukriegen.
(Ich habe neulich eine Studie gesehen, wo sie mit Highspeed Kameras eine Jamsession aufgenommen haben. Die Musiker wurden gebeten, (das Gleiche) miteinander zu spielen, bis sie "eins" werden, bis sie nicht mehr die Musik spielen, sondern die Musik sind. Jeder einzelne konnte ganz klar den Moment benennen, ab dem es WIRKLICH gegroovt hat. Die zeitliche Abweichung der einzelnen Spieler zueinander lag in diesem Moment bei UNTER 1 ms! Wie das physiologisch funktioniert, kann bisher nicht befriedigend erklärt werden (die menschlichen Sinnesorgane samplen jedenfalls nicht so schnell), aber jeder Musiker kann den Unterschied zwischen einem guten und einem perfekten Rhythmus fühlen. Die grinsen dann immer, wenn das passiert. Und das Publikum fängt i.d.R. spätestens an diesem Punkt an, zu tanzen)

Zusammenfassung: Je geringer die Latenz zwischen (verschiedenen) Sinneseindrücken umso geiler der Effekt.

Ein Audio Delay (wie z.B. bei Großveranstaltungen verwendet, um Laufzeitunterschiede des Schalls auszugleichen), wäre auch eine Lösung (bzw. ein Workarround), aber vorher möchte ich die vorhandene Hardware ausreizen.

Beste Grüße,

Helmuth

Helmuth

P.S. In diesem Video hier habe ich noch geschummelt und die aktiven Lautsprechen stehen ca. 6 m hinter mir. Man achte auf die Reflexion an der Wand, da sieht man, wie schnell die LEDs wirklich reagieren.

Mit dem damals verwendeten Arduino Mega ging es nicht anders, die Signalverarbeitung hat einfach zu lange gedauert.

guntherb

Wenn ich das sehe, brauchst du
a) einen gefilterten Wert, für eine "beruhigte" Anzeige
b) einen schnellen Spitzenwertdetector um sofort reagieren zu können.

Mein Vorschlag: mach beides.

für Anzeige einen gleitenden Durchschnitt. Und ein zweites, nicht oder schwach gefiltertes Signal, für die schnelle reaktion.

Ansatz wäre z.B.: Aus dem gleitenden Durchschnitte ein Band definieren, wenn der Spitzenwert über das Band hinausschiesst, die Basis des gleitenden Durchschnitts neu setzen.
Grüße
Gunther

Theseus

und die Messung selbst auch verkürzt - ich brauche nur die ersten 2 Bänder. Das geht jetzt in 94µs, danach kann ich abbrechen, weil ich habe, was ich brauche. Ist ca. um den Faktor 3 schneller als vorher.
Die Messung allein ist ja nicht alles. Momentan habe ich lahme WS2812 dran, alle in Serie. Im Leerlauf kann ich die mit ca. 130 fps beschreiben (definiert durch die Anzahl der LEDs).

Ich habe also 7,6 ms pro Frame, wenn ich nichts anderes mache. Alles, was ich mache (z.B. Simplex Noise Berechnung und die Animation überhaupt), gibt es nicht umsonst und schlägt sich sofort in einer geringeren Framerate nieder.

aber

Z.B. würde ich das 63 Hz Band für x nehmen. Ein horizontaler Shift zur Baseline proportional zur deren Intensität.
Du müsstest zur Analyse ein höher frequentes Band nehmen. Der Analysator brauchst mindestens ein, besser mehrere Schwingungen um ein 63Hz-Signal festzustellen. Du bist vermutlich im Bereich über 100ms, was deine Frequenzanalyse anbegeht. Du hast da also eine ziemlich große Latenz.

Helmuth

Quote
Der Analysator brauchst mindestens ein, besser mehrere Schwingungen um ein 63Hz-Signal festzustellen.
Interessanter Punkt. 63 Hz entspricht 15,9 ms pro Schwingung. Eine verdammte Ewigkeit. Ich schaue mir das mal näher an, wieviel Zeit zwischen dem Anlegen eines niederfrequenten Sinussignals und der Detektion desselben vergeht.

Go Up