Полифоническое воспроизведение звука
-
22-07-2019 - |
Вопрос
Мне нужно воспроизведение аудио с такими функциями: хорошая производительность (для игры), контроль высоты тона и возможность наложения одного и того же сэмпла несколько раз в одно и то же время (полифония). Какой быстрый способ получить это на iphone SDK?
<Ч>Вот что я узнал до сих пор:
Нет доступных библиотек или примеров кода, которые делают это, пожалуйста, покажите мне неправильно.
SoundEngine.cpp (из примеров кода CrashLanding и TouchFighter) использует OpenAL и позволяет контролировать высоту тона, но каждый раз, когда запускается буфер, если воспроизводится тот же буфер, его точка воспроизведения возвращается к началу.
Одно грязное решение для получения полифонии с SoundEngine.cpp, не вдаваясь в его реализацию (что мне непонятно), состоит в загрузке нескольких буферов для одного и того же звукового файла. Допустим, мне нужна полифония максимум 4 голосов на звук, затем я загружаю 4 буфера для одного и того же файла. Я просто должен был бы обернуть все это в классе менеджера. Безопасно ли идти по этому пути? И / или есть ли способ заставить SoundEngine.cpp быть полифоническим?
Решение
FMOD (www.fmod.org) предоставляет все эти функции. Посмотрите их пример виртуальных голосов для полифонии и эффекта DSP смещения высоты тона в документах.
Я просто клиент, никак не связанный с ними.
Другие советы
SoundEngine от CrashLanding - беспорядок, я бы держался подальше от этого. Написание того, что вы хотите от OpenAL, не сложно, это несколько часов работы. Вы можете посмотреть на Финч или на Cocos 2D sound egine .