2009-07-08 4 views
23

У меня есть приложение для iPhone для детей, которое я пишу, и мне нужно иметь возможность сдвигать высоту звука с помощью Core Audio. У кого-нибудь есть какой-либо пример кода, я мог бы посмотреть, где это делается. В магазине приложений есть много музыкальных и игровых приложений, поэтому я знаю, что я не первый. Однако я не могу найти примеров того, как это делается.В режиме реального времени Pitch Shifting на iPhone

ответ

14

вы можете использовать dirac-2 от измерения dsp для изменения высоты тона на iphone. цитата: -

«DIRAC2 доступен как библиотека коммерческих объектов, предлагающая неограниченные частоты дискретизации и многоканальную поддержку с фазовой синхронизацией, а также как бесплатный одноканальный вариант с частотой 44,1/48 кГц».

+0

У меня было плохое опыт работы с dirac3 из-за его 'libDIRAC_iOS4-fat.a', который, вероятно, не сильно отличается от dirac2.Я просто не мог его использовать - было слишком много ошибок в части соединения процесса сборки. Скорее, [я использовал openAL] (http://stackoverflow.com/questions/2035975/how-do-you-completely-remove-and-release-memory-of-an-openal-sound-file/4647692# 4647692) с огромным успехом. – cregox

+1

Прекрасно работает для меня. Вероятно, вы забыли добавить ракурс ускорения в свой проект (он находится в файле readme). – tahome

+1

DIRAC - это прекрасно, но OpenAL с AL_PITCH также изменяет длину звука, который не идеален. DIRAC теперь является версией 3. В его библиотеку включен iPhone Demo. – Tibidabo

1

См: Related question

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

Вы также можете использовать Службы аудио конвертера в сочетании с AVAudioPlayer, что позволит вам переконвертировать звук (который будет эффективно выполнять их ретрансляцию, хотя они изменят продолжительность).

Альтернативно, как связанный с ним вопрос указывает, вы могли бы использовать OpenAL и AL_PITCH

+2

Не помогло. Спасибо! –

+0

@ Leachy просто интересно ... как мог openAL не помочь вам и DIRAC? Для меня это была полная противоположность, и Дирак оказался бесполезным! : o – cregox

9

использовать проект SoundTouch с открытым исходным кодом для изменения высоты тона

Вот ссылка: http://www.surina.net/soundtouch/

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

Поскольку для обработки звука требуется больше времени, лучше изменить саундтрек, чтобы при записи голоса непосредственно передавайте данные для обработки. Это сделает ваше приложение лучше.

+0

Я сделаю это. Спасибо Анил! L. –

+0

@ Ани: У меня не было API для iOS – Maulik

+1

Мне понравилась бы ссылка на то, как это сделать. Проводил весь день, пытаясь выяснить, как добавить Soundtouch в мой проект iOS. – AlBeebe

2

Попробуйте Dirac - это лучшая технология, и она доступна на Win, Linux, MacOS X и iOS. Мы используем его во всех наших продуктах (и еще несколько других - ищем «Capo» в App Store). Сейчас они находятся в версии 3, которая с огромным увеличением производительности с предыдущих версий. Надеюсь это поможет.

3

Я знаю, что слишком поздно для человека, который спросил, но это действительно ценная ссылка (как я нашла) для любого другого, кто ищет решение той же проблемы.

Так вот мы имеем последнюю DIRAC3 с собственным audio player классов, которые будут заботиться о во время выполнения шага и скорости (для изучения бог знает что еще) сдвигая. Запустите образец и получите огромные аплодисменты.