Как воспроизвести один и тот же звук несколько раз с перекрытием, используя OpenAL или Finch? - PullRequest
0 голосов
/ 03 мая 2010

Финч использует OpenAL. Однако, когда у меня есть экземпляр Sound и, скажем, -play, звук воспроизводится. Когда я вызываю -play несколько раз один за другим в быстром темпе, каждый -play останавливает и перезапускает текущее воспроизведение этого звука.

Это не то, что я хочу. Должен ли я создать несколько источников или буферов, чтобы это работало? Или я бы просто создал несколько звуков в одном файле?

1 Ответ

2 голосов
/ 03 мая 2010

Существует класс RevolverSound именно для этого варианта использования. Это очень просто, он заранее выделяет количество Sound экземпляров и затем воспроизводит их по очереди:

- (void) play
{
    [[sounds objectAtIndex:current] play];
    current = (current + 1) % [sounds count];
}

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

...