2 import RPi
.GPIO
as gpio
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
)
13 gpio
.setmode(gpio
.BCM
)
14 if gpio
.RPI_REVISION
== 1:
15 pins
= [22, 21, 17, 4, 25, 24, 23, 18]
17 pins
= [22, 27, 17, 4, 25, 24, 23, 18]
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']
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']
47 for pin
, wav
in zip(pins
, notes
):
48 sounds
[pin
] = pygame
.mixer
.Sound(wav
)
50 def handle_sound(pin
):
53 logger
.info("Started playing {0}".format(pins
.index(pin
)))
56 logger
.info("Stopped playing {0}".format(pins
.index(pin
)))
59 gpio
.setup(pin
, gpio
.IN
)
60 gpio
.add_event_detect(pin
, gpio
.BOTH
, callback
=handle_sound
, bouncetime
=50)