You will write a program that will provide input fields into which the user will provide the following inputs: MIDI file name (the program willprovide a "Browse" button to activate folder navigation capability for selecting the file), MIDI track number, time offset from start of song in min:sec:hundredths, number of bars to display in a display region, the display region pixel height, the display region pixel width, and screen X and Y coordinates for the display region origin. The program will also provide "play" and "stop" buttons.
When the user presses "play", the program will display within the specified display region, using standard music notation, the specified number of bars of the selected track of the MIDI file, starting with the bar in which the time offset falls. The displayed bars will include the staff, clef, key signature, time signature, notes, and rests as indicated in the MIDI file. While the program will not be required to audibly play the MIDI file, the program will visually "play" the MIDI file by visually distinguishing the currently "played" note and rest from the other displayed notes and rests (e.g, by changing it from black to green and then back to black again) for its specified duration at the tempo indicated in the MIDI file. "Play" will start with the note or rest that is closest to the specified time offset, and proceeding to the next note or rest, and so on. After the program has "played" the displayed bars, it will replace the displayed bars with the following bars as the song progresses, and so on. Visual song "play" will continue until the user presses the "stop" button or until the end of the song is reached.
Open source libraries may be used, but only if their licenses state that they may be distributed, free and without royalties, as part of commercial applications.