Mercurial > games > semicongine
annotate old_tests/test_audio.nim @ 1495:a9c0f899a734
fix: issue with presentation-wait semaphores, this time FR
| author | sam <sam@basx.dev> | 
|---|---|
| date | Wed, 24 Sep 2025 22:14:44 +0700 | 
| parents | 6360c8d17ce0 | 
| children | 
| rev | line source | 
|---|---|
| 
171
 
ceba165f07d8
add: audio subsystem, windows backend still missing
 
Sam <sam@basx.dev> 
parents: 
169 
diff
changeset
 | 
1 import std/os | 
| 
169
 
2a0c81fa541d
add: audio test, be aware that the file tests/audiotest.PCM.s16le.48000.2 needs to be manually generated and placed in order for the test to play it successfully
 
Sam <sam@basx.dev> 
parents:  
diff
changeset
 | 
2 import std/sequtils | 
| 
 
2a0c81fa541d
add: audio test, be aware that the file tests/audiotest.PCM.s16le.48000.2 needs to be manually generated and placed in order for the test to play it successfully
 
Sam <sam@basx.dev> 
parents:  
diff
changeset
 | 
3 import std/times | 
| 
 
2a0c81fa541d
add: audio test, be aware that the file tests/audiotest.PCM.s16le.48000.2 needs to be manually generated and placed in order for the test to play it successfully
 
Sam <sam@basx.dev> 
parents:  
diff
changeset
 | 
4 | 
| 
 
2a0c81fa541d
add: audio test, be aware that the file tests/audiotest.PCM.s16le.48000.2 needs to be manually generated and placed in order for the test to play it successfully
 
Sam <sam@basx.dev> 
parents:  
diff
changeset
 | 
5 import semicongine | 
| 
 
2a0c81fa541d
add: audio test, be aware that the file tests/audiotest.PCM.s16le.48000.2 needs to be manually generated and placed in order for the test to play it successfully
 
Sam <sam@basx.dev> 
parents:  
diff
changeset
 | 
6 | 
| 
171
 
ceba165f07d8
add: audio subsystem, windows backend still missing
 
Sam <sam@basx.dev> 
parents: 
169 
diff
changeset
 | 
7 | 
| 
169
 
2a0c81fa541d
add: audio test, be aware that the file tests/audiotest.PCM.s16le.48000.2 needs to be manually generated and placed in order for the test to play it successfully
 
Sam <sam@basx.dev> 
parents:  
diff
changeset
 | 
8 proc test1() = | 
| 1137 | 9 mixer[].AddSound("test1", NewSound(SineSoundData(1000, 2, 44100))) | 
| 10 mixer[].AddSound("test2", NewSound(SineSoundData(500, 2, 44100))) | |
| 
169
 
2a0c81fa541d
add: audio test, be aware that the file tests/audiotest.PCM.s16le.48000.2 needs to be manually generated and placed in order for the test to play it successfully
 
Sam <sam@basx.dev> 
parents:  
diff
changeset
 | 
11 | 
| 
 
2a0c81fa541d
add: audio test, be aware that the file tests/audiotest.PCM.s16le.48000.2 needs to be manually generated and placed in order for the test to play it successfully
 
Sam <sam@basx.dev> 
parents:  
diff
changeset
 | 
12 | 
| 
1135
 
74957cbf589b
fix: update tests according to some API renaming
 
sam <sam@basx.dev> 
parents: 
980 
diff
changeset
 | 
13 let s1 = mixer[].Play("test1", loop = true) | 
| 
 
74957cbf589b
fix: update tests according to some API renaming
 
sam <sam@basx.dev> 
parents: 
980 
diff
changeset
 | 
14 let s2 = mixer[].Play("test2", loop = true) | 
| 
169
 
2a0c81fa541d
add: audio test, be aware that the file tests/audiotest.PCM.s16le.48000.2 needs to be manually generated and placed in order for the test to play it successfully
 
Sam <sam@basx.dev> 
parents:  
diff
changeset
 | 
15 | 
| 
 
2a0c81fa541d
add: audio test, be aware that the file tests/audiotest.PCM.s16le.48000.2 needs to be manually generated and placed in order for the test to play it successfully
 
Sam <sam@basx.dev> 
parents:  
diff
changeset
 | 
16 let t0 = now() | 
| 
1135
 
74957cbf589b
fix: update tests according to some API renaming
 
sam <sam@basx.dev> 
parents: 
980 
diff
changeset
 | 
17 mixer[].SetLevel(0.5) | 
| 
169
 
2a0c81fa541d
add: audio test, be aware that the file tests/audiotest.PCM.s16le.48000.2 needs to be manually generated and placed in order for the test to play it successfully
 
Sam <sam@basx.dev> 
parents:  
diff
changeset
 | 
18 while true: | 
| 
 
2a0c81fa541d
add: audio test, be aware that the file tests/audiotest.PCM.s16le.48000.2 needs to be manually generated and placed in order for the test to play it successfully
 
Sam <sam@basx.dev> 
parents:  
diff
changeset
 | 
19 let runtime = (now() - t0).inMilliseconds() | 
| 
 
2a0c81fa541d
add: audio test, be aware that the file tests/audiotest.PCM.s16le.48000.2 needs to be manually generated and placed in order for the test to play it successfully
 
Sam <sam@basx.dev> 
parents:  
diff
changeset
 | 
20 if runtime > 1500: | 
| 
1135
 
74957cbf589b
fix: update tests according to some API renaming
 
sam <sam@basx.dev> 
parents: 
980 
diff
changeset
 | 
21 mixer[].SetLevel(0.2) | 
| 
169
 
2a0c81fa541d
add: audio test, be aware that the file tests/audiotest.PCM.s16le.48000.2 needs to be manually generated and placed in order for the test to play it successfully
 
Sam <sam@basx.dev> 
parents:  
diff
changeset
 | 
22 if runtime > 3000: | 
| 
1135
 
74957cbf589b
fix: update tests according to some API renaming
 
sam <sam@basx.dev> 
parents: 
980 
diff
changeset
 | 
23 mixer[].Stop(s2) | 
| 
169
 
2a0c81fa541d
add: audio test, be aware that the file tests/audiotest.PCM.s16le.48000.2 needs to be manually generated and placed in order for the test to play it successfully
 
Sam <sam@basx.dev> 
parents:  
diff
changeset
 | 
24 if runtime > 6000: | 
| 
1135
 
74957cbf589b
fix: update tests according to some API renaming
 
sam <sam@basx.dev> 
parents: 
980 
diff
changeset
 | 
25 mixer[].Stop("") | 
| 
169
 
2a0c81fa541d
add: audio test, be aware that the file tests/audiotest.PCM.s16le.48000.2 needs to be manually generated and placed in order for the test to play it successfully
 
Sam <sam@basx.dev> 
parents:  
diff
changeset
 | 
26 if runtime > 8000: | 
| 
 
2a0c81fa541d
add: audio test, be aware that the file tests/audiotest.PCM.s16le.48000.2 needs to be manually generated and placed in order for the test to play it successfully
 
Sam <sam@basx.dev> 
parents:  
diff
changeset
 | 
27 break | 
| 
 
2a0c81fa541d
add: audio test, be aware that the file tests/audiotest.PCM.s16le.48000.2 needs to be manually generated and placed in order for the test to play it successfully
 
Sam <sam@basx.dev> 
parents:  
diff
changeset
 | 
28 | 
| 
 
2a0c81fa541d
add: audio test, be aware that the file tests/audiotest.PCM.s16le.48000.2 needs to be manually generated and placed in order for the test to play it successfully
 
Sam <sam@basx.dev> 
parents:  
diff
changeset
 | 
29 proc test2() = | 
| 
 
2a0c81fa541d
add: audio test, be aware that the file tests/audiotest.PCM.s16le.48000.2 needs to be manually generated and placed in order for the test to play it successfully
 
Sam <sam@basx.dev> 
parents:  
diff
changeset
 | 
30 let | 
| 
 
2a0c81fa541d
add: audio test, be aware that the file tests/audiotest.PCM.s16le.48000.2 needs to be manually generated and placed in order for the test to play it successfully
 
Sam <sam@basx.dev> 
parents:  
diff
changeset
 | 
31 # notes | 
| 1137 | 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) | |
| 
169
 
2a0c81fa541d
add: audio test, be aware that the file tests/audiotest.PCM.s16le.48000.2 needs to be manually generated and placed in order for the test to play it successfully
 
Sam <sam@basx.dev> 
parents:  
diff
changeset
 | 
45 | 
| 
 
2a0c81fa541d
add: audio test, be aware that the file tests/audiotest.PCM.s16le.48000.2 needs to be manually generated and placed in order for the test to play it successfully
 
Sam <sam@basx.dev> 
parents:  
diff
changeset
 | 
46 # song | 
| 
 
2a0c81fa541d
add: audio test, be aware that the file tests/audiotest.PCM.s16le.48000.2 needs to be manually generated and placed in order for the test to play it successfully
 
Sam <sam@basx.dev> 
parents:  
diff
changeset
 | 
47 frerejaquesData = concat( | 
| 
 
2a0c81fa541d
add: audio test, be aware that the file tests/audiotest.PCM.s16le.48000.2 needs to be manually generated and placed in order for the test to play it successfully
 
Sam <sam@basx.dev> 
parents:  
diff
changeset
 | 
48 f, g, a, f, | 
| 
 
2a0c81fa541d
add: audio test, be aware that the file tests/audiotest.PCM.s16le.48000.2 needs to be manually generated and placed in order for the test to play it successfully
 
Sam <sam@basx.dev> 
parents:  
diff
changeset
 | 
49 f, g, a, f, | 
| 
 
2a0c81fa541d
add: audio test, be aware that the file tests/audiotest.PCM.s16le.48000.2 needs to be manually generated and placed in order for the test to play it successfully
 
Sam <sam@basx.dev> 
parents:  
diff
changeset
 | 
50 a, bb, c2, c2, | 
| 
 
2a0c81fa541d
add: audio test, be aware that the file tests/audiotest.PCM.s16le.48000.2 needs to be manually generated and placed in order for the test to play it successfully
 
Sam <sam@basx.dev> 
parents:  
diff
changeset
 | 
51 a, bb, c2, c2, | 
| 
 
2a0c81fa541d
add: audio test, be aware that the file tests/audiotest.PCM.s16le.48000.2 needs to be manually generated and placed in order for the test to play it successfully
 
Sam <sam@basx.dev> 
parents:  
diff
changeset
 | 
52 c2Short, d2Short, c2Short, bbShort, a, f, | 
| 
 
2a0c81fa541d
add: audio test, be aware that the file tests/audiotest.PCM.s16le.48000.2 needs to be manually generated and placed in order for the test to play it successfully
 
Sam <sam@basx.dev> 
parents:  
diff
changeset
 | 
53 c2Short, d2Short, c2Short, bbShort, a, f, | 
| 
 
2a0c81fa541d
add: audio test, be aware that the file tests/audiotest.PCM.s16le.48000.2 needs to be manually generated and placed in order for the test to play it successfully
 
Sam <sam@basx.dev> 
parents:  
diff
changeset
 | 
54 f, c, f, f, | 
| 
 
2a0c81fa541d
add: audio test, be aware that the file tests/audiotest.PCM.s16le.48000.2 needs to be manually generated and placed in order for the test to play it successfully
 
Sam <sam@basx.dev> 
parents:  
diff
changeset
 | 
55 f, c, f, f, | 
| 
 
2a0c81fa541d
add: audio test, be aware that the file tests/audiotest.PCM.s16le.48000.2 needs to be manually generated and placed in order for the test to play it successfully
 
Sam <sam@basx.dev> 
parents:  
diff
changeset
 | 
56 ) | 
| 
 
2a0c81fa541d
add: audio test, be aware that the file tests/audiotest.PCM.s16le.48000.2 needs to be manually generated and placed in order for the test to play it successfully
 
Sam <sam@basx.dev> 
parents:  
diff
changeset
 | 
57 | 
| 1137 | 58 mixer[].AddSound("frerejaques", NewSound(frerejaquesData)) | 
| 
1135
 
74957cbf589b
fix: update tests according to some API renaming
 
sam <sam@basx.dev> 
parents: 
980 
diff
changeset
 | 
59 discard mixer[].Play("frerejaques") | 
| 
169
 
2a0c81fa541d
add: audio test, be aware that the file tests/audiotest.PCM.s16le.48000.2 needs to be manually generated and placed in order for the test to play it successfully
 
Sam <sam@basx.dev> 
parents:  
diff
changeset
 | 
60 | 
| 
1135
 
74957cbf589b
fix: update tests according to some API renaming
 
sam <sam@basx.dev> 
parents: 
980 
diff
changeset
 | 
61 while mixer[].IsPlaying(): | 
| 
171
 
ceba165f07d8
add: audio subsystem, windows backend still missing
 
Sam <sam@basx.dev> 
parents: 
169 
diff
changeset
 | 
62 sleep(1) | 
| 
169
 
2a0c81fa541d
add: audio test, be aware that the file tests/audiotest.PCM.s16le.48000.2 needs to be manually generated and placed in order for the test to play it successfully
 
Sam <sam@basx.dev> 
parents:  
diff
changeset
 | 
63 | 
| 
 
2a0c81fa541d
add: audio test, be aware that the file tests/audiotest.PCM.s16le.48000.2 needs to be manually generated and placed in order for the test to play it successfully
 
Sam <sam@basx.dev> 
parents:  
diff
changeset
 | 
64 proc test3() = | 
| 
1139
 
114f395b9144
did: finish refactoring and updated all tests accordingly
 
sam <sam@basx.dev> 
parents: 
1137 
diff
changeset
 | 
65 mixer[].AddSound("toccata et fugue", LoadAudio("toccata_et_fugue.ogg")) | 
| 1137 | 66 mixer[].AddSound("ping", NewSound(SineSoundData(500, 0.05, 44100))) | 
| 
1135
 
74957cbf589b
fix: update tests according to some API renaming
 
sam <sam@basx.dev> 
parents: 
980 
diff
changeset
 | 
67 mixer[].AddTrack("effects") | 
| 
 
74957cbf589b
fix: update tests according to some API renaming
 
sam <sam@basx.dev> 
parents: 
980 
diff
changeset
 | 
68 discard mixer[].Play("toccata et fugue") | 
| 
169
 
2a0c81fa541d
add: audio test, be aware that the file tests/audiotest.PCM.s16le.48000.2 needs to be manually generated and placed in order for the test to play it successfully
 
Sam <sam@basx.dev> 
parents:  
diff
changeset
 | 
69 | 
| 
 
2a0c81fa541d
add: audio test, be aware that the file tests/audiotest.PCM.s16le.48000.2 needs to be manually generated and placed in order for the test to play it successfully
 
Sam <sam@basx.dev> 
parents:  
diff
changeset
 | 
70 | 
| 
 
2a0c81fa541d
add: audio test, be aware that the file tests/audiotest.PCM.s16le.48000.2 needs to be manually generated and placed in order for the test to play it successfully
 
Sam <sam@basx.dev> 
parents:  
diff
changeset
 | 
71 when isMainModule: | 
| 
1135
 
74957cbf589b
fix: update tests according to some API renaming
 
sam <sam@basx.dev> 
parents: 
980 
diff
changeset
 | 
72 StartMixerThread() | 
| 
407
 
ffc265916415
did: improve/refactor some of the material API
 
Sam <sam@basx.dev> 
parents: 
394 
diff
changeset
 | 
73 test1() | 
| 
1135
 
74957cbf589b
fix: update tests according to some API renaming
 
sam <sam@basx.dev> 
parents: 
980 
diff
changeset
 | 
74 mixer[].Stop() | 
| 
407
 
ffc265916415
did: improve/refactor some of the material API
 
Sam <sam@basx.dev> 
parents: 
394 
diff
changeset
 | 
75 test2() | 
| 
1135
 
74957cbf589b
fix: update tests according to some API renaming
 
sam <sam@basx.dev> 
parents: 
980 
diff
changeset
 | 
76 mixer[].Stop() | 
| 
428
 
545b4c58601f
add: proper sound test, from public domain
 
Sam <sam@basx.dev> 
parents: 
407 
diff
changeset
 | 
77 test3() | 
| 
 
545b4c58601f
add: proper sound test, from public domain
 
Sam <sam@basx.dev> 
parents: 
407 
diff
changeset
 | 
78 | 
| 
1135
 
74957cbf589b
fix: update tests according to some API renaming
 
sam <sam@basx.dev> 
parents: 
980 
diff
changeset
 | 
79 while mixer[].IsPlaying(): | 
| 
 
74957cbf589b
fix: update tests according to some API renaming
 
sam <sam@basx.dev> 
parents: 
980 
diff
changeset
 | 
80 discard mixer[].Play("ping", track = "effects", stopOtherSounds = true, level = 0.5) | 
| 980 | 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": | |
| 
1135
 
74957cbf589b
fix: update tests according to some API renaming
 
sam <sam@basx.dev> 
parents: 
980 
diff
changeset
 | 
85 mixer[].Stop() | 
| 980 | 86 elif defined(windows): | 
| 87 sleep(5) | |
| 
1135
 
74957cbf589b
fix: update tests according to some API renaming
 
sam <sam@basx.dev> 
parents: 
980 
diff
changeset
 | 
88 mixer[].Stop() | 
