Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Sound graphisch darstellen (https://www.delphipraxis.net/26226-sound-graphisch-darstellen.html)

Meflin 20. Jul 2004 15:24


Sound graphisch darstellen
 
Hi,
ich suche eine komponente mit der man eine sounddatei graphisch darstellen kann, ka wie sich das nennt, wie z.b. die anzeige im nero waveeditor falls den einer kennt, also wo die höhen und tiefen in einer art diagramm angezeigt werden. *leiderkeineahnunghabwiedasheisst*

*MFG*

Matze 20. Jul 2004 15:26

Re: Sound graphisch darstellen
 
Das hab ich irgendwie mal mit der bass.dll hinbekommen, frag mich aber bitte nicht wie. ;)

Meflin 20. Jul 2004 15:41

Re: Sound graphisch darstellen
 
mir würds ja schon helfen wenn jemand wüsst wie sich das nennt, dann könnt ich nämlich bei torry googeln ( ;-) )

shmia 20. Jul 2004 16:08

Re: Sound graphisch darstellen
 
Zitat:

Zitat von Meflin
mir würds ja schon helfen wenn jemand wüsst wie sich das nennt, dann könnt ich nämlich bei torry googeln ( ;-) )

Also die Sache läuft so:
Zuerst wie aus den Sounddaten eine Stichprobe mit 256, 512 oder 1024 Samples entnommen.
Mit diesen Samples wird eine FFT (Fast Fourier Transformation) durchgeführt.
Als Ergebnis erhält man die Amplitude und Phase des Signals für 256, 512 oder 1024 Frequenzen.
Die Phase kann man wegschmeisen; es interessiert nur die Amplitude.
(Eigentlich erhält man der Real- & Imaginärteil der Frequenzen, aber man kann diese Werte in
Amplitude und Phase umrechnen.)
Diese Amplitudenwerte kann man nun als Balkendiagramm visualisieren, wie dies Spektrumanalyser tun.
Ein Problem an der Sache ist, dass man oben eine Stichprobe von Samples anstatt einem periodischen
Signal verwendet hat. (Stichwort: Faltung mit Rechtecksignal)
Dies führt zu einer Verzerrung der Amplituden im Frequenzbereich. Um dies auszugleichen gibt
es diverse Vorfilter (z.B. Hamming-Filter)
Wenn man mal soweit ist, kann man auch über eine "schönere" Visualisierung nachdenken:
Die X-Achse entspricht der Zeit, der Y-Achse entspricht der Frequenz und die Amplitude
im Frequenzbereich wird durch versch. Farben dargestellt.

Stichwörter:
FFT & Delphi
Hammingfilter
digitale Signalverarbeitung

Meflin 20. Jul 2004 16:30

Re: Sound graphisch darstellen
 
thx

sCrAPt 20. Jul 2004 16:34

Re: Sound graphisch darstellen
 
das nennt man doch eine logarithmische darstellung, oder?

http://og4all.de/meindphase, sCrAPt

dizzy 20. Jul 2004 17:10

Re: Sound graphisch darstellen
 
Ich glaube er will einfach nur die Waveform darstellen, oder? Noch keine Frequenzanalyse via FFT und Histogramme und den ganzen Kram. Einfach nur X-Achse = Zeit, Y-Achse = Amplitude -> fertig ;)

\\edit: Und die Skala für die Amplitude kann man wenn man will auch logarithmisch anlegen. Üblicher ist hier glaube ich linear. Log. sind idR. VU-Meter in Balkenform (zumindest ist's bei Steinberg WaveLab so).

Meflin 20. Jul 2004 19:57

Re: Sound graphisch darstellen
 
gut möglich letzendlich weis ich ja net so genau wie sich des nennt. und wie ginge das dann?

Meflin 21. Jul 2004 17:13

Re: Sound graphisch darstellen
 
nochmal push: kennt jemand ne kompo für dizzys beschreibung? das hört sich gut an. für fft hab ich nur eine für bcb gefunden :-(

dizzy 21. Jul 2004 17:52

Re: Sound graphisch darstellen
 
Eine Kompo kenne ich leider auch nicht. Aber gibt es evtl. eine Möglichkeit sich die reinen Audiodaten in einen Stream ausgeben zu lassen? Mit bass.dll oder fmod oder wie auch immer?
Dann könntest du diesen Stream byteweise (oder wortweise bei 16 Bit-Waves) durchgehen, und einfach zeichnen. Interessanter wird's bei stereo - da müsste man herausfinden, ob die ungeraden oder die geraden Bytes/Worte den linken Kanal darstellen. Komfortabler wäre es natürlich gleich 2 getrennte Streams zu haben ;)

Ich kann mangels Erfahrung aber absolut nicht sagen mit welcher Methode du an den reinen Audiostream kommst. Bei unkomprimierten .wav's ists noch recht einfach: Den Header weglassen und der Rest sind die Audiodaten (genaueres dürfte sich auf www.wotsit.org finden). Bei komprimierten Files müsste man einen Decoder dazu veranlassen die Ausgabe nicht an die Soundkarte zu machen, sondern in ein Stream/File.

gruss,
dizzy

Jörn 22. Jul 2004 05:08

Re: Sound graphisch darstellen
 
Zitat:

Zitat von dizzy
Ich glaube er will einfach nur die Waveform darstellen, oder? Noch keine Frequenzanalyse via FFT und Histogramme und den ganzen Kram. Einfach nur X-Achse = Zeit, Y-Achse = Amplitude -> fertig ;)

\\edit: Und die Skala für die Amplitude kann man wenn man will auch logarithmisch anlegen. Üblicher ist hier glaube ich linear. Log. sind idR. VU-Meter in Balkenform (zumindest ist's bei Steinberg WaveLab so).

Die Amplitude (oder halt die Lautstärke) ist im Normalfall in einer logarithmischen Einheit, Dezibel, angegeben. Also würde ich eher eine logarithmische Darstellung bevorzugen. Oder nich?

runger 22. Jul 2004 06:42

Re: Sound graphisch darstellen
 
Hallo,

ob du's logarithmisch darstellst oder linear ist zuerst mal vollkommen egal.
Es kokmmt im wesentlichen auf den Verwendungszweck an!
Willst du nur die Amplitude beobachten und hast sehr grosse Signaländerungen kann ein logarithmischer Masstab auf der Y-Achse sinnvoll sein.
Willst du die Amplitude in dB über der Zeit darstellen nimmst du einen logarithmischen Masstab.

Triffst du mit einem Akkustiker zusammen wirst Du ohne log. nur belächelt.

Aber zunächst mal ist in der wav Datei alles linear kodiert.

rainer

dizzy 22. Jul 2004 13:22

Re: Sound graphisch darstellen
 
Grund: Die Musik die man hört ist immer "linear" (wenn man das jetzt mal so sagen darf), aber das menschliche Gehör arbeitet logarithmisch. Willst du also die echten Daten anzeigen, dann nimm lineare Skalen, willst du aber anzeigen, wie man den Ton empfindet :!:, dann wird eine log. Skala interessant.

Das Problem der log. Skala ist allerdings, dass die Amplituden dann recht stark angehoben würden, und man laute und leise Passagen optisch nicht mehr so sehr gut unterscheiden könnte.

Deshalb nochmal: Bei Anzeige der Waveform linear, da für Bearbeitung und Schnitt geeigneter, und bei einem VU-Meter log. da den realen Höreindruck wiederspiegelnd (von -unendlich bis 0 dB, relativ zum maximalen Output sind hier gängig).

MaBuSE 22. Jul 2004 16:44

Re: Sound graphisch darstellen
 
Zitat:

Zitat von Meflin
Hi,
ich suche eine komponente mit der man eine sounddatei graphisch darstellen kann, ka wie sich das nennt, wie z.b. die anzeige im nero waveeditor falls den einer kennt, also wo die höhen und tiefen in einer art diagramm angezeigt werden. *leiderkeineahnunghabwiedasheisst*
*MFG*

Es gibt von www.swiftsoft.de die Komponenten

TMMWaveEditor und TMMWavePanel

Bilder: http://www.swiftsoft.de/mmhdrecdemos.html

Komponenten: http://www.swiftsoft.de/mmhdrec.html

Leider ist das relativ teuer !!!

Du bräuchtest folgende Komponenten Pakete:

HD-Recording Pack 2999,00 EUR
Requires: Basic Pack, Wave Pack, Visual Pack, Mixer Pack

Basic Pack 99,00 EUR
Wave Pack 99,00 EUR
Visual Pack 399,00 EUR
Mixer Pack 99,00 EUR

-> zusammen: ca. 3700,00 EUR !!!

Die Komponenten sind sehr gut, sehr flexibel und sehr schnell.
Ich habe selbst schon damit gearbeitet.

Aber ob die Komponenten Ihr Geld wert sind?
Das muß jeder für sich selbst beantworten.

30 Tage Demo kann man dort runterladen.

Das Produkt BPM Studio (http://www.bpmstudio.com/) ist damit programmiert.

dizzy 23. Jul 2004 03:17

Re: Sound graphisch darstellen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Und damit du dich nicht verschulden musst, und die o.g. Sammlung sicherlich ganz gewaltiger Overkill nur für zum Zeichnen ist, hab ich mal fix was gebastelt :)

Liest und zeichnet unkomprimierte Standard-PCM-Waves. Also nur die gaaanz einfachen. Komprimierte Files müsstest du also zunächst nach PCM-Wave wandeln.
Weitere Infos in den Soßen (Unit2.pas). Unit2.pas enthält die eigentliche Klasse, und in Unit1 ein kleines Beispiel zum Zeichnen. Die Klasse aus Unit2 stellt lediglich 1 oder 2 Arrays mit den Wave-Daten zur Verfügung - das Zeichnen also nicht.

Ich hoffe du kommst damit weiter. Hat viel Spaß gemacht!

gruss,
dizzy

Meflin 23. Jul 2004 14:54

Re: Sound graphisch darstellen
 
thx, werd ich gleich mal austesten. ohne dich hätt ich glatt meinen ferrari verkauft um das teil zahlen zu können... ;-)

franksch88 23. Jul 2004 15:03

Re: Sound graphisch darstellen
 
geh mal auf www.un4seen.com und lade dir mal die BASS components für delphi runter. Da gibts GENUG Beispliele, support für winamp plugins und natürlich auch Visualizations. Ich benutze es privat, ist echt cool.

richard_boderich 23. Jul 2004 15:18

Re: Sound graphisch darstellen
 
Liste der Anhänge anzeigen (Anzahl: 1)
hi, habe mal ein kleines prog geschrieben,
das ein wavefile einliest, und grafisch dartellt

ist im anhang

das ganze hat noch alphastatus aber funktioniert

prog starten, der linke button laedt die datei, der rechte
startet die grafik ausgabe, mit zoom in/out kannste die zeitachse der
darstellung aendern, mit amp in/out die amplitude

ganz wichtig ist, das programm erwartet eine wavedatei in

"c:\windows\media" die datei sollte "ding.wav" heißen, sonst gibst ne fehlermeldung

achso die datei muss unter 64 kb groß sein!!!!

supermuckl 23. Jul 2004 15:29

Re: Sound graphisch darstellen
 
schön :) aber an den enden hat die grafik grafik fehler ?! da geht es steil nach unten bzw oben je nach zoom

richard_boderich 23. Jul 2004 15:34

Re: Sound graphisch darstellen
 
@supermuckel, das ist weil ich schnell und schlampig programmiert hab, diese steilen flanken, gehoeren
nicht zur eigentlichen waveinformation, sondern zum iff bzw. waveheader, laesst sich aber leicht
korrigieren ! :) :zwinker:

supermuckl 23. Jul 2004 15:35

Re: Sound graphisch darstellen
 
hab ich mir halb gedacht :) so fehlerchen hab ich auch oft bei diversen liniengrafiken

richard_boderich 23. Jul 2004 15:44

Re: Sound graphisch darstellen
 
@supermuckel, das ist weil ich schnell und schlampig programmiert hab, diese steilen flanken, gehoeren
nicht zur eigentlichen waveinformation, sondern zum iff bzw. waveheader, laesst sich aber leicht
korrigieren ! :) :zwinker:

supermuckl 23. Jul 2004 16:03

Re: Sound graphisch darstellen
 
darf ich fragen wieso du dich wiederholst?

ich les schon jeden post aufmerksam durch :)

dizzy 23. Jul 2004 16:25

Re: Sound graphisch darstellen
 
@richard: Das ist aber mal extem quick'n'dirty...
Codeformatierung := nil;
Flexibilität := 0;
Du zeigst ja sogar sämtliche Header mit an... und was ist wenn das File auf einmal nicht 16 Bit stereo ist :?:. Oder gar > 64k? :zwinker:

Mein Proggie hat allerdings bei einigen Waves auch noch Probleme. Werd da nachher nochmal dran gehen, aber zumindest zeichnet es den RIFF-Header nicht ;)

Macht Spaß binäre Files auseinander zu nehmen! (Aber nur mit guter Doku!!!)

Kernel32.DLL 23. Jul 2004 16:33

Re: Sound graphisch darstellen
 
Zitat:

Zitat von supermuckl
darf ich fragen wieso du dich wiederholst?

ich les schon jeden post aufmerksam durch :)

wahrscheinlich handelt es sich um einen Fehler in der Matrix... :zwinker:

richard_boderich 23. Jul 2004 16:34

Re: Sound graphisch darstellen
 
@supermukl

sorry, wollte mich nicht wiederholen, hab mal wieder den falschen button im IE gedrueckt

:)

dizzy 24. Jul 2004 15:37

Re: Sound graphisch darstellen
 
Liste der Anhänge anzeigen (Anzahl: 1)
So, falls es noch von Interesse ist --- hab meinen Reader ausgebaut. Waren noch ein paar Bugs drin, und das Laden passiert jetzt in einem extra Thread. (Wegen Statusanzeige)

gruss,
dizzy

Florian H 24. Jul 2004 22:04

Re: Sound graphisch darstellen
 
Zitat:

Zitat von dizzy
Und damit du dich nicht verschulden musst, und die o.g. Sammlung sicherlich ganz gewaltiger Overkill nur für zum Zeichnen ist, hab ich mal fix was gebastelt :)
Liest und zeichnet unkomprimierte Standard-PCM-Waves. Also nur die gaaanz einfachen. Komprimierte Files müsstest du also zunächst nach PCM-Wave wandeln.
Weitere Infos in den Soßen (Unit2.pas). Unit2.pas enthält die eigentliche Klasse, und in Unit1 ein kleines Beispiel zum Zeichnen. Die Klasse aus Unit2 stellt lediglich 1 oder 2 Arrays mit den Wave-Daten zur Verfügung - das Zeichnen also nicht.
Ich hoffe du kommst damit weiter. Hat viel Spaß gemacht!
gruss,
dizzy

hi,

irgendwie geht das bei mir nicht mit allen Wav's... wenn ich mir welche erstelle (unkomprimiert!) hängt das prog sich einfach auf (nix tut sich mehr) bei wp := TWaveProvider.Create(OpenDialog1.FileName); ...
woran könnte das liegen?


edit: bei der aktuellen Version zeigt er dann zwar die Infos an aber er macht mir keinen Graphen mehr :-/

edit2: jetzt gehts

Florian H 24. Jul 2004 22:34

Re: Sound graphisch darstellen
 
Liste der Anhänge anzeigen (Anzahl: 1)
hm neues Problem...
irgendwie ist der Graph so ganz und gar nicht wie ich mir das vorstelle...
In einem Audioeditor (WavePad) sehe ich da schon anschaulich die Kurven aber bei "meinem", also dem auf deinem Script basierenden, Prog ist das alles ein Mischmasch aus verschieden hohen strichen...

anbei mal zum vergleich 2 Bilder: das bunte ist dein Script, das schwarz-weisse ist WavePad (nich verwechseln...)
Beides mal der selbe ausschnittt (ca. 3,5 Sek.)

grüße
flo

dizzy 24. Jul 2004 23:24

Re: Sound graphisch darstellen
 
Es kann sehr gut sein, dass Wavepad für einen X-Wert den Durchschnitt aller Samples die auf diesem X-Wert (Pixel) liegen anzeigt. Bei mir wird einfach nur das Sample genommen, dass an dieser Stelle im Wave ist.
Lässt sich aber leicht anpassen, du müsstest nur in der Zeichenroutine je Schritt den Durchschnitt von z.B. Ch16BitMono[i] bis Ch16BitMono[i+scale-1] bilden, und das dann zeichnen. Bisher ists halt nur Ch16BitMono[i], und dann inc(i, scale); zum nächsten X-Wert.

Dann sollte es ähnlich aussehen. Wenn nicht, dann isch da was faul. (Dürfte aber nicht)

gruss,
dizzy

dizzy 24. Jul 2004 23:30

Re: Sound graphisch darstellen
 
Zitat:

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 :mrgreen:.

gruss,
dizzy

Florian H 25. Jul 2004 08:26

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?!

dizzy 25. Jul 2004 15:03

Re: Sound graphisch darstellen
 
Zitat:

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:

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 :roll:. Aber gut, dann brauch ich das ja erst garnicht auszuprobieren :mrgreen:
Zitat:

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 :lol:. Das Thema fuchst mich jetzt irgendwie...

Zitat:

Zitat von Florian H
das gibt doch schon die Lautstärke oder so an?!

Die einzelnen Werte sind Amplituden, japp.

bis nachher,
dizzy

Florian H 25. Jul 2004 15:08

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 :) ) ...

dizzy 25. Jul 2004 15:18

Re: Sound graphisch darstellen
 
Zitat:

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. :thuimb:

Zitat:

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? :lol:
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:

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).

Florian H 25. Jul 2004 15:38

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 ;)

Florian H 25. Jul 2004 20:33

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)

Logic 25. Jul 2004 21:21

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?

dizzy 25. Jul 2004 22:20

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:
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! :cheers:

Jetzt kann ich wieder gut schlafen :spin2:.

dizzy 25. Jul 2004 22:22

Re: Sound graphisch darstellen
 
Zitat:

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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:35 Uhr.
Seite 1 von 2  1 2      

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