-
Notifications
You must be signed in to change notification settings - Fork 0
/
metronome.kv
105 lines (98 loc) · 3.06 KB
/
metronome.kv
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
#: import mtr metronome
<BeatBar>:
# canvas:
# Color:
# rgba: (0, 0, 0, 0.5)
# Line:
# points:
# [self.x, self.y,
# self.x, self.y + self.height,
# self.x + self.width, self.y + self.height,
# self.x + self.width, self.y]
# width: 2
# joint: 'round'
# close: True
<Metronome>:
id: metronome
box: box
beatbar: beatbar
buttonbar: buttonbar
titlebar: titlebar
top: self.top_prop
size_hint: [None, None]
size: [800, 300]
BoxLayout:
id: box
pos_hint: {"center": [0.5, 0.5]}
size_hint: [None, None]
orientation: "vertical"
canvas:
Color:
rgba: (1, 1, 1, 0.5)
Rectangle:
size: self.size
pos: self.pos
TitleBar:
id: titlebar
metronome: metronome
size_hint: [1, 0.3]
Button:
size_hint: [0.25, 1]
text: "-"
font_name: "./fonts/Impact"
font_size: 50
on_press: metronome.increment_bpm(-1)
TextInput:
size_hint: [0.5, 1]
text: str(metronome.bpm) + " BPM"
font_name: "./fonts/Impact"
font_size: 26
valign: True
halign: "center"
multiline: False
on_focus: titlebar.validate_text(self, self.text)
Button:
size_hint: [0.25, 1]
text: "+"
font_name: "./fonts/Impact"
font_size: 50
on_press: metronome.increment_bpm(1)
FloatLayout:
canvas:
PushMatrix
Color:
rgba: (0, 0, 0, 0.5)
Translate:
y: -self.height
x: self.width/2 - self.height
Ellipse:
size: [self.height*2, self.height*2]
pos: self.pos
angle_start: -root.max_needle_angle
angle_end: root.max_needle_angle
PopMatrix
PushMatrix
Rotate:
angle: root.needle_angle
axis: 0, 0, 1
origin: [self.width * 0.5 + self.x, self.y]
Color:
rgba: (0, 0, 0, 0.5)
Rectangle:
size: [self.width * 0.02, self.height * 0.85]
pos: [self.width * 0.5 - self.width * 0.01 + self.x, self.y]
PopMatrix
BeatBar:
id: beatbar
size_hint: [1, 0.4]
num_beats: metronome.num_beats
BoxLayout:
id: buttonbar
size_hint: [1, 0.2]
pos_hint: {"center_x": 0.5, "bottom": 0}
Button:
text: "Play"
on_press: root.play()
Button:
text: "Stop"
on_press: root.stop()