前提
pythonにてシャトルランプログラムを作っている途中です。
実現したいこと
実際のシャトルランの音源は大体20分までなのですが、pythonでもっと長い時間まであるシャトルランの音源を作りたいです。
beep音を頑張って重ねるか、playsoundか何かしらでwavを流すかで迷っています。
そもそもBeep音はpythonで重ねられますか?また、pythonで流すwavファイルは音程そのままで倍速にできたりするのでしょうか?
発生している問題・エラーメッセージ
現在python標準搭載のbeep音を使っているのですがシャトルランのレベルアップ時のちゃららん という音楽を流すときに音を重ねられずテンポがずれます。
該当のソースコード
Python
1import winsound 2import time 3from fractions import Fraction 4 5a=(400) 6b=(0.6) 7 8winsound.Beep(523,a) 9time.sleep(b) 10 11winsound.Beep(1046,a) 12time.sleep(b) 13 14counter=1 15Result=0 16speed = 9 17speed = float(speed) 18print(type(speed)) 19while 1: 20 21 Result+= 1 22 print(Result,'回目') 23 24 deadline=3600/(speed*1000/20) 25 beeplong=float(deadline)/float(8) 26 v=400*beeplong 27 z=0.6*beeplong 28 y=v+(z*900) 29 x=int((v+(z*1000))/4) 30 print (deadline) 31 32 winsound.Beep(523,int(v)) 33 time.sleep(z) 34 winsound.Beep(587,int(v)) 35 time.sleep(z) 36 winsound.Beep(659,int(v)) 37 time.sleep(z) 38 winsound.Beep(698,int(v)) 39 time.sleep(z) 40 winsound.Beep(783,int(v)) 41 time.sleep(z) 42 winsound.Beep(880,int(v)) 43 time.sleep(z) 44 winsound.Beep(987,int(v)) 45 time.sleep(z) 46 winsound.Beep(1046,int(v)) 47 time.sleep(z) 48 counter+=1 49 50 if 60<deadline*counter: 51 counter=1 52 if speed == 9.0: 53 speed+=1 54 else: 55 speed+=0.5 56 winsound.Beep(523,x) 57 winsound.Beep(587,x) 58 winsound.Beep(659,x) 59 time.sleep(x/1000) 60 else: 61 winsound.Beep(523,int(y)) 62 time.sleep(z*0.1) 63 64 print ('counter=',counter) 65 print ('deadline=',deadline) 66 print ('beeplong=',beeplong) 67 print (deadline*counter) 68 print (v) 69 print (z) 70 print ('speed=',speed) 71 72 73 deadline=3600/(speed*1000/20) 74 beeplong=float(deadline)/float(8) 75 v=400*beeplong 76 z=0.6*beeplong 77 y=v+(z*900) 78 x=int((v+(z*1000))/4) 79 print (deadline) 80 81 winsound.Beep(1046,int(v)) 82 time.sleep(z) 83 winsound.Beep(987,int(v)) 84 time.sleep(z) 85 winsound.Beep(880,int(v)) 86 time.sleep(z) 87 winsound.Beep(783,int(v)) 88 time.sleep(z) 89 winsound.Beep(698,int(v)) 90 time.sleep(z) 91 winsound.Beep(659,int(v)) 92 time.sleep(z) 93 winsound.Beep(587,int(v)) 94 time.sleep(z) 95 winsound.Beep(523,int(v)) 96 time.sleep(z) 97 counter+=1 98 99 if 60<deadline*counter: 100 counter=1 101 if speed == 9.0: 102 speed+=1 103 else: 104 speed+=0.5 105 winsound.Beep(523,x) 106 winsound.Beep(587,x) 107 winsound.Beep(659,x) 108 time.sleep(x/1000) 109 else: 110 winsound.Beep(523,int(y)) 111 time.sleep(z*0.1) 112 113 print ('counter=',counter) 114 print ('deadline=',deadline) 115 print ('beeplong=',beeplong) 116 print (deadline*counter) 117 print (v) 118 print (z) 119 print ('speed=',speed) 120
補足情報(FW/ツールのバージョンなど)
シャトルランの速度アップのルールは最初は時速8kmでレベルが2になると時速9kmになりそっからレベルが上がるごとに時速0.5kmずつ速度が上がっていきます。レベルアップの条件は1分ごとに上がっていくだけです。

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/09/10 23:22
2022/09/11 00:09
2022/09/11 08:53
2022/09/11 09:39
2022/09/11 12:56
2022/09/11 14:10
2022/09/12 13:59
2022/09/12 14:22