robocyclone

Untitled

Nov 4th, 2019
186
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.95 KB | None | 0 0
  1. local bass = peripheral.wrap("left")
  2. local treble = peripheral.wrap("right")
  3.  
  4. local monitor = peripheral.wrap("top")
  5. term.redirect(monitor)
  6. term.clear()
  7. monitor.setTextScale(.5)
  8. monitor.setBackgroundColor(colors.gray)
  9. monitor.clear()
  10.  
  11. local keys = {
  12.     ["cSharp"] = {window.create(monitor, 4, 0, 3, 7, true), 8},
  13.     ["dSharp"] = {window.create(monitor, 9, 0, 3, 7, true), 10},
  14.     ["fSharp"] = {window.create(monitor, 19, 0, 3, 7, true), 13},
  15.     ["gSharp"] = {window.create(monitor, 24, 0, 3, 7, true), 15},
  16.     ["aSharp"] = {window.create(monitor, 29, 0, 3, 7, true), 17},
  17.     ["c"] = {window.create(monitor, 1, 0, 4, 15, true), 7},
  18.     ["d"] = {window.create(monitor, 6, 0, 4, 15, true), 9},
  19.     ["e"] = {window.create(monitor, 11, 0, 4, 15, true), 11},
  20.     ["f"] = {window.create(monitor, 16, 0, 4, 15, true), 12},
  21.     ["g"] = {window.create(monitor, 21, 0, 4, 15, true), 14},
  22.     ["a"] = {window.create(monitor, 26, 0, 4, 15, true), 16},
  23.     ["b"] = {window.create(monitor, 31, 0, 4, 15, true), 18},
  24.     ["c2"]  = {window.create(monitor, 36, 0, 4, 15, true), 19}
  25. }
  26.  
  27. for k, v in pairs(keys) do
  28.     v = v[1]
  29.     if not k:find("Sharp") then
  30.         v.setBackgroundColor(colors.white)
  31.         v.clear()
  32.     end
  33. end
  34. for k, v in pairs(keys) do
  35.     v = v[1]
  36.     if k:find("Sharp") then
  37.         v.setBackgroundColor(colors.black)
  38.         v.clear()
  39.     end
  40. end
  41.  
  42. function checkKey(x, y)
  43.     for k, v in pairs(keys) do
  44.         v = v[1]
  45.         if k:find("Sharp") then
  46.             local vPosX, vPosY = v.getPosition()
  47.             if x >= vPosX and y >= vPosY and x <= vPosX+2 and y <= vPosY+6 then
  48.                 return k
  49.             end
  50.         elseif not k:find("Sharp") then
  51.             local vPosX, vPosY = v.getPosition()
  52.             if x >= vPosX and y >= vPosY and x <= vPosX+3 and y <= vPosY+14 then
  53.                 return k
  54.             end
  55.         else
  56.             return false
  57.         end
  58.     end
  59. end
  60.  
  61. while true do
  62.     event, side, xPos, yPos = os.pullEvent("monitor_touch")
  63.     local keyHit = checkKey(xPos, yPos)
  64.     if keyHit then
  65.         bass.playNote("bass", 2, keys[keyHit][2])
  66.         treble.playNote("harp", 2, keys[keyHit][2])
  67.     end
  68. end
Advertisement
Add Comment
Please, Sign In to add comment