Also note length determiner:
"_" for 1/2 BPM
"-" for 1/4 BPM
"." for 1/16 BPM
and nothing for 1/8 BPM
Code: Select all
#SingleInstance, Force
Gui, Font, c20C20E
Gui, Add, Text, x10 y10 w300, BPM
Gui, Add, Text, x10 y60, Key Stroke
Gui, Add, Text, x10 y240, F4 to Play
Gui, Add, Text, x10 y255, F8 to Pause
Gui, Font, Black
Gui, Add, Edit, x10 y25 w280 vBPM, 120
Gui, Add, Edit, x10 y75 w280 h150 vUserInput,
GuiControl, Focus, UserInput
Gui, Color, Black
Gui, +AlwaysOnTop
Gui, Show, w300 h280, OnlinePianoPlayer
return
F4::
!F4::
Gui, Submit, NoHide
UserInput := RegExReplace(UserInput, "(`n|`r|/)")
BPM := BPM ? BPM : 120
KeyArray := StrSplit(UserInput, A_Space, A_Space)
MKeyArray := ""
for each, Key in KeyArray ;Made by DelMii
{
KeyDelay := Floor(60000/BPM)
if InStr(Key,"_")
{
NKey := Trim(Key, "_")
NKeyDelay := Floor(KeyDelay*2)
MKeyArray := NKey
if (StrLen(Key) > 1)
{
NMKeyArray := StrSplit(MKeyArray)
for idx, MKey in NMKeyArray
{
SendInput {%MKey% down}
}
sleep NKeyDelay
for idx, MKey in NMKeyArray
{
SendInput {%MKey% up}
}
}
else
{
SendInput {%NKey% down}
Sleep NKeyDelay
SendInput {%NKey% up}
}
}
else if InStr(Key,"-")
{
NKey := Trim(Key, "-")
NKeyDelay := Floor(KeyDelay)
MKeyArray := NKey
if (StrLen(Key) > 1)
{
NMKeyArray := StrSplit(MKeyArray)
for idx, MKey in NMKeyArray
{
SendInput {%MKey% down}
}
sleep NKeyDelay
for idx, MKey in NMKeyArray
{
SendInput {%MKey% up}
}
}
else
{
SendInput {%NKey% down}
Sleep NKeyDelay
SendInput {%NKey% up}
}
}
else if InStr(Key,".")
{
NKey := Trim(Key, ".")
NKeyDelay := Floor(KeyDelay/4)
MKeyArray := NKey
if (StrLen(Key) > 1)
{
NMKeyArray := StrSplit(MKeyArray)
for idx, MKey in NMKeyArray
{
SendInput {%MKey% down}
}
sleep NKeyDelay
for idx, MKey in NMKeyArray
{
SendInput {%MKey% up}
}
}
else
{
SendInput {%NKey% down}
Sleep NKeyDelay
SendInput {%NKey% up}
}
}
else
{
NKey := Key
NKeyDelay := Floor(KeyDelay/2)
MKeyArray := NKey
if (StrLen(Key) > 1)
{
NMKeyArray := StrSplit(MKeyArray)
for idx, MKey in NMKeyArray
{
SendInput {%MKey% down}
}
sleep NKeyDelay
for idx, MKey in NMKeyArray
{
SendInput {%MKey% up}
}
}
else
{
SendInput {%NKey% down}
Sleep NKeyDelay
SendInput {%NKey% up}
}
}
}
return
F8::
Pause
return
GuiClose:
ExitApp