回答編集履歴
1
追記
test
CHANGED
@@ -1,23 +1,49 @@
|
|
1
1
|
まずは
|
2
2
|
|
3
|
-
- レベル開始時「ピロリ」と1走行中の「ドレミ~ミレド」のメロディ(楽譜)を用意
|
3
|
+
- レベル開始時「ピロリ」と1走行中の「ドレミ~」or「~ミレド」のメロディ(楽譜)を用意
|
4
4
|
- 各レベルのBPMと走行(繰り返し)回数を計算
|
5
5
|
|
6
6
|
します。
|
7
|
-
|
8
7
|
あとは音データをMIDI形式で作成するとよいでしょう。和音も表現できますし、音色も指定できます。
|
9
|
-
|
8
|
+
MIDIの作成は[music21](https://web.mit.edu/music21/)を使えば比較的簡単にできます。
|
10
|
-
|
11
9
|
参考:
|
12
10
|
[20mシャトルランの速さ](https://newbal.wiki.fc2.com/wiki/20m%E3%82%B7%E3%83%A3%E3%83%88%E3%83%AB%E3%83%A9%E3%83%B3%E3%81%AE%E9%80%9F%E3%81%95)
|
13
11
|
[20mシャトルラン(往復持久走)](https://www.health-net.or.jp/tairyoku_up/sub/t4_02/08.html)
|
14
12
|
[シャトルランの楽譜を作ってみた](https://www.youtube.com/watch?v=M3AjjbbDrTU)
|
15
13
|
```Python
|
14
|
+
from music21 import *
|
16
15
|
import math
|
17
16
|
|
17
|
+
# レベル開始時のメロディ
|
18
|
-
st
|
18
|
+
def add_start(s):
|
19
|
+
c = chord.Chord([note.Note('C5'),note.Note('C6')], quarterLength=0.25)
|
20
|
+
s.append(c)
|
21
|
+
c = chord.Chord([note.Note('G4'),note.Note('G5')], quarterLength=0.25)
|
22
|
+
s.append(c)
|
23
|
+
c = chord.Chord([note.Note('D5'),note.Note('D6')], quarterLength=0.5)
|
24
|
+
s.append(c)
|
19
25
|
|
26
|
+
# 1走行中のメロディ
|
27
|
+
def add_run(s, is_up, is_end):
|
28
|
+
|
29
|
+
# 音階の向き
|
30
|
+
ns = [f'{c}4' for c in 'CDEFGAB'] + ['C5']
|
31
|
+
if not is_up:
|
32
|
+
ns.reverse()
|
33
|
+
s.append([note.Note(n) for n in ns])
|
34
|
+
|
35
|
+
# 最後以外は和音が入る
|
36
|
+
if not is_end:
|
37
|
+
c = chord.Chord([note.Note('C4'),note.Note('C3')])
|
38
|
+
s.append(c)
|
39
|
+
|
40
|
+
|
41
|
+
s = stream.Stream()
|
42
|
+
s.append(meter.TimeSignature('9/4'))
|
43
|
+
|
44
|
+
st_cnt = 1 # 累積開始回
|
45
|
+
total_cnt = 0# 累積走行数
|
20
|
-
for i in range(
|
46
|
+
for i in range(19):
|
21
47
|
|
22
48
|
# 走行速度 m/h
|
23
49
|
if i == 0:
|
@@ -32,12 +58,20 @@
|
|
32
58
|
loop_cnt += 1
|
33
59
|
|
34
60
|
ed_cnt = st_cnt + loop_cnt - 1 # 累積終了回
|
61
|
+
bpm = 60 / 8000 * v
|
62
|
+
print(f'Lv={i+1:2}, 回数={st_cnt:3}~{ed_cnt:3}({loop_cnt:2}), BPM={bpm:6.2f}, 走行速度={v/1000:4.1f}')
|
63
|
+
st_cnt = ed_cnt + 1
|
35
64
|
|
65
|
+
# MIDIデータの作成
|
66
|
+
s.append(tempo.MetronomeMark(number=bpm))
|
67
|
+
add_start(s)
|
36
|
-
|
68
|
+
for i in range(loop_cnt):
|
69
|
+
add_run(s, total_cnt%2==0, i == (loop_cnt-1))
|
70
|
+
total_cnt += 1
|
37
71
|
|
38
|
-
|
72
|
+
s.write('midi', 'run.mid')
|
39
|
-
|
40
|
-
|
73
|
+
print('show')
|
74
|
+
s.show()
|
41
75
|
"""
|
42
76
|
Lv= 1, 回数= 1~ 7( 7), BPM= 60.00, 走行速度= 8.0
|
43
77
|
Lv= 2, 回数= 8~ 15( 8), BPM= 67.50, 走行速度= 9.0
|
@@ -58,10 +92,8 @@
|
|
58
92
|
Lv=17, 回数=172~185(14), BPM=123.75, 走行速度=16.5
|
59
93
|
Lv=18, 回数=186~200(15), BPM=127.50, 走行速度=17.0
|
60
94
|
Lv=19, 回数=201~215(15), BPM=131.25, 走行速度=17.5
|
61
|
-
Lv=20, 回数=216~231(16), BPM=135.00, 走行速度=18.0
|
62
|
-
Lv=21, 回数=232~247(16), BPM=138.75, 走行速度=18.5
|
63
|
-
Lv=22, 回数=248~263(16), BPM=142.50, 走行速度=19.0
|
64
95
|
"""
|
65
96
|
```
|
97
|
+

|
66
98
|
|
67
99
|
|