Run it
Copy the script and paste it into your executor.
VirtualInputManager = :()
UserInputService = :()
sheetMusic =
notes = {}
word sheetMusic:()
.(notes, word)
isOn =
currentIndex =
isPlaying =
shiftMap = {
[] = .KeyCode.One, [] = .KeyCode.Two, [] = .KeyCode.Three,
[] = .KeyCode.Four, [] = .KeyCode.Five, [] = .KeyCode.Six,
[] = .KeyCode.Seven, [] = .KeyCode.Eight, [] = .KeyCode.Nine,
[] = .KeyCode.Zero, [] = .KeyCode.Minus, [] = .KeyCode.Equals,
[] = .KeyCode.LeftBracket, [] = .KeyCode.RightBracket,
[] = .KeyCode.BackSlash, [] = .KeyCode.Semicolon,
[] = .KeyCode.Quote, [] = .KeyCode.Comma, [] = .KeyCode.Period,
[] = .KeyCode.Slash, [] = .KeyCode.Tilde
}
(char)
shiftMap[char] shiftMap[char]
char:() .KeyCode[char:()]
char:()
numToName = {[]=, []=, []=, []=, []=, []=, []=, []=, []=, []=}
.KeyCode[numToName[char]]
map = {
[] = .KeyCode.Minus, [] = .KeyCode.Equals,
[] = .KeyCode.LeftBracket, [] = .KeyCode.RightBracket,
[] = .KeyCode.BackSlash, [] = .KeyCode.Semicolon,
[] = .KeyCode.Quote, [] = .KeyCode.Comma,
[] = .KeyCode.Period, [] = .KeyCode.Slash,
[] = .KeyCode.Backquote
}
map[char]
(chars, needsShift)
#chars ==
needsShift
VirtualInputManager:(, .KeyCode.LeftShift, , )
.()
pressedKeys = {}
_, char (chars)
keyCode = (char)
keyCode
VirtualInputManager:(, keyCode, , )
.(pressedKeys, keyCode)
.()
_, keyCode (pressedKeys)
VirtualInputManager:(, keyCode, , )
needsShift
.()
VirtualInputManager:(, .KeyCode.LeftShift, , )
.()
(noteStr)
shiftChars = {}
normalChars = {}
chordStr = noteStr
noteStr:(, ) == noteStr:(-, -) ==
chordStr = noteStr:(, -)
i = , #chordStr
char = chordStr:(i, i)
isUpper = (char:() ~= ) (shiftMap[char] ~= )
isUpper
.(shiftChars, char)
.(normalChars, char)
#shiftChars >
(shiftChars, )
#normalChars >
(normalChars, )
UserInputService.InputBegan:((input, gameProcessed)
input.UserInputType == .UserInputType.MouseButton2
isOn = isOn
.StarterGui:(, {
Title = ;
Text = isOn ;
Duration = ;
})
input.KeyCode == .KeyCode.Minus gameProcessed
isOn isPlaying
currentIndex <= #notes
.(()
isPlaying =
(notes[currentIndex])
currentIndex = currentIndex +
isPlaying =
)
.StarterGui:(, {
Title = ;
Text = ;
Duration = ;
})
)
piano auto play. and no, it doesnt play automatically. you need to press "-" (minus) to play every note. more explanation is in script.

Visual Pianos 🎹