Re: Sound graphisch darstellen
Zitat:
Auch Bit-Exoten wie 12 Bit, 32 Bit o.ä. werden nicht erkannt - nur 8 und 16 Bit (die allerdings den größten Teil aller existierenden Waves ausmachen sollten...) Immer wenn der Typ nicht als bekannt ermittelt werden kann wird zwar die Header-Info soweit ausgegeben, aber die Daten zur Sicherheit nicht mehr eingelesen. In diesen Fällen handelt es sich dann aber um Wave-Exoten die sich nicht strikt an die Specs halten - sollte man eh löschen :mrgreen:. gruss, dizzy |
Re: Sound graphisch darstellen
Zu dem vorletzten Beitrag mit den Unterschiedlichen Kurven: Die Werte sind ja immer mal wieder negativ, was ist dann damit? Weil wenn ich die ganzen Werte dann addiere für einen Durchschnitt kommt z.T. schon da was recht niedriges raus, wenn ich dann auch noch /scale mache gibt das fast nix...
Den Betrag aller werte kann ich auch nicht nehmen weil da kommt dann jedesmal fast das gleiche raus als Durchschnit... was ich probiere: es ist entweder Wirrwar wie vorher oder ein nahezu immer gleichhohes dickes band... das gibt doch schon die Lautstärke oder so an?! |
Re: Sound graphisch darstellen
Zitat:
Zitat:
Zitat:
Werde mit aber gleich mal wieder mein WaveLab installieren und so lange frickeln bis die Waves ähnlich aussehen :lol:. Das Thema fuchst mich jetzt irgendwie... Zitat:
bis nachher, dizzy |
Re: Sound graphisch darstellen
OK danke dass du bissl mithilfst, ich hab mir schon den halben Sonntag um die Ohren geschlagen...
Kann man nicht das 16Bit-Dings aber 8Bit umrechnen (also nur das -32xxx bis +32xxx auf 0..255 umrechnen)? Ich versteh das halt net ganz mit Integral und so (10.-Klässler :) ) ... |
Re: Sound graphisch darstellen
Zitat:
Zitat:
Könnte ein Weg sein, müsste man prüfen. Ich fummel heut Abend auch noch etwas, jetzt muss ich erst kurz weg. Aber das will ich heute noch gelöst sehen :) Zitat:
Wenn man das jetzt auf unsere Wavefiles weiterspinnt, so addiert man für den Durchschnitt abwechselnd positive und negative Werte die, je länger das Intervall wird, im Schnitt immer gleicher werden. Somit wäre theoretisch der Durchschnitt eines unendlich langen Wavefiles = 0 (Vorausgesetzt es sind "natürliche" Kurven drin, und nicht eine ewig steigende Flanke oder so etwas). |
Re: Sound graphisch darstellen
Ah ok, das verstehe ich jetzt mit den Flächen... sinus kenne ich ja schon...
PS: ich will es auch heute noc gelöst haben :stupid: , mir gefällt sowas ja auch immer mit rumprobieren, zumindest wenn ich eine realistische Chance habe ;) |
Re: Sound graphisch darstellen
schon fortschritte? :drunken:
Irgendwie liegt der Fehler doch schon im Ausgangsmaterial also im Inhalt dieses Arrays, oder? Ich kann das doch nie so umformen dass da unterschiedliche Sachen mit bei rauskommen... Ich hab probeweise mal eine Sounddatei genommen und eine Stelle gaaanz leise gemacht und weiter hinten mal einen bereich komplett still. Das Prog hat mir die erste Stelle unverändert im vergleich zum rest angezeigt aber die zweite, ganz stille, als lücke (wies sein soll) |
Re: Sound graphisch darstellen
Ist es auch möglich den Sound in Echtzeit dazustellen? D.h. was gerade über den Wave kommt als Graph?
Wenn es geht z.b. bei 5.1 die Kanäle einzeln... Falls nicht, kennt jemand ein solches Prog? |
Re: Sound graphisch darstellen
Ich habs! Ich habs! :hello: :bounce1: :bouncing4:
In den Specs steht, dass bei 16 Bit Waves die Bytes vertauscht im Word stehen... Aber so ganz stimmte das scheinbar nicht, denn die Delphi-Funktion "Swap" macht den Rücktausch, und damit waren die Waves falsch behandelt! Nach kurzer Betrachtung der gezeichneten Rohdaten fiel es mir wie Schuppen von den Augen! Pack mal in die Unit2 folgende function:
Delphi-Quellcode:
Du musst dann nur noch in der Prozedur:
function SwapWord(val: Word): Word;
begin result := val xor $8000; end; // Diese Operation könnte auch verständlicher aussehen, aber ich vermute, dass das obige schneller ist. :) // Ich schreib mal die ersichtlichere Variante: if val > 32768 then result := val - 32768 else result := val + 32768; "procedure TLoadThread.readDataChunkData;" alle Vorkommen von "Swap" in "SwapWord" ändern (sollten 3 sein). Und die Variable "temp" in dieser Prozedur sollte vom Typ "Word" sein, nicht mehr Integer. Ist aber eigentlich nur Kosmetik. Des Weiteren solltest du die beiden Typen: TByteArray = array of ShortInt; TWordArray = array of SmallInt; in ihre Urpsrungsform: TByteArray = array of Byte; TWordArray = array of Word; ändern. Das hat dann allerdings zur Folge, dass alle in den arrays vorkommenden Werte positiv sind, also die Nulldurchgänge an 127 bzw. 32767 sind, und nicht mehr 0. Das müsste beim Zeichnen berücksichtigt werden! Der function.Name ist mit "SwapWord" zwar nicht mehr so ganz korrekt, aber es ist die Lösung! :cheers: Jetzt kann ich wieder gut schlafen :spin2:. |
Re: Sound graphisch darstellen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:13 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz