質問するログイン新規登録

質問編集履歴

3

アドバイス頂いた後のコード

2021/06/26 11:40

投稿

dendenmushi
dendenmushi

スコア98

title CHANGED
File without changes
body CHANGED
@@ -309,4 +309,46 @@
309
309
  コメントに記載してみます。
310
310
 
311
311
  multiprocessingが簡易なのではとコーディングしましたが、音楽は流れて波形も表示されていますが、画像表示のボタンを押した際にフリーズになってしまいました。
312
- ![イメージ説明](47f4eab8e89f0b60f80cd380bf6ae0e8.png)
312
+ ![イメージ説明](47f4eab8e89f0b60f80cd380bf6ae0e8.png)
313
+
314
+ ### アドバイス頂いた直後に実践したコード
315
+ ```python
316
+ # 先頭に
317
+ # ファイルの先頭で
318
+ import logging
319
+ logger = logging.getLogger(__name__)
320
+
321
+ # ログにスレッド名を表示&ロギングを有効にする設定
322
+ # if __name__ == "__main__": 内に置きたいが、なければファイル先頭でもok
323
+ logging.basicConfig(level=logging.DEBUG, format="[%(threadName)-10s][%(levelname)-8s] %(message)s")
324
+
325
+ # logger モジュールは、スレッドセーフなので、どこからでも安全に呼び出せます。
326
+ # print の代わりに利用 logger.info, logger.debug, logger.error, 等
327
+ fn = "futta-fly.wav"
328
+ logger.debug(f"debug message: {fn=}") # f-string で変数 fn を表示
329
+
330
+ #~略~
331
+
332
+ def play_audio():
333
+ # TODO: リソース作成・解放はスレッド側で完結する
334
+ wf = wave.open(filename, "r")
335
+ # ストリームを開く
336
+ p = pyaudio.PyAudio()
337
+ stream = p.open(format=p.get_format_from_width(wf.getsampwidth()),
338
+ channels=wf.getnchannels(),
339
+ rate=wf.getframerate(),
340
+ output=True)
341
+
342
+ # 音声を再生
343
+ data = wf.readframes(CHUNK)
344
+ while True:
345
+ stream.write(data)
346
+ redraw()
347
+
348
+ elif event in '-do-':
349
+ # ボタンを押した時に開始
350
+ thread = threading.Thread(target=play_audio, args=(data_que,ui_que), daemon=True)
351
+ thread.start()
352
+ ```
353
+ doボタンを押下しても下記コンソールのみですぐウィンドウが閉じてしまいました。
354
+ ![イメージ説明](7cea8bb5616aeb13c2da03f2651efd0f.png)

2

アドバイス実践①追加

2021/06/26 11:40

投稿

dendenmushi
dendenmushi

スコア98

title CHANGED
File without changes
body CHANGED
@@ -301,4 +301,12 @@
301
301
  ### 補足情報(FW/ツールのバージョンなど)
302
302
  windows10
303
303
  PySimpleGUI
304
- Python3.8.8
304
+ Python3.8.8
305
+
306
+ ### アドバイス直後に実装したコード①
307
+
308
+ 先ほどこちらにコード記載したところ18000文字となってしまい8000文字オーバーになってしまいました。
309
+ コメントに記載してみます。
310
+
311
+ multiprocessingが簡易なのではとコーディングしましたが、音楽は流れて波形も表示されていますが、画像表示のボタンを押した際にフリーズになってしまいました。
312
+ ![イメージ説明](47f4eab8e89f0b60f80cd380bf6ae0e8.png)

1

リンク切れ修正

2021/06/26 10:55

投稿

dendenmushi
dendenmushi

スコア98

title CHANGED
File without changes
body CHANGED
@@ -5,8 +5,8 @@
5
5
 
6
6
  ### 参照
7
7
  ①[PySimpleGUIを使用したmultithreadの作り方](https://qiita.com/Gyutan/items/f41f39bc3df7d788ffc5)
8
- ②[スペクトラム波形作成
9
- ](https://teratail.com/questions/289920)
8
+ ②[スペクトラム波形作成](https://teratail.com/questions/289920)
9
+
10
10
  ③[
11
11
  著作権フリーwav](https://music.futta.net/fly.html)は、こちらのwavを使っています。
12
12
  ④[ボタンによる画像選択表示の参照コードサンプル](http://blawat2015.no-ip.com/~mieki256/diary/202003041.html)