void Snd_PauseResume(unsigned int handle, bool pause) { soloud.setPause(handle, pause); }
// Entry point int main(int argc, char *argv[]) { gMusic1.load("audio/plonk_wet.ogg"); gMusic2.load("audio/plonk_dry.ogg"); gMusic1.setLooping(1); gMusic2.setLooping(1); // Initialize SDL's subsystems - in this case, only video. if ( SDL_Init(SDL_INIT_VIDEO) < 0 ) { fprintf(stderr, "Unable to init SDL: %s\n", SDL_GetError()); exit(1); } gSoloud.init(SoLoud::Soloud::CLIP_ROUNDOFF | SoLoud::Soloud::ENABLE_VISUALIZATION); // Register SDL_Quit to be called at exit; makes sure things are // cleaned up when we quit. atexit(SDL_Quit); // Attempt to create a 640x480 window with 32bit pixels. screen = SDL_SetVideoMode(400, 256, 32, SDL_SWSURFACE); font = SDL_LoadBMP("graphics/font.bmp"); // If we fail, return error. if ( screen == NULL ) { fprintf(stderr, "Unable to set 640x480 video: %s\n", SDL_GetError()); exit(1); } gMusichandle1 = gSoloud.play(gMusic1,0,0,1); gMusichandle2 = gSoloud.play(gMusic2,1,0,1); SoLoud::handle grouphandle = gSoloud.createVoiceGroup(); gSoloud.addVoiceToGroup(grouphandle, gMusichandle1); gSoloud.addVoiceToGroup(grouphandle, gMusichandle2); gSoloud.setProtectVoice(grouphandle, 1); // protect all voices in group gSoloud.setPause(grouphandle, 0); // unpause all voices in group gSoloud.destroyVoiceGroup(grouphandle); // remove group, leaves voices alone int cycle = 0; // Main loop: loop forever. while (1) { cycle++; // Render stuff render(); // Poll for events, and handle the ones we care about. SDL_Event event; while (SDL_PollEvent(&event)) { switch (event.type) { case SDL_KEYDOWN: switch (event.key.keysym.sym) { case SDLK_1: gSfx.loadPreset(SoLoud::Sfxr::EXPLOSION, cycle); gSoloud.play(gSfx, 1, ((rand()%512)-256)/256.0f); break; case SDLK_2: gSfx.loadPreset(SoLoud::Sfxr::BLIP, cycle); gSoloud.play(gSfx, 1, ((rand()%512)-256)/256.0f); break; case SDLK_3: gSfx.loadPreset(SoLoud::Sfxr::COIN, cycle); gSoloud.play(gSfx, 1, ((rand()%512)-256)/256.0f); break; case SDLK_4: gSfx.loadPreset(SoLoud::Sfxr::HURT, cycle); gSoloud.play(gSfx, 1, ((rand()%512)-256)/256.0f); break; case SDLK_5: gSfx.loadPreset(SoLoud::Sfxr::JUMP, cycle); gSoloud.play(gSfx, 1, ((rand()%512)-256)/256.0f); break; case SDLK_6: gSfx.loadPreset(SoLoud::Sfxr::LASER, cycle); gSoloud.play(gSfx, 1, ((rand()%512)-256)/256.0f); break; case SDLK_7: gSoloud.fadeVolume(gMusichandle1, 1, 2); gSoloud.fadeVolume(gMusichandle2, 0, 2); break; case SDLK_8: gSoloud.fadeVolume(gMusichandle2, 1, 2); gSoloud.fadeVolume(gMusichandle1, 0, 2); break; case SDLK_9: gSoloud.fadeRelativePlaySpeed(gMusichandle1, 0.2f, 5); gSoloud.fadeRelativePlaySpeed(gMusichandle2, 0.2f, 5); break; case SDLK_0: gSoloud.fadeRelativePlaySpeed(gMusichandle1, 1, 5); gSoloud.fadeRelativePlaySpeed(gMusichandle2, 1, 5); break; } break; case SDL_KEYUP: // If escape is pressed, return (and thus, quit) if (event.key.keysym.sym == SDLK_ESCAPE) { gSoloud.deinit(); return 0; } break; case SDL_QUIT: gSoloud.deinit(); return(0); } } } return 0; }