aboutsummaryrefslogtreecommitdiff
path: root/mwe/audio/soloud/main.cpp
blob: 50df0b7dfd344431ef3d9a82b4332b0bbc2ca07e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <soloud.h>
#include <soloud_wav.h>
#include <soloud_wavstream.h>

#include <chrono>
#include <thread>

using namespace std;
using namespace std::chrono_literals;

int main() {
	SoLoud::Soloud soloud;
	soloud.init();

	// load background track
	SoLoud::WavStream bgm;
	bgm.load("../bgm.ogg");
	// NOTE: SoLoud::Wav is poorly named as it also supports FLAC, MP3 and OGG

	// load three short samples
	SoLoud::Wav sfx[3];
	sfx[0].load("../sfx1.wav");
	sfx[1].load("../sfx2.wav");
	sfx[2].load("../sfx3.wav");

	// start the background track
	SoLoud::handle bgm_handle = soloud.play(bgm);

	// play each sample sequentially
	this_thread::sleep_for(500ms);
	soloud.play(sfx[0]);
	this_thread::sleep_for(500ms);
	soloud.play(sfx[1]);
	soloud.setPause(bgm_handle, true);
	this_thread::sleep_for(500ms);
	soloud.play(sfx[2]);
	soloud.setPause(bgm_handle, false);
	this_thread::sleep_for(500ms);

	// play all samples simultaniously
	for (unsigned i = 0; i < 3; i++) soloud.play(sfx[i]);
	this_thread::sleep_for(1000ms);

	// stop all audio and exit
	soloud.deinit();
	return 0;
}