PlayMaster PlayMusic is a plug-in for Finale (http://www.playmaster-finale.comwww.playmusic-finale.com). This plug-in was created in Visual C++ without using MFC. The source code is about 1.2MB. The size of the .fxt-file is 259KB. Now available version 18.4.2 18.5.0.2 (only for Windows).

PlayMaster PlayMusic has as its main purpose to make performing music available to more people. It provides a very easy method of playing music scores on the MIDI keyboard. Practice shows that even persons who have never played the piano or any other keyboard instruments, now can perform their favourite piano pieces.

This plug-in processes keyboard message and replaces in it the pressed key number to "true" number, i.e. corresponding to the next note. The plug-in does not have any relationship to to the playback mode.

Perhaps you were misled by the form of the cursor that appears after you launch PlayMaster. But this is not the playback cursor. I just made it similar to the Finale's playback cursor. Moreover, I made it so that you can change its color through View->Select Display Colors->Playback Cursor (only bear in mind that you should terminate PlayMaster before open the View menu).

This plug-in returned to its original name PlayMusic. Accordingly, the site has moved to www.playmusic-finale.com. Now available PlayMusic 18.5.0.1 for Windows. Any version of PlayMaster can be updated to PlayMusic for free. If you have already authorized PlayMaster, then re-authorization is not required.

File FINALE.INI keeps the settings (including the color of the playback cursor) from the previous run of Finale. To find the actual value of the cursor's color, you should open Select Display Colors item in View menu, get a pixel from Playback Cursor window, and then close Preferences - Display Colors window. But, of course, necessary that all opened windows were practically invisible.

For all open child window the function EnumChildTest() shows the window class name, screen coordinates of the upper-left and lower-right corners (if the window is not hidden), and the window text (if such text exists).

LPRECT lpWndRect = new RECT; char szWndText[256]; bool bWndRectResult=false; if(IsWindowVisible(hWnd)) bWndRectResult=GetWindowRect(hWnd, lpWndRect); //The dimensions are given in screen coordinates that are relative to the upper-left corner of the screen.

lpEnumChildParams->lpszWndClassName="window_class_name"; //replace it for the real window class namelpEnumChildParams->nSameClassWndNums=0; //if necessary, replace 0 for another number of previous windows //from the same class lpEnumChildParams->nSameClassWndCount=0;lpEnumChildParams->hResultWnd=0;

The most acceptable is the window belonging to the class "AfxFrameOrView120u" (for Finale 2014.5) because Finale displays the score in it. Here are the window class names for the various versions of Finale:

And the most important question: how to define the coordinates of the cursor, to draw it between the top and bottom of the appropriate staff system vertically and exactly to one pixel to the left of the desired note or notes horizontally for any score position on the screen, whether for Scroll, or Page, or Studio View of the score?

Unfortunately, the forum format does not allow to answer this question here, because all it is most of the source code. As mentioned above, the size of the PlayMusic source code is about 1.2MB. Since the accessible Finale data structures (contained in PDK) are not sufficient for these purposes, it requires using various means of Win API. In some cases it is necessary to recognize the image on the screen.