omz:forum

    • Register
    • Login
    • Search
    • Recent
    • Popular

    Welcome!

    This is the community forum for my apps Pythonista and Editorial.

    For individual support questions, you can also send an email. If you have a very short question or just want to say hello — I'm @olemoritz on Twitter.


    more notes in piano

    Pythonista
    music caf
    3
    4
    3413
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • PKHG
      PKHG last edited by

      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.)?

      1 Reply Last reply Reply Quote 0
      • omz
        omz last edited by

        You can find the list of included sounds with the [+] button in the editor.

        1 Reply Last reply Reply Quote 0
        • PKHG
          PKHG last edited by

          OK, found, already available ;-), Thanks.

          1 Reply Last reply Reply Quote 0
          • PeterG
            PeterG last edited by ccc

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

            1 Reply Last reply Reply Quote 0
            • First post
              Last post
            Powered by NodeBB Forums | Contributors