ios - 使用(AVFoundation?)使用正弦波进行音频合成
问题描述
假设我有一个正弦波的 Y 值数组。(假设 X 是时间)
在 Python 中,您可以将其写入 Wav 文件:
wav.write("file.wav", <sample rate>, <waveform>)
是否可以使用 AVFoundation 在 Swift 中执行此操作?如果有怎么办?如果没有,我应该使用什么库?(我现在试图避免使用 AudioKit。)
谢谢,查尔斯
解决方案
在 AVFoundation 中有AVAudioFile
,但您必须以AVAudioPCMBuffer
s 的形式提供数据,这会将数据保存在 aAudioBufferList
中,而后者又由AudioBuffer
s 组成,恕我直言,这些都相当复杂,因为它们的设计目标显然是能够处理所有可以想象的音频格式(包括压缩、VBR 等)。因此AVAudioFile
,仅将一些合成样本写入 WAV 文件可能是矫枉过正。
或者,还有音频文件服务 C-API。它提供AudioFileCreateWithURL
,AudioFileWriteBytes
和AudioFileClose
, 这可能会为您的任务解决问题。最复杂的部分可能AudioStreamBasicDescription
是AudioFileCreateWithURL
. 为了帮助解决这个问题,存在一个实用函数:FillOutASBDForLPCM
.
推荐阅读
- r - 如何对相似的字符串进行分组并为 R 中的每个组创建索引变量?
- python - Pandas 数据框列需要作为输入传递给另一个函数
- sql - 如何将函数从熊猫时间重写为sql?
- spring - 使用 spring-boot:run 时 Spring Boot 无法解析属性变量
- leaflet - 如何使用 Bootleaf / esri-leaflet 查询具有多边形层的点?
- python - 为什么我所有的分类准确度分数都一样?
- wget - wget只下载一个url到index.html,如何显示index.html的内容?
- python - ValueError:BitVects 的长度必须相同(rdkit)
- powershell - 无需使用 out-file 立即导入文件 使用 PowerShell 仅转换基本类型
- android-fragments - 使用 FindViewById 时使用 ViewBinding 获取空对象异常,而everyhting 工作正常