Микширование звуковых файлов на iPhone - PullRequest
6 голосов
/ 16 апреля 2010

У меня есть пара wav-файлов и, возможно, mp3, который я бы хотел смешать в один wav или mp3-файл. Я использую C / C ++ / Obj-C (iPhone). У меня действительно нет опыта с такими вещами. Если бы кто-нибудь мог дать мне несколько советов, я был бы очень благодарен.

По сути, я хочу сделать то же самое, что, например, Audacity, но программно. Нет ли звуковой библиотеки, в которой вы можете легко открывать аудиофайлы и «вставлять» их в новый в определенных местах? Где смешивание - это то, о чем вам не нужно беспокоиться?

Спасибо.

Ответы [ 3 ]

3 голосов
/ 18 апреля 2010

Смешивание двух звуковых буферов линейного PCM - это всего лишь вопрос сложения каждого значения семпла в них, и, конечно, убедитесь, что вы не переполнены. Обычно вы бы использовали значения с плавающей точкой в ​​буферах, поэтому проблема заключается в том, когда вы возвращаетесь к файлу. Вы также должны иметь CoreAudio на iPhone, у него есть все возможности открывать / читать / записывать звуковые файлы в разных форматах. Я думаю, что для iPhone есть API более высокого уровня, которого нет на Mac, посмотрите документы Apple.

2 голосов
/ 23 апреля 2010

Если вам нужны функции Audacity, он использует PortAudio под капотом (похоже на лицензию MIT) Возможно, вы можете просто попытаться использовать это?

0 голосов
/ 18 апреля 2010

Чтение Поддержка мультимедиа в качестве отправной точки содержит много информации. Вот выдержка:

Существует 3 способа микширования звука на iphone:

  • Каркас аудиоустройства
    • Multichannel Mixer - «позволяет смешивать несколько аудиопотоков в один поток»
    • 3D-микшер - «позволяет смешивать несколько аудиопотоков, задавать панорамирование стереофонического выхода, управлять частотой дискретизации»
  • OpenAl, используемый при разработке игр

Также проверьте следующий образец: iPhoneMultichannelMixerTest :

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

...