回答編集履歴

3

コードの修正

2023/01/19 21:15

投稿

86ps
86ps

スコア66

test CHANGED
@@ -5,7 +5,7 @@
5
5
  ```waveOutOpen```関数でデバイスを開いた状態(time.sleep関数を使うなどで開いた状態を保持する)で、通知領域のスピーカーアイコンを右クリックし「音量ミキサーを開く(M)」を選択して表示される音量ミキサーで、Pythonの音量が0でないか確認すると良いと思います。
6
6
 
7
7
 
8
- ```
8
+ ``` Python
9
9
  import ctypes
10
10
  from ctypes import wintypes
11
11
 
@@ -47,9 +47,18 @@
47
47
 
48
48
  winmm.waveOutClose(device_handle)
49
49
 
50
- print(f"\nresult{vol.value:08X}")
50
+ print(f"\nresult : {vol.value:08X}")
51
51
  print(f"左チャネル : {vol.value&0xffff:04X}")
52
52
  print(f"右チャネル : {vol.value>>16:04X}")
53
53
 
54
54
  main()
55
55
  ```
56
+
57
+ 実行結果
58
+ > waveOutOpen errorCode 0
59
+ > waveOutGetVolume errorCode 0
60
+ >
61
+ > result : 0000FFFF
62
+ > 左チャネル : FFFF
63
+ > 右チャネル : 0000
64
+

2

コードの修正

2023/01/19 21:10

投稿

86ps
86ps

スコア66

test CHANGED
@@ -8,7 +8,6 @@
8
8
  ```
9
9
  import ctypes
10
10
  from ctypes import wintypes
11
-
12
11
 
13
12
  CALLBACK_NULL = 0x0000_0000
14
13
 
@@ -21,8 +20,7 @@
21
20
  ("wBitsPerSample", wintypes.WORD),
22
21
  ("cbSize", wintypes.WORD)]
23
22
 
24
-
25
- def main() -> int:
23
+ def main():
26
24
  wave_format = WAVEFORMATEX()
27
25
  wave_format.wFormatTag = 1 # WAVE_FORMAT_PCM
28
26
  wave_format.nChannels = 2
@@ -38,20 +36,20 @@
38
36
  device_handle = wintypes.HANDLE()
39
37
  open_result = waveOutOpen(ctypes.byref(device_handle), wintypes.UINT(-1), ctypes.byref(wave_format), 0, 0, CALLBACK_NULL)
40
38
  print("waveOutOpen errorCode", open_result)
39
+
40
+
41
41
  # import time
42
- # time.sleep(10)
42
+ # time.sleep(30)
43
+
43
- vol = wintypes.DWORD() # この変数のポインタを指定して関数を実行
44
+ vol = wintypes.DWORD()
44
45
  get_vol = winmm.waveOutGetVolume(device_handle, ctypes.byref(vol))
45
46
  print("waveOutGetVolume errorCode", get_vol)
46
47
 
47
-
48
-
49
48
  winmm.waveOutClose(device_handle)
50
49
 
51
- print("\nresult", f"{vol.value:08X}")
50
+ print(f"\nresult{vol.value:08X}")
52
- print("左チャネル :" + hex(vol.value&0xffff))
51
+ print(f"左チャネル : {vol.value&0xffff:04X}")
53
- print("右チャネル :" + hex(vol.value>>16))
52
+ print(f"右チャネル : {vol.value>>16:04X}")
54
53
 
55
54
  main()
56
-
57
55
  ```

1

文章の修正

2023/01/19 21:05

投稿

86ps
86ps

スコア66

test CHANGED
@@ -2,7 +2,7 @@
2
2
  ```waveOutOpen```関数の3つ目の引数が、WAVEFORMATEX型のポインターになっていなかったり、```vol```の型が```ctypes.c_ulong()```または```wintypes.DWORD()```になっていなかったりしていますが、私の環境では取得できました。
3
3
 
4
4
  結果が0であるということは、音量が0である可能性があります。
5
- ```waveOutOpen```関数でデバイスを開いた状態(time.sleepを使うなどで開いた状態を保持する)で、通知領域のスピーカーアイコンを右クリックし「音量ミキサーを開く(M)」を選択して表示される音量ミキサーで、Pythonの音量が0でないか確認すると良いと思います。
5
+ ```waveOutOpen```関数でデバイスを開いた状態(time.sleep関数を使うなどで開いた状態を保持する)で、通知領域のスピーカーアイコンを右クリックし「音量ミキサーを開く(M)」を選択して表示される音量ミキサーで、Pythonの音量が0でないか確認すると良いと思います。
6
6
 
7
7
 
8
8
  ```