首页 > 解决方案 > 使用(AVFoundation?)使用正弦波进行音频合成

问题描述

假设我有一个正弦波的 Y 值数组。(假设 X 是时间)

在 Python 中,您可以将其写入 Wav 文件:

wav.write("file.wav", <sample rate>, <waveform>)

是否可以使用 AVFoundation 在 Swift 中执行此操作?如果有怎么办?如果没有,我应该使用什么库?(我现在试图避免使用 AudioKit。)

谢谢,查尔斯

标签: iosswiftavfoundation

解决方案


在 AVFoundation 中有AVAudioFile,但您必须以AVAudioPCMBuffers 的形式提供数据,这会将数据保存在 aAudioBufferList中,而后者又由AudioBuffers 组成,恕我直言,这些都相当复杂,因为它们的设计目标显然是能够处理所有可以想象的音频格式(包括压缩、VBR 等)。因此AVAudioFile,仅将一些合成样本写入 WAV 文件可能是矫枉过正。

或者,还有音频文件服务 C-API。它提供AudioFileCreateWithURL,AudioFileWriteBytesAudioFileClose, 这可能会为您的任务解决问题。最复杂的部分可能AudioStreamBasicDescriptionAudioFileCreateWithURL. 为了帮助解决这个问题,存在一个实用函数:FillOutASBDForLPCM.


推荐阅读