AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Sound graphisch darstellen

Ein Thema von Meflin · begonnen am 20. Jul 2004 · letzter Beitrag vom 7. Sep 2008
Antwort Antwort
Seite 4 von 6   « Erste     234 56      
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#31

Re: Sound graphisch darstellen

  Alt 25. Jul 2004, 00:30
Zitat von Florian H:
edit: bei der aktuellen Version zeigt er dann zwar die Infos an aber er macht mir keinen Graphen mehr :-/
Das kann auch jetzt noch passieren. Nämlich dann, wenn zwar der Wave-Header soweit verstanden wird, aber der Typ der Daten nicht korrekt und bekannt ermittelt werden kann. Zum Beispiel die Wave-Files die zu dem Spiel Freelancer gehören kann mein Prog nicht lesen, da M$ einfach mal die Information über die Bits pro Sample null gesetzt hat. Das Spiel wird wohl wissen ob es 8 oder 16 Bit sind, aber eigentlich sind diese Files "kaputt".
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 .

gruss,
dizzy
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Florian H

Registriert seit: 30. Mär 2003
Ort: Mühlacker
1.043 Beiträge
 
Delphi 6 Professional
 
#32

Re: Sound graphisch darstellen

  Alt 25. Jul 2004, 09:26
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?!
Florian Heft
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#33

Re: Sound graphisch darstellen

  Alt 25. Jul 2004, 16:03
Zitat von Florian H:
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...
Ja, das hatte ich gestern Nacht auch noch ausprobiert, und kam zum selben Ergebnis. (Auch logisch eigentlich, da es ja im wesentlichen Sinuskurven sind, und deren Integral über 2*Pi = 0 ist. Und es ist recht wahrscheinlich ein Intervall mit sehr niedrigem Integral zu erwischen...) Mit 8-Bit Waves gehts aber, da die Werte (0 bis 255) vorkommen, und nicht (-32786 bis 32785).
Zitat von Florian H:
Den Betrag aller werte kann ich auch nicht nehmen weil da kommt dann jedesmal fast das gleiche raus als Durchschnit...
DIE Idee kam mir vorhin nach dem Aufstehen . Ist aber das selbe Problem wie vorher -> das Integral. Nur dass es jetzt verschoben ist . Aber gut, dann brauch ich das ja erst garnicht auszuprobieren
Zitat von Florian H:
was ich probiere: es ist entweder Wirrwar wie vorher oder ein nahezu immer gleichhohes dickes band...
Bleibt mir nur noch eine einzige Idee (bis jetzt): Das andere Programm verwendet zur Anzeige eine genäherte Hüllenkurve. Wie das ginge weiss ich leider nicht.
Werde mit aber gleich mal wieder mein WaveLab installieren und so lange frickeln bis die Waves ähnlich aussehen . Das Thema fuchst mich jetzt irgendwie...

Zitat von Florian H:
das gibt doch schon die Lautstärke oder so an?!
Die einzelnen Werte sind Amplituden, japp.

bis nachher,
dizzy
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Florian H

Registriert seit: 30. Mär 2003
Ort: Mühlacker
1.043 Beiträge
 
Delphi 6 Professional
 
#34

Re: Sound graphisch darstellen

  Alt 25. Jul 2004, 16:08
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 ) ...
Florian Heft
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#35

Re: Sound graphisch darstellen

  Alt 25. Jul 2004, 16:18
Zitat von Florian H:
OK danke dass du bissl mithilfst, ich hab mir schon den halben Sonntag um die Ohren geschlagen...
Hab zur Zeit Zeit. Und ich bin ein großer Freund von solchen "Spielereien", und zu dem lerne ich an solchen Kleinigkeiten immer am meisten.

Zitat von Florian H:
Kann man nicht das 16Bit-Dings aber 8Bit umrechnen (also nur das -32xxx bis +32xxx auf 0..255 umrechnen)?
Mööö! Warum denkst du das gleiche Zeugs wie ich?
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 von Florian H:
Ich versteh das halt net ganz mit Integral und so (10.-Klässler ) ...
Naja, ein Integral ist bildlich gesehen die Fläche unter einer Kurve, aber mit Vorzeichen. Eine Sinuskurve macht von 0 bis 2*Pi einen "Buckel" nach oben, und einen nach unten, wobei jeder dieser "Buckel" die gleiche Fläche bis zur 0-Linie einhüllt. Nur der Buckel nach oben mit positivem Vorzeichen, und der nach unten mit negativen. Die addiert sind 0.
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).
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Florian H

Registriert seit: 30. Mär 2003
Ort: Mühlacker
1.043 Beiträge
 
Delphi 6 Professional
 
#36

Re: Sound graphisch darstellen

  Alt 25. Jul 2004, 16:38
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 , mir gefällt sowas ja auch immer mit rumprobieren, zumindest wenn ich eine realistische Chance habe
Florian Heft
  Mit Zitat antworten Zitat
Florian H

Registriert seit: 30. Mär 2003
Ort: Mühlacker
1.043 Beiträge
 
Delphi 6 Professional
 
#37

Re: Sound graphisch darstellen

  Alt 25. Jul 2004, 21:33
schon fortschritte?

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)
Florian Heft
  Mit Zitat antworten Zitat
Benutzerbild von Logic
Logic

Registriert seit: 28. Nov 2003
132 Beiträge
 
Delphi 7 Personal
 
#38

Re: Sound graphisch darstellen

  Alt 25. Jul 2004, 22:21
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?
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#39

Re: Sound graphisch darstellen

  Alt 25. Jul 2004, 23:20
Ich habs! Ich habs!

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:
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;
Du musst dann nur noch in der Prozedur:
"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!

Jetzt kann ich wieder gut schlafen .
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#40

Re: Sound graphisch darstellen

  Alt 25. Jul 2004, 23:22
Zitat von Logic:
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?
Ich weiss nicht in wie weit da Visualisierung unterstützt wird, aber das sollte man wenn möglich mit der Hier im Forum suchenbass.dll oder Hier im Forum suchenfmod machen. Ansonsten könnte das Synchonisieren von Anzeige und Sound seeeehhhhrrrrr schwer werden.
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 6   « Erste     234 56      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:02 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