#include <miniaudio.h> #include <chrono> #include <thread> using namespace std; using namespace std::chrono_literals; int main() { ma_engine engine; ma_engine_init(NULL, &engine); // 1. load background track (ogg vorbis) ma_sound bgm; ma_sound_init_from_file(&engine, "../bgm.ogg", 0, NULL, NULL, &bgm); // 2. load samples (wav) ma_sound sfx[3]; ma_sound_init_from_file(&engine, "../sfx1.wav", 0, NULL, NULL, &sfx[0]); ma_sound_init_from_file(&engine, "../sfx2.wav", 0, NULL, NULL, &sfx[1]); ma_sound_init_from_file(&engine, "../sfx3.wav", 0, NULL, NULL, &sfx[2]); // 3. start the background track ma_sound_start(&bgm); // 4. play samples sequentially while controlling the background track this_thread::sleep_for(500ms); ma_sound_start(&sfx[0]); this_thread::sleep_for(500ms); ma_sound_start(&sfx[1]); ma_sound_stop(&bgm); this_thread::sleep_for(500ms); ma_sound_start(&sfx[2]); ma_sound_start(&bgm); // this actually resumes now this_thread::sleep_for(500ms); for (unsigned i = 0; i < 3; i++) ma_sound_seek_to_pcm_frame(&sfx[i], 0); // 5. play all samples simultaniously for (unsigned i = 0; i < 3; i++) ma_sound_start(&sfx[i]); this_thread::sleep_for(1000ms); ma_engine_uninit(&engine); return 0; }