Mercurial > games > semicongine
comparison old_tests/test_audio.nim @ 1227:4d97cfc4888b
merge
author | sam <sam@basx.dev> |
---|---|
date | Wed, 17 Jul 2024 23:45:43 +0700 |
parents | 6360c8d17ce0 |
children |
comparison
equal
deleted
inserted
replaced
1170:2addc5f6804f | 1227:4d97cfc4888b |
---|---|
1 import std/os | |
2 import std/sequtils | |
3 import std/times | |
4 | |
5 import semicongine | |
6 | |
7 | |
8 proc test1() = | |
9 mixer[].AddSound("test1", NewSound(SineSoundData(1000, 2, 44100))) | |
10 mixer[].AddSound("test2", NewSound(SineSoundData(500, 2, 44100))) | |
11 | |
12 | |
13 let s1 = mixer[].Play("test1", loop = true) | |
14 let s2 = mixer[].Play("test2", loop = true) | |
15 | |
16 let t0 = now() | |
17 mixer[].SetLevel(0.5) | |
18 while true: | |
19 let runtime = (now() - t0).inMilliseconds() | |
20 if runtime > 1500: | |
21 mixer[].SetLevel(0.2) | |
22 if runtime > 3000: | |
23 mixer[].Stop(s2) | |
24 if runtime > 6000: | |
25 mixer[].Stop("") | |
26 if runtime > 8000: | |
27 break | |
28 | |
29 proc test2() = | |
30 let | |
31 # notes | |
32 c = SineSoundData(261.6256, 0.5, 44100) | |
33 d = SineSoundData(293.6648, 0.5, 44100) | |
34 e = SineSoundData(329.6276, 0.5, 44100) | |
35 f = SineSoundData(349.2282, 0.5, 44100) | |
36 g = SineSoundData(391.9954, 0.5, 44100) | |
37 a = SineSoundData(440.0000, 0.5, 44100) | |
38 b = SineSoundData(493.8833, 0.5, 44100) | |
39 bb = SineSoundData(466.1638, 0.5, 44100) | |
40 c2 = SineSoundData(523.2511, 0.5, 44100) | |
41 d2 = SineSoundData(587.3295, 0.5, 44100) | |
42 bbShort = SineSoundData(466.1638, 0.25, 44100) | |
43 c2Short = SineSoundData(523.2511, 0.25, 44100) | |
44 d2Short = SineSoundData(587.3295, 0.25, 44100) | |
45 | |
46 # song | |
47 frerejaquesData = concat( | |
48 f, g, a, f, | |
49 f, g, a, f, | |
50 a, bb, c2, c2, | |
51 a, bb, c2, c2, | |
52 c2Short, d2Short, c2Short, bbShort, a, f, | |
53 c2Short, d2Short, c2Short, bbShort, a, f, | |
54 f, c, f, f, | |
55 f, c, f, f, | |
56 ) | |
57 | |
58 mixer[].AddSound("frerejaques", NewSound(frerejaquesData)) | |
59 discard mixer[].Play("frerejaques") | |
60 | |
61 while mixer[].IsPlaying(): | |
62 sleep(1) | |
63 | |
64 proc test3() = | |
65 mixer[].AddSound("toccata et fugue", LoadAudio("toccata_et_fugue.ogg")) | |
66 mixer[].AddSound("ping", NewSound(SineSoundData(500, 0.05, 44100))) | |
67 mixer[].AddTrack("effects") | |
68 discard mixer[].Play("toccata et fugue") | |
69 | |
70 | |
71 when isMainModule: | |
72 StartMixerThread() | |
73 test1() | |
74 mixer[].Stop() | |
75 test2() | |
76 mixer[].Stop() | |
77 test3() | |
78 | |
79 while mixer[].IsPlaying(): | |
80 discard mixer[].Play("ping", track = "effects", stopOtherSounds = true, level = 0.5) | |
81 # on windows we re-open stdin and this will not work | |
82 when defined(linux): | |
83 echo "Press q and enter to exit" | |
84 if stdin.readLine() == "q": | |
85 mixer[].Stop() | |
86 elif defined(windows): | |
87 sleep(5) | |
88 mixer[].Stop() |