Возможно, лучше всего построить это как «дорожку смеха», в которой вы используете аудиоредактор для объединения нескольких скрипов в один файл MP3, который затем воспроизводите в цикле (этот файл может и должен быть намного длиннее, чемsingle squeak).
Попытка воспроизвести 100 звуков как отдельные экземпляры, воспроизводящие звук, может привести к тем же проблемам с голосом и задержкой, с которыми сталкиваются разработчики программных синтезаторов.Поддержание счета голоса 100 с общей задержкой менее 25 миллисекунд или около того трудно сделать на современном ПК, и намного сложнее (или невозможно) сделать на iPhone / iPad.
Вообще говоряГолос и задержка представляют собой фундаментальный инженерный компромисс: довольно просто иметь механизм синтеза с малой задержкой на мобильном устройстве, но это может быть достигнуто только с очень небольшим количеством голосов (то есть с разными параллельными звуками).И наоборот (как и мой собственный механизм синтеза программного обеспечения), у вас может быть механизм, который может эффективно обрабатывать бесконечное число голосов, но с очень высокой задержкой (порядка многих секунд).
Обновление: генерация ваших собственных звуков программно - отличная идея.Вы можете сделать это относительно легко в iPhone, используя класс AVAudioPlayer
.Обычно этот класс инициализируется с помощью метода initWithURL
, который используется для загрузки аудиоданных из файла.
В вашем случае вместо этого вы хотите использовать метод initWithData
.Здесь вы передаете объект NSData
, который в основном представляет собой блок байтов.В этом случае вы хотите, чтобы блок байтов был WAV-файлом в памяти, который будет состоять из 44-байтового заголовка, за которым следует массив из 2-байтовых целых чисел, который представляет фактические данные выборки.
Вы устанавливаете значения в заголовке (такие как частота дискретизации, биты на выборку, количество каналов и т. Д.), А затем вычисляете значения выборки, используя любой алгоритм, который вам нравится.Простая волна sin
- это хорошая вещь для начала, но она просто создаст скучный тон.Более интересный звук (и тот, который может быть близок к тому, что вы ищете) называется «чириканье» - это в основном короткий звук на основе синусоидальной волны, но частота синусоидальной волны изменяется от высокой частоты кНизкая частота при воспроизведении звука.
Извините, у меня есть тонны аудиокода для C # и Java, но пока нет ничего для iPhone.Надеюсь, что я добавил здесь, поможет вам Google для этого.Вам просто нужно понять две вещи: 1) как использовать AVAudioPlayer
с использованием initWithData
и формат файла WAV.