Tksolfege is a free music ear training program written in Tcl/Tk. It contains exercises for recognizing musical intervals, chords, sight reading and rhythm dictation. Such skills are a requirement in many university music departments and considerable practice is needed to develop such proficiencies. The program was designed for both the novice and experienced user.
The program was inspired by other similar and free programs such as Gnu Solfege and Ricci Adams'musictheory.net. Another program LenMus deserves notable mention in particular for the rhythm exercises.
The software was designed to run on various platforms such Windows on the PC, MacOCX, and Linux. Audio output is produced using Steve Landers' muzic interface.
Download tksolfege_setup.exe and run to install the program on your system. Now proceed directly to the section Using Tksolfege
For other operating systems such a Linux or MacOSX you will require Tcl/Tk 8.4 or higher to be installed. Start tksolfege.tcl by calling the program "wish" (eg. "wish tksolfege.tcl"). If you do not have tcl/tk 8.4 installed you can get it from dev.scriptics.com . Alternatively, you can install tclkit from www.equi4.com and run tksolfege.kit. If you are installing tclkit, You should rename the tclkit downloaded file to tclkit, make it executable and put it into one of your bin directories (eg. /usr/bin or /bin) so that tksolfege.kit can be opened by tclkit.
For MacOS X, you require a recent build of Tcl/Tk (i.e. Tcl 8.4.11 or higher) and the aqua version is preferable.
Tksolfege.tcl requires various external packages and files. For convenience, these external packages were wrapped into a starkit or tclkit which is basically something similar to a zip file also but contains a "virtual file system". The tclkits and starkits are created by an application called sdx which is somewhat similar to zip and unzip but not as transparent. The term wrap is used to describe the process of creating a tclkit from a tk/tcl script. The reverse operation called unwrap produces a tclkit folder containing the original script (with a slight modification) and some other stuff. A tclkit folder can be converted into a starkit by another wrap operation which adds the tcl/tk runtime system.
I have not provided a starkit executable for other operating systems so you will need to run either tksolfege.tcl or tksolfege.kit. If you have tcl/tk 8.4 installed, then you can run tksolfege.tcl but you will also need the external package muzic and the external folder called glyphs. These can be found in the tksolfege.zip file. The muzic package was written by Steve Landers, so the latest version can be found in his site, muzic; however, for your convenience an 'unwrapped' version was also included in tksolfege.zip. More details on where to place those folders follow.
If you are running tksolfege.tcl rather than tksolfege.kit, then it requires the muzic package to be in one of your autopath folders. In Windows, assuming you are running tksolfege.tcl instead of tksolfege.exe, you would place the muzic folder in c:/tcl/lib/. In Fedora 4 Linux, you can put it into any one of these folders /lib/, /usr/share, /usr/lib, /usr/share/tcl8.4 or /usr/share/tk8.4. (To get this list, start up tclsh and type "set auto_path" without the double quotes.) The glyphs folder should be in the same place as tksolfege.tcl.
Tksolfege.kit and tksolfege.exe already have the muzic package and glyphs folder built in, so no further configurations is necessary.
Muzic uses the built-in MIDI synthesizer on Windows and MacOSX platforms. (It did not work on the Mac system I tested.) For other systems, such as Unix and Linux, you will need a SoundFont file. (A default sound font comes with the muzic.kit and, for your convenience, is included in tksolfege.zip.) The default.sf2 is provided just to get you started and is low in quality in order to save disk space. I recommend that you find something better. Free soundfont files can be downloaded from Big SoundFonts.
Once you have put a soundfont file on your system, it will be necessary to tell tksolfege.tcl and tksolfege.kit where to find it. Running tksolfege for the first time should create a tksolfege.ini file in your current folder. Edit tksolfege.ini and replace default.sf2 in the line soundfont default.sf2 with the path to the desired soundfont file. If you want to use the built-in MIDI synthesizer on your system, replace default.sf2 with the word none (this is the default on Windows). Note that if for some reason tksolfege.ini becomes corrupted and tksolfege refuses to start, simply delete tksolfege.ini and a new file will be created with the factory settings the next time you start tksolfege.
You may occasionally see a warning such as "fluidsynth: warning: Failed to pin the sample data to RAM; swapping is possible." I do not know how to eliminate this message.
|
Starting tksolfege will display a this window or something similar. If you hear a sound when you click the button labeled new, everything should be running ok. Initially the program is set up for distinguishing the major, minor, augmented and diminished triads played in melodic mode. When you press new , you will hear the chords played in sequence. If this is too easy, you can change this mode to harmonic by selecting the menubutton currently labeled melodic; the menu button will now be labeled harmonic andl all the notes will be played as a chord. If you chose both then you will hear it both ways. Once you have identified the chord, click one of the buttons in the left column. |
If you identified the chord correctly, the program will acknowledge this with a message. If you were incorrect, it will play the chord you have chosen and tell you to try again. If you want to hear the unknown chord again, press the repeat button. If you give up, press the answer button.
After a few trials, you may wish to see how you have been doing. Clicking the stats button will display the confusion matrix illustrated below.
|
The overall accuracy and the average number of seconds you took to get the correct answer will also be displayed. Each row of the confusion matrix corresponds to the class of chord or interval chosen by the computer. The column corresponds to your response. Thus in this example there were 8 trials. In one instance the user misidentified the major3rd as a major2nd. In another instance the user misidentified the perfect5th as a perfect4. These appear as off diagonal terms in the matrix. The user spent an average of 3.13 seconds to get the correct answers. On the whole 6/8 or 75 % of the trials were correct. |
If you leave the stats window exposed, tksolfege will update the matrix and other parameters as you proceed. The reset button on the top left will zero everything.
|
Tksolfege was designed for music students of any level. The second row of buttons exercise, lesson, config are used to pick the type of exercise, the level, and configure the manner that the exercise is done. The current version has six different exercises. For now, we will concentrate on the first three exercises. The remaining exercises will be discussed in separate sections. |
By default, tksolfege starts up with the chord identification exercise. The exercise button allows you to switch to other training modes. The interval identification is similar to chord identification except now you must identify an interval which is played. The same configuration parameters apply, but now you can control whether the interval is played upward from the low note or downward from the top note. The sing inteval exercise is very different and relies on you to determine whether you are singing correctly. The graphical interface and lessons are the same as for interval identification but when you press new you hear only one note. You must try to sing a note for one of the displayed interval buttons. Depending on whether the up or down checked button is selected, you sing up or down. You then check the pitch you sung by pressing one of the interval buttons on the left. More discussion is given in the ear training section.
If you don't like using the mouse like me, there are a few keyboard short cuts. Tab or shift-tab will shift the focus to one of the chord or interval buttons. Pressing the spacebar will then invoke the button under focus. Pressing the keyboard letter r is equivalent to pressing the repeat button. Pressing n, is equivalent to the new button.
For each exercise there is a large menu of lessons. For example,
for the interval identification exercise you would view the
following choices.
The menu was designed for the beginning student. Generally,
it is not easy to develop an ear for distinquishing the intervals
and you should initially concentrate in distinguishing certain
pairs. It may help to recall these intervals using particular
tunes. (See the Easter Egg, mentioned near
the end of this document.) More advanced student can configure
the lesson using your own menu item.
|
Clicking the config button brings up the adjacent window.
The program initially sets the instrument to the
Acoustic Piano. By pressing the button labeled with
this name, a list box appears allowing you to select other
instruments. Generally, people develop an ear for recognizing
harmonic chords played on a particular instrument. When
they switch to other instruments with which they are less familiar
they have problems.
Chord and interval identification is easy if they have the same tonality (e.g. Cmaj, Cmin, Cdim and etc.) Handling shifting tonalities, however, is a more challenging task for the user. Tksolfege chooses the tonality from a range of notes that are specified by the two sliders lowest pitch and highest pitch. These are specified in MIDI pitch units where middle C is at 60. Each octave is spaced by 12 MIDI units. |
The duration of the note and the speed at which the chord is arpeggiated is adjusted by the note duration slider where the units are in milliseconds. The range of 200 to 1000 milliseconds should be quite adequate for most users.
Once you gain speed, you may want tksolfege to automatically pick a new chord each time you get the correct answer. Ticking the box labeled auto new will put the program in this mode. It will pause for 1.5 seconds after your last correct response. (If you wish to change this time, you will have to edit the tksolfege.ini file.)
Similarly, you may find it undesirable for tksolfege to play the chord or interval of your wrong choice. This can be turned off by unticking the checkbox labeled auto play. Personally, if I have made an error, I would prefer to hear my mistake.
The chord identification and interval identification can be configured to run as an ear training exercise or theory exercise or both. Normally, the aural radio button is selected and the program plays the interval or chord on your speakers. If visual is selected, the program will display the chord or interval in music notation. Selecting both will run the program both ways.
Learning to distinguish chords (especially in harmonic mode) is quite difficult. If you are having trouble, I suggest you limit the pitch range and stay in the higher registers. Furthermore, you should work with only two chords (e.g. major and minor). The menu button labeled select lesson allows you to chose one of the levels. If none of the choices is suitable, then you can make your own lesson by selecting the item your own. A list of all the chords built in will displayed; tick the ones you want.
For your reference, here is a description of the chords and sevenths.
| name |
alternate name |
representation |
|---|---|---|
| maj | major | 1 3 5 |
| majinv1 | major 1st inversion | 3 5 1 |
| majinv2 | major 2nd inversion | 5 3 1 |
| min | minor | 1 b3 5 |
| mininv1 | minor 1st inversion | b3 5 1 |
| mininv2 | minor 2nd inversion | 5 1 b3 |
| aug | augmented | 1 3 #5 |
| auginv1 | augmented 1st inversion | 3 #5 1 |
| auginv2 | augmented 2nd inversion | #5 1 3 |
| dim | diminished | 1 b3 b5 |
| diminv1 | diminished 1st inversion | b3 b5 1 |
| diminv2 | diminished 2nd inversion | b5 1 b3 |
| majmin | dominant 7 | 1 3 5 b7 |
| majmininv1 | dominant 7 1st inversion | 3 5 b7 1 |
| majmininv2 | dominant 7 2nd inversion | 5 b7 1 3 |
| majmininv3 | dominant 7 3rd inversion | b7 1 3 5 |
| maj7 | major 7 | 1 3 5 7 |
| maj7inv1 | major 7 1st inversion | 3 5 7 1 |
| maj7inv2 | major 7 2nd inversion | 5 7 1 3 |
| maj7inv3 | major 7 3rd inversion | 7 1 3 5 |
| min7 | minor 7 | 1 b3 5 b7 |
| min7inv1 | minor 7 1st inversion | b3 5 b7 1 |
| min7inv2 | minor 7 2nd inversion | 5 b7 1 b3 |
| min7inv3 | minor 7 3rd inversion | b7 1 b3 5 |
| halfdim7 | half diminished 7 | 1 b3 b5 b7 |
| halfdim7inv1 | half diminished 7 1st inversion | b3 b5 b7 1 |
| halfdim7inv2 | half diminished 7 2nd inversion | b7 1 b3 b5 |
| halfdim7inv3 | half diminished 7 3rd inversion | b7 1 b3 b5 |
| dim7 | diminished 7 | 1 b3 b5 bb7 |
| dim7inv1 | diminished 7 1st inversion | b3 b5 bb7 1 |
| dim7inv2 | diminished 7 2nd inversion | b5 bb7 1 b3 |
| dim7inv3 | diminished 7 3rd inversion | bb7 1 b3 b5 |
There are many ways of doing the singing exercises. First configure the lowest and highest pitch to be inside your singing range. If you set the range to include several pitches, then each time you press new you should try to sing a note which is a fixed interval above or below this note. Singing below seems to be more difficult. (It helps to keep some tunes in your head. For example to get a descending major 2nd interval, think of the first two notes in the nursery rhyme "Three Blind Mice") Next try to sing several intervals below or above the note.
If this is too hard, you can work with a fixed tonic. Set the pitch range to only one note. Using the select lesson/your own menud button, display all the major or minor intervals up to an octave. Now try to sing random intervals from the tonic while checking your results aurally.
In general, you should work slowly taking your time to sing the interval if necessary. This is something you practice a few minutes every day. You can find quite a lot of advice from various web sites. (Search on solfege or ear training.)
If you select exercise/rhythmic dictation the tksolfege console will now appear like something here. Now if you press new a random rhythm will created consisting of say 4 beats from the rhythm elements shown in the top right frame of the console. The program will give you a count of 4 beats and then play this rhythm. Your object is to write out the rhythm using these four rhythm elements. To save you the trouble of using a paper and pencil, you can click on these four buttons, and your preliminary guess will appear like this.
At any time you can press repeat to hear the same pattern again. You can make corrections by clicking on any of your choices with your mouse pointer. This will place an edit window on this selection.
Now pressing any rhythm element button will substitute a new rhythm element at that location. When you finish, you should click on the same item to deselect it.
Pressing the answer button will show the correct pattern as illustrated below.
The number of correct beats will also be indicated. Once you have learned to manage with these simple patterns, you are ready to advance to other levels. Press the lesson button and choose one of the lessons. There are various levels and some of them get very hard. In order to handle tied notes some of the rhythm elements contain two beats.
There is another set of eight levels in compound meter, which you can assess by pressing lesson/compound rhythm. For compound rhythm, the beat is now based on a dotted quarter note. You should train yourself to handle both duple and compound meters. At the present time, the stats button has not been implemented for rhythmic dictation.
At some point you will need to customize the lesson, by clicking lesson/your own. A selection of rhythm elements as shown below will be displayed.
Tick the checkboxes of the rhythms that you wish to use and the selected rhythm buttons should appear at the top of the console. If you are having difficulty with particular rhythm patterns, I recommend that you restrict the rhythm elements to those few patterns.
|
Tksolfege keeps track of your performance on the rhythm exercise. If you click the stats button the following window should pop up on the screen. |
|
The time signature, tempo, the MIDI instruments and
loudness are all configurable. Press the config button
and the following window should appear. If you specify more
than one beat per bar, tksolfege will apply an accent to the first
note of the first beat of the bar. (A weaker accent is applied
to the third beat if 4 beats per bar is selected.) The
accent makes that note louder by double (or single) the value
specified in the scale selector assuming there is room to
maneuver. Since the maximum loudness level allowable is 100,
the loudness + 2*accent should be less than 100 in order
for this to be effective. The number of beats
that may occur in a trial is limited to 18, so the number
of allowable measures depends on the number of beats per
measure.
|
This is based on the "moveable doh" system where doh represents the tonic for the particular key signature. A short random melody consisting of a few notes is played and the first note of the piece is indicated using the do/re/mi... vocalizations. Using the buttons, displayed on the window you identify the pitches of the remaining notes. The new, repeat and answer buttons behave as usual. To edit a note, select the note by clicking on it using the mouse pointer and then click on the desired vocalization. Then de-select the note by clicking again on the same note. The configuration menu allows you to select the number of notes in the short melody. The tonic pitch (assuming a major scale) can also be adjusted. 60 is middle C and it goes up or down in semitones. Ticking the small intervals checkbox causes the program to limit melodic intervals to 2 or less adjacent notes in the scale selected, when the program generates a new random sequence.
The MIDI pitch specifies the pitch of the tonic of the major scale.
The lesson menu button provides a choice of 10 lessons of increasing difficulty. If you select your own, the following window
allows you to customize the scale for your own application. Lower and higher octave vocalizations are indicated with either a comma or apostrophe respectively.
Like rhythm dictation, solfege dictation also keeps track of your score. This is accessed using the stats button. The program considers all enharmonic notes as equivalent.
To hear the first note again, press repeat To hear the answer you press the answer button. The program does not have ears, so you must use your own judgement on whether you sang the sequence correctly.
![]() |
The MIDI pitch parameter in the config window allows you to control
the key signature and octave. The scale used is specified by the
lesson menu button. For example, in lesson level 1,
the scale is restricted to do, re, me . If MIDI pitch 60
(middle C) was chosen, the scale would be C,D, and E. If MIDI pitch
65 (F above middle C), then the scale would be F,G, and A. The
program automatically displays the key signature of the major
scale associated with this pitch. If clef control is
set to automatic the program will choose either the bass
clef or the treble clef based on the value of MIDI pitch. You
can override this choice by specifying a particular clef.
The transpose slider allows you to transpose the audio output
by the specified number of semitones. This allows you to practice
with different key signatures and clefs even though it may be out
of the range of your voice.
If you are having difficulty sight singing these random patterns, you should probably practice singing these regular patterns in order to learn the intervals. You can select one of these patterns using the patternselector. The pattern codes are defined as follows. |
0123
0102
0121
0213
0314
0321
Note that these patterns are effected by the notes selected in the
lesson menu, and other parameters in the configuration window.
|
This is another theory exercise. The program displays the clef
with the standard configuration of sharps or flats. Your goal
is to identify the key signature. Click new to start,
and then click the button corresponding to the key signature.
You can adjust the maximum number of flats and sharps by clicking
on the lesson button. The stats indicates how
you are doing. If you wish to concentrate on particular key
signatures you can select the lesson / your own menu
button. The exercise can be configured to use other clefs
or scale modes. Click the config menu button and select
one of the clefs or modes in the configuration window using the
menu buttons on the right.
|
| interval | ascending | descending |
|---|---|---|
| minor 2nd | A Hard Days Night | Fur Elise |
| major 2nd | Silent Night | Mary Had a Little Lamb |
| minor 3rd | Greensleeves | Star Spangled Banner |
| major 3rd | When the Saints | Summer Time |
| perfect 4th | Here Comes the Bride | Oh Come All You Faithfull |
| tritone | Am I Evil | |
| perfect 5th | Twinkle Twinkle Little Star | Flint Stones theme |
| minor 6th | Go Down Moses | Please Don't Talk About Me |
| major 6th | My Bonnie Lies | Over There |
| minor 7th | Somewhere | American in Paris |
| major 7th | Fantasy Island Theme | |
| octave | Somewhere over the Rainbow | Willow Weep for Me |
If the same program is used by many students, the program should always start from a standard state rather than revert to its state the last time it was executed. Setting the variable lockconfig to a value greater than 0 will prevent the program from overwriting the tksolfege.ini file (i.e. storing the current state when the program exits).
The program uses a random number generator to pose questions for the student. Each time the program is started the random number generator is initialized with a new seed which is determined from the current date and time. When the program is used for evaluating the student, it would be desirable to be able to use the same sequence of questions. This can be done by setting the variable repeatability to a value greater than 0. When tksolfege is restarted an additional line of widgets will appear on the control window as illustrated below.
The random seed is represented by a 4 letter alphanumeric, here Ecur. (Each letter can get either a number 0-9, or a case sensitive letter A-Z or a-z). You can enter any seed in the entry box and then press the enter key on your keyboard. Alternatively, you can click the random button and a new seed will be chosen. To run the program in a repeatable mode, you should click the reset button before clicking the new button.
For operating systems other than Windows, it is necessary to specify a soundfont file. Otherwise you should enter "none" (without the double quotes). The program searches for the soundfont file in the current folder.
If the variable makelog to 1, tksolfege will create a log file called tksolfege.log of the questions and your responses. This may help you figure out where you are having problems. Presently the log has only been implemented for the chord and interval exercises. A sample log for chord identification is shown here.
E5-dim 7 aug 11 dim E4-aug 6 dim 11 min 18 aug G#3-dim 9 dim G3-min 3 min A#5-dimThe unindented entries are the chord played and the indented entries are the user's response. For example, the first chord is Edim with root E5. It took two tries to get the right answer. The first try 'aug' was made 7 seconds after the chord was first played. The second try 'dim' was made 4 seconds, later or 11 seconds after the chord was first played.
The next sample is for the chord exercise.
C4-perfect5 2 perfect5 G#3-major3rd 1 major3rd A4-major3rd 2 major3rd G3-major3rd 2 major3rd E5-perfect5 3 perfect5 A3-perfect5The first question is a perfect5 starting from C4. The user got the correct answer withen 2 seconds.