annotate old_tests/test_audio.nim @ 1321:385dbd68a947

did: a TON of copy elimination, some tests run now waaaay faster
author sam <sam@basx.dev>
date Thu, 15 Aug 2024 12:12:27 +0700
parents 6360c8d17ce0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
a4aa9f374d44 did: more renaming
sam <sam@basx.dev>
parents: 1135
diff changeset
9 mixer[].AddSound("test1", NewSound(SineSoundData(1000, 2, 44100)))
a4aa9f374d44 did: more renaming
sam <sam@basx.dev>
parents: 1135
diff changeset
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
a4aa9f374d44 did: more renaming
sam <sam@basx.dev>
parents: 1135
diff changeset
32 c = SineSoundData(261.6256, 0.5, 44100)
a4aa9f374d44 did: more renaming
sam <sam@basx.dev>
parents: 1135
diff changeset
33 d = SineSoundData(293.6648, 0.5, 44100)
a4aa9f374d44 did: more renaming
sam <sam@basx.dev>
parents: 1135
diff changeset
34 e = SineSoundData(329.6276, 0.5, 44100)
a4aa9f374d44 did: more renaming
sam <sam@basx.dev>
parents: 1135
diff changeset
35 f = SineSoundData(349.2282, 0.5, 44100)
a4aa9f374d44 did: more renaming
sam <sam@basx.dev>
parents: 1135
diff changeset
36 g = SineSoundData(391.9954, 0.5, 44100)
a4aa9f374d44 did: more renaming
sam <sam@basx.dev>
parents: 1135
diff changeset
37 a = SineSoundData(440.0000, 0.5, 44100)
a4aa9f374d44 did: more renaming
sam <sam@basx.dev>
parents: 1135
diff changeset
38 b = SineSoundData(493.8833, 0.5, 44100)
a4aa9f374d44 did: more renaming
sam <sam@basx.dev>
parents: 1135
diff changeset
39 bb = SineSoundData(466.1638, 0.5, 44100)
a4aa9f374d44 did: more renaming
sam <sam@basx.dev>
parents: 1135
diff changeset
40 c2 = SineSoundData(523.2511, 0.5, 44100)
a4aa9f374d44 did: more renaming
sam <sam@basx.dev>
parents: 1135
diff changeset
41 d2 = SineSoundData(587.3295, 0.5, 44100)
a4aa9f374d44 did: more renaming
sam <sam@basx.dev>
parents: 1135
diff changeset
42 bbShort = SineSoundData(466.1638, 0.25, 44100)
a4aa9f374d44 did: more renaming
sam <sam@basx.dev>
parents: 1135
diff changeset
43 c2Short = SineSoundData(523.2511, 0.25, 44100)
a4aa9f374d44 did: more renaming
sam <sam@basx.dev>
parents: 1135
diff changeset
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
a4aa9f374d44 did: more renaming
sam <sam@basx.dev>
parents: 1135
diff changeset
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
a4aa9f374d44 did: more renaming
sam <sam@basx.dev>
parents: 1135
diff changeset
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
1ba0e5dfbf68 fix: windows audio test
sam <sam@basx.dev>
parents: 428
diff changeset
81 # on windows we re-open stdin and this will not work
1ba0e5dfbf68 fix: windows audio test
sam <sam@basx.dev>
parents: 428
diff changeset
82 when defined(linux):
1ba0e5dfbf68 fix: windows audio test
sam <sam@basx.dev>
parents: 428
diff changeset
83 echo "Press q and enter to exit"
1ba0e5dfbf68 fix: windows audio test
sam <sam@basx.dev>
parents: 428
diff changeset
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
1ba0e5dfbf68 fix: windows audio test
sam <sam@basx.dev>
parents: 428
diff changeset
86 elif defined(windows):
1ba0e5dfbf68 fix: windows audio test
sam <sam@basx.dev>
parents: 428
diff changeset
87 sleep(5)
1135
74957cbf589b fix: update tests according to some API renaming
sam <sam@basx.dev>
parents: 980
diff changeset
88 mixer[].Stop()