生成方波、锯齿波和正弦波样本并写入 AIFF 文件 - 大端问题
Generating a Square, Saw, and Sine Sample and Writing to an AIFF file - big-endian Issues
尝试在代码中生成正方形、锯齿波和 sin wav,然后根据 Chris Adam 的 Learning Core Audio 书籍保存到 AIFF 文件。我有它的工作,但我很困惑为什么我不需要在 Swift 中将示例转换为 .bigEndian
但你需要在 Obj-C 中?
Obj-C 中的工作代码如下所示:
SInt16 sample = CFSwapInt16HostToBig ((( i / wavelengthInSamples) *
SHRT_MAX *2) - SHRT_MAX);
Swift2 中的工作代码如下所示:
var sample = Int16(((Double(i) / wavelengthInSamples)
* Double(Int16.max) * 2) - Double(Int16.max))
如果我离开 .bigEndian
,Swift playground 图会是这样的
如果我在转换为 Int16()
后添加 .bigEndian
并发送到 AudioFileWriteBytes,生成的音频听起来不正确:
var sample = Int16(((Double(i) / wavelengthInSamples)
* Double(Int16.max) * 2) - Double(Int16.max)).bigEndian
AudioFileWriteBytes(audioFile, 0, Int64(sampleCount * 2), &bytesToWrite, &sample)
Full source here: https://gist.github.com/justinlevi/7a846070ee6e7e245cc3
这里是生成的音频文件的链接。出于某种原因,方波上的音量也确实很低。
跟进问题:为什么方波比锯齿波或正弦波安静得多?
消息来源:克里斯·亚当森;阿维拉,凯文 (2012-04-03)。学习核心音频:Mac 和 iOS 音频编程实践指南(Kindle 位置 1063-1073)。培生教育。 Kindle 版。
对于您的后续问题,方波的平均 RMS 功率高于正弦波。方波大部分时间都处于最大峰值振幅。有关详细信息,请参阅 wikipedia and stack exchange。
您上传的正弦波、锯齿波和方波文件不是您期望的波形。它们似乎在重复函数,但波形并不纯粹。我大胆地打开了波形。顶部是正弦波。中间是锯子,底部是方形的。您可以看到幅度远低于方波(几乎听不见)。如果波形正确,方波的声音会大得多。
呃...@jaybers 完全让我意识到 AIFF 文件被写成 littleEndian,这就是图表看起来像那样的原因。当我将 .bigEndian
添加到示例中时,我在操场上看到了这些图表。我已经更新了上面的 github 项目,现在一切都按预期呈现。方波也和其他样品一样响亮...
这是经过 .bigEndian 转换的新音频文件。
尝试在代码中生成正方形、锯齿波和 sin wav,然后根据 Chris Adam 的 Learning Core Audio 书籍保存到 AIFF 文件。我有它的工作,但我很困惑为什么我不需要在 Swift 中将示例转换为 .bigEndian
但你需要在 Obj-C 中?
Obj-C 中的工作代码如下所示:
SInt16 sample = CFSwapInt16HostToBig ((( i / wavelengthInSamples) *
SHRT_MAX *2) - SHRT_MAX);
Swift2 中的工作代码如下所示:
var sample = Int16(((Double(i) / wavelengthInSamples)
* Double(Int16.max) * 2) - Double(Int16.max))
如果我离开 .bigEndian
,Swift playground 图会是这样的
如果我在转换为 Int16()
后添加 .bigEndian
并发送到 AudioFileWriteBytes,生成的音频听起来不正确:
var sample = Int16(((Double(i) / wavelengthInSamples)
* Double(Int16.max) * 2) - Double(Int16.max)).bigEndian
AudioFileWriteBytes(audioFile, 0, Int64(sampleCount * 2), &bytesToWrite, &sample)
Full source here: https://gist.github.com/justinlevi/7a846070ee6e7e245cc3
这里是生成的音频文件的链接。出于某种原因,方波上的音量也确实很低。
跟进问题:为什么方波比锯齿波或正弦波安静得多?
消息来源:克里斯·亚当森;阿维拉,凯文 (2012-04-03)。学习核心音频:Mac 和 iOS 音频编程实践指南(Kindle 位置 1063-1073)。培生教育。 Kindle 版。
对于您的后续问题,方波的平均 RMS 功率高于正弦波。方波大部分时间都处于最大峰值振幅。有关详细信息,请参阅 wikipedia and stack exchange。
您上传的正弦波、锯齿波和方波文件不是您期望的波形。它们似乎在重复函数,但波形并不纯粹。我大胆地打开了波形。顶部是正弦波。中间是锯子,底部是方形的。您可以看到幅度远低于方波(几乎听不见)。如果波形正确,方波的声音会大得多。
呃...@jaybers 完全让我意识到 AIFF 文件被写成 littleEndian,这就是图表看起来像那样的原因。当我将 .bigEndian
添加到示例中时,我在操场上看到了这些图表。我已经更新了上面的 github 项目,现在一切都按预期呈现。方波也和其他样品一样响亮...
这是经过 .bigEndian 转换的新音频文件。