Added worksheets
[pi-music.git] / keyboard.py
1 import pygame
2 import RPi.GPIO as gpio
3 import logging
4
5 logger = logging.getLogger(__name__)
6 loggerFileHandler = logging.FileHandler('keyboard.log')
7 loggerFileHandlerFormatter = logging.Formatter('%(asctime)s %(levelname)-8s %(message)s')
8 loggerFileHandler.setFormatter(loggerFileHandlerFormatter)
9 logger.addHandler(loggerFileHandler)
10 logger.setLevel(logging.WARNING)
11 logger.setLevel(logging.INFO)
12
13 gpio.setmode(gpio.BCM)
14 if gpio.RPI_REVISION == 1:
15 pins = [22, 21, 17, 4, 25, 24, 23, 18]
16 else:
17 pins = [22, 27, 17, 4, 25, 24, 23, 18]
18 # pins = [25]
19
20 notes = ['sounds/keyboard-fsharp-low.wav',
21 'sounds/keyboard-g.wav',
22 'sounds/keyboard-gsharp.wav',
23 'sounds/keyboard-a.wav',
24 'sounds/keyboard-asharp.wav',
25 'sounds/keyboard-b.wav',
26 'sounds/keyboard-c.wav',
27 'sounds/keyboard-csharp.wav',
28 'sounds/keyboard-d.wav',
29 'sounds/keyboard-dsharp.wav',
30 'sounds/keyboard-e.wav',
31 'sounds/keyboard-f.wav',
32 'sounds/keyboard-fsharp-high.wav']
33
34 notes = ['sounds/keyboard-g.wav',
35 'sounds/keyboard-a.wav',
36 'sounds/keyboard-b.wav',
37 'sounds/keyboard-c.wav',
38 'sounds/keyboard-d.wav',
39 'sounds/keyboard-e.wav',
40 'sounds/keyboard-f.wav',
41 'sounds/keyboard-g-high.wav']
42
43
44 pygame.mixer.init()
45
46 sounds = {}
47 for pin, wav in zip(pins, notes):
48 sounds[pin] = pygame.mixer.Sound(wav)
49
50 def handle_sound(pin):
51 if gpio.input(pin):
52 sounds[pin].play()
53 logger.info("Started playing {0}".format(pins.index(pin)))
54 else:
55 sounds[pin].stop()
56 logger.info("Stopped playing {0}".format(pins.index(pin)))
57
58 for pin in pins:
59 gpio.setup(pin, gpio.IN)
60 gpio.add_event_detect(pin, gpio.BOTH, callback=handle_sound, bouncetime=50)
61
62 while True:
63 pass