Click here to Skip to main content
13,700,439 members
Click here to Skip to main content
Add your own
alternative version


40 bookmarked
Posted 12 May 2003


, 9 Jun 2003
Rate this:
Please Sign up or sign in to vote.
A music skill builder

Sample Image - maximum width is 600 pixels


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.<!------------------------------- That's it! --------------------------->


This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


About the Author

Web Developer
Australia Australia
No Biography provided

You may also be interested in...

Comments and Discussions

GeneralCompilation Errors Pin
Chris Korzeniowski28-Jun-04 15:30
memberChris Korzeniowski28-Jun-04 15:30 
GeneralRe: Compilation Errors Pin
bennyrascal29-Jun-04 6:46
memberbennyrascal29-Jun-04 6:46 
QuestionWhat about Pitch Detection Algorithm Pin
David Mikhaeli29-May-03 1:26
memberDavid Mikhaeli29-May-03 1:26 
AnswerRe: What about Pitch Detection Algorithm Pin
bennyrascal30-May-03 18:57
memberbennyrascal30-May-03 18:57 
GeneralNo Sound Pin
Wagner20-May-03 5:31
memberWagner20-May-03 5:31 
GeneralRe: No Sound Pin
bennyrascal20-May-03 9:19
memberbennyrascal20-May-03 9:19 
GeneralRe: No Sound Pin
bennyrascal30-May-03 18:38
memberbennyrascal30-May-03 18:38 
QuestionDoes that "Perfect Pitch" course work ? Pin
Stone Free13-May-03 23:10
memberStone Free13-May-03 23:10 
AnswerRe: Does that "Perfect Pitch" course work ? Pin
bennyrascal14-May-03 0:01
memberbennyrascal14-May-03 0:01 
AnswerRe: Does that &quot;Perfect Pitch&quot; course work ? Pin
craigherren3-Sep-03 12:09
membercraigherren3-Sep-03 12:09 
GeneralRe: Does that &quot;Perfect Pitch&quot; course work ? Pin
seanclancy13-Sep-08 16:40
memberseanclancy13-Sep-08 16:40 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Cookies | Terms of Use | Mobile
Web01-2016 | 2.8.180910.1 | Last Updated 10 Jun 2003
Article Copyright 2003 by bennyrascal
Everything else Copyright © CodeProject, 1999-2018
Layout: fixed | fluid