See the documentation in Extra__Selection_and_Navigation.pdf If you are already using F1_ColorSearchSelect.ahk Copy these sections: == NEW VERSION INFO SCREEN F1 == ~[ & 1:: as replacement to F1_ColorSearchSelect.ahk == NEW INFO SCREEN LIST SELECTION == to F1_ColorSearchSelect.ahk == NEW INFO SCREEN SELECTION AREAS DEFINED PAGE == to F1_ColorSearchSelect.ahk == NEW INFO SCREEN SIMPLE AND COL.RANGE SELECTION == to F1_ColorSearchSelect.ahk +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ == SET DEFINED PAGE using BACKGROUND COLOR == to F1_ColorSearchSelect.ahk == TO NEXT DEFINED PAGE == to F1_ColorSearchSelect.ahk == TO PREVIOUS DEFINED PAGE == to F1_ColorSearchSelect.ahk == LIST SELECTION == to F1_ColorSearchSelect.ahk == REMOVE ARTICULATIONS IN LIST SELECTION == to F1_ColorSearchSelect.ahk == NAVIGATION ON DEFINED PAGE == to F1_ColorSearchSelect.ahk == SMART KEY LAYOUT in SIMPLE RANGE SELECTION == to F1_ColorSearchSelect.ahk == SMART KEY LAYOUT IN COLORED RANGE SELECTION == to F1_ColorSearchSelect.ahk == PAGE NAVIGATION ZOOMFACTOR DEPENDENT == Attention!>>> to Master.ahk; place the section after the ZOOMFACTOR HOTKEYS which start with ~p & o:: +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ == NEW VERSION INFO SCREEN ZOOM & VIEW == ~[ & z:: as replacement to Master.ahk == NEW VERSION INFO SCREEN F3 == ~[ & 3:: as replacement to F3_Navigation.ahk ; ♣=============================== NEW VERSION INFO SCREEN F1 ===================================== ; a small addition to the existing main Info screen of F1_ColorSearchSelect.ahk ; this replaces the earlier version of ~[ & 1:: ~[ & 1:: ; general info group F1 + rightclick selection commands (contextual menu) MsgBox, 4096, F1: Search and Select [ + 1, ( Select all ELEMENTS except notes and rests For Press plus All similar Same subtype Range Control RightButton # MidButton Score Left Shift RightButton MidButton System √ Right Shift RightButton MidButton Staff CapsLock RightButton MidButton Voice Alt RightButton * MidButton * Staff+Voice Win RightButton MidButton Action - score, voice, system or staff: click an element. Action - range: don't click the element but position the mouse on it # Click an element + hotkey opens the Window Select * Also for voice in range. Action as in range √ In Page View. In Continuous View it operates on score. Elements include Beams, Flags, Dots and Stems -------------------------------------------------------------------------------------------- Select all NOTES of the same In Range/Score¬ In Staff Duration ] + D [ + D Pitch ] + P [ + P Notename ] + N [ + N Voice ] + V [ + V Action-range/score: Action-staff: Select range or all and Click a note of Position mouse on note the right type (or rest for duration) Select only all noteheads or only all rests in range ] + H Notes include Noteheads, Grace Notes and Rests Select all noteheads in range M + H Select all grace notes in range M + G Select all rest in range M + R -------------------------------------------------------------------------------------------- INPUTBOXES Color Search and Select Z + C Selection Filter Z + F -------------------------------------------------------------------------------------------- Info Color Search and Select [ + C Info List Selection in Page View [ + S ) Return ; ♣============================= NEW INFO SCREEN LIST SELECTION =================================== ; addition to F1_ColorSearchSelect.ahk ~[ & s:: ; info list selection MsgBox, 4096, F1: List Selection in Defined Page View [ + S, ( List selection in Continuous View is of course possible but Page View in the defined state of the page is recommended. It enables restoring all original positions after a screen shift. The coordinates of selected positions are written to the clipboard. Set and restore defined page state Alt + Q Make list selection Ctrl + Win + Left-Click Select notes Click or Ctrl + click Stop list selection Ctrl + Win + Right-Click and click on an empty spot Select list Shift + Win + LeftButton Add notes to prior selection Alt + Win + Left-Click Select notes Left-Click Stop adding to list Alt + Win + Right-Click and click on an empty spot Select extended list Shift + Win + LeftButton Defined Page navigation To previous defined page F3 + F1 To next defined page F3 + F2 Go to lowest staff - toggle PageUp Go to highest staff - toggle PageDown Default zoomfactor is 100 `% Small zoomfactor is 89 `% Info selection areas in Defined Page [ + A ) Return ; ♣==================== NEW INFO SCREEN SELECTION AREAS DEFINED PAGE ============================== ; addition to F1_ColorSearchSelect.ahk ~[ & a:: ; info selection areas in Defined Page MsgBox, 4096, F1: Selection Areas in Defined Page [ + A, ( Zoomfactors 89`% and 100`% Set Defined Page Alt + Q Area 1 J + F1 Area 2 J + F2 Area 3 J + F3 Area 4 J + F4 Area 5 J + F5 Area 6 J + F6 Area 7 J + F7 Area 8 J + F8 Area 9 J + F9 Area 10 J + F10 Area 11 J + F11 Area 12 J + F12 Area 13 J + 1 Selection areas depend on mouse position Mouse to left side canvas # ; + L L-page Mouse to right side canvas # ; + ' R-page # Hotkeys in Master ) Return ; ♣================= NEW INFO SCREEN SIMPLE AND COL.RANGE SELECTION =============================== ; addition to F1_ColorSearchSelect.ahk ; NB: to refer to this new info screen add to info screen [ + C ; under the line Select range 7-8 Y + = ; the new line ; INFO MORE Range Selection [ + R ~[ & r:: ; info more range selection - colored and simple MsgBox, 4096, F1: More Range Selection [ + R, ( COLORED RANGE SELECTION Range 1-2, 3-4, 5-6, 7-8 Go to 1, 3, 5, 7 L|K|J|H + L MouseButton Go to 2, 4, 6, 8 L|K|J|H + R MouseButton Smart key lay-out Go to 1 - left L + K Go to 2 - right L + ; Go to 3 - left K + J Go to 4 - right K + L Go to 5 - left J + H Go to 6 - right J + K Go to 7 - left H + G Go to 8 - right H + J SIMPLE RANGE SELECTION Valid till positional shift Smart key lay-out Set left L + O K + I J + U H + Y Set right L + P K + O J + I H + U Select left L + , K + M J + N H + B Select right L + . K + , J + M H + N Select range L + 0 K + 9 J + 8 H + 7 ) Return ; ♣====================== SET DEFINED PAGE using BACKGROUND COLOR ================================= ; new commands for F1_ColorSearchSelect.ahk ; the macro presupposes the presence of the paper at 1/3 screen height ; if less than half of the paper height is visible set defined page will not work ; check the lines marked (*change*?) ~!q:: ; set defined page Send {Volume_Mute} ; Mute/unmute the master volume Zoomfactor := "normal" CoordMode, Mouse, Screen CoordMode, Pixel, Screen Gosub, Inspectorcheck MouseMove, A_ScreenWidth/2, A_ScreenHeight/3 ; to make sure mouse is on Canvas when hotkey is repeated but not on surface MsgBox. If not on Canvas Wheel actions have no effect. Sleep, 50 Send ^0 Send ^{PgDn} ; to move canvas max up Sleep, 50 Send ^{PgUp} Sleep, 100 PixelSearch, Color_BG_X, Color_BG_Y, % CSA_X1, A_ScreenHeight/3, % CSA_X2, A_ScreenHeight/3 + 1, ColorBackground, , Fast RGB ; check if ColorBackground is somewhere present If (ErrorLevel = 1) ; ColorBackground not found { SendEvent, +{WheelUp} ; make ColorBackground visible at left side Sleep, 50 } MsgBox, 4403, Set Defined Page, The default zoom factor is 100`%.`nDo you want the small zoom factor?`n`nTo previous defined page F3 + F1`nTo next defined page F3 + F2 IfMsgBox, Cancel { Send {Volume_Mute} ; Mute/unmute the master volume Return } IfMsgBox, Yes ; { Zoomfactor := "small" SendEvent ^{Click, WheelDown} ; zoomfactor small - 89 % on test screen Sleep, 200 Send ^{PgDn} ; to move Canvas max up Sleep, 50 Send ^{PgUp} ; to move Canvas max up Sleep, 50 PixelSearch, Color_BG_X, Color_BG_Y, % CSA_X1, A_ScreenHeight/3, % CSA_X2, A_ScreenHeight/3 + 1, ColorBackground, , Fast RGB ; determine where ColorBackground is present SendEvent, {Click, %Color_BG_X%, %Color_BG_Y%, d} ; prepare drag Sleep, 200 MouseMove, 172, Color_BG_Y ; (*change*?) '172' drag destination: borders of pages on same distance from palettes cq inspector SendEvent {Click, u} Sleep, 100 PixelSearch, Color_BG_X, Color_BG_Y, % CSA_X1, A_ScreenHeight/3, % CSA_X2, A_ScreenHeight/3 + 1, ColorBackground, , Fast RGB ; check where ColorBackground is present If (Color_BG_X < A_ScreenWidth/3) ; (*change*?) if the color is found left of 1/3 of screenwidth Left_Page := "Even" Else Left_Page := "Odd" ; MsgBox, Left Page is %Left_Page% } IfMsgBox, No { PixelSearch, Color_BG_X, Color_BG_Y, % CSA_X1, A_ScreenHeight/3, % CSA_X2, A_ScreenHeight/3 + 1, ColorBackground, , Fast RGB ; on 1/3 of A_ScreenHeight to prevent coverage by MsgBox ; NB: nog geen eerste pag. correctie Sleep, 50 SendEvent, {Click, %Color_BG_X%, %Color_BG_Y%, d} Sleep, 200 MouseMove, 85, Color_BG_Y ; (*change*?) drag destination "85" ; '85' is the X where the ColorBackground of the left page just has become invisible SendEvent {Click, u} Sleep, 150 } If (Zoomfactor = "normal") ; selection first note on page by lasso selection { ; the same surface coordinates have also to be entered in the commands for next and previous defined page. Send +{Click, 200, 60, down} ; (*change*?) shiftclick top left corner of area, in background color, so free from page number and instr. name Sleep, 50 Send +{Click, 300, 170, down} ; (*change*?) shiftclick right bottom corner of area } If (Zoomfactor = "small") ; selection first note on page by lasso selection { Send +{Click, 280, 60, down} ; '280' '60' (*change*?) shiftclick top left corner of area, in background color Sleep, 50 Send +{Click, 380, 160, down} ; '380' '160' (*change*?) shiftclick right bottom corner of area & keep down } Sleep, 100 Send {Click, up} ; area selected Sleep, 50 Send {right} Sleep, 50 Send ^{left} Sleep, 100 Send {Volume_Mute} ; Mute/unmute the master volume Return ; ♣================================ TO NEXT DEFINED PAGE ========================================== ; new commands for F1_ColorSearchSelect.ahk ; in Defined Page: move right page to the left at normal and small zoom factor ; in Defined Page at zoom 100% and left page is "even" there is no ColorBackground column (to the left and right of paper) ; in Defined Page at zoom 89% there are one or two ColorBackground columns ; if you want an automatic warning that the new page is not in a Defined State: ; you need the image Statusbar_Nothing_Selected.png. Activate the outcommented lines at the end of the macro ; about the surface coordinates of the Statusbar image: see page 38 of AutoHotkey_for_MuseScore.pdf ~f3 & f2:: ; to next defined page If (Zoomfactor = "small") ; at 89% { ; search from right to left ! PixelSearch, Color_BG_X, Color_BG_Y, % CSA_X2, A_ScreenHeight/3, % CSA_X1, A_ScreenHeight/3 + 1, ColorBackground, , Fast RGB If (Color_BG_X > A_ScreenWidth/2) ; if ColorBackground column on right half Left_Page := "even" Else Left_Page := "odd" SendEvent, {Click, %Color_BG_X%, %Color_BG_Y%, d} ; prepare drag (*change*?) drag start Sleep, 150 If (Left_Page = "odd") MouseMove, Color_BG_X - 701, Color_BG_Y ; '701' drag distance (*change*?) drag destination: If (Left_Page = "even") MouseMove, Color_BG_X - 690, Color_BG_Y ; '690' drag distance (*change*?) drag destination: SendEvent {Click, u} Sleep, 150 ; selection first note on page by lasso selection { Send +{Click, 280, 60, down} ; '280' '60' (*change*?) shiftclick top left corner of area, in background color Sleep, 50 Send +{Click, 380, 160, down} ; '380' '160' (*change*?) shiftclick right bottom corner of area & keep down } } If (Zoomfactor = "normal") ; at 100% move right page to the left { ; search from right to left PixelSearch, Color_BG_X, Color_BG_Y, % CSA_X2, A_ScreenHeight/3, % CSA_X1, A_ScreenHeight/3 + 1, ColorBackground, , Fast RGB SendEvent, {Click, 1592, 60, d} ; in ribbon background color at almost upper right of Canvas (*change*?) drag start Sleep, 150 If (ErrorLevel = 1) ; if left page is even MouseMove, 818, 60 ; in ribbon background color, drag destination (*change*?) '818' '60' If (ErrorLevel = 0) ; if left page is odd MouseMove, 805, 60 ; in ribbon background color, drag destination (*change*?) '805' '60' Sleep, 150 SendEvent {Click, u} Sleep, 150 ; selection first note on page by lasso selection Send +{Click, 200, 60, down} ; '200' '60' (*change*?) shiftclick top left corner of area, in background color, so free from page number and instr. name Sleep, 50 Send +{Click, 300, 170, down} ; '300' '170' (*change*?) shiftclick right bottom corner of area } Sleep, 100 SendEvent {Click, up} ; area selected Sleep, 50 Send {right} ; Sleep, 200 ; time for statusbar to appear ; ImageSearch, , , SB_X1, SB_Y1, SB_X2, SB_Y2, *40 Statusbar_Nothing_Selected.png ; If (ErrorLevel = 1) ; MsgBox, 4144, Defined Page, The new page is not`nin the Defined State! Return ; ♣============================= TO PREVIOUS DEFINED PAGE ========================================= ; new commands for F1_ColorSearchSelect.ahk ; prepare measurements by creating eleven staves on each page; see 18 - Addendum 1 - F1 Selection.pdf ; in Defined Page: move left page to the right at normal and small zoom factor ; in Defined Page at zoom 100% and left page is "even" there is no ColorBackground column (to the left and right of paper) ; in Defined Page at zoom 89% there are one OR two ColorBackground columns ; if you want an automatic warning that the new page is not in a Defined State: ; you need the image Statusbar_Nothing_Selected.png. Activate the outcommented lines at the end of the macro ~f3 & f1:: ; to previous defined page If (Zoomfactor = "small") ; at 89% { ; search from left to right PixelSearch, Color_BG_X, Color_BG_Y, % CSA_X1, A_ScreenHeight/3, % CSA_X2, A_ScreenHeight/3 + 1, ColorBackground, , Fast RGB If (Color_BG_X > A_ScreenWidth/3) ; if ColorBackground column on right 2/3 Left_Page := "odd" Else Left_Page := "even" ; MsgBox, Left Page is %Left_Page% SendEvent, {Click, %Color_BG_X%, %Color_BG_Y%, d} ; prepare drag (*change*?) drag start Sleep, 150 If (Left_Page = "odd") MouseMove, Color_BG_X + 690, Color_BG_Y ; (*change*?) drag destination: (690) If (Left_Page = "even") MouseMove, Color_BG_X + 701, Color_BG_Y ; (*change*?) drag destination: (701) SendEvent {Click, u} Sleep, 150 ; selection first note on page { Send +{Click, 280, 60, down} ; '280' '60' (*change*?) shiftclick top left corner of area, in ribbon background color Sleep, 50 Send +{Click, 380, 160, down} ; '380' '160' (*change*?) shiftclick right bottom corner of area & keep down } } If (Zoomfactor = "normal") ; at 100% move even right to left { ; search from right to left PixelSearch, Color_BG_X, Color_BG_Y, % CSA_X2, A_ScreenHeight/3, % CSA_X1, A_ScreenHeight/3 + 1, ColorBackground, , Fast RGB SendEvent, {Click, 118, 60, d} ; in ribbon background color, almost upper left of Canvas (*change*?) drag start Sleep, 150 If (ErrorLevel = 1) ; if left page is even MouseMove, 905, 60 ; drag destination, "905"(*change*?) If (ErrorLevel = 0) ; if left page is odd MouseMove, 892, 60 ; drag destination in ribbon background color, "892"(*change*?) SendEvent {Click, u} Sleep, 150 ; selection first note on page Send +{Click, 200, 60, down} ; '200' '60' (*change*?) shiftclick top left corner of area, in background color, so free from page number and instr. name Sleep, 50 Send +{Click, 300, 170, down} ; '300' '170' (*change*?) shiftclick right bottom corner of area } Sleep, 100 SendEvent {Click, up} ; area selected Sleep, 50 Send {right} ; Sleep, 200 ; time for statusbar to appear ; ImageSearch, , , SB_X1, SB_Y1, SB_X2, SB_Y2, *40 Statusbar_Nothing_Selected.png ; If (ErrorLevel = 1) ; MsgBox, 4144, Defined Page, The new page is not`nin the Defined State! Return ; ♣=================================== LIST SELECTION ============================================= ; new commands for F1_ColorSearchSelect.ahk ; determine the coordinates in the lines marked by (*change*?) ^#RButton:: ; stop making list selection Break_List_Sel_Loop_1 := 1 ; to exit the loop Tooltip, , , , 11 Return ^#LButton:: ; make list selection MsgBox, 4097, New List Selection in Page View, ( If you have to view other pages during the selection the Defined Page state is recommended. This state can be displayed in zoomfactor 89`% or 100`%. Set defined page state Alt + Q To previous defined page F3 + F1 To next defined page F3 + F2 Continue? ) IfMsgBox, Cancel Return CoordMode, Tooltip, Screen CoordMode, Mouse, Screen Tooltip, Make List Selection. Click or Control click the notes.`nWhen ready: press Ctrl+Win+RightButton.`nTo reselect the list press Shift+Win+LeftButton`nor CapsLock + F., A_Screenwidth / 2, 22, 11 ; (*change*?) 22 is Y-coordinate Break_List_Sel_Loop_1 := 0 Sleep, 300 ; to prevent registering as first press Clipboard := "" ; clipboard is made empty Loop { If (Break_List_Sel_Loop_1 = 1) Goto, BreakListSelLoop_1 Keywait, LButton, d Keywait, LButton, u MouseGetPos, X, Y ClipboardText = %X%, %Y% ClipNew := ClipboardText If (A_Index = 1) Clipboard = %ClipNew% If (A_Index > 1) Clipboard = %Clipboard%`n%ClipNew% BreakListSelLoop_1: If (Break_List_Sel_Loop_1 = 1) Break } Tooltip, , , , 11 Return !#RButton:: ; to exit the loop Break_List_Sel_Loop_2 := 1 ; relative to next hotkey Tooltip, , , , 11 Return !#LButton:: ; add to prior list selection CoordMode, Tooltip, Screen CoordMode, Mouse, Screen Tooltip, Add to List Selection. Click or Control click the notes.`nWhen ready: press Alt+Win+RightButton.`nTo reselect the list press Shift+Win+LeftButton`nor CapsLock + F., A_Screenwidth / 2, 22, 11 ; (*change*?) 22 is Y-coordinate Break_List_Sel_Loop_2 := 0 Sleep, 300 ; to prevent registering as first press Loop { If (Break_List_Sel_Loop_2 = 1) Goto, BreakListSelLoop_2 Keywait, LButton, d Keywait, LButton, u MouseGetPos, X, Y ClipboardText = %X%, %Y% ClipNew := ClipboardText Clipboard = %Clipboard%`n%ClipNew% BreakListSelLoop_2: If (Break_List_Sel_Loop_2 = 1) Break } Tooltip, , , , 11 Return ~CapsLock & f:: +#LButton:: ; retrieve list selection CoordMode, Mouse, Screen Send {Volume_Mute} ; Mute/unmute the master volume Send {Escape} Sleep, 50 Loop, parse, Clipboard, `n { SendEvent ^{click, %A_LoopField%} } Send {Volume_Mute} ; Mute/unmute the master volume Return ; ♣============================ REMOVE ARTICULATION IN LIST SELECTION ============================= ; new command for F1_ColorSearchSelect.ahk ; you need the image: Statusbar_Articulation.png ; about the surface coordinates of the Statusbar image: see page 38 of AutoHotkey_for_MuseScore.pdf ; maybe you have experiment with Sleep times if you need to remove a long series of articulations ~CapsLock & r:: ; remove articulation in List Selection CoordMode, Mouse, Screen Send {Volume_Mute} ; Mute/unmute the master volume Send {Escape} Sleep, 50 Loop, parse, Clipboard, `n { SendEvent ^{click, %A_LoopField%} Sleep, 250 Send {Esc} Sleep, 50 Send !{right} Sleep, 100 ; 200 ? Loop, 4 ; enables skipping other attached elements { ImageSearch, , , SB_X1, SB_Y1, SB_X2, SB_Y2, *40 Statusbar_Articulation.png If (ErrorLevel = 0) { Send {del} Sleep, 50 Break } If (ErrorLevel = 1) { Send !{right} Sleep, 50 Continue } } Sleep, 30 Send {Escape} } Send {Volume_Mute} ; Mute/unmute the master volume Return ; ♣============================= NAVIGATION ON DEFINED PAGE ======================================= ; new commands for F1_ColorSearchSelect.ahk ; the images to be searched for are Screen_Micro_End_Staff_100.png and Screen_Micro_End_Staff_89.png ; in the ImageSearch of each hotkey you have to enter the height ; see the documentation in Extra__Selection_and_Navigation.pdf ; Go with CapsLock + Z (= Alt + Right) from clef to note or switch the loop on ~j & f1:: Height := 1 Goto, SelectStaff ~j & f2:: Height := 2 Goto, SelectStaff ~j & f3:: Height := 3 Goto, SelectStaff ~j & f4:: Height := 4 Goto, SelectStaff ~j & f5:: Height := 5 Goto, SelectStaff ~j & f6:: Height := 6 Goto, SelectStaff ~j & f7:: Height := 7 Goto, SelectStaff ~j & f8:: Height := 8 Goto, SelectStaff ~j & f9:: Height := 9 Goto, SelectStaff ~j & f10:: Height := 10 Goto, SelectStaff ~j & f11:: Height := 11 Goto, SelectStaff ~j & f12:: Height := 12 Goto, SelectStaff ~j & 1:: Height := 13 Goto, SelectStaff SelectStaff: If (Zoomfactor = "x") { MsgBox, 4144, Defined Page Navigation, Zoomfactor not set!`nPress Alt + Q to set Defined Page. Return } ; Send {Volume_Mute} ; Mute/unmute the master volume CoordMode, Mouse, Screen CoordMode, Pixel, Screen ; create eleven staves on one page ; choose first height above highest staff and all others just under the staves at zoom 100% ; repeat this for the small zoomfactor ; the options *160 (100%) and *170 (89%) were established experimentally ; you could try to find the lowest value with which all staves are recognized ; dependent on vertical displacement and other staves in a system some staves maybe can not be hit by a hotkey MouseGetPos, StartX, StartY If (StartX < A_Screenwidth/2) { Def_L_X1 := CSA_X1 Def_L_X2 := A_Screenwidth/2 ; if mouse left first found staff is left\ } If (StartX > A_Screenwidth/2) { Def_L_X1 := A_Screenwidth/2 Def_L_X2 := CSA_X2 } If (Height = 1) && (Zoomfactor = "normal") ImageSearch, Micro_X, Micro_Y, Def_L_X1, 100, Def_L_X2, CSA_Y2, *160 Screen_Micro_End_Staff_100.png ; (*change*? 100 If (Height = 1) && (Zoomfactor = "small") ImageSearch, Micro_X, Micro_Y, Def_L_X1, 100, Def_L_X2, CSA_Y2, *170 Screen_Micro_End_Staff_89.png ; (*change*? 100 If (Height = 2) && (Zoomfactor = "normal") ImageSearch, Micro_X, Micro_Y, Def_L_X1, 165, Def_L_X2, CSA_Y2, *160 Screen_Micro_End_Staff_100.png ; (*change*? 165 If (Height = 2) && (Zoomfactor = "small") ImageSearch, Micro_X, Micro_Y, Def_L_X1, 149, Def_L_X2, CSA_Y2, *170 Screen_Micro_End_Staff_89.png ; (*change*? 149 If ((Height = 3) && (Zoomfactor = "normal")) ImageSearch, Micro_X, Micro_Y, Def_L_X1, 243, Def_L_X2, CSA_Y2, *160 Screen_Micro_End_Staff_100.png ; (*change*? 243 If (Height = 3) && (Zoomfactor = "small") ImageSearch, Micro_X, Micro_Y, Def_L_X1, 224, Def_L_X2, CSA_Y2, *170 Screen_Micro_End_Staff_89.png ; (*change*? 224 If (Height = 4) && (Zoomfactor = "normal") ImageSearch, Micro_X, Micro_Y, Def_L_X1, 325, Def_L_X2, CSA_Y2, *160 Screen_Micro_End_Staff_100.png ; (*change*? 325 If (Height = 4) && (Zoomfactor = "small") ImageSearch, Micro_X, Micro_Y, Def_L_X1, 299, Def_L_X2, CSA_Y2, *170 Screen_Micro_End_Staff_89.png ; (*change*? 299 If (Height = 5) && (Zoomfactor = "normal") ImageSearch, Micro_X, Micro_Y, Def_L_X1, 413, Def_L_X2, CSA_Y2, *160 Screen_Micro_End_Staff_100.png ; (*change*? 413 If (Height = 5) && (Zoomfactor = "small") ImageSearch, Micro_X, Micro_Y, Def_L_X1, 374, Def_L_X2, CSA_Y2, *170 Screen_Micro_End_Staff_89.png ; (*change*? 374 If (Height = 6) && (Zoomfactor = "normal") ImageSearch, Micro_X, Micro_Y, Def_L_X1, 496, Def_L_X2, CSA_Y2, *160 Screen_Micro_End_Staff_100.png ; (*change*? 496 If (Height = 6) && (Zoomfactor = "small") ImageSearch, Micro_X, Micro_Y, Def_L_X1, 449, Def_L_X2, CSA_Y2, *170 Screen_Micro_End_Staff_89.png ; (*change*? 449 If (Height = 7) && (Zoomfactor = "normal") ImageSearch, Micro_X, Micro_Y, Def_L_X1, 582, Def_L_X2, CSA_Y2, *160 Screen_Micro_End_Staff_100.png ; (*change*? 582 If (Height = 7) && (Zoomfactor = "small") ImageSearch, Micro_X, Micro_Y, Def_L_X1, 525, Def_L_X2, CSA_Y2, *170 Screen_Micro_End_Staff_89.png ; (*change*? 525 If (Height = 8) && (Zoomfactor = "normal") ImageSearch, Micro_X, Micro_Y, Def_L_X1, 666, Def_L_X2, CSA_Y2, *160 Screen_Micro_End_Staff_100.png ; (*change*? 666 If (Height = 8) && (Zoomfactor = "small") ImageSearch, Micro_X, Micro_Y, Def_L_X1, 601, Def_L_X2, CSA_Y2, *170 Screen_Micro_End_Staff_89.png ; (*change*? 601 If (Height = 9) && (Zoomfactor = "normal") ImageSearch, Micro_X, Micro_Y, Def_L_X1, 749, Def_L_X2, CSA_Y2, *160 Screen_Micro_End_Staff_100.png ; (*change*? 749 If (Height = 9) && (Zoomfactor = "small") ImageSearch, Micro_X, Micro_Y, Def_L_X1, 675, Def_L_X2, CSA_Y2, *170 Screen_Micro_End_Staff_89.png ; (*change*? 675 If (Height = 10) && (Zoomfactor = "normal") ImageSearch, Micro_X, Micro_Y, Def_L_X1, 835, Def_L_X2, CSA_Y2, *160 Screen_Micro_End_Staff_100.png ; (*change*? 835 If (Height = 10) && (Zoomfactor = "small") ImageSearch, Micro_X, Micro_Y, Def_L_X1, 750, Def_L_X2, CSA_Y2, *170 Screen_Micro_End_Staff_89.png ; (*change*? 750 If (Height = 11) && (Zoomfactor = "normal") ImageSearch, Micro_X, Micro_Y, Def_L_X1, 919, Def_L_X2, CSA_Y2, *160 Screen_Micro_End_Staff_100.png ; (*change*? 919 If (Height = 11) && (Zoomfactor = "small") ImageSearch, Micro_X, Micro_Y, Def_L_X1, 825, Def_L_X2, CSA_Y2, *170 Screen_Micro_End_Staff_89.png ; (*change*? 825 If (Height = 12) && (Zoomfactor = "normal") ImageSearch, Micro_X, Micro_Y, Def_L_X1, 950, Def_L_X2, CSA_Y2, *160 Screen_Micro_End_Staff_100.png ; (*change*? 950 If (Height = 12) && (Zoomfactor = "small") ImageSearch, Micro_X, Micro_Y, Def_L_X1, 900, Def_L_X2, CSA_Y2, *170 Screen_Micro_End_Staff_89.png ; (*change*? 940 If (Height = 13) && (Zoomfactor = "normal") ImageSearch, Micro_X, Micro_Y, Def_L_X1, 999, Def_L_X2, CSA_Y2, *160 Screen_Micro_End_Staff_100.png ; (*change*? 999 If (Height = 13) && (Zoomfactor = "small") ImageSearch, Micro_X, Micro_Y, Def_L_X1, 950, Def_L_X2, CSA_Y2, *170 Screen_Micro_End_Staff_89.png ; (*change*? 999 If (Errorlevel = 1) { MsgBox, 4144, Navigation Defined Page, Staff not found!`nMaybe the page has lost its Defined State. Return } If (Errorlevel = 2) { MsgBox, Search not conductable! Return } If (Errorlevel = 0) { If (Zoomfactor = "small") MouseMove, Micro_X + 6, Micro_Y ; to barline (*change*?) If (Zoomfactor = "normal") MouseMove, Micro_X + 7, Micro_Y ; to barline (*change*?) Sleep, 50 Click ; select barline Sleep, 50 Loop, 6 { Send !{left} Sleep, 200 ImageSearch, , , SB_X1, SB_Y1, SB_X2, SB_Y2, *40 Statusbar_Note_Pitch.png If (ErrorLevel = 1) Continue If (ErrorLevel = 0) Break } Send ^+{left} ; select measure, includes image! } Return ; ♣======================== SMART KEY LAYOUT in SIMPLE RANGE SELECTION ============================ ; new commands for F1_ColorSearchSelect.ahk ; a simple alternative for the colored range selection method. It is simple because ; the coordinates are not longer valid after a screenshift or after a pitch change of a selected note! ; all hotkeys use adjacent keys ~l & ,::Click, %LO_X%, %LO_Y% ; select L-left ~l & .::Click, %LP_X%, %LP_Y% ; select L-right ~l & 0:: ; select L-range Send {Click, %LO_X%, %LO_Y%} Sleep, 100 Send +{Click, %LP_X%, %LP_Y%} Return ~k & m::Click, %KI_X%, %KI_Y% ; select K-left ~k & ,::Click, %KO_X%, %KO_Y% ; select K-right ~k & 9:: ; select K-range Send {Click, %KI_X%, %KI_Y%} Sleep, 100 Send +{Click, %KO_X%, %KO_Y%} Return ~j & n::Click, %JU_X%, %JU_Y% ; select J-left ~j & m::Click, %JI_X%, %JI_Y% ; select J-right ~j & 8:: ; select J-range Send {Click, %JU_X%, %JU_Y%} Sleep, 100 Send +{Click, %JI_X%, %JI_Y%} Return ~h & b::Click, %HY_X%, %HY_Y% ; select H-left ~h & n::Click, %HU_X%, %HU_Y% ; select H-right ~h & 7:: ; select H-range Send {Click, %HY_X%, %HY_Y%} Sleep, 100 Send +{Click, %HU_X%, %HU_Y%} Return ~l & o:: ; set L-left Selection := "lo" Goto, Simple_Range_Sel ~l & p:: ; set L-right Selection := "lp" Goto, Simple_Range_Sel ~k & i:: ; set K-left Selection := "ki" Goto, Simple_Range_Sel ~k & o:: ; set K-right Selection := "ko" Goto, Simple_Range_Sel ~j & u:: ; set J-left Selection := "ju" Goto, Simple_Range_Sel ~j & i:: ; set J-right Selection := "ji" Goto, Simple_Range_Sel ~h & y:: ; set H-left Selection := "hy" Goto, Simple_Range_Sel ~h & u:: ; set H-right Selection := "hu" Goto, Simple_Range_Sel Simple_Range_Sel: CoordMode, Mouse, Screen ; Search color all voices and click found element CoordMode, Pixel, Screen PixelSearch, ElementX, ElementY, % CSA_X1, % CSA_Y1, % CSA_X2, % CSA_Y2, ColorV1, , Fast RGB ; voice 1 if ErrorLevel PixelSearch, ElementX, ElementY, % CSA_X1, % CSA_Y1, % CSA_X2, % CSA_Y2, ColorV2, , Fast RGB ; voice 2 if ErrorLevel PixelSearch, ElementX, ElementY, % CSA_X1, % CSA_Y1, % CSA_X2, % CSA_Y2, ColorV3, , Fast RGB ; voice 3 if ErrorLevel PixelSearch, ElementX, ElementY, % CSA_X1, % CSA_Y1, % CSA_X2, % CSA_Y2, ColorV4, , Fast RGB ; voice 4 if ErrorLevel MsgBox, 4144, Search for voice 1234 element, Color not found. Maybe there is no element selected.`nMaybe the selected element is set invisible.`nWith small elements you could try a higher zoom factor. Click, %ElementX%, %ElementY% If (Selection = "lo") MouseGetPos, LO_X, LO_Y ; set L-left If (Selection = "lp") MouseGetPos, LP_X, LP_Y ; set L-right If (Selection = "ki") MouseGetPos, KI_X, KI_Y ; set K-left If (Selection = "ko") MouseGetPos, KO_X, KO_Y ; set K-right If (Selection = "ju") MouseGetPos, JU_X, JU_Y ; set J-left If (Selection = "ji") MouseGetPos, JI_X, JI_Y ; set J-right If (Selection = "hy") MouseGetPos, HY_X, HY_Y ; set H-left If (Selection = "hu") MouseGetPos, HU_X, HU_Y ; set H-right Return ; ♣================ COLORED RANGE ===== MOUSE TO LEFT/RIGHT OF PAIR 1/2/3/4 ======================= ; this is the section in F1_ColorSearchSelect.ahk where the addition takes place ; ♣===================== SMART KEY LAYOUT IN COLORED RANGE SELECTION ============================== ; addition to F1_ColorSearchSelect.ahk ~l & k:: ; ADDITION ~y & 1:: ; go to left color (1) magenta 0xff00ff ~l & LButton:: ; idem ~l & `;:: ; ADDITION NB: The semicolon must be preceded by an escape sign ~y & 2:: ; go to right color (1) lime 0x00ff00 ~l & RButton:: ; idem ~k & j:: ; ADDITION ~y & 3:: ; go to left color (2) blue 0x0000ff ~k & LButton:: ; idem ~k & l:: ; ADDITION ~y & 4:: ; go to right color (2) orange half tone 0xffaa00 ~k & RButton:: ; idem ~j & h:: ; ADDITION ~y & 5:: ; go to left color (3) red 0xff0000 ~j & LButton:: ; idem ~j & k:: ; ADDITION ~y & 6:: ; go to right color (3) dark yellow 0xaaaa00 ~j & RButton:: ; idem ~h & g:: ; ADDITION ~y & 7:: ; go to left color (4) medium purple 0xaa55ff ~h & LButton:: ; idem ~h & j:: ; ADDITION ~y & 8:: ; go to right color (4) light salmon 0xffaa7f ~h & RButton:: ; idem ; ♣================================== ZOOMFACTOR HOTKEYS ========================================== ; place the next section after the ZOOMFACTOR HOTKEYS starting with ~p & o:: ; the zoomfactor must be set first to get the page navigation hotkeys working ; ♣==== ZOOMNAVIGATION ========== PAGE NAVIGATION ZOOMFACTOR DEPENDENT ============================ ; an addition to Master.ahk ; copy the macros of this section to Master.ahk ; the next two hotkeys have been added to facilitate Zoomnavigation in the hotkeys H + F1/F2 etc. ; ; there the mouse position left/right determines the search area of the system endbarline ; when two pages are visible at a small zoomfactor `; & l::MouseMove, CSA_X1 + 10, A_ScreenHeight/2 ; mouse to the left of canvas `; & '::MouseMove, CSA_X2 - 10, A_ScreenHeight/2 ; mouse to the right of canvas ; the following macros use images of the end of a system in different zoomfactors: ; a barline across *3* syafflines with a small surface preceding it and a small surface of the canvas following it ; to each hotkey a different height of the search area has been assigned ; after the imagesearch the barline will be clicked and a short loop with Alt + Left stops when a note is recognized ; see the pdf documentation on page 7 ~h & f1:: Height_Y1 := 100 Goto, ZoomNav ~h & f2:: If Zoomfactor not in 89 Height_Y1 := 165 If Zoomfactor in 89 Height_Y1 := 138 Goto, ZoomNav ~h & f3:: If Zoomfactor not in 89 Height_Y1 := 243 If Zoomfactor in 89 Height_Y1 := 214 Goto, ZoomNav ~h & f4:: If Zoomfactor not in 89 Height_Y1 := 325 If Zoomfactor in 89 Height_Y1 := 287 Goto, ZoomNav ~h & f5:: If Zoomfactor not in 89 Height_Y1 := 413 If Zoomfactor in 89 Height_Y1 := 364 Goto, ZoomNav ~h & f6:: If Zoomfactor not in 89 Height_Y1 := 496 If Zoomfactor in 89 Height_Y1 := 438 Goto, ZoomNav ~h & f7:: If Zoomfactor not in 89 Height_Y1 := 582 If Zoomfactor in 89 Height_Y1 := 515 Goto, ZoomNav ~h & f8:: If Zoomfactor not in 89 Height_Y1 := 666 If Zoomfactor in 89 Height_Y1 := 589 Goto, ZoomNav ~h & f9:: If Zoomfactor not in 89 Height_Y1 := 749 If Zoomfactor in 89 Height_Y1 := 664 Goto, ZoomNav ~h & f10:: If Zoomfactor not in 89 Height_Y1 := 820 If Zoomfactor in 89 Height_Y1 := 740 Goto, ZoomNav ~h & f11:: If Zoomfactor not in 89 Height_Y1 := 900 If Zoomfactor in 89 Height_Y1 := 785 Goto, ZoomNav ~h & f12:: If Zoomfactor not in 89 Height_Y1 := 950 If Zoomfactor in 89 Height_Y1 := 820 Goto, ZoomNav ~h & 1:: If Zoomfactor not in 89 Height_Y1 := 950 If Zoomfactor in 89 Height_Y1 := 860 Goto, ZoomNav ~h & 2:: If Zoomfactor not in 89 Height_Y1 := 950 If Zoomfactor in 89 Height_Y1 := 920 Goto, ZoomNav ZoomNav: If (Zoomfactor = "x") { MsgBox, 4144, Page Navigation Zoomed, ( Zoomfactor not set! Set zoomfactor: 89`% P + \ 100`% P + O 110`% P + 1 120`% P + 2 130`% P + 3 140`% P + 4 150`% P + 5 160`% P + 6 170`% P + 7 180`% P + 8 190`% P + 9 200`% P + 0 ) Return } CoordMode, Mouse, Screen MouseGetPos, StartX, StartY ; relates to ;+L and ;+' in F1 (Defined Page) - mouse to the left/right If Zoomfactor in 89,100 ; only relevant for zoomfactors 89% and 100% { If (StartX < A_Screenwidth/2) { Left_X1 := CSA_X1 Right_X2 := A_Screenwidth/2 ; if mouse left first found staff is left\ } If (StartX > A_Screenwidth/2) { Left_X1 := A_Screenwidth/2 Right_X2 := CSA_X2 } } If Zoomfactor not in 89,100 { Left_X1 := CSA_X1 Right_X2 := CSA_X2 } ; MsgBox, Left_X1 is %Left_X1% If Zoomfactor in 89 ImageSearch, Micro_X, Micro_Y, Left_X1, Height_Y1, Right_X2, CSA_Y2, *150 Screen_Micro_End_Staff_89.png ; (*change*?) If Zoomfactor in 100 ImageSearch, Micro_X, Micro_Y, Left_X1, Height_Y1, Right_X2, CSA_Y2, *160 Screen_Micro_End_Staff_100.png ; (*change*?) If Zoomfactor in 110 ImageSearch, Micro_X, Micro_Y, CSA_X1, Height_Y1, Right_X2, CSA_Y2, *160 Screen_Micro_End_Staff_110.png ; (*change*?) If Zoomfactor in 120 ImageSearch, Micro_X, Micro_Y, CSA_X1, Height_Y1, Right_X2, CSA_Y2, *160 Screen_Micro_End_Staff_120.png ; (*change*?) If Zoomfactor in 130 ImageSearch, Micro_X, Micro_Y, CSA_X1, Height_Y1, Right_X2, CSA_Y2, *160 Screen_Micro_End_Staff_130.png ; (*change*?) If Zoomfactor in 140 ImageSearch, Micro_X, Micro_Y, CSA_X1, Height_Y1, Right_X2, CSA_Y2, *160 Screen_Micro_End_Staff_140.png ; (*change*?) If Zoomfactor in 150 ImageSearch, Micro_X, Micro_Y, CSA_X1, Height_Y1, Right_X2, CSA_Y2, *160 Screen_Micro_End_Staff_150.png ; (*change*?) If Zoomfactor in 160 ImageSearch, Micro_X, Micro_Y, CSA_X1, Height_Y1, Right_X2, CSA_Y2, *160 Screen_Micro_End_Staff_160.png ; (*change*?) If Zoomfactor in 170 ImageSearch, Micro_X, Micro_Y, CSA_X1, Height_Y1, Right_X2, CSA_Y2, *160 Screen_Micro_End_Staff_170.png ; (*change*?) If Zoomfactor in 180 ImageSearch, Micro_X, Micro_Y, CSA_X1, Height_Y1, Right_X2, CSA_Y2, *160 Screen_Micro_End_Staff_180.png ; (*change*?) If Zoomfactor in 190 ImageSearch, Micro_X, Micro_Y, CSA_X1, Height_Y1, Right_X2, CSA_Y2, *160 Screen_Micro_End_Staff_190.png ; (*change*?) If Zoomfactor in 200 ImageSearch, Micro_X, Micro_Y, CSA_X1, Height_Y1, Right_X2, CSA_Y2, *160 Screen_Micro_End_Staff_200.png ; (*change*?) If (Errorlevel = 1) { MsgBox, 4144, Navigation Zoomed Page, === Staff not found! === Return } If (Errorlevel = 2) ; for first time testing only { MsgBox, Search not conductable! Return } If (Errorlevel = 0) { ; determine offset with PixelMousing If Zoomfactor in 89,110,120,130,150 MouseMove, Micro_X + 6, Micro_Y ; to barline (*change*?) If Zoomfactor in 100,140,160 MouseMove, Micro_X + 7, Micro_Y ; to barline (*change*?) If Zoomfactor in 170,180,200 MouseMove, Micro_X + 9, Micro_Y ; to barline (*change*?) If Zoomfactor in 190 MouseMove, Micro_X + 11, Micro_Y ; to barline (*change*?) ; If Zoomfactor in 300 ; MouseMove, %Micro_X%, %Micro_Y% Sleep, 50 Click ; select barline Sleep, 50 If Zoomfactor in 300 Return } Loop, 6 { Send !{left} Sleep, 200 ImageSearch, , , SB_X1, SB_Y1, SB_X2, SB_Y2, *40 Statusbar_Note_Pitch.png Sleep, 30 If (ErrorLevel = 1) Continue If (ErrorLevel = 0) Break } Send ^+{left} ; select measure - includes image Return ; ♣==================================== HELP INFO (2) ============================================= ; this is the section in Master.ahk where the replacement takes place ; ♣============================= NEW VERSION INFO SCREEN ZOOM & VIEW ============================== ~[ & z:: MsgBox, 4096, Master Zoom & View - [ + Z, ( VIEW Page P + V Continuous P + C Page ↔ Continuous P + L Single Page P + S Page Width P + W Whole Page P + H Two Pages P + T MIXER Show/hide F10 + F11 Info Mixer F10 + H ZOOMFACTOR FIXED PAGE AREA SELECTION 89`% P + \ # H + F1 100`% P + O # H + F2 110`% P + 1 H + F3 120`% P + 2 H + F4 130`% P + 3 H + F5 140`% P + 4 H + F6 150`% P + 5 H + F7 160`% P + 6 H + F8 170`% P + 7 H + F9 180`% P + 8 H + F10 190`% P + 9 H + F11 200`% P + 0 H + F12 300`% P + E H + 1 400`% P + R H + 2 # Selection areas dependent on mouse position Mouse to left side canvas ; + L L-page Mouse to right side canvas ; + ' R-page ZOOMFACTOR VARIABLE Open utilities Z + U Enter a number between 30 and 1600 General Hotkeyinfo [ + H Ergonomy [ + E More Hotkeyinfo [ + M Utilities [ + U WorkFlow [ + W ) Return ; ♣============================ NEW VERSION INFO SCREEN of F3 ===================================== ; a small addition to F3_Navigation.ahk. Replaces the earlier ~[ & 3:: ; The main Info Screen of the F3 group 'Navigation' now includes ; a reference to 'Page Area Selection- in Master' ~[ & 3:: MsgBox, 4096, F3: Navigation [ + 3, ( GLOBAL NAVIGATION To the first empty measure Z + TAB after the last non-empty measure * Skip notes and go M + TAB To the next empty measure Skip whole measure rests and go CapsLock + TAB to the next note in staff * As of MSc 3.5 there is a shortcut 'Go to first empty trailing measure'. Score - select first element \ + Home Score - select last element \ + End Continuous View - to highest staff \ + Up Continuous View - to lowest staff \ + Down Page View - to highest staff \ + PageUp Page View - to lowest staff \ + PageDown Select first note or rest Next screen highest staff \ + Right Previous screen highest staff \ + Left Scroll up # Z + Up Scroll down # Z + Down Scroll left # Z + Left Scroll right # Z + Right # Master commands Micro Navigation Info [ + I Page Area Selection- in Master [ + Z ) Return