Seite 3 von 3
Verfasst: 07.03.2006 22:14
von Graffiti
@Green Snake................das sehe ich auch so,
ich suche nur mal einen Ansatzpunkt wie so etwas aussehen könnte, die Zeitschienen und Marker die ich noch brauche um Zeiten auszulesen bringe ich dann doch zusammen.
mein bestehendes Steuerungs-Programm habe ich immerhin auch schon nahezu alleine programmiert.
Mein Problem liegt darin, das ich von diesem Teil absolut keine Ahnung habe und einfach nur im Forum auf Hilfe hoffe und auch daraus dazulernen kann
@AndyX
das ich das WAV gut kenne habe ich nicht behauptet, sondern keine Ahnung davon habe und nicht weiterkomme
dazu bin ich noch relativ Anfänger
@MVXA
also von der Aussage von super_castle distanziere ich mich energisch
mit meiner spöttischen Bemerkung an dich meinte ich eigentlich hauptsächlich, wenn ich bei PB Fragen nicht hier nachfragen kann, in welchem Forum dann.
Ich habe es auch nicht beleidigend gemeint, wenn du es aber doch so aufgefasst hast, mach ich nen Knicks und entschuldige mich natürlich auch dafür
Verfasst: 07.03.2006 22:18
von MVXA
Soweit zum Auslesen der Wave:
Code: Alles auswählen
Structure sWAVHead
lSignatur.l ; Sollte immer $46464952 sein ("RIFF")
lFileSize.l ; Größe der Datei
lRIFFType.l ; Sollte $45564157 sein
EndStructure
Structure sWAVChunk_FMT
wFormat.w ; Chunk Format
wChannels.w ; Anzahl der Kanäle (1 = mono, 2 = stereo)
lSamples.l ; Abtastrate pro Sekunde (z.B. 44100)
lBytesPerSec.l ; Sample-Rate * Block-Align
wBlockAlign.w ; Kanäle * bits/sample / 8
wBitsPerSample.w ; bits/sample (8 oder 16)
EndStructure
Structure sWAVChunk_DATA
pSampleData.l
EndStructure
Structure sWAVChunk
lChunkID.l ; Normalerweise 'fmt ' ($20746D66) oder 'data' ($61746164)
lSize.l ; Größe des Chunks
StructureUnion
tChunkFMT.sWAVChunk_FMT
tChunkDATA.sWAVChunk_DATA
EndStructureUnion
EndStructure
NewList WaveContent.sWAVChunk()
Procedure OpenWave(sDateiName.s)
DefType.sWAVHead tWAVHEAD
DefType.l lFileID
lFileID = ReadFile(#PB_Any, sDateiName)
If lFileID
ReadData(@tWAVHEAD, SizeOf(sWAVHead))
If tWAVHEAD\lSignatur = $46464952
If tWAVHEAD\lFileSize = (FileSize(sDateiName)-8)
ClearList(WaveContent())
While (Eof(lFileID) = #False)
AddElement(WaveContent())
ReadData(@WaveContent(), 8)
Select WaveContent()\lChunkID
Case ' tmf': Debug "TMF"
ReadData(@WaveContent()+8, WaveContent()\lSize)
Case 'atad': Debug "Data"
WaveContent()\tChunkDATA\pSampleData = AllocateMemory(WaveContent()\lSize)
ReadData(WaveContent()\tChunkDATA\pSampleData, WaveContent()\lSize)
Default: Debug "Unknown"
DeleteElement(WaveContent())
EndSelect
Wend
Else
Debug "Filesize mismatch"
EndIf
Else
Debug "Invalid Wave..."
EndIf
CloseFile(lFileID)
EndIf
EndProcedure
OpenWave("D:\m_pass.wav")
ForEach WaveContent()
If WaveContent()\lChunkID = 'atad'
CreateFile(1, "C:\Out.raw")
WriteData(WaveContent()\tChunkDATA\pSampleData, WaveContent()\lSize)
; WaveContent()\tChunkDATA\pSampleData ist Pointer zu Data mit Sample
; WaveContent()\lSize Größe der Daten
EndIf
Next
Verfasst: 07.03.2006 22:19
von AndyX
wenn ich bei PB Fragen nicht hier nachfragen kann, in welchem Forum dann.
www.purebasic-lounge.de

(bitte keinen Board vs. Lounge Flame hier jetzt)
Verfasst: 07.03.2006 22:25
von Graffiti
danke AndyX, das kenne ich noch gar nicht
Verfasst: 07.03.2006 22:32
von Graffiti
@MXVA
Danke für deine Hilfe jetzt habe ich mal einen Anhaltspunkt auf dem ich aufbauen kann

werde mal heute Nacht das ganze unter mein Kissen legen und auf meine Erleuchtung hoffen
gruß und nichts für ungut
Verfasst: 07.03.2006 22:34
von Froggerprogger
Zum WAV-Format gibt's hier Infos:
http://www.sonicspot.com/guide/wavefiles.html
Einfach mal durchlesen. An englischsprachige Beschreibungen kann man sich gar nicht früh genug gewöhnen. Außerdem wird dort verständlich alles zum WAV-Format erklärt, selbst so selten genutzte Features wie Marker, etc.
Und das unkomprimierte WAV-format ist tatsächlich supereinfach:
Z.b. bei 16 Bit stereo parse einfach bis zum data-chunk, der durch die Bytes 'data' eingeleitet wird. Danach folgen immer abwechselnd links/rechts jeweils ein 16-Bit-Samplewert. 0 ist 0, 32768 max, -32768 min.
Weitere Infos hinter obigem Link oder auf wotsit.org.
MVXA hat dafür ja auch schon einen schönen Source gepostet.
Verfasst: 07.03.2006 22:35
von MVXA
Hab mich größten teils an das gehalten was auch in Wikipedia steht:
http://de.wikipedia.org/wiki/WAV_%28Format%29
Da steht auch noch mehr nützliches... Einfach mal rein schauen

.
Vielleicht bringt dir der Link jetzt mehr im Zusammenhang mit dem Code.
Verfasst: 18.03.2006 13:13
von Macros
Verfasst: 19.03.2006 11:25
von Agent
Bei so schlechten/bösen Posts muss ich mein Senf auch dazugeben:
1) Dies ist ein Forum, kein Lösungsbuch!
2) Warum darf jemand, der so beleidigend ist, hier überhaupt noch posten? /ban
...meine Meinung. Danke.
Verfasst: 19.03.2006 11:41
von Kaeru Gaman
noch etwas grundsätzliches:
wenn du, Graffitti, probleme mit dem gedanklichen hintergrund hast,
dann probier mal, eine sinus-funktion grafisch darzustellen...