Как воспроизвести несколько звуков с помощью библиотеки Superpowered - PullRequest
0 голосов
/ 22 мая 2018

Моя цель - иметь возможность воспроизводить несколько звуков (для создания набора ударных), используя Superpowered API, поскольку мне требуется очень низкая задержка.

Я не могу найти общую архитектуру вФайл .mm.

На данный момент в моем файле .mm:

  • 1 SuperpoweredIOSAudioIO * output
  • 10 SuperpoweredAdvancedAudioPlayer * (игроки [10]),так как у меня 10 барабанов

Но я не могу найти, как реализовать оставшуюся часть файла .mm, в частности цикл audioProcessing.

У меня есть это в настоящее время:

static bool audioProcessing(Superpowered *clientdata, float **buffers, unsigned int inputChannels, unsigned int outputChannels, unsigned int numberOfSamples, unsigned int samplerate, uint64_t hostTime) {
    Superpowered *self = clientdata;

    bool overallSilence = true;
    for(int i = 0; i < 10; i++) {
        SuperpoweredAdvancedAudioPlayer *player = self->players[i];
        bool silence = !player->process(self->stereoBuffer, false, numberOfSamples);
        if (silence == false) {
            overallSilence = false;
        }
    }

    if (!overallSilence) SuperpoweredDeInterleave(self->stereoBuffer, buffers[0], buffers[1], numberOfSamples); // The stereoBuffer is ready now, let's put the finished audio into the requested buffers.

    return !overallSilence;
}

и когда я хочу воспроизвести звук:

- (void)playWithPlayerAtIndex:(int) index {
    SuperpoweredAdvancedAudioPlayer* player = players[index];
    player->seek(0);

    player->play(false);
}

Но при этом я могу воспроизводить только один звук за раз.

Кто-нибудьзнаете сверхспособность API?

1 Ответ

0 голосов
/ 23 мая 2018

Все ваши плееры "играют" в "self-> стереобаффер".Проверьте параметр bufferAdd метода процесса проигрывателя.Вам нужно «добавить» вывод к содержимому буфера, если хотя бы один проигрыватель сам выводил в него.

...