Seite 2 von 2

Verfasst: 17.03.2007 13:48
von Hoto
Den Mittelwert? Blicke ich gerade nicht, was eine Amplitude ist, ist mir klar, aber welcher Mittelwert meinst Du genau?

Hm, seltsam, die Hz Zahl gibt ja die Anzahl der Schwingungen pro Sekunde an. Ich hab hier nun ein Sample das ist 600ms lang in 6000Hz aufgenommen, das wären dann also 3600 Schwingungen. Wie kommt es dann, dass das Sample in RAW abgespeichert 3600 Bytes groß ist?

Da blick ich noch nicht so ganz durch.

Verfasst: 17.03.2007 13:53
von DarkDragon
Hoto hat geschrieben:Wie muss ich denn nun eine Wav Datei genau vektorisieren? Einfach nur immer abwechselnd die Tiefst- und Höchstwerte auslesen?
Da gehst du über die Steigung: DeltaX und DeltaY.

Bild

Ich hoffe es ist alles korrekt was ich das reingeschrieben hab.

Die Kurve liegt halt wie in nem byte, word oder float Array vor, nicht als Vektoren oder gar als Funktionsgleichung.

Verfasst: 17.03.2007 14:02
von Hoto
Ok, das hilft mir schon mal ein ganzes Stück weiter, jedoch frage ich mich immer noch wie die Daten abgespeichert sind, eine ganze Schwingung kann doch schlecht in einem Byte stecken? Für eine Schwingung brauch man da doch mehr Daten.

Mit welchem Programm kann ich eine Wave auf 100Hz bringen? Mit meinem Wave Editor kommt ich nur bis min. 1000Hz runter.

Edit: ok, ich habs nun kapiert wie es abgespeichert wird. Ein Programm zum reduzieren auf 100Hz fehlt mir dennoch immer noch.

Das mit den Winkeln ist eine sehr gute Idee.

Verfasst: 17.03.2007 14:24
von Kaeru Gaman
> eine ganze Schwingung kann doch schlecht in einem Byte stecken?
dort steckt auch nur ein einziger amplitudenwert zum zeitpunkt x

du brauchst auch nicht das sample auf 100Hz runterbringen,
du kannst den algorithmus so schreiben,
dass er über mehrere sample-werte geht um einen vektor zu erzeugen....

Verfasst: 17.03.2007 14:34
von Hoto
Jo, habs inzwischen soweit begriffen. Blick jetzt schon deutlich besser durch. Zum besseren Verständnis würde ich aber doch lieber erstmal mit 100Hz Sampeln arbeiten und später kann ich das ja dann immer noch umändern.

Per Zufall gerade über nen guten Artikel gestolpert: http://iamwww.unibe.ch/~fkiwww/lectures ... itel21.pdf

Verfasst: 17.03.2007 15:26
von ZeHa
Ich würde einfach das WAV-File einlesen, dann z.B. immer ein Frame-Fenster von 1000 Samples nehmen, davon das höchste aussuchen oder den Mittelwert, und das dann in einer Liste speichern und daraus die Vektoren berechnen.

(Ein Frame sind alle Samples aller Kanäle zu einem einzigen Zeitpunkt - wenn Du Stereo benutzen würdest, hätte ein Frame also zwei Samples. Du wirst Mono benutzen, nehme ich an, aber programmiere Deine Funktionen lieber gleich richtig ;) ach ja und noch was, es gibt einen wichtigen Unterschied bei 8-Bit und 16-Bit Samples, und zwar wird 8-Bit immer unsigned gespeichert und der Mittelpunkt liegt bei 127 (Also Amplitude = 0), bei 16-Bit ist 0 tatsächlich der Mittelpunkt und es geht von -32767 bis 32768).

Verfasst: 17.03.2007 18:57
von Hoto
hm, also ich hab hier 8bit Samples aufgenommen, die wenn ich sie in PB mit ReadByte einlese von -127 bis +128 gehen. Bei 16bit Samples, die ich mit ReadWord (ist doch richtig so?) auslese, ist bei meinem Sample der max. Wert irgendwo bei 16000, also weit weg von 32768, auch hier hab ich positive und negative Werte.

Was ich auch seltsam finde, ist das die meisten Werte, die ich bei 8bit Samples einlese fast alle um die -127 oder 128 liegen, dazwischen kommt kaum bis gar nichts vor.

Edit: ich gebs auf, blick da überhaupt nicht mehr durch... :?