You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何DAW将我生成的正弦波WAV文件识别为方波?

问题原因与解决方案

你的核心问题出在WAV文件头的音频格式标识错误,导致DAW用错误的规则解析采样数据:

关键错误点

WAV头里的audioFormat字段(对应代码里的1)用于声明音频编码格式:

  • 值1代表线性PCM整数格式,但你实际写入的是32位IEEE浮点数据
  • DAW会严格按照头中声明的格式解读数据,把浮点数据当成整数解析时,就会出现异常波形(比如方波)

修复步骤

  1. 修正WAV头的音频格式标识
    将头中的1改为3(3是IEEE浮点PCM的标准标识):

    wav_header header =
    {
        {'R','I','F','F'},
        36 + sampleCount * sizeof(float),
        {'W','A','V','E'},
        {'f','m','t',' '},
        16,
        3,  // 从1改为3,声明为IEEE浮点格式
        NUM_CHANNELS,
        SAMPLE_RATE,
        SAMPLE_RATE * NUM_CHANNELS * BIT_DEPTH / 8,
        NUM_CHANNELS * BIT_DEPTH / 8,
        BIT_DEPTH,
        {'d','a','t','a'},
        sampleCount * sizeof(float)
    };
    
  2. 补全振幅应用(可选但规范)
    你定义了AMPLITUDE常量但未在采样生成中使用,建议补上:

    float x_sample = AMPLITUDE * sinf(2 * M_PI * FREQUENCY * t);
    

逻辑验证

  • Excel能正确识别正弦波是因为直接读取了原始浮点数值,不依赖WAV头的格式声明
  • 修正后DAW会按照浮点格式解析数据,即可正常显示正弦波

内容的提问来源于stack exchange,提问作者alittl3ton13

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 16:20:21