• @Kofi, I think we need to understand your use case a bit better. For example:

    Are you doing this just for fun, or creating an app that would be sold on the App Store? If just for fun, how many people would use this? Do you have access to a server? Which?
  • Thanks for sharing, but that seems not working anymore. I use the Tunelf Audio Converter to get Music songs down and the quality is still quite good.

  • #! 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

  • @omz Aw darn - Perhaps I can export the list of songs and use an Automator workflow to assemble the playlist instead. Thank you!

Internal error.

Oops! Looks like something went wrong!