ailenkai

PEAK - Bugle Ode To Joy AHK

Sep 27th, 2025
2,099
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #Persistent
  2. #SingleInstance Force
  3.  
  4. global startX, startY, keyMap := {}, tempo := 1.0  ; tempo multiplier
  5.  
  6. ; Build key -> offset map
  7. InitKeyMap() {
  8.     global keyMap
  9.     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"]
  10.     step := 115
  11.     Loop % keys.MaxIndex() {
  12.         key := keys[A_Index]
  13.         keyMap[key] := (A_Index-1) * step
  14.     }
  15. }
  16.  
  17. ; Hotkey: press F1 to run sequence, make sure to be looking all the way down before pressing F1
  18. ; https://virtualpiano.net/music-sheet-difficulty/super-easy
  19. F1::
  20.     MouseGetPos, startX, startY
  21.     InitKeyMap()
  22.  
  23.     tempo := 0.4  ; adjust speed: smaller = faster, bigger = slower
  24.  
  25.     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"
  26.  
  27.     Loop, Parse, sheet
  28.     {
  29.         char := A_LoopField
  30.  
  31.         if (char = " ") {
  32.             Sleep, Round(300 * tempo)   ; short pause for space
  33.             continue
  34.         }
  35.  
  36.         if (char = "|") {
  37.             Sleep, Round(1000 * tempo)  ; wait key (1 sec × tempo)
  38.             continue
  39.         }
  40.  
  41.         if (keyMap.HasKey(char)) {
  42.             playKey(char)
  43.         }
  44.     }
  45. return
  46.  
  47. ; Kill switch
  48. F2::ExitApp
  49.  
  50.  
  51. ; -------- Functions --------
  52.  
  53. playKey(char) {
  54.     global startX, startY, keyMap, tempo
  55.     offset := keyMap[char]
  56.  
  57.     ; Reset baseline
  58.     MouseMove, startX, startY, 0
  59.     Sleep, Round(5 * tempo)
  60.  
  61.     ; Move up by mapped offset
  62.     MouseMove, startX, startY - offset, 0
  63.  
  64.     ; Hold mouse for 1 second × tempo
  65.     Click, Down
  66.     Sleep, Round(100 * tempo)
  67.     Click, Up
  68.  
  69.     ; Small gap before next note
  70.     Sleep, Round(200 * tempo)
  71. }
  72.  
Advertisement
Add Comment
Please, Sign In to add comment