-
Notifications
You must be signed in to change notification settings - Fork 0
/
buzzer.py
executable file
·522 lines (503 loc) · 41.7 KB
/
buzzer.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
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
# -*- coding: utf-8 -*-
import time # import the time library
import RPi.GPIO as GPIO # import the GPIO library
NOTE_B0 = 31
NOTE_C1 = 33
NOTE_CS1 = 35
NOTE_D1 = 37
NOTE_DS1 = 39
NOTE_E1 = 41
NOTE_F1 = 44
NOTE_FS1 = 46
NOTE_G1 = 49
NOTE_GS1 = 52
NOTE_A1 = 55
NOTE_AS1 = 58
NOTE_B1 = 62
NOTE_C2 = 65
NOTE_CS2 = 69
NOTE_D2 = 73
NOTE_DS2 = 78
NOTE_E2 = 82
NOTE_F2 = 87
NOTE_FS2 = 93
NOTE_G2 = 98
NOTE_GS2 = 104
NOTE_A2 = 110
NOTE_AS2 = 117
NOTE_B2 = 123
NOTE_C3 = 131
NOTE_CS3 = 139
NOTE_D3 = 147
NOTE_DS3 = 156
NOTE_E3 = 165
NOTE_F3 = 175
NOTE_FS3 = 185
NOTE_G3 = 196
NOTE_GS3 = 208
NOTE_A3 = 220
NOTE_AS3 = 233
NOTE_B3 = 247
NOTE_C4 = 262
NOTE_CS4 = 277
NOTE_D4 = 294
NOTE_DS4 = 311
NOTE_E4 = 330
NOTE_F4 = 349
NOTE_FS4 = 370
NOTE_G4 = 392
NOTE_GS4 = 415
NOTE_A4 = 440
NOTE_AS4 = 466
NOTE_B4 = 494
NOTE_C5 = 523
NOTE_CS5 = 554
NOTE_D5 = 587
NOTE_DS5 = 622
NOTE_E5 = 659
NOTE_F5 = 698
NOTE_FS5 = 740
NOTE_G5 = 784
NOTE_GS5 = 831
NOTE_A5 = 880
NOTE_AS5 = 932
NOTE_B5 = 988
NOTE_C6 = 1047
NOTE_CS6 = 1109
NOTE_D6 = 1175
NOTE_DS6 = 1245
NOTE_E6 = 1319
NOTE_F6 = 1397
NOTE_FS6 = 1480
NOTE_G6 = 1568
NOTE_GS6 = 1661
NOTE_A6 = 1760
NOTE_AS6 = 1865
NOTE_B6 = 1976
NOTE_C7 = 2093
NOTE_CS7 = 2217
NOTE_D7 = 2349
NOTE_DS7 = 2489
NOTE_E7 = 2637
NOTE_F7 = 2794
NOTE_FS7 = 2960
NOTE_G7 = 3136
NOTE_GS7 = 3322
NOTE_A7 = 3520
NOTE_AS7 = 3729
NOTE_B7 = 3951
NOTE_C8 = 4186
NOTE_CS8 = 4435
NOTE_D8 = 4699
NOTE_DS8 = 4978
class Buzzer(object):
def __init__(self):
GPIO.setmode(GPIO.BCM)
self.buzzer_pin = 12 # set to GPIO pin 5
GPIO.setup(self.buzzer_pin, GPIO.IN)
GPIO.setup(self.buzzer_pin, GPIO.OUT)
print("buzzer ready")
def __del__(self):
class_name = self.__class__.__name__
print (class_name, "finished")
def buzz(self, pitch, duration): # create the function “buzz” and feed it the pitch and duration)
if(pitch == 0):
time.sleep(duration)
return
# in physics, the period (sec/cyc) is the inverse of the frequency
# (cyc/sec)
period = 1.0 / pitch
#period = pitch
delay = period / 2 # calcuate the time for half of the wave
# the number of waves to produce is the duration times the frequency
cycles = int(duration * pitch)
for i in range(cycles): # start a loop from 0 to the variable “cycles” calculated above
GPIO.output(self.buzzer_pin, True) # set pin 18 to high
time.sleep(delay * 2) # wait with pin 18 high
GPIO.output(self.buzzer_pin, False) # set pin 18 to low
time.sleep(delay) # wait with pin 18 low
def play(self, tune):
GPIO.setmode(GPIO.BCM)
GPIO.setup(self.buzzer_pin, GPIO.OUT)
x = 0
print("Playing tune ", tune)
if(tune == 1):
pitches = [262, 294, 330, 349, 392, 440, 494,
523, 587, 659, 698, 784, 880, 988, 1047]
duration = 0.1
for p in pitches:
# feed the pitch and duration to the function, “buzz”
self.buzz(p, duration)
time.sleep(duration * 0.5)
for p in reversed(pitches):
self.buzz(p, duration)
time.sleep(duration * 0.5)
elif(tune == 2):
pitches = [262, 330, 392, 523, 1047]
duration = [0.2, 0.2, 0.2, 0.2, 0.2, 0, 5]
for p in pitches:
# feed the pitch and duration to the function, “buzz”
self.buzz(p, duration[x])
time.sleep(duration[x] * 0.5)
x += 1
elif(tune == 3):
pitches = [392, 294, 0, 392, 294, 0, 392, 0, 392, 392, 392, 0, 1047, 262]
duration = [0.2, 0.2, 0.2, 0.2, 0.2, 0.2,
0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.8, 0.4]
for p in pitches:
self.buzz(p, duration[x]) # feed the pitch and duration to the func$
time.sleep(duration[x] * 0.5)
x += 1
elif(tune == 4):
pitches = [1047, 988, 659]
duration = [0.1, 0.1, 0.2]
for p in pitches:
self.buzz(p, duration[x]) # feed the pitch and duration to the func$
time.sleep(duration[x] * 0.5)
x += 1
elif(tune == 6):
pitches = [NOTE_G4, NOTE_C4]
duration = [0.250, 0.500] * len(pitches)
for p in pitches:
self.buzz(p, duration[x]) # feed the pitch and duration to the func$
time.sleep(duration[x] * 0.5)
x += 1
elif(tune == 7):
#pitches = [659, 659, 0, 659, 0, 523, 659, 0, 784, 0,0,0, 392, 0,0,0, 523, 0,0, 392, 0,0,330]
pitches = [NOTE_DS8]
duration = [0.10] * len(pitches)
for p in pitches:
self.buzz(p, duration[x]) # feed the pitch and duration to the func$
time.sleep(duration[x] * 0.5)
x += 1
elif(tune == 5):
pitches = [0x90, 43, 0x91, 55, 0x92, 59, 0x93, 62, 1, 172, 0x94, 50, 1, 172, 0x84, 0x94, 59, 0, 214, 0x95, 62,
0, 53, 0x80, 0x81, 0x82, 0x83, 0, 89, 0x85, 0, 71, 0x90, 67, 0x91, 67, 0, 142, 0x84, 0x80, 0x81, 0, 71,
0x90, 71, 0x91, 71, 0, 142, 0x80, 0x81, 0, 71, 0x90, 35, 0x91, 59, 0x92, 74, 0x93, 71, 0x94, 62, 0x95, 66,
1, 172, 0, 142, 0x82, 0x85, 0x83, 1, 29, 0x92, 54, 0x93, 76, 0x95, 66, 0, 17, 0x82, 0, 124, 0x83,
0, 71, 0x92, 78, 0x93, 78, 0, 53, 0x80, 0x81, 0x84, 1, 47, 0x85, 0, 71, 0x82, 0x83, 0, 214, 0x90, 36,
0x91, 60, 0x92, 76, 0x93, 72, 0x94, 64, 0x95, 67, 1, 172, 0, 142, 0x82, 0x85, 0x83, 1, 29, 0x92, 60,
0x93, 52, 0x95, 71, 1, 11, 0x80, 0x81, 0x84, 0, 160, 0x90, 74, 0x91, 74, 0, 142, 0x83, 0x80, 0x82, 0x85,
0x81, 0, 71, 0x90, 72, 0x91, 72, 0, 142, 0x80, 0x81, 0, 71, 0x90, 38, 0x91, 62, 0x92, 71, 0x93, 66,
0x94, 66, 0x95, 60, 0, 142, 0x82, 0, 71, 0x92, 72, 0, 142, 0x82, 0, 71, 0x92, 45, 0, 142, 0x81,
0x84, 0x85, 0x83, 0, 71, 0x91, 69, 0x93, 69, 0, 71, 0x82, 0, 71, 0x83, 0x81, 0, 71, 0x91, 54, 0x92, 62,
0x93, 54, 0x94, 60, 0x95, 66, 0, 17, 0x83, 0, 249, 0x80, 0, 17, 0x81, 0, 142, 0x90, 45, 0, 142,
0x82, 0x85, 0x84, 0, 142, 0x80, 0, 142, 0x90, 43, 0x91, 55, 0x92, 59, 0x93, 59, 0x94, 62, 0x95, 62, 1, 172,
0, 142, 0x82, 0x84, 1, 29, 0x92, 59, 0, 214, 0x94, 62, 0, 53, 0x80, 0x81, 0x83, 0x85, 0, 89, 0x84,
0, 71, 0x90, 67, 0x91, 67, 0, 142, 0x82, 0x80, 0x81, 0, 71, 0x90, 71, 0x91, 71, 0, 142, 0x80, 0x81,
0, 71, 0x90, 35, 0x91, 59, 0x92, 74, 0x93, 71, 0x94, 62, 0x95, 66, 1, 172, 0, 142, 0x82, 0x85, 0x83,
1, 29, 0x92, 54, 0x93, 74, 0x95, 71, 0, 17, 0x82, 0, 124, 0x83, 0x85, 0, 71, 0x92, 76, 0x93, 76,
0, 53, 0x80, 0x81, 0x84, 0, 89, 0x82, 0x83, 0, 71, 0x90, 78, 0x91, 78, 0, 142, 0, 142, 0x80, 0x81,
0, 142, 0x90, 36, 0x91, 60, 0x92, 76, 0x93, 72, 0x94, 64, 0x95, 67, 1, 172, 0, 142, 0x82, 0x85, 0x83,
1, 29, 0x92, 52, 0, 214, 0x93, 83, 0x95, 76, 0, 53, 0x80, 0x81, 0x84, 0, 89, 0x85, 0x83, 0, 71,
0x90, 76, 0x91, 83, 0x93, 72, 0x94, 83, 0, 142, 0x82, 0x81, 0x83, 0x80, 0x84, 0, 71, 0x90, 83, 0x91, 76,
0x92, 72, 0x93, 83, 0, 142, 0x80, 0x82, 0x81, 0x83, 0, 71, 0x90, 38, 0x91, 83, 0x92, 60, 0x93, 76, 0x94, 64,
0x95, 72, 0, 142, 0x85, 0x83, 0x81, 0, 71, 0x91, 76, 0x93, 79, 0x95, 72, 0, 142, 0x83, 0x85, 0x81, 0, 71,
0x91, 79, 0x93, 76, 0x95, 72, 0, 142, 0x81, 0x82, 0x84, 0x85, 0x83, 0, 71, 0x91, 79, 0x92, 76, 0x93, 72,
0x94, 79, 0, 142, 0x81, 0x83, 0x82, 0x84, 0, 71, 0x91, 50, 0x92, 79, 0x93, 60, 0x94, 54, 0x95, 75, 0, 17,
0x84, 0, 124, 0x85, 0x82, 0, 71, 0x92, 72, 0x94, 75, 0x95, 75, 0, 53, 0x80, 0, 89, 0x84, 0x82, 0x85,
0, 71, 0x90, 75, 0x92, 72, 0x94, 75, 0, 142, 0x81, 0x80, 0x83, 0x82, 0x84, 0, 71, 0x90, 75, 0x91, 72,
0x92, 75, 0, 142, 0x80, 0x81, 0x82, 0, 71, 0x90, 43, 0x91, 75, 0x92, 55, 0x93, 72, 0x94, 59, 0x95, 75,
1, 29, 0x83, 0, 142, 0x93, 50, 0x81, 0x85, 0x91, 74, 0x95, 71, 1, 29, 0x81, 0x85, 0, 142, 0x83, 0x91, 59,
0, 214, 0x93, 62, 0x95, 62, 0, 53, 0x80, 0x82, 0x84, 0, 89, 0x83, 0x85, 0, 71, 0x90, 67, 0x92, 67,
0, 142, 0x81, 0x80, 0x82, 0, 71, 0x90, 71, 0x91, 71, 0, 142, 0x80, 0x81, 0, 71, 0x90, 35, 0x91, 59,
0x92, 74, 0x93, 71, 0x94, 62, 0x95, 66, 0, 142, 0x82, 0x85, 0x83, 0, 71, 0x92, 74, 0x93, 71, 0x95, 66,
1, 29, 0x82, 0x85, 0x83, 0, 142, 0x92, 74, 0x93, 71, 0x95, 66, 0, 214, 0x82, 0x92, 76, 0, 17, 0, 249,
0x80, 0x81, 0x84, 0, 17, 0x82, 0, 142, 0x90, 78, 0x91, 78, 0, 142, 0x85, 0x83, 0, 142, 0x80, 0x81, 0, 142,
0x90, 36, 0x91, 60, 0x92, 79, 0x93, 76, 0x94, 64, 0x95, 67, 1, 172, 0x82, 0x85, 0x83, 0, 214, 0x92, 76,
0x93, 72, 0x95, 76, 0, 142, 0x82, 0x83, 0x85, 0, 71, 0x92, 76, 0x93, 72, 0x95, 52, 0, 196, 0x82, 0x83,
0, 71, 0x80, 0x81, 0x84, 0, 17, 0x90, 74, 0x91, 74, 0, 196, 0x80, 0x81, 0, 89, 0x85, 0x90, 79, 0x91, 79,
0, 196, 0x80, 0x81, 0, 89, 0x90, 45, 0x91, 57, 0x92, 76, 0x93, 69, 0x94, 61, 0x95, 73, 2, 59, 0x80,
0x82, 0x83, 0x85, 1, 29, 0x90, 45, 0x92, 54, 0x93, 81, 0x95, 73, 0, 17, 0x82, 0, 249, 0x81, 0x84, 0, 17,
0x83, 0x85, 0, 142, 0x91, 79, 0x92, 79, 0, 142, 0x80, 0, 142, 0x81, 0x82, 0, 142, 0x90, 38, 0x91, 62,
0x92, 78, 0x93, 74, 0x94, 66, 0x95, 69, 1, 29, 0x80, 0x82, 0x85, 0x83, 0, 142, 0x90, 45, 0x92, 79, 0x93, 79,
1, 29, 0x80, 0x82, 0x83, 0, 142, 0x90, 50, 0x92, 81, 0x93, 81, 1, 29, 0x80, 0x82, 0x83, 0, 142, 0x90, 38,
0x92, 74, 0x93, 69, 0x95, 66, 3, 214, 0x81, 0x84, 0, 17, 0x82, 0x85, 0x83, 0x80, 1, 29, 0x90, 54, 0x91, 50,
0, 17, 0x80, 2, 41, 0x81, 1, 29, 0x90, 58, 0x91, 70, 0x92, 58, 0x93, 62, 0x94, 74, 0x95, 65, 0, 142,
0x81, 0x84, 0, 71, 0x91, 72, 0x94, 76, 0, 142, 0x81, 0x84, 0, 71, 0x91, 74, 0x94, 77, 3, 89, 0x81,
0x84, 0, 214, 0x91, 62, 0x94, 62, 0, 142, 0x81, 0x84, 0, 71, 0x91, 76, 0x94, 76, 0, 142, 0x81, 0x84,
0, 71, 0x91, 74, 0x94, 74, 0, 142, 0x81, 0x84, 0, 71, 0x91, 70, 0x94, 70, 0, 124, 0x82, 0x80, 0x83,
0x85, 0, 160, 0x84, 0x81, 0, 142, 0x90, 69, 0x91, 69, 0x92, 69, 0, 142, 0x81, 0, 71, 0x82, 0x80, 0x90, 67,
0x91, 67, 0x92, 67, 1, 172, 0x80, 0x81, 0x82, 0, 214, 0x90, 59, 0x91, 43, 0x92, 55, 0x93, 38, 0x94, 62,
0x95, 53, 0, 17, 0x83, 1, 11, 0x81, 0x85, 0, 142, 0x91, 41, 0x93, 50, 0, 17, 0x81, 0, 124, 0x80,
0x84, 0, 71, 0x90, 41, 0, 17, 0x80, 0, 53, 0x83, 0, 142, 0x90, 45, 0x91, 43, 0, 17, 0x80, 0, 196,
0x90, 45, 0, 17, 0x80, 0, 53, 0x81, 0, 142, 0x90, 38, 0x91, 60, 0x93, 55, 0x94, 45, 0x95, 64, 0, 17,
0x80, 0x84, 1, 154, 0x82, 0x90, 55, 0x92, 60, 0x94, 64, 2, 59, 0x81, 0x85, 1, 29, 0x91, 76, 0x95, 76,
0, 142, 0x81, 0x85, 0, 71, 0x91, 74, 0x95, 74, 0, 53, 0x83, 0x80, 0x82, 0x84, 0, 89, 0x85, 0x81, 0, 71,
0x90, 70, 0x91, 67, 0x92, 70, 0x93, 70, 1, 29, 0x82, 0x80, 0x81, 0x83, 0, 142, 0x90, 52, 0x91, 45, 0x92, 69,
0x93, 55, 0x94, 38, 0x95, 69, 0, 17, 0x84, 0, 124, 0, 71, 0x82, 0x85, 0x92, 67, 0x94, 67, 0x95, 67,
0, 53, 0x81, 0, 17, 0x80, 0, 142, 0x90, 41, 0x91, 49, 0, 17, 0x80, 0, 124, 0, 71, 0x84, 0x90, 41,
0x85, 0x82, 0, 17, 0x80, 0, 53, 0x81, 0, 142, 0x90, 45, 0x91, 52, 0, 17, 0x80, 0, 196, 0x90, 45,
0, 17, 0x80, 0, 53, 0x81, 0, 142, 0x90, 43, 0x91, 38, 0x92, 67, 0x94, 53, 0x95, 45, 0, 17, 0x81,
0x85, 1, 154, 0x83, 0x91, 55, 0x93, 59, 0x95, 62, 2, 59, 0x82, 1, 29, 0x92, 76, 0, 142, 0x82, 0, 71,
0x92, 74, 0, 17, 0x80, 0, 35, 0x84, 0, 89, 0x82, 0, 71, 0x90, 70, 0x92, 70, 0x94, 70, 1, 29,
0x80, 0x82, 0x84, 0, 142, 0x90, 53, 0x92, 43, 0x94, 69, 0, 17, 0, 124, 0, 71, 0x84, 0x94, 67, 0, 71,
0x80, 0x82, 0, 142, 0x90, 41, 0x92, 50, 0, 17, 0x80, 0, 124, 0, 71, 0x90, 41, 0x84, 0, 17, 0x80,
0, 53, 0x82, 0, 142, 0x90, 45, 0x92, 43, 0, 17, 0x80, 0, 196, 0x90, 45, 0, 17, 0x80, 0, 53,
0x82, 0, 142, 0x90, 60, 0x92, 38, 0x94, 60, 0, 17, 0x82, 1, 154, 0x81, 0x83, 0x85, 0x91, 60, 0x92, 64,
0x93, 67, 3, 89, 0x95, 76, 0, 142, 0x85, 0, 71, 0x95, 74, 0, 142, 0x85, 0, 71, 0x95, 70, 1, 29,
0x85, 0, 142, 0x95, 69, 0, 142, 0, 71, 0x85, 0x95, 67, 1, 83, 0, 17, 0x80, 0x84, 0, 142, 0x85,
0, 71, 0, 71, 0x81, 0x82, 0x83, 1, 172, 0x90, 67, 0x91, 36, 0x92, 67, 0x93, 43, 0x94, 55, 0x95, 79,
0, 12, 0x81, 0, 87, 0x82, 0x80, 0x85, 0, 50, 0x90, 69, 0x91, 69, 0x92, 81, 0x95, 81, 0, 50, 0x83,
0, 50, 0x81, 0x85, 0x80, 0x82, 0, 50, 0x90, 55, 0x91, 70, 0x92, 42, 0x93, 70, 0x95, 82, 0, 12, 0x82,
0, 187, 0x83, 0x80, 0x81, 0x85, 0, 100, 0x90, 38, 0x91, 43, 0x92, 42, 0, 12, 0x80, 0x82, 0, 187, 0x81,
0, 100, 0x90, 62, 0x91, 42, 0x92, 62, 0x93, 55, 0x95, 74, 0, 12, 0x81, 0, 87, 0x82, 0x80, 0x85, 0, 50,
0x90, 64, 0x91, 64, 0x92, 76, 0x95, 76, 0, 50, 0x83, 0, 50, 0x81, 0x85, 0x80, 0x82, 0, 50, 0x90, 43,
0x91, 65, 0x92, 36, 0x93, 65, 0x95, 77, 0, 12, 0x82, 0, 187, 0x80, 0, 100, 0x90, 36, 0x92, 55, 0, 12,
0x80, 0, 75, 0x84, 0, 12, 0x81, 0x85, 0x83, 0, 100, 0x82, 0, 100, 0x90, 60, 0x91, 38, 0x92, 60, 0x93, 43,
0x94, 72, 0x95, 42, 0, 12, 0x81, 0x85, 0, 87, 0x82, 0x80, 0x84, 0, 50, 0x90, 58, 0x91, 58, 0x92, 70,
0x94, 70, 0, 50, 0x83, 0, 50, 0x81, 0x84, 0x80, 0x82, 0, 50, 0x90, 55, 0x91, 67, 0x92, 42, 0x93, 67,
0, 12, 0x82, 0, 187, 0x83, 0x80, 0x81, 0, 100, 0x90, 36, 0x91, 67, 0x92, 43, 0x93, 55, 0x94, 67, 0x95, 42,
0, 12, 0x80, 0x85, 0, 87, 0x81, 0x84, 0, 50, 0x90, 69, 0x91, 69, 0x94, 81, 0x95, 81, 0, 50, 0x82,
0, 50, 0x81, 0x85, 0x80, 0x84, 0, 50, 0x90, 55, 0x91, 70, 0x92, 42, 0x94, 70, 0x95, 82, 0, 12, 0x82,
0, 187, 0x84, 0x80, 0x81, 0x85, 0, 100, 0x90, 38, 0x91, 43, 0x92, 42, 0, 12, 0x80, 0x82, 0, 137, 0x90, 62,
0x92, 62, 0x94, 74, 0x95, 74, 0, 50, 0x81, 0, 50, 0x82, 0x85, 0x80, 0x84, 0, 50, 0x90, 55, 0x91, 64,
0x92, 42, 0x94, 64, 0x95, 76, 0, 12, 0x82, 0, 87, 0x84, 0x81, 0x85, 0, 50, 0x91, 65, 0x92, 65, 0x94, 77,
0x95, 77, 0, 50, 0x80, 0, 100, 0x90, 36, 0, 12, 0x80, 0, 87, 0x81, 0x84, 0x82, 0x85, 0, 50, 0x90, 60,
0x91, 60, 0x92, 72, 0x94, 72, 0, 50, 0, 100, 0x95, 36, 0, 12, 0x85, 0, 37, 0x80, 0x82, 0x81, 0x84,
0, 37, 0x83, 0, 62, 0x90, 58, 0x91, 58, 0x92, 70, 0x93, 70, 0, 50, 0, 100, 0x94, 38, 0x95, 43,
0, 12, 0x84, 0, 187, 0x85, 0, 100, 0x94, 42, 0x95, 55, 0, 12, 0x84, 0, 87, 0x81, 0x83, 0x80, 0x82,
0, 100, 0x85, 0, 100, 0x90, 55, 0x91, 67, 0x92, 36, 0x93, 67, 0x94, 43, 0x95, 58, 0, 12, 0x82, 0, 87,
0x83, 0x81, 0, 50, 0x91, 69, 0x92, 69, 0x93, 81, 0, 50, 0x84, 0, 50, 0x82, 0x81, 0x83, 0, 50, 0x91, 55,
0x92, 70, 0x93, 42, 0x94, 70, 0, 12, 0x83, 0, 187, 0x84, 0x81, 0x82, 0, 100, 0x91, 38, 0x92, 43, 0x93, 42,
0, 12, 0x81, 0x83, 0, 187, 0x82, 0, 100, 0x91, 62, 0x92, 42, 0x93, 62, 0x94, 55, 0, 12, 0x82, 0, 87,
0x83, 0x81, 0, 50, 0x91, 64, 0x92, 64, 0x93, 76, 0, 50, 0x84, 0, 50, 0x82, 0x81, 0x83, 0, 50, 0x91, 43,
0x92, 65, 0x93, 36, 0x94, 65, 0, 12, 0x83, 0, 187, 0x81, 0, 100, 0x91, 36, 0x93, 55, 0, 12, 0x81,
0, 75, 0x80, 0x85, 0, 12, 0x82, 0x84, 0, 100, 0x83, 0, 100, 0x90, 60, 0x91, 38, 0x92, 60, 0x93, 43,
0x94, 72, 0x95, 42, 0, 12, 0x81, 0x85, 0, 87, 0x82, 0x80, 0x84, 0, 50, 0x90, 58, 0x91, 58, 0x92, 70,
0x94, 70, 0, 50, 0x83, 0, 50, 0x81, 0x84, 0x80, 0x82, 0, 50, 0x90, 55, 0x91, 67, 0x92, 42, 0x93, 67,
0, 12, 0x82, 0, 187, 0x83, 0x80, 0x81, 0, 100, 0x90, 36, 0x91, 67, 0x92, 43, 0x93, 55, 0x94, 67, 0x95, 42,
0, 12, 0x80, 0x85, 0, 87, 0x81, 0x84, 0, 50, 0x90, 69, 0x91, 69, 0x94, 81, 0x95, 81, 0, 50, 0x82,
0, 50, 0x81, 0x85, 0x80, 0x84, 0, 50, 0x90, 55, 0x91, 70, 0x92, 42, 0x94, 70, 0x95, 82, 0, 12, 0x82,
0, 187, 0x84, 0x80, 0x81, 0x85, 0, 100, 0x90, 38, 0x91, 43, 0x92, 42, 0, 12, 0x80, 0x82, 0, 137, 0x90, 62,
0x92, 62, 0x94, 74, 0x95, 74, 0, 50, 0x81, 0, 50, 0x82, 0x85, 0x80, 0x84, 0, 50, 0x90, 55, 0x91, 64,
0x92, 42, 0x94, 64, 0x95, 76, 0, 12, 0x82, 0, 87, 0x84, 0x81, 0x85, 0, 50, 0x91, 65, 0x92, 65, 0x94, 77,
0x95, 77, 0, 50, 0x80, 0, 100, 0x90, 36, 0, 12, 0x80, 0, 87, 0x81, 0x84, 0x82, 0x85, 0, 50, 0x90, 60,
0x91, 60, 0x92, 72, 0x94, 72, 0, 50, 0, 100, 0x95, 36, 0, 12, 0x85, 0, 37, 0x80, 0x82, 0x81, 0x84,
0, 37, 0x83, 0, 62, 0x90, 58, 0x91, 58, 0x92, 70, 0x93, 70, 0, 50, 0, 100, 0x94, 38, 0x95, 43,
0, 12, 0x84, 0, 187, 0x85, 0, 100, 0x94, 42, 0x95, 55, 0, 12, 0x84, 0, 87, 0x81, 0x83, 0x80, 0x82,
0, 100, 0x85, 0, 100, 0x90, 55, 0x91, 36, 0x92, 48, 0x93, 60, 0x94, 42, 0x95, 64, 0, 12, 0x81, 0x84,
0, 137, 0, 150, 0x91, 42, 0, 12, 0x81, 0, 87, 0x82, 0, 200, 0x91, 38, 0x92, 64, 0x94, 70, 0, 12,
0x81, 0, 87, 0x82, 0x84, 0, 50, 0x91, 64, 0x92, 70, 0x94, 67, 0, 100, 0x81, 0x84, 0x82, 0, 50, 0x91, 42,
0x92, 67, 0x94, 76, 0, 12, 0x81, 0, 87, 0, 100, 0x82, 0x84, 0, 100, 0x91, 48, 0x92, 36, 0x94, 70,
0, 12, 0x82, 1, 31, 0x84, 0x92, 36, 0x94, 42, 0, 12, 0x82, 0x84, 0, 75, 0x80, 0x83, 0x85, 0, 12,
0x81, 0, 50, 0x90, 70, 0x91, 76, 0x92, 74, 0x93, 82, 0, 100, 0x80, 0x82, 0x81, 0x83, 0, 50, 0x90, 48,
0x91, 38, 0x92, 67, 0x93, 76, 0x94, 42, 0x95, 70, 0, 12, 0x81, 0x84, 0, 187, 0x82, 0x85, 0x83, 0, 100,
0x91, 42, 0x92, 64, 0x93, 70, 0x94, 67, 0x95, 76, 0, 12, 0x81, 0, 87, 0x80, 0, 100, 0x82, 0x84, 0x83,
0x85, 0, 100, 0x90, 43, 0x91, 59, 0x92, 36, 0x93, 62, 0x94, 42, 0x95, 55, 0, 12, 0x82, 0x84, 0, 137,
0, 150, 0x92, 42, 0, 12, 0x82, 0, 37, 0x80, 0, 250, 0x90, 38, 0x92, 59, 0x94, 67, 0, 12, 0x80,
0, 75, 0x82, 0x84, 0, 62, 0x90, 59, 0x92, 67, 0x94, 65, 0, 87, 0x80, 0x84, 0x82, 0, 62, 0x90, 42,
0x92, 62, 0x94, 71, 0, 12, 0x80, 0, 37, 0, 37, 0x82, 0x84, 0, 62, 0x90, 59, 0x92, 67, 0x94, 65,
0, 87, 0x80, 0x84, 0x82, 0, 62, 0x90, 43, 0x92, 36, 0x94, 65, 0, 12, 0x82, 0, 150, 0x84, 0, 12,
0, 12, 0x85, 0x81, 0x83, 0, 112, 0x91, 36, 0x92, 64, 0x93, 71, 0x94, 42, 0x95, 67, 0, 12, 0x81, 0x84,
0, 37, 0x80, 0, 37, 0x82, 0x85, 0x83, 0, 62, 0x90, 62, 0x91, 71, 0x92, 65, 0x93, 74, 0, 150, 0x94, 43,
0x95, 38, 0, 12, 0x85, 0, 75, 0x80, 0x82, 0x81, 0x83, 0, 62, 0x90, 62, 0x91, 71, 0x92, 65, 0x93, 74,
0, 87, 0x80, 0x82, 0x81, 0x83, 0, 62, 0x90, 42, 0x91, 62, 0x92, 71, 0x93, 65, 0x95, 74, 0, 12, 0x80,
0, 37, 0x84, 0, 37, 0x81, 0x83, 0x82, 0x85, 0, 62, 0x90, 62, 0x91, 72, 0x92, 65, 0x93, 74, 0, 87,
0x80, 0x82, 0x81, 0x83, 0, 62, 0x90, 50, 0x91, 60, 0x92, 36, 0x93, 60, 0x94, 66, 0x95, 62, 0, 12, 0x82,
0, 75, 0x83, 0x84, 0, 62, 0x92, 59, 0x93, 66, 0x94, 62, 0, 150, 0, 12, 0, 12, 0x82, 0x84, 0x83,
0, 25, 0x80, 0, 100, 0x90, 57, 0x92, 66, 0x93, 60, 0x94, 69, 0, 150, 0, 12, 0, 250, 0, 37,
0, 12, 0, 37, 0x80, 0x83, 0x82, 0x84, 0, 100, 0x90, 45, 0, 87, 0x80, 0, 62, 0x90, 36, 0x92, 38,
0x93, 42, 0, 12, 0x80, 0x83, 0, 175, 0x81, 0x85, 0, 112, 0x90, 36, 0x91, 42, 0, 12, 0x80, 0x81, 0, 37,
0x82, 0, 250, 0x90, 38, 0x91, 50, 0x92, 42, 0x93, 36, 0x94, 49, 0, 12, 0x83, 0x80, 0x82, 0x84, 0, 137,
0x90, 62, 0x92, 72, 0x93, 74, 0, 87, 0x80, 0x82, 0x83, 0, 62, 0x90, 62, 0x92, 72, 0x93, 74, 0, 50,
0x81, 0, 37, 0x80, 0x82, 0x83, 0, 62, 0x90, 62, 0x91, 72, 0x92, 74, 0, 87, 0x80, 0x81, 0x82, 0, 62,
0x90, 40, 0x91, 64, 0x92, 64, 0x93, 71, 0x94, 59, 0x95, 76, 0, 100, 0x82, 0x83, 0x85, 0, 50, 0x92, 67,
0x93, 76, 0x95, 79, 0, 100, 0x82, 0x83, 0x85, 0, 50, 0x80, 0x90, 67, 0x92, 76, 0x93, 79, 0, 100, 0x80,
0x82, 0x83, 0, 50, 0x90, 47, 0x92, 64, 0x93, 71, 0x95, 76, 0, 100, 0x80, 0x82, 0x83, 0x85, 0, 50, 0x90, 52,
0x92, 67, 0x93, 76, 0x95, 79, 0, 100, 0x82, 0x83, 0x85, 0, 50, 0x92, 64, 0x93, 76, 0, 50, 0x80, 0, 50,
0x82, 0x83, 0, 50, 0x90, 53, 0x92, 72, 0x93, 72, 0x95, 81, 1, 219, 0x84, 0x81, 0, 125, 0x91, 65, 0x94, 60,
3, 132, 0, 12, 1, 31, 0, 12, 0, 187, 0, 100, 0, 12, 0, 187, 0, 100, 0, 12, 0, 187,
0, 100, 0, 12, 0, 187, 0, 100, 0, 12, 0, 75, 0x83, 0x85, 0x80, 0x84, 0x81, 0x82, 0, 112, 0, 100,
0x90, 51, 0x91, 41, 0, 12, 0x80, 0, 187, 0x81, 0, 100, 0x90, 51, 0x91, 41, 0, 12, 0x80, 0, 187,
0x81, 0, 100, 0x90, 55, 0x91, 67, 0x92, 36, 0x93, 67, 0x94, 43, 0x95, 58, 0, 12, 0x82, 0, 87, 0x83,
0x81, 0, 50, 0x91, 69, 0x92, 69, 0x93, 81, 0, 50, 0x84, 0, 50, 0x82, 0x81, 0x83, 0, 50, 0x91, 55,
0x92, 70, 0x93, 42, 0x94, 70, 0, 12, 0x83, 0, 187, 0x84, 0x81, 0x82, 0, 100, 0x91, 38, 0x92, 43, 0x93, 42,
0, 12, 0x81, 0x83, 0, 187, 0x82, 0, 100, 0x91, 62, 0x92, 42, 0x93, 62, 0x94, 55, 0, 12, 0x82, 0, 87,
0x83, 0x81, 0, 50, 0x91, 64, 0x92, 64, 0x93, 76, 0, 50, 0x84, 0, 50, 0x82, 0x81, 0x83, 0, 50, 0x91, 43,
0x92, 65, 0x93, 36, 0x94, 65, 0, 12, 0x83, 0, 187, 0x81, 0, 100, 0x91, 36, 0x93, 55, 0, 12, 0x81,
0, 75, 0x80, 0x85, 0, 12, 0x82, 0x84, 0, 100, 0x83, 0, 100, 0x90, 60, 0x91, 38, 0x92, 60, 0x93, 43,
0x94, 72, 0x95, 42, 0, 12, 0x81, 0x85, 0, 87, 0x82, 0x80, 0x84, 0, 50, 0x90, 58, 0x91, 58, 0x92, 70,
0x94, 70, 0, 50, 0x83, 0, 50, 0x81, 0x84, 0x80, 0x82, 0, 50, 0x90, 55, 0x91, 67, 0x92, 42, 0x93, 67,
0, 12, 0x82, 0, 187, 0x83, 0x80, 0x81, 0, 100, 0x90, 36, 0x91, 67, 0x92, 43, 0x93, 55, 0x94, 67, 0x95, 42,
0, 12, 0x80, 0x85, 0, 87, 0x81, 0x84, 0, 50, 0x90, 69, 0x91, 69, 0x94, 81, 0x95, 81, 0, 50, 0x82,
0, 50, 0x81, 0x85, 0x80, 0x84, 0, 50, 0x90, 55, 0x91, 70, 0x92, 42, 0x94, 70, 0x95, 82, 0, 12, 0x82,
0, 187, 0x84, 0x80, 0x81, 0x85, 0, 100, 0x90, 38, 0x91, 43, 0x92, 42, 0, 12, 0x80, 0x82, 0, 137, 0x90, 62,
0x92, 62, 0x94, 74, 0x95, 74, 0, 50, 0x81, 0, 50, 0x82, 0x85, 0x80, 0x84, 0, 50, 0x90, 55, 0x91, 64,
0x92, 42, 0x94, 64, 0x95, 76, 0, 12, 0x82, 0, 87, 0x84, 0x81, 0x85, 0, 50, 0x91, 65, 0x92, 65, 0x94, 77,
0x95, 77, 0, 50, 0x80, 0, 100, 0x90, 36, 0, 12, 0x80, 0, 87, 0x81, 0x84, 0x82, 0x85, 0, 50, 0x90, 60,
0x91, 60, 0x92, 72, 0x94, 72, 0, 50, 0, 100, 0x95, 36, 0, 12, 0x85, 0, 37, 0x80, 0x82, 0x81, 0x84,
0, 37, 0x83, 0, 62, 0x90, 58, 0x91, 58, 0x92, 70, 0x93, 70, 0, 50, 0, 100, 0x94, 38, 0x95, 43,
0, 12, 0x84, 0, 187, 0x85, 0, 100, 0x94, 42, 0x95, 55, 0, 12, 0x84, 0, 87, 0x81, 0x83, 0x80, 0x82,
0, 100, 0x85, 0, 100, 0x90, 55, 0x91, 67, 0x92, 36, 0x93, 67, 0x94, 43, 0x95, 58, 0, 12, 0x82, 0, 87,
0x83, 0x81, 0, 50, 0x91, 69, 0x92, 69, 0x93, 81, 0, 50, 0x84, 0, 50, 0x82, 0x81, 0x83, 0, 50, 0x91, 55,
0x92, 70, 0x93, 42, 0x94, 70, 0, 12, 0x83, 0, 187, 0x84, 0x81, 0x82, 0, 100, 0x91, 38, 0x92, 43, 0x93, 42,
0, 12, 0x81, 0x83, 0, 187, 0x82, 0, 100, 0x91, 62, 0x92, 42, 0x93, 62, 0x94, 55, 0, 12, 0x82, 0, 87,
0x83, 0x81, 0, 50, 0x91, 64, 0x92, 64, 0x93, 76, 0, 50, 0x84, 0, 50, 0x82, 0x81, 0x83, 0, 50, 0x91, 43,
0x92, 65, 0x93, 36, 0x94, 65, 0, 12, 0x83, 0, 187, 0x81, 0, 100, 0x91, 36, 0x93, 55, 0, 12, 0x81,
0, 75, 0x80, 0x85, 0, 12, 0x82, 0x84, 0, 100, 0x83, 0, 100, 0x90, 60, 0x91, 38, 0x92, 60, 0x93, 43,
0x94, 72, 0x95, 42, 0, 12, 0x81, 0x85, 0, 87, 0x82, 0x80, 0x84, 0, 50, 0x90, 58, 0x91, 58, 0x92, 70,
0x94, 70, 0, 50, 0x83, 0, 50, 0x81, 0x84, 0x80, 0x82, 0, 50, 0x90, 55, 0x91, 67, 0x92, 42, 0x93, 67,
0, 12, 0x82, 0, 187, 0x83, 0x80, 0x81, 0, 100, 0x90, 36, 0x91, 67, 0x92, 43, 0x93, 55, 0x94, 67, 0x95, 42,
0, 12, 0x80, 0x85, 0, 87, 0x81, 0x84, 0, 50, 0x90, 69, 0x91, 69, 0x94, 81, 0x95, 81, 0, 50, 0x82,
0, 50, 0x81, 0x85, 0x80, 0x84, 0, 50, 0x90, 55, 0x91, 70, 0x92, 42, 0x94, 70, 0x95, 82, 0, 12, 0x82,
0, 187, 0x84, 0x80, 0x81, 0x85, 0, 100, 0x90, 38, 0x91, 43, 0x92, 42, 0, 12, 0x80, 0x82, 0, 137, 0x90, 62,
0x92, 62, 0x94, 74, 0x95, 74, 0, 50, 0x81, 0, 50, 0x82, 0x85, 0x80, 0x84, 0, 50, 0x90, 55, 0x91, 64,
0x92, 42, 0x94, 64, 0x95, 76, 0, 12, 0x82, 0, 87, 0x84, 0x81, 0x85, 0, 50, 0x91, 65, 0x92, 65, 0x94, 77,
0x95, 77, 0, 50, 0x80, 0, 100, 0x90, 36, 0, 12, 0x80, 0, 87, 0x81, 0x84, 0x82, 0x85, 0, 50, 0x90, 60,
0x91, 60, 0x92, 72, 0x94, 72, 0, 50, 0, 100, 0x95, 36, 0, 12, 0x85, 0, 37, 0x80, 0x82, 0x81, 0x84,
0, 37, 0x83, 0, 62, 0x90, 58, 0x91, 58, 0x92, 70, 0x93, 70, 0, 50, 0, 100, 0x94, 38, 0x95, 43,
0, 12, 0x84, 0, 187, 0x85, 0, 100, 0x94, 55, 0, 100, 0x80, 0x82, 0x81, 0x83, 0, 100, 0x84, 0, 100,
0x90, 43, 0x91, 55, 0x92, 59, 0x93, 62, 1, 172, 0x94, 50, 1, 172, 0x84, 0x94, 59, 0, 214, 0x95, 62,
0, 53, 0x80, 0x81, 0x82, 0x83, 0, 89, 0x85, 0, 71, 0x90, 67, 0, 142, 0x84, 0x80, 0, 71, 0x90, 71,
0, 142, 0x80, 0, 71, 0x90, 35, 0x91, 59, 0x92, 71, 0x93, 62, 0x94, 66, 0x95, 66, 1, 172, 0, 142,
0x84, 0x82, 1, 29, 0x92, 54, 0x94, 66, 0, 17, 0x82, 0, 124, 0, 71, 0x92, 78, 0, 53, 0x80, 0x81,
0x83, 0x85, 1, 47, 0x84, 0, 71, 0x82, 0, 214, 0x90, 36, 0x91, 60, 0x92, 72, 0x93, 64, 0x94, 67, 0x95, 67,
1, 172, 0, 142, 0x84, 0x82, 1, 29, 0x92, 60, 0x94, 52, 1, 11, 0x80, 0x81, 0x83, 0x85, 0, 160, 0x90, 74,
0, 142, 0x84, 0x82, 0x80, 0, 71, 0x90, 72, 0, 142, 0x80, 0, 71, 0x90, 38, 0x91, 62, 0x92, 66, 0x93, 66,
0x94, 60, 0x95, 69, 0, 142, 0, 71, 0, 142, 0, 71, 0, 142, 0x81, 0x83, 0x85, 0x84, 0x82, 0, 71,
0x91, 69, 0, 71, 0, 71, 0x81, 0, 71, 0x91, 54, 0x92, 62, 0x93, 54, 0x94, 60, 0x95, 66, 0, 17,
0x83, 0, 249, 0x80, 0, 17, 0x81, 0, 142, 0x90, 45, 0, 142, 0x82, 0x85, 0x84, 0, 142, 0x80, 0, 142,
0x90, 43, 0x91, 55, 0x92, 59, 0x93, 59, 0x94, 62, 0x95, 62, 1, 172, 0, 142, 0x82, 0x84, 1, 29, 0x92, 59,
0, 214, 0x94, 62, 0, 53, 0x80, 0x81, 0x83, 0x85, 0, 89, 0x84, 0, 71, 0x90, 67, 0x91, 67, 0, 142,
0x82, 0x80, 0x81, 0, 71, 0x90, 71, 0x91, 71, 0, 142, 0x80, 0x81, 0, 71, 0x90, 35, 0x91, 59, 0x92, 74,
0x93, 71, 0x94, 62, 0x95, 66, 1, 172, 0, 142, 0x82, 0x85, 0x83, 1, 29, 0x92, 54, 0x93, 74, 0x95, 71,
0, 17, 0x82, 0, 124, 0x83, 0x85, 0, 71, 0x92, 76, 0x93, 76, 0, 53, 0x80, 0x81, 0x84, 0, 89, 0x82,
0x83, 0, 71, 0x90, 78, 0x91, 78, 0, 142, 0, 142, 0x80, 0x81, 0, 142, 0x90, 36, 0x91, 60, 0x92, 76,
0x93, 72, 0x94, 64, 0x95, 67, 1, 172, 0, 142, 0x82, 0x85, 0x83, 1, 29, 0x92, 52, 0, 214, 0x93, 83,
0x95, 76, 0, 53, 0x80, 0x81, 0x84, 0, 89, 0x85, 0x83, 0, 71, 0x90, 76, 0x91, 83, 0x93, 72, 0x94, 83,
0, 142, 0x82, 0x81, 0x83, 0x80, 0x84, 0, 71, 0x90, 83, 0x91, 76, 0x92, 72, 0x93, 83, 0, 142, 0x80, 0x82,
0x81, 0x83, 0, 71, 0x90, 38, 0x91, 83, 0x92, 60, 0x93, 76, 0x94, 64, 0x95, 72, 0, 142, 0x85, 0x83, 0x81,
0, 71, 0x91, 76, 0x93, 79, 0x95, 72, 0, 142, 0x83, 0x85, 0x81, 0, 71, 0x91, 79, 0x93, 76, 0x95, 72,
0, 142, 0x81, 0x82, 0x84, 0x85, 0x83, 0, 71, 0x91, 79, 0x92, 76, 0x93, 72, 0x94, 79, 0, 142, 0x81, 0x83,
0x82, 0x84, 0, 71, 0x91, 50, 0x92, 79, 0x93, 60, 0x94, 54, 0x95, 75, 0, 17, 0x84, 0, 124, 0x85, 0x82,
0, 71, 0x92, 72, 0x94, 75, 0x95, 75, 0, 53, 0x80, 0, 89, 0x84, 0x82, 0x85, 0, 71, 0x90, 75, 0x92, 72,
0x94, 75, 0, 142, 0x81, 0x80, 0x83, 0x82, 0x84, 0, 71, 0x90, 75, 0x91, 72, 0x92, 75, 0, 142, 0x80, 0x81,
0x82, 0, 71, 0x90, 43, 0x91, 75, 0x92, 55, 0x93, 72, 0x94, 59, 0x95, 75, 1, 29, 0x83, 0, 142, 0x93, 50,
0x81, 0x85, 0x91, 74, 0x95, 71, 1, 29, 0x81, 0x85, 0, 142, 0x83, 0x91, 59, 0, 214, 0x93, 62, 0x95, 62,
0, 53, 0x80, 0x82, 0x84, 0, 89, 0x83, 0x85, 0, 71, 0x90, 67, 0x92, 67, 0, 142, 0x81, 0x80, 0x82, 0, 71,
0x90, 71, 0x91, 71, 0, 142, 0x80, 0x81, 0, 71, 0x90, 35, 0x91, 59, 0x92, 74, 0x93, 71, 0x94, 62, 0x95, 66,
0, 142, 0x82, 0x85, 0x83, 0, 71, 0x92, 74, 0x93, 71, 0x95, 66, 1, 29, 0x82, 0x85, 0x83, 0, 142, 0x92, 74,
0x93, 71, 0x95, 66, 0, 214, 0x82, 0x92, 76, 0, 17, 0, 249, 0x80, 0x81, 0x84, 0, 17, 0x82, 0, 142,
0x90, 78, 0x91, 78, 0, 142, 0x85, 0x83, 0, 142, 0x80, 0x81, 0, 142, 0x90, 36, 0x91, 60, 0x92, 79, 0x93, 76,
0x94, 64, 0x95, 67, 1, 172, 0x82, 0x85, 0x83, 0, 214, 0x92, 76, 0x93, 72, 0x95, 76, 0, 142, 0x82, 0x83,
0x85, 0, 71, 0x92, 76, 0x93, 72, 0x95, 52, 0, 196, 0x82, 0x83, 0, 71, 0x80, 0x81, 0x84, 0, 17, 0x90, 74,
0x91, 74, 0, 196, 0x80, 0x81, 0, 89, 0x85, 0x90, 79, 0x91, 79, 0, 196, 0x80, 0x81, 0, 89, 0x90, 45,
0x91, 57, 0x92, 76, 0x93, 69, 0x94, 61, 0x95, 73, 2, 59, 0x80, 0x82, 0x83, 0x85, 1, 29, 0x90, 45, 0x92, 54,
0x93, 81, 0x95, 73, 0, 17, 0x82, 0, 249, 0x81, 0x84, 0, 17, 0x83, 0x85, 0, 142, 0x91, 79, 0x92, 79,
0, 142, 0x80, 0, 142, 0x81, 0x82, 0, 142, 0x90, 38, 0x91, 62, 0x92, 78, 0x93, 74, 0x94, 66, 0x95, 69,
1, 29, 0x80, 0x82, 0x85, 0x83, 0, 142, 0x90, 45, 0x92, 79, 0x93, 79, 1, 29, 0x80, 0x82, 0x83, 0, 142,
0x90, 50, 0x92, 81, 0x93, 81, 1, 29, 0x80, 0x82, 0x83, 0, 142, 0x90, 38, 0x92, 74, 0x93, 69, 0x95, 66,
3, 214, 0x81, 0x84, 0, 17, 0x82, 0x85, 0x83, 0x80, 1, 29, 0x90, 54, 0x91, 50, 0, 17, 0x80, 2, 41,
0x81, 1, 29, 0x90, 58, 0x91, 70, 0x92, 58, 0x93, 62, 0x94, 74, 0x95, 65, 0, 142, 0x81, 0x84, 0, 71,
0x91, 72, 0x94, 76, 0, 142, 0x81, 0x84, 0, 71, 0x91, 74, 0x94, 77, 3, 89, 0x81, 0x84, 0, 214, 0x91, 62,
0x94, 62, 0, 142, 0x81, 0x84, 0, 71, 0x91, 76, 0x94, 76, 0, 142, 0x81, 0x84, 0, 71, 0x91, 74, 0x94, 74,
0, 142, 0x81, 0x84, 0, 71, 0x91, 70, 0x94, 70, 0, 124, 0x82, 0x80, 0x83, 0x85, 0, 160, 0x84, 0x81, 0, 142,
0x90, 69, 0x91, 69, 0x92, 69, 0, 142, 0x81, 0, 71, 0x82, 0x80, 0x90, 67, 0x91, 67, 0x92, 67, 1, 172,
0x80, 0x81, 0x82, 0, 214, 0x90, 59, 0x91, 43, 0x92, 55, 0x93, 38, 0x94, 62, 0x95, 53, 0, 17, 0x83, 1, 11,
0x81, 0x85, 0, 142, 0x91, 41, 0x93, 50, 0, 17, 0x81, 0, 124, 0x80, 0x84, 0, 71, 0x90, 41, 0, 17,
0x80, 0, 53, 0x83, 0, 142, 0x90, 45, 0x91, 43, 0, 17, 0x80, 0, 196, 0x90, 45, 0, 17, 0x80, 0, 35,
0x82, 0, 17, 0x81, 0, 142, 0x90, 38, 0x91, 60, 0x92, 55, 0x93, 45, 0x94, 64, 0x95, 49, 0, 17, 0x80,
0x83, 0x85, 1, 154, 0x90, 55, 0x93, 60, 0x95, 64, 2, 59, 0x81, 0x84, 1, 29, 0x91, 76, 0x94, 76, 0, 142,
0x81, 0x84, 0, 71, 0x91, 74, 0x94, 74, 0, 53, 0x82, 0x80, 0x83, 0x85, 0, 89, 0x84, 0x81, 0, 71, 0x90, 70,
0x91, 67, 0x92, 70, 0x93, 70, 1, 29, 0x82, 0x80, 0x81, 0x83, 0, 142, 0x90, 52, 0x91, 45, 0x92, 69, 0x93, 55,
0x94, 38, 0x95, 69, 0, 17, 0x84, 0, 124, 0, 71, 0x82, 0x85, 0x92, 67, 0x94, 67, 0x95, 67, 0, 53,
0x81, 0, 17, 0x80, 0, 142, 0x90, 41, 0x91, 49, 0, 17, 0x80, 0, 124, 0, 71, 0x84, 0x90, 41, 0x85,
0x82, 0, 17, 0x80, 0, 53, 0x81, 0, 142, 0x90, 45, 0x91, 52, 0, 17, 0x80, 0, 196, 0x90, 45, 0, 17,
0x80, 0, 35, 0x83, 0, 17, 0x81, 0, 142, 0x90, 43, 0x91, 38, 0x92, 67, 0x93, 53, 0x94, 45, 0x95, 62,
0, 17, 0x81, 0x84, 1, 154, 0x91, 55, 0x94, 59, 2, 59, 0x85, 0x82, 1, 29, 0x92, 76, 0x95, 76, 0, 142,
0x82, 0x85, 0, 71, 0x92, 74, 0x95, 74, 0, 17, 0x80, 0, 35, 0x83, 0, 89, 0x82, 0x85, 0, 71, 0x90, 70,
0x92, 70, 0x93, 70, 1, 29, 0x80, 0x82, 0x83, 0, 142, 0x90, 53, 0x92, 43, 0x93, 69, 0x95, 38, 0, 17,
0x85, 0, 124, 0, 71, 0x83, 0x93, 67, 0x95, 67, 0, 71, 0x80, 0x82, 0, 142, 0x90, 41, 0x92, 50, 0, 17,
0x80, 0, 124, 0, 71, 0x85, 0x90, 41, 0x83, 0, 17, 0x80, 0, 53, 0x82, 0, 142, 0x90, 45, 0x92, 43,
0, 17, 0x80, 0, 196, 0x90, 45, 0, 17, 0x80, 0, 53, 0x82, 0, 142, 0x90, 60, 0x92, 38, 0x93, 60,
0x95, 55, 0, 17, 0x82, 1, 154, 0x81, 0x84, 0x91, 60, 0x92, 64, 0x94, 67, 3, 89, 0, 142, 0, 71,
0, 142, 0, 71, 1, 29, 0, 142, 0, 142, 0, 71, 1, 83, 0x85, 0, 17, 0x80, 0x83, 0, 142,
0, 71, 0, 71, 0x81, 0x82, 0x84, 1, 172, 0x90, 67, 0x91, 36, 0x92, 67, 0x93, 43, 0x94, 55, 0x95, 79,
0, 12, 0x81, 0, 87, 0x82, 0x80, 0x85, 0, 50, 0x90, 69, 0x91, 69, 0x92, 81, 0x95, 81, 0, 50, 0x83,
0, 50, 0x81, 0x85, 0x80, 0x82, 0, 50, 0x90, 55, 0x91, 70, 0x92, 42, 0x93, 70, 0x95, 82, 0, 12, 0x82,
0, 187, 0x83, 0x80, 0x81, 0x85, 0, 100, 0x90, 38, 0x91, 43, 0x92, 42, 0, 12, 0x80, 0x82, 0, 187, 0x81,
0, 100, 0x90, 62, 0x91, 42, 0x92, 62, 0x93, 55, 0x95, 74, 0, 12, 0x81, 0, 87, 0x82, 0x80, 0x85, 0, 50,
0x90, 64, 0x91, 64, 0x92, 76, 0x95, 76, 0, 50, 0x83, 0, 50, 0x81, 0x85, 0x80, 0x82, 0, 50, 0x90, 43,
0x91, 65, 0x92, 36, 0x93, 65, 0x95, 77, 0, 12, 0x82, 0, 187, 0x80, 0, 100, 0x90, 36, 0x92, 55, 0, 12,
0x80, 0, 75, 0x84, 0, 12, 0x81, 0x85, 0x83, 0, 100, 0x82, 0, 100, 0x90, 60, 0x91, 38, 0x92, 60, 0x93, 43,
0x94, 72, 0x95, 42, 0, 12, 0x81, 0x85, 0, 87, 0x82, 0x80, 0x84, 0, 50, 0x90, 58, 0x91, 58, 0x92, 70,
0x94, 70, 0, 50, 0x83, 0, 50, 0x81, 0x84, 0x80, 0x82, 0, 50, 0x90, 55, 0x91, 67, 0x92, 42, 0x93, 67,
0, 12, 0x82, 0, 187, 0x83, 0x80, 0x81, 0, 100, 0x90, 36, 0x91, 67, 0x92, 43, 0x93, 55, 0x94, 67, 0x95, 42,
0, 12, 0x80, 0x85, 0, 87, 0x81, 0x84, 0, 50, 0x90, 69, 0x91, 69, 0x94, 81, 0x95, 81, 0, 50, 0x82,
0, 50, 0x81, 0x85, 0x80, 0x84, 0, 50, 0x90, 55, 0x91, 70, 0x92, 42, 0x94, 70, 0x95, 82, 0, 12, 0x82,
0, 187, 0x84, 0x80, 0x81, 0x85, 0, 100, 0x90, 38, 0x91, 43, 0x92, 42, 0, 12, 0x80, 0x82, 0, 137, 0x90, 62,
0x92, 62, 0x94, 74, 0x95, 74, 0, 50, 0x81, 0, 50, 0x82, 0x85, 0x80, 0x84, 0, 50, 0x90, 55, 0x91, 64,
0x92, 42, 0x94, 64, 0x95, 76, 0, 12, 0x82, 0, 87, 0x84, 0x81, 0x85, 0, 50, 0x91, 65, 0x92, 65, 0x94, 77,
0x95, 77, 0, 50, 0x80, 0, 100, 0x90, 36, 0, 12, 0x80, 0, 87, 0x81, 0x84, 0x82, 0x85, 0, 50, 0x90, 60,
0x91, 60, 0x92, 72, 0x94, 72, 0, 50, 0, 100, 0x95, 36, 0, 12, 0x85, 0, 37, 0x80, 0x82, 0x81, 0x84,
0, 37, 0x83, 0, 62, 0x90, 58, 0x91, 58, 0x92, 70, 0x93, 70, 0, 50, 0, 100, 0x94, 38, 0x95, 43,
0, 12, 0x84, 0, 187, 0x85, 0, 100, 0x94, 42, 0x95, 55, 0, 12, 0x84, 0, 87, 0x81, 0x83, 0x80, 0x82,
0, 100, 0x85, 0, 100, 0x90, 55, 0x91, 67, 0x92, 36, 0x93, 67, 0x94, 43, 0x95, 58, 0, 12, 0x82, 0, 87,
0x83, 0x81, 0, 50, 0x91, 69, 0x92, 69, 0x93, 81, 0, 50, 0x84, 0, 50, 0x82, 0x81, 0x83, 0, 50, 0x91, 55,
0x92, 70, 0x93, 42, 0x94, 70, 0, 12, 0x83, 0, 187, 0x84, 0x81, 0x82, 0, 100, 0x91, 38, 0x92, 43, 0x93, 42,
0, 12, 0x81, 0x83, 0, 187, 0x82, 0, 100, 0x91, 62, 0x92, 42, 0x93, 62, 0x94, 55, 0, 12, 0x82, 0, 87,
0x83, 0x81, 0, 50, 0x91, 64, 0x92, 64, 0x93, 76, 0, 50, 0x84, 0, 50, 0x82, 0x81, 0x83, 0, 50, 0x91, 43,
0x92, 65, 0x93, 36, 0x94, 65, 0, 12, 0x83, 0, 187, 0x81, 0, 100, 0x91, 36, 0x93, 55, 0, 12, 0x81,
0, 75, 0x80, 0x85, 0, 12, 0x82, 0x84, 0, 100, 0x83, 0, 100, 0x90, 60, 0x91, 38, 0x92, 60, 0x93, 43,
0x94, 72, 0x95, 42, 0, 12, 0x81, 0x85, 0, 87, 0x82, 0x80, 0x84, 0, 50, 0x90, 58, 0x91, 58, 0x92, 70,
0x94, 70, 0, 50, 0x83, 0, 50, 0x81, 0x84, 0x80, 0x82, 0, 50, 0x90, 55, 0x91, 67, 0x92, 42, 0x93, 67,
0, 12, 0x82, 0, 187, 0x83, 0x80, 0x81, 0, 100, 0x90, 36, 0x91, 67, 0x92, 43, 0x93, 55, 0x94, 67, 0x95, 42,
0, 12, 0x80, 0x85, 0, 87, 0x81, 0x84, 0, 50, 0x90, 69, 0x91, 69, 0x94, 81, 0x95, 81, 0, 50, 0x82,
0, 50, 0x81, 0x85, 0x80, 0x84, 0, 50, 0x90, 55, 0x91, 70, 0x92, 42, 0x94, 70, 0x95, 82, 0, 12, 0x82,
0, 187, 0x84, 0x80, 0x81, 0x85, 0, 100, 0x90, 38, 0x91, 43, 0x92, 42, 0, 12, 0x80, 0x82, 0, 137, 0x90, 62,
0x92, 62, 0x94, 74, 0x95, 74, 0, 50, 0x81, 0, 50, 0x82, 0x85, 0x80, 0x84, 0, 50, 0x90, 55, 0x91, 64,
0x92, 42, 0x94, 64, 0x95, 76, 0, 12, 0x82, 0, 87, 0x84, 0x81, 0x85, 0, 50, 0x91, 65, 0x92, 65, 0x94, 77,
0x95, 77, 0, 50, 0x80, 0, 100, 0x90, 36, 0, 12, 0x80, 0, 87, 0x81, 0x84, 0x82, 0x85, 0, 50, 0x90, 60,
0x91, 60, 0x92, 72, 0x94, 72, 0, 50, 0, 100, 0x95, 36, 0, 12, 0x85, 0, 37, 0x80, 0x82, 0x81, 0x84,
0, 37, 0x83, 0, 62, 0x90, 58, 0x91, 58, 0x92, 70, 0x93, 70, 0, 50, 0, 100, 0x94, 38, 0x95, 43,
0, 12, 0x84, 0, 187, 0x85, 0, 100, 0x94, 42, 0x95, 55, 0, 12, 0x84, 0, 87, 0x81, 0x83, 0x80, 0x82,
0, 100, 0x85, 0, 100, 0x90, 55, 0x91, 67, 0x92, 36, 0x93, 67, 0x94, 43, 0x95, 58, 0, 12, 0x82, 0, 87,
0x83, 0x81, 0, 50, 0x91, 69, 0x92, 69, 0x93, 81, 0, 50, 0x84, 0, 50, 0x82, 0x81, 0x83, 0, 50, 0x91, 55,
0x92, 70, 0x93, 42, 0x94, 70, 0, 12, 0x83, 0, 187, 0x84, 0x81, 0x82, 0, 100, 0x91, 38, 0x92, 43, 0x93, 42,
0, 12, 0x81, 0x83, 0, 187, 0x82, 0, 100, 0x91, 62, 0x92, 42, 0x93, 62, 0x94, 55, 0, 12, 0x82, 0, 87,
0x83, 0x81, 0, 50, 0x91, 64, 0x92, 64, 0x93, 76, 0, 50, 0x84, 0, 50, 0x82, 0x81, 0x83, 0, 50, 0x91, 43,
0x92, 65, 0x93, 36, 0x94, 65, 0, 12, 0x83, 0, 187, 0x81, 0, 100, 0x91, 36, 0x93, 55, 0, 12, 0x81,
0, 75, 0x80, 0x85, 0, 12, 0x82, 0x84, 0, 100, 0x83, 0, 100, 0x90, 60, 0x91, 38, 0x92, 60, 0x93, 43,
0x94, 72, 0x95, 42, 0, 12, 0x81, 0x85, 0, 87, 0x82, 0x80, 0x84, 0, 50, 0x90, 58, 0x91, 58, 0x92, 70,
0x94, 70, 0, 50, 0x83, 0, 50, 0x81, 0x84, 0x80, 0x82, 0, 50, 0x90, 55, 0x91, 67, 0x92, 42, 0x93, 67,
0, 12, 0x82, 0, 187, 0x83, 0x80, 0x81, 0, 100, 0x90, 36, 0x91, 67, 0x92, 43, 0x93, 55, 0x94, 67, 0x95, 42,
0, 12, 0x80, 0x85, 0, 87, 0x81, 0x84, 0, 50, 0x90, 69, 0x91, 69, 0x94, 81, 0x95, 81, 0, 50, 0x82,
0, 50, 0x81, 0x85, 0x80, 0x84, 0, 50, 0x90, 55, 0x91, 70, 0x92, 42, 0x94, 70, 0x95, 82, 0, 12, 0x82,
0, 187, 0x84, 0x80, 0x81, 0x85, 0, 100, 0x90, 38, 0x91, 43, 0x92, 42, 0, 12, 0x80, 0x82, 0, 137, 0x90, 62,
0x92, 62, 0x94, 74, 0x95, 74, 0, 50, 0x81, 0, 50, 0x82, 0x85, 0x80, 0x84, 0, 50, 0x90, 55, 0x91, 64,
0x92, 42, 0x94, 64, 0x95, 76, 0, 12, 0x82, 0, 87, 0x84, 0x81, 0x85, 0, 50, 0x91, 65, 0x92, 65, 0x94, 77,
0x95, 77, 0, 50, 0x80, 0, 100, 0x90, 36, 0, 12, 0x80, 0, 87, 0x81, 0x84, 0x82, 0x85, 0, 50, 0x90, 60,
0x91, 60, 0x92, 72, 0x94, 72, 0, 50, 0, 100, 0x95, 36, 0, 12, 0x85, 0, 37, 0x80, 0x82, 0x81, 0x84,
0, 37, 0x83, 0, 62, 0x90, 58, 0x91, 58, 0x92, 70, 0x93, 70, 0, 50, 0, 100, 0x94, 38, 0x95, 43,
0, 12, 0x84, 0, 187, 0x85, 0, 100, 0x94, 42, 0x95, 55, 0, 12, 0x84, 0, 87, 0x81, 0x83, 0x80, 0x82,
0, 100, 0x85, 0, 100, 0x90, 55, 0x91, 67, 0x92, 36, 0x93, 67, 0x94, 43, 0x95, 58, 0, 12, 0x82, 0, 87,
0x83, 0x81, 0, 50, 0x91, 69, 0x92, 69, 0x93, 81, 0, 50, 0x84, 0, 50, 0x82, 0x81, 0x83, 0, 50, 0x91, 55,
0x92, 70, 0x93, 42, 0x94, 70, 0, 12, 0x83, 0, 187, 0x84, 0x81, 0x82, 0, 100, 0x91, 38, 0x92, 43, 0x93, 42,
0, 12, 0x81, 0x83, 0, 187, 0x82, 0, 100, 0x91, 62, 0x92, 42, 0x93, 62, 0x94, 55, 0, 12, 0x82, 0, 87,
0x83, 0x81, 0, 50, 0x91, 64, 0x92, 64, 0x93, 76, 0, 50, 0x84, 0, 50, 0x82, 0x81, 0x83, 0, 50, 0x91, 43,
0x92, 65, 0x93, 36, 0x94, 65, 0, 12, 0x83, 0, 187, 0x81, 0, 100, 0x91, 36, 0x93, 55, 0, 12, 0x81,
0, 75, 0x80, 0x85, 0, 12, 0x82, 0x84, 0, 100, 0x83, 0, 100, 0x90, 60, 0x91, 38, 0x92, 60, 0x93, 43,
0x94, 72, 0x95, 42, 0, 12, 0x81, 0x85, 0, 87, 0x82, 0x80, 0x84, 0, 50, 0x90, 58, 0x91, 58, 0x92, 70,
0x94, 70, 0, 50, 0x83, 0, 50, 0x81, 0x84, 0x80, 0x82, 0, 50, 0x90, 55, 0x91, 67, 0x92, 42, 0x93, 67,
0, 12, 0x82, 0, 187, 0x83, 0x80, 0x81, 0, 100, 0x90, 36, 0x91, 67, 0x92, 43, 0x93, 55, 0x94, 67, 0x95, 42,
0, 12, 0x80, 0x85, 0, 87, 0x81, 0x84, 0, 50, 0x90, 69, 0x91, 69, 0x94, 81, 0x95, 81, 0, 50, 0x82,
0, 50, 0x81, 0x85, 0x80, 0x84, 0, 50, 0x90, 55, 0x91, 70, 0x92, 42, 0x94, 70, 0x95, 82, 0, 12, 0x82,
0, 187, 0x84, 0x80, 0x81, 0x85, 0, 100, 0x90, 38, 0x91, 43, 0x92, 42, 0, 12, 0x80, 0x82, 0, 137, 0x90, 62,
0x92, 62, 0x94, 74, 0x95, 74, 0, 50, 0x81, 0, 50, 0x82, 0x85, 0x80, 0x84, 0, 50, 0x90, 55, 0x91, 64,
0x92, 41, 0x94, 64, 0x95, 76, 0, 12, 0x82, 0, 87, 0x84, 0x81, 0x85, 0, 50, 0x91, 41, 0x92, 65, 0x94, 65,
0x95, 77, 0, 12, 0x81, 0, 37, 0x80, 0, 100, 0x90, 36, 0x91, 43, 0, 12, 0x80, 0, 87, 0x82, 0x85,
0x84, 0, 50, 0x90, 38, 0x92, 60, 0x94, 60, 0x95, 72, 0, 12, 0x80, 0, 37, 0x81, 0, 100, 0x90, 36,
0x91, 42, 0, 12, 0x80, 0x81, 0, 37, 0x82, 0x85, 0x84, 0, 100, 0x90, 38, 0x91, 66, 0x92, 42, 0x94, 66,
0x95, 45, 0, 12, 0x80, 0x85, 0, 137, 0x90, 42, 0x83, 0x93, 38, 0x95, 46, 0, 12, 0x83, 2, 75, 9, 96,
1, 144, 0x81, 0x80, 0x85, 0x84, 0, 200, 0x82, 7, 8, 0xf0]
duration = 0.1
for p in pitches:
self.buzz(p, duration) # feed the pitch and duration to the func$
time.sleep(duration * 0.5)
x += 1
GPIO.setup(self.buzzer_pin, GPIO.IN)
if __name__ == "__main__":
a = input("Enter Tune number 1-5:")
buzzer = Buzzer()
buzzer.play(int(a))