如何在音频单元扩展(实时过程)中分配内存以播放音频文件?

问题描述 投票:1回答:1

我正在创建音频单元v3。到目前为止,我已经取得了不错的进展,我制作了一个主机应用程序,可以加载我所有的3rd Party插件。我创建了一个auv3插件来处理音频,并且可以由其他主机加载。

我现在想制作一个从磁盘加载音频数据并以采样精度(时间拉伸,粒状填充物等)在随机位置扫描数据的au。我认为这对为AudioKit做出贡献将是一个很酷的示例回放。

因此,这将在AudioKit框架中达到AKSampler的水平。在查看AK来源时,我感觉好像丢失了一些东西。

[浏览github时,我最终出现在这里:https://github.com/AudioKit/AudioKit/tree/118affee65f4c9b8d4780ef1a03a6d03004bbcee/AudioKit/Common/Nodes/Playback/Samplers

然后我在这里看:https://github.com/AudioKit/AudioKit/blob/118affee65f4c9b8d4780ef1a03a6d03004bbcee/AudioKit/Common/Nodes/Playback/Samplers/Disk%20Streamer/AKDiskStreamerAudioUnit.mm

将我带到这里:https://github.com/AudioKit/AudioKit/blob/d69dabf090a5e78d4495d938bf6c0aea9f672630/AudioKit/Common/Nodes/Playback/Samplers/Disk%20Streamer/AKDiskStreamerDSPKernel.hpp

然后最终在这里:https://github.com/AudioKit/AudioKit/blob/d69dabf090a5e78d4495d938bf6c0aea9f672630/AudioKit/Core/Soundpipe/modules/wavin.c

我不是在寻找有关AKSampler的信息,具体地说,只是在一般的音频文件中如何加载以及如何使用au扩展过程的实时性质。.

我在任何地方都找不到IPC / XPC代码,所以我猜想这与连接到其他进程或其他东西的循环缓冲区无关。

AudioKit是否在实时过程中分配内存以播放音频文件?这似乎与经验丰富的音频程序员(如http://www.rossbencina.com/code/real-time-audio-programming-101-time-waits-for-nothing之类的文章)发出的所有警告背道而驰,但我无法弄清楚在AudioKit和通常在iOS中正在做什么。

我只是不了解或发现什么? :D

我正在创建音频单元v3。到目前为止,我已经取得了不错的进展,我制作了一个主机应用程序,可以加载我所有的3rd Party插件。我创建了一个auv3插件,可以处理音频,并且可以......>

ios memory disk audiokit audiounit
1个回答
1
投票

打开文件并为文件读取分配内存应该在实时音频上下文之外完成,也许在选择UI文件时,而不是在Audio Unit回调中完成。

获得对AU回调内部样本的随机访问的一种方法是对文件进行内存映射(mmap C API),然后触摸内存映射中的每个样本之前

© www.soinside.com 2019 - 2024. All rights reserved.