8 Ноябрь 2009

Как создать WAV файл

Мультимедиа |  Таги: , ,

Как создать WAV файл

Option Explicit

Enum LEN_FORMAT
    frmSeconds = 0
    frmSamples = 1
End Enum
Type RIFF_HEAD
    riffFmt As String * 4
    lenOfFileData As Long/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


Оставить комментарий

Я не робот.