more notes in piano
-
Hi,
I like to play with the piano.py ==> it shows C3 until and including C4.
On Github there ar C4# until A4 (and two more?!) ... to be found.
How to make them available on Ipad for the piano.py script?And how to find out where the existing ones live (with stash e.g.)?
-
You can find the list of included sounds with the
[+]
button in the editor.
-
OK, found, already available ;-), Thanks.
-
#! python2 # Piano # # A simple multi-touch piano. from scene import * import sound from itertools import chain class Key (object): def __init__(self, frame): self.frame = frame self.name = None self.touch = None self.color = Color(1, 1, 1) self.highlight_color = Color(0.9, 0.9, 0.9) def hit_test(self, touch): return touch.location in self.frame class Piano (Scene): def setup(self): self.white_keys = [] self.black_keys = [] white_key_names = ['Piano_C3','Piano_D3', 'Piano_E3', 'Piano_F3', 'Piano_G3', 'Piano_A3', 'Piano_B3', 'Piano_C4', 'Piano_D4', 'Piano_E4', 'Piano_F4', 'Piano_G4'] #white_key_names_nogniiet = #['Piano_02','Piano_D2','Piano_E2','Piano_F2','Piano_G2','Piano_A2','Piano_B2','Piano_C3'] black_key_names = ['Piano_C3#', 'Piano_D3#', 'Piano_F3#', 'Piano_G3#', 'Piano_A3#', 'piano:C4#', 'Piano_D4#', 'Piano_F4#'] for key_name in chain(white_key_names, black_key_names): sound.load_effect(key_name) white_positions = range(12) black_positions = [0.5, 1.5, 3.5, 4.5, 5.5, 7.5, 8.5, 10.5] key_w = self.size.w / 2# pkhg factor 0.5 key_h = self.size.h / 8 /2 for i in range(len(white_key_names)): pos = white_positions[i] key = Key(Rect(0, pos * key_h, key_w, key_h)) key.name = white_key_names[i] self.white_keys.append(key) for i in range(len(black_key_names)): pos = black_positions[i] key = Key(Rect(0, pos * key_h + 10, key_w * 0.6, key_h - 20)) key.name = black_key_names[i] key.color = Color(0, 0, 0) key.highlight_color = Color(0.2, 0.2, 0.2) self.black_keys.append(key) def draw(self): stroke_weight(1) stroke(0.5, 0.5, 0.5) for key in chain(self.white_keys, self.black_keys): if key.touch is not None: fill(*key.highlight_color.as_tuple()) else: fill(*key.color.as_tuple()) rect(*key.frame.as_tuple()) def touch_began(self, touch): for key in chain(self.black_keys, self.white_keys): if key.hit_test(touch): key.touch = touch sound.play_effect(key.name) return def touch_moved(self, touch): hit_key = None for key in chain(self.black_keys, self.white_keys): hit = key.hit_test(touch) if hit and hit_key is None: hit_key = key if key.touch is None: key.touch = touch sound.play_effect(key.name) if key.touch == touch and key is not hit_key: key.touch = None def touch_ended(self, touch): for key in chain(self.black_keys, self.white_keys): if key.touch == touch: key.touch = None run(Piano(), PORTRAIT)
Append the Piano till G4