This program is intended to help musical students increase their skills in acquiring perfect pitch and in recognising intervals.
The History of Pitch
The idea for this program goes back to 1993. My son, who was a music student, wanted to acquire ‘perfect pitch’ after seeing an advertisement of how one could train themselves. I sent off to New York and purchased the audio tapes and booklet at some rather dear price. In the next few months we had many sessions where I sat playing notes on a guitar testing him. I decided to try to computerise the procedure so he could test himself and record a history of how he was progressing. Had an Amiga in those days and wrote an AREXX script which randomly played different notes and then accepted keyboard input for his answers. I remember it had problems but did work. Main problem was the timbre.
When I bought an IBM pc in 1994 my daughter, also a muso, suggested I write a better program and also test intervals (relative pitch). Having done a little C but no C++ I bought a few of the SAMS and QUE books and started. It took a long time to get the midi bit controlled. Somewhere about 1997 I packed it away even though I had some ideas on doing a chords function. This year I looked at it again and found that the THREED objects required a licence on my current compiler. Still not sure what happened there as they came with one of the books I bought. Found “The Code Project” and many free button objects to replace the THREED ones. Reprogrammed that in February.
There are a few things I’m unhappy with in the program. I couldn’t get a timer for the whole program. There are currently 2 sections, Perfect Pitch and Relative Pitch, which have there own timer functions. Just didn’t know how to do it. The Score windows are poor. Never thought of a good way to display the results. Also wanted to do something on Chords but I’m not even sure now what I wanted to do. Might have time to look at this again later this year but not now. So I thought I’d put the code into the public domain. It is all original except for the midi definitions in the PitchDlg.h file and the new button controls like ShadeButton. I can not give credit on the midi definitions as I’ve lost where they came from. No apologies for the coding techniques. I am not a C programmer. I have been a mainframe programmer for 43 years (showing my age here) and most of those were using assembler and its predecessors. The last 6 years my main language was PL/X, an internal IBM language very similar to PL/I. Am hoping someone finds the idea interesting enough to clean it up or add to it. If so, I’d appreciate a copy of any mods they make.
Points of Interest
The main window has push buttons for three music functions (Perfect Pitch, Relative Pitch and Chords). The Chords function is not written. Also the Help button is not programmed. Relative Pitch displays a window with a selection section on the left and an answer section on the right. The idea is for the user to select the intervals they want to test on. There are a few controls which allow the selected interval note range to be controlled, the time between the intervals to be set and the direction of the notes to be either only up or only down or either way.
Each function also has a right mouse button popup with instrument selection, difficulty level (not programmed), midi port selection, note length, preferences and help (not programmed). There is only one preference programmed. There is also a score push button. When hovering over it a summary of the score is display over the button. If pressed, a more detailed window is opened. The play button is activated when an interval has been selected. The play button becomes a replay button once pushed until an answer has been given. The Perfect Pitch function is similar except the selection criteria are the twelve notes in the scale. There is no 'select all' in Perfect Pitch only because it didn't seem as necessary as in Relative Pitch. There is some metrics code to account for different resolutions but it is insufficient. It remembers where each main window was placed and restarts there. The size of each window is fixed. The colours are because i like purple and pink.