-
Notifications
You must be signed in to change notification settings - Fork 2
/
server.py
165 lines (148 loc) · 8.3 KB
/
server.py
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
from tokenize import String
from flask import Flask
from flask import render_template
from flask import Response, request, jsonify
app = Flask(__name__)
current_id = 1
active = [0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0]
quiz_responses = [-1,-1,-1,-1,-1]
correct_responses = [1,2,1,0,3]
learn_data = [
{
"id": "1",
"topic": "So What ARE Drum Patterns?",
"media": ['<video width="100%" controls> <source src="../static/Dance 1_Trim.mp4" type="video/mp4"></video>'],
"rows": "0",
"ytembed": '',
"audioembed": [],
"yttitle": "",
"alt": "Drum Pattern",
"audio": [],
"subheading": "And how do we teach them?",
"body": ["Drum patterns are, simply put, the ordering of different ‘hits’ (when a drum is played) on a grid. Drum patterns are a useful tool for electronic musicians when creating music. Drum patterns can also be simply the order different drums are heard or played. We teach drum patterns through visualizations and the audio accompanying them."]
},
{
"id": "2",
"topic": "Hip Hop and Trap",
"media": ['<video width="100%" controls> <source src="../static/Hip Hop 1_Trim.mp4" type="video/mp4"></video>', '<video width="100%" controls> <source src="../static/Trap 1_Trim.mp4" type="video/mp4"></video>'],
"rows": "1",
"ytembed": '<iframe width="100%" height="315" src="https://www.youtube.com/embed/MHryuYVyHhk" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>',
"yttitle": "Example of a Trap song at 120 bpm:",
"alt": "Drum Pattern",
"subheading": "Let's Differentiate Them!",
"body": ["Hip Hop primarily utilizes the hi hats, with accompanying kicks to formulate their beat. A snare is often added on three, marking the end of a measure. Hip hop has a very distinctive bounce to it. You can observe the pattern on the left side of the page.", "Trap, although a subgenre of hip hop, is very different. Trap also utilizes hi hats, but instead features triplets and ‘rolls’ (when hi hats are playing in succession very quickly), but with infrequent kicks. A snare is used in a similar way to all hip hop. Trap music is usually quicker than hip hop, broadly. You can observe the pattern on the right side of the page."],
},
{
"id": "3",
"topic": "Dance and Electric Dance Drums",
"media": ['<video width="100%" controls> <source src="../static/Dance 1_Trim.mp4" type="video/mp4"></video>', '<video width="100%" controls> <source src="../static/EDM 1_Trim.mp4" type="video/mp4"></video>'],
"rows": "1",
"ytembed": '<iframe width="100%" height="315" src="https://www.youtube.com/embed/KQ6zr6kCPj8" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>',
"yttitle": "Example of a Dance song at 130 bpm:",
"alt": "Drum Pattern",
"subheading": "Let's Differentiate Them!",
"body": ["Dance music is often in a very simple kick-hihat-snare-hihat pattern, making the thump of the kick drum on every other beat. Dance music is quicker than hip hop. It is usually around 125 beat per minute (like a slow heart beat).", "Vital to EDM (electronic dance music) is the kick drum on every beat; it feels like a fast heartbeat. EDM music is usually a little faster than Dance music, but the snare and hi hat are very similar. The most important distinction is the kick drum on every beat rather than every other."]
},
{
"id": "4",
"topic": "Rock Drums",
"media": ['<video width="100%" controls> <source src="../static/Rock 1_Trim.mp4" type="video/mp4"></video>'],
"rows": "0",
"ytembed": '<iframe width="100%" height="315" src="https://www.youtube.com/embed/BN1WwnEDWAM" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>',
"yttitle": "Example of a Rock song at 115 bpm:",
"alt": "Drum Pattern",
"subheading": "Let's Differentiate Them!",
"body": ["Rock Drums almost never have two different ‘hits’ (when a drum is played) on the same beat. Rock will be very distinctive in that every drum is loud, instead of just the usual kick and snare. They will often be slower than dance and hip hop as well."],
},
]
quiz_data = [
{
"id": "1",
"question": "What is the genre of this pattern?",
"audioembed": ['<video width="100%" controls> <source src="../static/EDM 2_Trim.mp4" type="video/mp4"></video>'],
"header": "Listen to this Drum Pattern:",
"alt": "Drum Pattern",
"audio": "https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcQ2IBsC-V_4yWbxP6E-mZnylYRTYq2G1lp8_s2XMzHPxkWqmKHp",
"choices": ["Hip-Hop","EDM","Dance","Country"],
"prevans": "-1",
"rightchoice": "1"
},
{
"id": "2",
"question": "What is the genre of this pattern?",
"audioembed": ['<video width="100%" controls> <source src="../static/Dance 2_Trim.mp4" type="video/mp4"></video>'],
"header": "Listen to this Drum Pattern:",
"alt": "Drum Pattern",
"audio": "https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcQ2IBsC-V_4yWbxP6E-mZnylYRTYq2G1lp8_s2XMzHPxkWqmKHp",
"choices": ["Rock","EDM","Dance","Country"],
"prevans": "-1",
"rightchoice": "2"
},
{
"id": "3",
"question": "What is the genre of this pattern?",
"audioembed": ['<video width="100%" controls> <source src="../static/Hip Hop 2_Trim.mp4" type="video/mp4"></video>'],
"header": "Listen to this Drum Pattern:",
"alt": "Drum Pattern",
"audio": "https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcQ2IBsC-V_4yWbxP6E-mZnylYRTYq2G1lp8_s2XMzHPxkWqmKHp",
"choices": ["Country","Hip-Hop","EDM","Rock"],
"prevans": "-1",
"rightchoice": "1"
},
{
"id": "4",
"question": "What is the genre of this pattern?",
"audioembed": ['<video width="100%" controls> <source src="../static/Rock 2_Trim.mp4" type="video/mp4"></video>'],
"header": "Listen to this Drum Pattern:",
"alt": "Drum Pattern",
"audio": "https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcQ2IBsC-V_4yWbxP6E-mZnylYRTYq2G1lp8_s2XMzHPxkWqmKHp",
"choices": ["Rock","Hip-Hop","Dance","Country"],
"prevans": "-1",
"rightchoice": "0"
},
{
"id": "5",
"question": "What is the genre of this pattern?",
"audioembed": ['<video width="100%" controls> <source src="../static/Trap 2_Trim.mp4" type="video/mp4"></video>'],
"header": "Listen to this Drum Pattern:",
"alt": "Drum Pattern",
"audio": "https://encrypted-tbn3.gstatic.com/images?q=tbn:ANd9GcQ2IBsC-V_4yWbxP6E-mZnylYRTYq2G1lp8_s2XMzHPxkWqmKHp",
"choices": ["Rock","Hip-Hop","Country","Trap"],
"prevans": "-1",
"rightchoice": "3"
},
{
"id": "end",
"correct": "0"
},
]
# ROUTES
@app.route('/')
def welcome():
return render_template('welcome.html', active=active)
@app.route('/learn/<learn_id>', methods=['GET', 'POST'])
def learn_term(learn_id):
return render_template('learn.html', learn_id=learn_data[int(learn_id)-1])
@app.route('/quiz/<quiz_id>', methods=['GET', 'POST'])
def quiz_term(quiz_id):
if request.method == "GET":
correct_no=0
if quiz_id == "end" or quiz_id == "6":
for i in range(len(correct_responses)):
if correct_responses[i]==quiz_responses[i]:
correct_no+=1
quiz_data[-1]["correct"]=str(correct_no)
for i in quiz_data[:-1]:
i["prevans"]="-1"
for i in range(len(quiz_responses)):
quiz_responses[i]=-1
return render_template('quiz.html', quiz_data=quiz_data[-1])
return render_template('quiz.html', quiz_data=quiz_data[int(quiz_id)-1])
if request.method == "POST":
postdata=request.form
quiz_data[int(quiz_id)-1]["prevans"]=postdata["choices"]
quiz_responses[int(quiz_id)-1]=int(postdata["choices"])
return {"submitted": postdata["choices"], "correct": str(correct_responses[int(quiz_id)-1])}
# AJAX FUNCTIONS
if __name__ == '__main__':
app.run(debug = True)