Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #Persistent
- #SingleInstance Force
- global startX, startY, keyMap := {}, tempo := 1.0 ; tempo multiplier
- ; Build key -> offset map
- InitKeyMap() {
- global keyMap
- keys := ["q","Q","w","W","e","E","r","R","t","T","y","Y","u","U","i","I","o","O","p","P","a","A","s","S","d","D","f","F"]
- step := 115
- Loop % keys.MaxIndex() {
- key := keys[A_Index]
- keyMap[key] := (A_Index-1) * step
- }
- }
- ; Hotkey: press F1 to run sequence, make sure to be looking all the way down before pressing F1
- ; https://virtualpiano.net/music-sheet-difficulty/super-easy
- F1::
- MouseGetPos, startX, startY
- InitKeyMap()
- tempo := 0.4 ; adjust speed: smaller = faster, bigger = slower
- sheet := "a a s d d s a p o o p a a|pp| a a s d d s a p o o p a p|oo| p p a o p asa o p asa p o p d| a a s d d s a p o o p a p|oo"
- Loop, Parse, sheet
- {
- char := A_LoopField
- if (char = " ") {
- Sleep, Round(300 * tempo) ; short pause for space
- continue
- }
- if (char = "|") {
- Sleep, Round(1000 * tempo) ; wait key (1 sec × tempo)
- continue
- }
- if (keyMap.HasKey(char)) {
- playKey(char)
- }
- }
- return
- ; Kill switch
- F2::ExitApp
- ; -------- Functions --------
- playKey(char) {
- global startX, startY, keyMap, tempo
- offset := keyMap[char]
- ; Reset baseline
- MouseMove, startX, startY, 0
- Sleep, Round(5 * tempo)
- ; Move up by mapped offset
- MouseMove, startX, startY - offset, 0
- ; Hold mouse for 1 second × tempo
- Click, Down
- Sleep, Round(100 * tempo)
- Click, Up
- ; Small gap before next note
- Sleep, Round(200 * tempo)
- }
Advertisement
Add Comment
Please, Sign In to add comment