Hoi,
Ik en nog iemand zijn hier bezig om Wav files in een TChart te krijgen met Delphi 7.
De header uitlezen is al prima gegaan met behulp van een Filestream en read().
Dan komen we aan bij het data block met de sounddata.
volgens http://ccrma-www.stanford.../422/projects/WaveFormat/
begint het datablock bij byteoffset 44.
Ook vertelt dit document dat sample's uit 4 bytes bestaan, de eerste 2 bytes zijn sounddata voor het linkerkanaal en de laatste 2 bytes van de sample zijn voor het rechterkanaal.
Wat wij als volgt doen is weer een filestream openen en deze starten op positie 44 dan laten we hem in een while loop lopen tot hij bij het einde van de file komt.
Zolang hij bezig is leest hij een byte uit stopt het in een integer en leest nog een byte uit en stopt het weer in een integer, deze 2 getallen worden bij elkaar opgetelt en vervolgens toegevoegd aan de tchartserie.
Vervolgens loopt hij dit stappenplan nog een keer door voor het rechterkanaal en begint dan weer overnieuw.
De code:
Tot zover ondervinden wij geen problemen en bij het runnen van het programma krijgen we ook keurig een grafiek.
Als wijze van test gebruiken wij de ringout.wav in de windows media directory.
Deze file ingelezen in het eigen programma met blauw voor het linkerkanaal en rood voor het rechterkanaal, eronder groen voor het inlezen met adobe audition (vroeger cooledit pro) zoals men kan zien komen deze 2 niet echt overeen.

heeft iemand enig idee wat hier aan te doen is om deze 2 grafieken min of meer gelijk te trekken? hierover is bij ome google en de search zeer weinig te vinden.
Bijvoorbaat dank.
Ik en nog iemand zijn hier bezig om Wav files in een TChart te krijgen met Delphi 7.
De header uitlezen is al prima gegaan met behulp van een Filestream en read().
Dan komen we aan bij het data block met de sounddata.
volgens http://ccrma-www.stanford.../422/projects/WaveFormat/
begint het datablock bij byteoffset 44.
Ook vertelt dit document dat sample's uit 4 bytes bestaan, de eerste 2 bytes zijn sounddata voor het linkerkanaal en de laatste 2 bytes van de sample zijn voor het rechterkanaal.
Wat wij als volgt doen is weer een filestream openen en deze starten op positie 44 dan laten we hem in een while loop lopen tot hij bij het einde van de file komt.
Zolang hij bezig is leest hij een byte uit stopt het in een integer en leest nog een byte uit en stopt het weer in een integer, deze 2 getallen worden bij elkaar opgetelt en vervolgens toegevoegd aan de tchartserie.
Vervolgens loopt hij dit stappenplan nog een keer door voor het rechterkanaal en begint dan weer overnieuw.
De code:
Delphi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| FileStream := TFileStream.Create(WavOpenDialog.FileName, fmOpenRead); try FileStream.Position := 44; while FileStream.Position < FullFileSize do begin FileStream.Read(leftTemp1,1); FileStream.Read(leftTemp2,1); left := leftTemp1 + leftTemp2; Series1.Add(left,'',clBlue); FileStream.Read(rightTemp1,1); FileStream.Read(rightTemp2,1); right := rightTemp1 + rightTemp2; right := (right - 2 * right); Series1.Add(right,'',clRed); end; finally FileStream.Free; end; |
Tot zover ondervinden wij geen problemen en bij het runnen van het programma krijgen we ook keurig een grafiek.
Als wijze van test gebruiken wij de ringout.wav in de windows media directory.
Deze file ingelezen in het eigen programma met blauw voor het linkerkanaal en rood voor het rechterkanaal, eronder groen voor het inlezen met adobe audition (vroeger cooledit pro) zoals men kan zien komen deze 2 niet echt overeen.

heeft iemand enig idee wat hier aan te doen is om deze 2 grafieken min of meer gelijk te trekken? hierover is bij ome google en de search zeer weinig te vinden.
Bijvoorbaat dank.
<Jeroen> Wirf: vrouwen versieren kan je gewoon in het OSI model proppen hoor :P
I am dyslexic of Borg prepare to have your ass laminated
Real Programmers always confuse Christmas and Halloween because oct31 = dec25