Advertisement
Guest User

Untitled

a guest
May 22nd, 2017
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.36 KB | None | 0 0
  1. import os, curses, pygame, traceback
  2. from pygame.locals import *
  3.  
  4. class Key:
  5.     def __init__(self, y, x, screen, keytype, label):
  6.         self.screen = screen
  7.         self.y = y
  8.         self.x = x
  9.         self.keytype = keytype
  10.         self.label = label
  11.         self.draw(0)
  12.    
  13.     def draw(self, pressed):
  14.         if pressed == 0:
  15.             key = " "
  16.             fill = curses.A_STANDOUT
  17.         else:
  18.             key = "="
  19.             fill = curses.A_NORMAL
  20.  
  21.         for row in range(10):
  22.             if self.keytype in ["r", "a"]: self.screen.addch(self.y+row, self.x, key, fill)
  23.             self.screen.addch(self.y+row, self.x+1, key, fill)
  24.             if self.keytype in ["l", "a"]: self.screen.addch(self.y+row, self.x+2, key, fill)
  25.             if row > 5:
  26.                 if self.keytype in ["l", "a", "m"]: self.screen.addch(self.y+row, self.x, key, fill)
  27.                 self.screen.addch(self.y+row, self.x+1, key, fill)
  28.                 if self.keytype in ["r", "a", "m"]: self.screen.addch(self.y+row, self.x+2, key, fill)
  29.         if pressed == 0: self.screen.addch(self.y+8, self.x+1, self.label, curses.A_NORMAL)
  30.         else: self.screen.addch(self.y+8, self.x+1, self.label, curses.A_NORMAL)
  31.  
  32. if __name__ == '__main__':
  33.     try:
  34.         stdscr=curses.initscr()
  35.         curses.noecho()
  36.         curses.cbreak()
  37.         curses.curs_set(0)
  38.         stdscr.keypad(1)
  39.        
  40.         pygame.init()
  41.         pygame.mixer.init()
  42.        
  43. #       rows, cols = stdscr.getmaxyx()
  44.         screen = stdscr.subwin(11, 156, 0, 0)
  45.         screen.nodelay(1)
  46.        
  47.         piano = [("r", "A0", "`"), ("l", "B0", "    "), ("r", "C1", "1"), ("m", "D1", "q"), ("l", "E1", "a"), ("r", "F1", "z"), ("m", "G1", "2"), ("m", "A1", "w"),
  48.          ("l", "B1", "s"), ("r", "C2", "x"), ("m", "D2", "3"), ("l", "E2", "e"), ("r", "F2", "d"), ("m", "G2", "c"), ("m", "A2", "4"), ("l", "B2", "r"), ("r", "C3", "f"),
  49.           ("m", "D3", "v"), ("l", "E3", "5"), ("r", "F3", "t"), ("m", "G3", "g"), ("m", "A3", "b"), ("l", "B3", " "), ("r", "C4", "5"), ("m", "D4", "t"), ("l", "E4", "g"),
  50.            ("r", "F4", "b"), ("m", "G4", "6"), ("m", "A4", "y"), ("l", "B4", "h"), ("r", "C5", "n"), ("m", "D5", "7"), ("l", "E5", "u"), ("r", "F5", "j"), ("m", "G5", "m"),
  51.             ("m", "A5", "8"), ("l", "B5", "i"), ("r", "C6", "k"), ("m", "D6", ","), ("l", "E6", "9"), ("r", "F6", "o"), ("m", "G6", "l"), ("m", "A6", "."), ("l", "B6", "0"),
  52.              ("r", "C7", "p"), ("m", "D7", ";"), ("l", "E7", "/"), ("r", "F7", "-"), ("m", "G7", "["), ("m", "A7", "'"), ("l", "B7", "="), ("a", "C8", "]")]
  53.         x = 0
  54.         y = 0
  55.         keys = []
  56.         keydir = os.getcwd() + '/Keys/'
  57.         keyfiles = os.listdir(keydir)
  58.         keymap = {}
  59.        
  60.         for ktype, key, label in piano:
  61.             keys.append((Key(y, x, screen, ktype, label)))
  62.             if key+".wav" in keyfiles:
  63.                 keymap[ord(label)] = [pygame.mixer.Sound(keydir+key+".wav"), keys[-1]]
  64.             x += 3
  65.        
  66.         derpnum = 0
  67.         #keydir = os.getcwd() + '/Keys/'
  68.         #for subdir, dirs, files in os.walk(keydir):
  69.             #for file in files:
  70.                 #keyfiles.append(file)
  71.  
  72.         #keyfiles.sort()
  73.  
  74.         #for type, key in piano:
  75.             #try:
  76.                 #keydict[keys[derpnum]] = [pygame.mixer.Sound(keydir + file), file.replace('.wav', '')]
  77.                 #derpnum += 1
  78.             #except:
  79.                 #pass
  80.  
  81.         #hurr = 0
  82.         lastkey = 100
  83.         while 1:
  84.             c = screen.getch()
  85.             if c != -1:
  86.                 #hurr += 1
  87.                 if keymap.has_key(c):
  88.                     #screen.erase()
  89.                     keymap[lastkey][1].draw(0)
  90.                     keymap[c][1].draw(1)
  91.                     screen.refresh()
  92.                     keymap[c][0].play()
  93.                     lastkey = c
  94.                     #screen.addstr(0, 0, keydict[c][1])
  95.            
  96.     except:
  97.         stdscr.keypad(0)
  98.         curses.echo()
  99.         curses.nocbreak()
  100.         curses.endwin()
  101.         traceback.print_exc()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement