8
Ноябрь
2009
Как создать WAV файл
Как создать WAV файл
Option Explicit
Enum LEN_FORMAT
frmSeconds = 0
frmSamples = 1
End Enum
Type RIFF_HEAD
riffFmt As String * 4
lenOfFileData As Longhttp://www.vbfaq.ru/wp-admin/post-new.php
End Type
Type WAVE_HEAD
waveFmt As String * 8
lenOfThunk As Long
format As Integer
channels As Integer
samplesPerSecond As Long
avgBytesPerSecond As Long
blockAlign As Integer
bitsPerSample As Integer
End Type
Type DATA_HEAD
dataStr As String * 4
lenOfThunk As Long
End Type
Public Function CreateWaveFile(ByVal fileName As String, ByRef waveHead As WAVE_HEAD, ByVal waveData As Variant) As Boolean
On Error GoTo ERRH
Dim riffHead As RIFF_HEAD
Dim dataHead As DATA_HEAD
Dim freeNum As Long
Dim arrBound As Long
Dim arrToPut() As Byte
freeNum = FreeFile
arrBound = UBound(waveData)
Open fileName For Binary As #freeNum
riffHead.riffFmt = "RIFF"
riffHead.lenOfFileData = arrBound + 37
Put #freeNum, , riffHead
waveHead.lenOfThunk = 16
waveHead.waveFmt = "WAVEfmt "
Put #freeNum, , waveHead
dataHead.lenOfThunk = arrBound + 1
dataHead.dataStr = "data"
Put #freeNum, , dataHead
ReDim arrToPut(arrBound)
arrToPut = waveData
Put #freeNum, , arrToPut
Close #freeNum
CreateWaveFile = True
Exit Function
ERRH:
CreateWaveFile = False
End Function