0

I need some amount of songs to be played at the same time (simulteneously). My code is:

#define SIZE 9

FMOD_SYSTEM *gSystem = 0;
FMOD_CHANNEL *gChannel[SIZE];
FMOD_SOUND *gSound[SIZE];
const char *tracks[SIZE];

FMOD_RESULT result = FMOD_OK;
result = FMOD_System_Create(&gSystem);
result = FMOD_System_Init(gSystem, 1024, FMOD_INIT_NORMAL, 0);

FMOD_MODE soundParams = FMOD_SOFTWARE | FMOD_2D | FMOD_LOOP_OFF | FMOD_CREATESTREAM
                | FMOD_ACCURATETIME;

for (int i = 0; i < tracksSize; i++)
    result = FMOD_System_CreateSound(gSystem, tracks[i], soundParams, 0, &gSound[i]);

for (int i=0; i<tracksSize; i++) {
    result = FMOD_System_PlaySound(gSystem, FMOD_CHANNEL_FREE, gSound[i], true, &gChannel[i]);

    FMOD_Channel_SetMode(gChannel[i], FMOD_LOOP_NORMAL);
    FMOD_Channel_SetLoopCount(gChannel[i], -1);
    FMOD_Channel_SetPaused(gChannel[i], false);
}

But songs play intermittently. Help me, please.

4

1 回答 1

0

我没有立即看到您的代码有任何问题,看来您正在创建和播放 9 个音频流。我担心的是在 Android(移动)设备上播放 9 个流的 CPU 成本。如果您使用的是 MP3 等复杂的压缩格式,您可能会使 CPU 饱和。您可以使用 System::getCPUUsage() 进行检查,查看“总”CPU 值,是否超过或接近 100%?如果是这样,那将是您的问题。

解决方案是选择同时播放的通道更少,或者 CPU 密集度较低的压缩格式,例如 ADPCM。

于 2013-08-14T11:37:02.333 回答