0

我正在实现这个音调发生器程序,效果很好:

https://social.msdn.microsoft.com/Forums/vstudio/en-US/c2b953b6-3c85-4eda-a478-080bae781319/beep-beep?forum=vbgeneral

我想不通的是为什么下面两行代码:

BW.Write(Sample)
BW.Write(Sample)

一个“写”是有道理的,但为什么第二个“写”呢?

4

1 回答 1

1

该示例有点神秘,但波形文件配置为 2 个通道,因此两次写入只是将相同的音频数据发送到两个通道。

波头是这个硬编码位:

Dim Hdr() As Integer = {&H46464952, 36 + Bytes, &H45564157, _
                        &H20746D66, 16, &H20001, 44100, _
                        176400, &H100004, &H61746164, Bytes}

哪个解码意味着:

    H46464952 = 'RIFF'(小端序)
    36+Bytes = 头部长度 + 数据长度
    H45564157 = 'WAVE'(小端序)
    H20746D66 = 'fmt'(小端序)
    16 = fmt 块的长度(总是 16)
    H20001 = 0x0001:PCM,
                0x0002:2 个通道
    44100 = 采样率
    176400 = sampleRate*numChannels*bytesPerSample = 44100*2*2
    H100004 = 0x0004:numChannels*bytesPerSample,
                0x0010:bitsPerSample (16)
    H61746164 = '数据'
    字节 = 数据块的大小
于 2016-01-10T18:21:59.420 回答