annotate semiconginev2/old/platform/windows/audio.nim @ 1222:3c3d4d7a8ecd compiletime-tests

did: cleanup config file
author sam <sam@basx.dev>
date Wed, 17 Jul 2024 21:08:15 +0700
parents 56781cc0fc7c
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
860
3586266ba74e fix: logging output on windows
sam <sam@basx.dev>
parents: 840
diff changeset
1 import std/os
3586266ba74e fix: logging output on windows
sam <sam@basx.dev>
parents: 840
diff changeset
2
1013
967b8fa81b6b add: thirdparty libraries into repo
sam <sam@basx.dev>
parents: 920
diff changeset
3 import ../../thirdparty/winim/winim
967b8fa81b6b add: thirdparty libraries into repo
sam <sam@basx.dev>
parents: 920
diff changeset
4 import ../../thirdparty/winim/winim/extra
840
44ec744fbedc did: package restructuring according to nimble recommendation for libraries
Sam <sam@basx.dev>
parents:
diff changeset
5
44ec744fbedc did: package restructuring according to nimble recommendation for libraries
Sam <sam@basx.dev>
parents:
diff changeset
6 import ../../core/audiotypes
44ec744fbedc did: package restructuring according to nimble recommendation for libraries
Sam <sam@basx.dev>
parents:
diff changeset
7
1138
02e1d2658ff5 did: more renaming
sam <sam@basx.dev>
parents: 1013
diff changeset
8 template CheckWinMMResult*(call: untyped) =
840
44ec744fbedc did: package restructuring according to nimble recommendation for libraries
Sam <sam@basx.dev>
parents:
diff changeset
9 let value = call
44ec744fbedc did: package restructuring according to nimble recommendation for libraries
Sam <sam@basx.dev>
parents:
diff changeset
10 if value < 0:
44ec744fbedc did: package restructuring according to nimble recommendation for libraries
Sam <sam@basx.dev>
parents:
diff changeset
11 raise newException(Exception, "Windows multimedia error: " & astToStr(call) &
44ec744fbedc did: package restructuring according to nimble recommendation for libraries
Sam <sam@basx.dev>
parents:
diff changeset
12 " returned " & $value)
44ec744fbedc did: package restructuring according to nimble recommendation for libraries
Sam <sam@basx.dev>
parents:
diff changeset
13 type
44ec744fbedc did: package restructuring according to nimble recommendation for libraries
Sam <sam@basx.dev>
parents:
diff changeset
14 NativeSoundDevice* = object
44ec744fbedc did: package restructuring according to nimble recommendation for libraries
Sam <sam@basx.dev>
parents:
diff changeset
15 handle: HWAVEOUT
44ec744fbedc did: package restructuring according to nimble recommendation for libraries
Sam <sam@basx.dev>
parents:
diff changeset
16 buffers: seq[WAVEHDR]
1013
967b8fa81b6b add: thirdparty libraries into repo
sam <sam@basx.dev>
parents: 920
diff changeset
17
1138
02e1d2658ff5 did: more renaming
sam <sam@basx.dev>
parents: 1013
diff changeset
18 proc OpenSoundDevice*(sampleRate: uint32, buffers: seq[ptr SoundData]): NativeSoundDevice =
840
44ec744fbedc did: package restructuring according to nimble recommendation for libraries
Sam <sam@basx.dev>
parents:
diff changeset
19 var format = WAVEFORMATEX(
44ec744fbedc did: package restructuring according to nimble recommendation for libraries
Sam <sam@basx.dev>
parents:
diff changeset
20 wFormatTag: WAVE_FORMAT_PCM,
44ec744fbedc did: package restructuring according to nimble recommendation for libraries
Sam <sam@basx.dev>
parents:
diff changeset
21 nChannels: 2,
44ec744fbedc did: package restructuring according to nimble recommendation for libraries
Sam <sam@basx.dev>
parents:
diff changeset
22 nSamplesPerSec: DWORD(sampleRate),
44ec744fbedc did: package restructuring according to nimble recommendation for libraries
Sam <sam@basx.dev>
parents:
diff changeset
23 nAvgBytesPerSec: DWORD(sampleRate) * 4,
44ec744fbedc did: package restructuring according to nimble recommendation for libraries
Sam <sam@basx.dev>
parents:
diff changeset
24 nBlockAlign: 4,
44ec744fbedc did: package restructuring according to nimble recommendation for libraries
Sam <sam@basx.dev>
parents:
diff changeset
25 wBitsPerSample: 16,
44ec744fbedc did: package restructuring according to nimble recommendation for libraries
Sam <sam@basx.dev>
parents:
diff changeset
26 cbSize: 0,
44ec744fbedc did: package restructuring according to nimble recommendation for libraries
Sam <sam@basx.dev>
parents:
diff changeset
27 )
1143
d7891cf88359 fix: missing API changes
user@DESKTOP-COG985U.localdomain
parents: 1138
diff changeset
28 CheckWinMMResult waveOutOpen(addr result.handle, WAVE_MAPPER, addr format, DWORD_PTR(0), DWORD_PTR(0), CALLBACK_NULL)
840
44ec744fbedc did: package restructuring according to nimble recommendation for libraries
Sam <sam@basx.dev>
parents:
diff changeset
29
44ec744fbedc did: package restructuring according to nimble recommendation for libraries
Sam <sam@basx.dev>
parents:
diff changeset
30 for i in 0 ..< buffers.len:
44ec744fbedc did: package restructuring according to nimble recommendation for libraries
Sam <sam@basx.dev>
parents:
diff changeset
31 result.buffers.add WAVEHDR(
44ec744fbedc did: package restructuring according to nimble recommendation for libraries
Sam <sam@basx.dev>
parents:
diff changeset
32 lpData: cast[cstring](addr buffers[i][][0]),
44ec744fbedc did: package restructuring according to nimble recommendation for libraries
Sam <sam@basx.dev>
parents:
diff changeset
33 dwBufferLength: DWORD(buffers[i][].len * sizeof(Sample)),
44ec744fbedc did: package restructuring according to nimble recommendation for libraries
Sam <sam@basx.dev>
parents:
diff changeset
34 dwLoops: 1,
44ec744fbedc did: package restructuring according to nimble recommendation for libraries
Sam <sam@basx.dev>
parents:
diff changeset
35 )
44ec744fbedc did: package restructuring according to nimble recommendation for libraries
Sam <sam@basx.dev>
parents:
diff changeset
36 for i in 0 ..< result.buffers.len:
1143
d7891cf88359 fix: missing API changes
user@DESKTOP-COG985U.localdomain
parents: 1138
diff changeset
37 CheckWinMMResult waveOutPrepareHeader(result.handle, addr result.buffers[i], UINT(sizeof(WAVEHDR)))
d7891cf88359 fix: missing API changes
user@DESKTOP-COG985U.localdomain
parents: 1138
diff changeset
38 CheckWinMMResult waveOutWrite(result.handle, addr result.buffers[i], UINT(sizeof(WAVEHDR)))
1013
967b8fa81b6b add: thirdparty libraries into repo
sam <sam@basx.dev>
parents: 920
diff changeset
39
1138
02e1d2658ff5 did: more renaming
sam <sam@basx.dev>
parents: 1013
diff changeset
40 proc WriteSoundData*(soundDevice: var NativeSoundDevice, buffer: int) =
840
44ec744fbedc did: package restructuring according to nimble recommendation for libraries
Sam <sam@basx.dev>
parents:
diff changeset
41 while (soundDevice.buffers[buffer].dwFlags and WHDR_DONE) == 0:
860
3586266ba74e fix: logging output on windows
sam <sam@basx.dev>
parents: 840
diff changeset
42 sleep(1)
1143
d7891cf88359 fix: missing API changes
user@DESKTOP-COG985U.localdomain
parents: 1138
diff changeset
43 CheckWinMMResult waveOutWrite(soundDevice.handle, addr soundDevice.buffers[buffer], UINT(sizeof(WAVEHDR)))
840
44ec744fbedc did: package restructuring according to nimble recommendation for libraries
Sam <sam@basx.dev>
parents:
diff changeset
44
1138
02e1d2658ff5 did: more renaming
sam <sam@basx.dev>
parents: 1013
diff changeset
45 proc CloseSoundDevice*(soundDevice: var NativeSoundDevice) =
840
44ec744fbedc did: package restructuring according to nimble recommendation for libraries
Sam <sam@basx.dev>
parents:
diff changeset
46 for i in 0 ..< soundDevice.buffers.len:
44ec744fbedc did: package restructuring according to nimble recommendation for libraries
Sam <sam@basx.dev>
parents:
diff changeset
47 discard waveOutUnprepareHeader(soundDevice.handle, addr soundDevice.buffers[i], UINT(sizeof(WAVEHDR)))
44ec744fbedc did: package restructuring according to nimble recommendation for libraries
Sam <sam@basx.dev>
parents:
diff changeset
48 waveOutClose(soundDevice.handle)