Audiokit 5 项目的架构

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

我正在使用 AudioKit 来开发一个相当动态的管道。根据应用程序的状态(例如:录制、播放、配置、分析等),我将需要不同的过滤器、水龙头和节点。

这里官方建议的方法是什么:

  1. 有一个单一的Conductor(包装AudioEngine,并管理相关的

    Player
    Recorder
    Mixer
    Taps
    等),并有一种反映UI状态的状态机,每次更改:停止引擎,重新配置设置和管道,重新启动引擎和节点

  2. 拥有多个导体(类似于我在Cookbook应用程序中看到的),并在另一个导体优先并启动时以某种方式释放(或停止足够的?)任何活动导体。尽管更简单,但它可能需要代码重复(例如设备处理和一般 AV 设置),并且在其他一些 SO 注释中似乎也不鼓励这样做。在 Cookbook 应用程序中,各种“菜谱”也是完全无关的,完全释放导体并为每个菜谱启动一个新的导体更容易,它们也非常简单。在我的应用程序中,可能需要一个 Conductor 在另一个处于活动状态时保持其状态。

我认为同样的问题也可能适用于

AVAudioEngine
,并且在各种 answers 中,似乎建议选择选项 1,这让我在查看 AudioKit Cookbook 时更加不确定。

谢谢你

swift audiokit avaudioengine
1个回答
0
投票

Cookbook 可能不是完整音频应用程序的理想示例。它只是迷你应用程序的集合。

通常一个应用程序只有一个 AudioEngine,因为它渲染音频输出。因此,你们的世界通常也只有一名指挥。

Synth One 可能会帮助您更好地理解该架构: https://github.com/AudioKit/AudioKitSynthOne 这已经有五年了,没有使用最新版本,但架构从那时起没有太大变化。

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