Архитектура проекта Audiokit 5

Я использую AudioKit для разработки довольно динамичного конвейера. Мне понадобятся разные фильтры, краны и узлы в зависимости от состояния приложения (например: запись, воспроизведение, настройка, анализ и т. д.).

Каков официально предлагаемый подход здесь:

  1. иметь единый проводник (обертку AudioEngine и управлять связанными Player, Recorder, Mixer, Taps и т. д.) и иметь своего рода конечный автомат, отражающий состояние пользовательского интерфейса и для каждого изменения: останавливать движок, перенастраивать настройки и конвейер, перезапустите движок и узлы

  2. иметь несколько проводников (аналогично тому, что я вижу в приложении Cookbook) и каким-то образом освобождать (или достаточно останавливать?) любой активный проводник, когда другой получает приоритет и запускается. Несмотря на то, что это проще, может потребоваться дублирование кода (например, обработка устройства и общие настройки AV), и, похоже, это также не рекомендуется в некоторых других комментариях SO. В приложении «Кулинарная книга» различные «рецепты» совершенно не связаны друг с другом, и проще полностью освободить Проводник и начать новый для каждого рецепта, они также довольно просты. В моем приложении проводнику может потребоваться сохранять свое состояние, пока другой активен.

Я полагаю, что тот же вопрос также может быть уместен для AVAudioEngine и в различных ответах здесь, похоже, предлагается выбрать вариант 1, что делает меня еще более неуверенным при просмотре кулинарной книги AudioKit.

Спасибо

Вы можете попросить присоединиться к Discord AudioKit, чтобы получить дополнительную помощь, а также если вы хотите улучшить документацию.

mahal tertin 17.05.2024 11:54

Спасибо @mahaltertin, я искал такой, теперь увидел, что мне нужно связаться с сопровождающим, сделаю, еще раз спасибо.

jalone 17.05.2024 12:11
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
2
51
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Cookbook, возможно, не идеальный пример полноценного аудиоприложения. Это просто набор мини-приложений.

Обычно приложение имеет только один AudioEngine, поскольку он визуализирует аудиовыход. Поэтому обычно у вас также будет только один проводник.

Synth One может помочь вам лучше понять архитектуру: https://github.com/AudioKit/AudioKitSynthOne Этому проекту уже пять лет, и он не использует последнюю версию, но архитектура с тех пор не сильно изменилась.

Спасибо, я выберу одиночный проводник и хороший совет проверить SynthOne.

jalone 17.05.2024 12:16

Другие вопросы по теме