Mercurial > games > semicongine
annotate old_tests/test_audio.nim @ 1203:6360c8d17ce0 compiletime-tests
did: preprations to add rendering tests
| author | sam <sam@basx.dev> |
|---|---|
| date | Mon, 15 Jul 2024 20:06:42 +0700 |
| parents | tests/test_audio.nim@114f395b9144 |
| 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() |
