尝试在代码中生成一个正方形,锯齿状和正弦波形,然后根据Chris Adam的《 Learning Core Audio》一书保存到AIFF文件。我可以使用它,但是我对为什么我不需要.bigEndian
在Swift中将样本转换为您却在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))
这是我离开的情况下Swift操场图的样子 .bigEndian
如果.bigEndian
在转换Int16()
并发送到AudioFileWriteBytes之后添加,则生成的音频听起来不正确:
var sample = Int16(((Double(i) / wavelengthInSamples)
* Double(Int16.max) * 2) - Double(Int16.max)).bigEndian
AudioFileWriteBytes(audioFile, 0, Int64(sampleCount * 2), &bytesToWrite, &sample)
完整资源在这里:https : //gist.github.com/justinlevi/7a846070ee6e7e245cc3
这是生成的音频文件的链接。由于某些原因,方波的音量也确实很低。
跟进问题:为什么方波相对于锯波或正弦波要安静得多?
消息来源:克里斯·亚当森;凯文·阿维拉(2012-04-03)。学习核心音频:Mac和iOS音频编程动手指南(Kindle位置1063-1073)。培生教育。Kindle版。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句