iOS: генерация звука на iPad с заданным параметром Гц? - PullRequest
7 голосов
/ 23 февраля 2011

Есть ли API в одном из слоев iOS, который я могу использовать для генерации тона, просто указав его герц. То, что я хочу сделать, это создать тон DTMF. Эта ссылка объясняет, как тоны DTMF состоят из 2 тонов:

http://en.wikipedia.org/wiki/Telephone_keypad

Что в основном означает, что мне нужно воспроизведение 2 тонов одновременно ...

Итак, существует ли что-то подобное:

SomeCleverPlayerAPI (697, 1336);

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

Ответы [ 2 ]

4 голосов
/ 02 июня 2011

Проверьте API AU (AudioUnit). Это довольно низкий уровень, но он может делать то, что вы хотите. Хорошее вступление (которое, вероятно, уже дает вам то, что вам нужно) можно найти здесь:

http://cocoawithlove.com/2010/10/ios-tone-generator-introduction-to.html

3 голосов
/ 23 февраля 2011

Не существует iOS API для этого аудио синтеза.

Но вы можете использовать API-интерфейсы Audio Queue или Audio Unit RemoteIO для воспроизведения необработанных аудиосэмплов, создания массива сэмплов из двух синусоидальных сумм (скажем, 44100 сэмплов за 1 секунду), а затем скопировать результаты в обратный вызов аудио (1024 сэмпла или все, что требуется для обратного вызова, за один раз).

См. Примеры приложений Apple aurioTouch и SpeakHere, чтобы узнать, как использовать эти аудио API.

Сэмплы могут быть сгенерированы чем-то простым:

sample[i] = (short int)(v1*sinf(2.0*pi*i*f1/sr) + v2*sinf(2.0*pi*i*f2/sr));

где sr - частота дискретизации, f1 и f1 - две частоты, а сумма v1 + v2 - меньше 32767.0. Вы можете добавить округление или сглаживание шума для получения более чистых результатов.

Остерегайтесь щелчков, если сгенерированные осциллограммы не сужаются к нулю на концах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...