If you're just starting to use this ear trainer, and/or if you're looking for a new ear training exercise, I'd suggest trying some of the sample exercises. When choosing an exercise, you'll want something that challenges your aural skills, but not so much that it's totally beyond your current capabilities. You can then add that exercise to your daily ear training routine, sticking with it for several weeks/months, or however long it takes for your accuracy to improve.
If all of the exercises are too challenging for you, you could start with the first "Intervals: Melodic" exercise. I'd then select only major and minor 2nds as the "Intervals to Play." Once you learn to distinguish the sounds of those two intervals, you can add major and minor 3rds, and repeat the process until you've learned all of the interval sounds. In addition to listening, I'd also recommend that you try singing the interval sounds, using the "Sing: Play First Note" Play Mode.
Another good exercise for beginners is "Intervals: Cadence + Note." That is a fairly well known exercise, attributed to the legendary jazz educator Charlie Banacos. By playing a cadence followed by a note, it teaches relative pitch (and interval sounds) by relating the sound of a note to a C major key center. The sound of a minor sixth, for example, will occur when the single note is an Ab.
For all of the sample exercises, you can use them as-is, or you can customize and save them in your account as new exercises.
This ear trainer can be used in a variety of ways. It was originally designed to be used in a call-and-response fashion, where it plays an exercise and you try to play it back on your instrument. Over the years, however, I have added support for sight singing, as well listening-only exercises, where the goal is to identify something you've heard (e.g. the "Intervals: Cadence + Note" sample exercise). I recommend incorporating a variety of these approaches in your ear training. This will help to ensure that you aren't overlooking any weaknesses as you progress.
I also suggest that you practice over a wide range of octaves ("Key center" has options to change the octave). In my own practice, I initially neglected lower and higher octaves, and consequently I have much more difficulty identifying those pitches, intervals, etc. I've been working on them more as of late, but I certainly wish I had started sooner.
When learning intervals (a common starting point), some people like to use song associations (e.g. "Here Comes the Bride" for an ascending perfect 4th). I originally used song associations to learn some intervals, but now I focus on the sound of the interval alone. If you choose to use song associations, your goal should be to get to a point where you can instantly recognize the sound of each interval, without having to think of the song.
Ear training takes time, as you gradually teach your ears/brain to recognize various sounds. Everyone proceeds at a different rate, but with daily practice, you should notice progress over time. Don't give up!
When playing along with your instrument, be sure to set the "Key Center" to your instrument's key (Bb: trumpet, clarinet, tenor sax, Eb: alto sax, etc) so the notes and pitches will match your instrument... unless, of course, you'd also like to work on transposing! You can also change the staff to bass clef by clicking the small arrow beneath the clef.
Looking for more material to play by ear? If so, be sure to check out my simple song randomizer.
The scratchpad, located under the custom tab, allows you to create your own ear training exercises using a combination of melodies, chords, and jazz chord progressions. The scripting method for the scratchpad is based on ABC notation (I think this section of the docs is the most useful). ABC notation can be a bit daunting at first, so you can also create a wide variety of scripts using a simpler format that I created. Following are some scripting examples to get you started with the scratchpad:
This sample includes 3 octaves of notes, starting from G below the staff and ascending chromatically.
As you can see, if you want a melody comprised of quarter notes, you can just list the individual notes.
Also notice the use of a natural sign ( =
) to cancel the use of a previously used sharp ( ^
) or flat ( _
).
G, _A, =A, _B, =B, C ^C D _E =E F ^F G _A =A _B =B =c ^c d _e =e =f ^f g _a =a _b =b =c' ^c' d' _e' =e' =f' ^f' g'
copy to scratchpad
As a convenience, you can reset all previous accidentals with =X
. In the following example, the notes after =X
will not have any accidentals applied to them.
^C _D _E ^F ^G =X C D E F G
copy to scratchpad
When a script is played in a key other than it's original key, the notes are automatically transposed to the new key.
You can force one or more notes to always play as written, however, by surrounding the note(s) in "absolute" tags <abs></abs>
.
In the example below, regardless of which Keys to Play you have chosen, the ear trainer won't transpose the first C.
<abs>C</abs> F A c e
copy to scratchpad
To play multiple notes simultaneously, enclose the notes in brackets ( [ ]
). By default, the notes will sound for
one beat, but you can add a number after the closing bracket if you want to hold the notes for a
longer period of time. The following example starts with a C major cadence and then it rests for two beats (lowercase z
rests for one beat, and uppercase Z
rests for one measure) before
playing each note of a G7sus4 chord. Finally, it plays a G7sus4 chord and holds it for 4 beats.
[CEG] [FAC] [B,GD] [CEG]
z2 G, C D F [G,CDF]4
copy to scratchpad
If you want chords without a melody (ideal for improvising), begin with a N:chords
line.
This tells the system that you want to use an abbreviated chord notation.
The actual chords should be separated into measures with a pipe ( |
) symbol.
N:chords
F | F | E-7b5 | A7+9 | D- | D-| C- | F7 |
Bb | Eb7 | F | D- | G7 | G7 | G- | C7 | F | F |
copy to scratchpadWhile the above will use one chord per measure, you can also have up to 4 chords in a measure, where each chord lasts for 1 beat. In the following example, the first measure has 4 chords, with E- lasting 2 beats. The next measure has 2 chords, lasting for 2 beats each. That's followed by a measure with 4 chords, and a final measure with just one chord.
N:chords
E- E- B- Bb- | A-7 D7 | B-7 E7 A- D7 | G |
copy to scratchpad
If you want one or more beats with no chords, you can use an N
as your chord symbol.
For example, the following will play 2 measures of chords, then one measure with no chords, and then one final measure with chords.
Note that the final measure shows how to use a slash chord, where a C will be played as the root note.
N:chords
D- | G7 | N | G-/C |
copy to scratchpad
The following example shows all of the currently supported chord types.
-^7
is a minor chord with a major 7th. Similarly, ^b5 is a major 7 chord with a flat 5.
N:chords
C | C6 | C+11 | C^b5 | C+5 | C7 | C7b9 | C7+9 | C7b13 | C7alt | C7+11 |C7b5 | C7+5 | C7sus | C7susb9 | C- | C-6 | C-^7 | C-7b5 | Cdim |
copy to scratchpad
This 2-measure sample includes chords and a simple melody.
When combining chords and melodies, chords should appear in quotation marks, with the melody notes appearing afterwards.
In the second measure, we add a 4 to the 'C' to indicate that it should be held for 4 beats.
Note that while melody notes use ABC notation, chords use a standard sharp and flat notation (e.g. F#7
, Eb-
).
"G7" G F E D | "C" C4 | "C-" _E2 "F7" A2 | "Bb" _B,4 |
copy to scratchpad
By default, each note is treated as a quarter-note in 4/4 time.
If you want to treat each note as an eighth-note, start with a L:1/8
line.
L:1/8
"G-" F C F A ^F D F A |"C7" G A _B G ^G e d _d |"F" c4 z4 |
copy to scratchpad
By default, the ear trainer will use jazz swing rhythms for eighth and sixteenth notes.
If, however, you have a stand-alone melody that you want to play with even rhythms, add R:even
to the beginning.
Additionally, to support sixteenth-notes, you can add a L:1/16
line.
L:1/16
R:even
A4 e4 c6 B2 | A2c2B2A2 ^G2B2 E4 | A2E2B2E2 c2BA B2E2 | A2EA B2EB c2BA B2E2 | cBAc BA^GB A4 z4 |
copy to scratchpadUse the following syntax to randomly select one item from a list of sequences:
{randomSequence1; randomSequence2; randomSequence3;}
The following example will play a C, followed by either an F or a G. Afterwards it will play a C for two beats, followed by an E, Eb, or a D major triad that's held for two beats.
C {F; G;} C2 {E2; _E2; [D^FA]2;}
copy to scratchpad
By default, the ear trainer will play only one of the random options within each set of curly braces.
You can control how many of the options are played by adding a number {3:
or {all:
immediately after the first curly brace, followed by a colon.
In the example below, the exercise will play a C, followed by both F and G (in random order), and then a C for 2 beats.
After that, randomization is used within the simultaneous note brackets to randomly select three notes to play at the same time.
C {all: F; G; } C2 [{3: C; D; E; F; G;}]
copy to scratchpadTo make the random options easier to write, you can use carriage returns in the script, as follows:
N:chords
{all:
| D- | G7 |;
| E- | A- |;
| C | C |;
}
copy to scratchpad
If you want to include a chromatic range of notes, you can use an ellipsis ( ...
) as a shortcut to writing all of the individual notes.
The following will play 3 simultaneous notes for 4 beats, choosing from 5 octaves of a C chromatic scale.
After resting for 2 beats, it will play 4 notes chosen from an Eb to C# chromatic scale, holding each note for 2 beats. This example
also shows how you can specify ascending ( asc
) and descending ( desc
) directions for a random sequence of notes.
[{3 asc: C,,;...c''; }]4 z2 {4 desc: _E2;...^c2;}
copy to scratchpad
You can use the modulation tag ( [M]
) to change the key during a sequence.
If you set "Keys to Play" to "Orig," the following example will play a C major cadence, two beats of rest, and then
a major seventh arpeggio in a random key. This example also shows how you can surround specific notes with
"hide" tags ( <hide> </hide>
), in order to prevent them from appearing in the displayed (and spoken) results.
<hide>[CEG] [FAC] [B,GD] [CEG]</hide> z2 [M] C E G B
copy to scratchpad
The standard modulation tag ( [M]
) will choose any random key, however you can specify the number of half steps to modulate up or down.
For example, [M1]
will modulate up by one half step, and [M-3]
will modulate down by three half steps.
If you set "Keys to Play" to "Orig," The following example will play a ii-V7-I cycle 4 times (note the use of the repeat colons |: :4|
).
After playing it in C Major, the [M5]
tag will modulate up a perfect fourth (5 half steps) prior the each of the subsequent repeats.
N:chords
|: D- | G7 | C | C [M5] :4|
copy to scratchpad
You can also force the modulation to select from your chosen "Keys to Play" with [MK]
modulation.
If you set "Keys to Play" to just C and F#, and run the previous example with [MK]
instead of the [M5]
,
then the modulated keys will be either C or F#. Lastly, you can stop modulation with [M0]
and return to the written pitch.
If you want to force the ear trainer to play the written pitch, despite the current modulation key, you can use the "absolute" tags (<abs></abs>
).
In the following example, the ear trainer will modulate
down by half-steps, but it will always play the "absolute" C's as written.
| "C" z2 <abs>c2</abs> [M-1] | "C" z2 <abs>c2</abs> [M-1] |
copy to scratchpad
You can repeat a section of your custom script by placing a starting and ending repeat colon around the repeated section (the colon must be directly adjacent to a |
).
In the following example, I'm repeating the last measure one time, so it will last for two total measures.
N:chords
D- | G7 |: C :|
copy to scratchpad
You can also specify the total number of times for the repeated section to be played, by putting a number after the closing colon. In this example, the last 3 measures will be played 4 times.
The [M]
will also cause it to modulate to random keys on each repeat.
N:chords
C |: A7 | D- | G7 [M] :4|
copy to scratchpadA variable can be used to specify a sequence that you want to reuse later in your script. This is particularly useful if you want to repeat the same sequence multiple times, but in different places within a single script. Following are examples of how to declare a variable and set its value. Note that variable names must be preceded with a dollar sign, the names must be alpha-numeric (letters and/or numbers, no spaces, no hyphens), and each variable must be declared on its own line.
$cadence = [CEG] [FAC] [B,GD] [CEG]
$x = CEGB
$y = { FAce; GBdf; }
Once a variable has been declared, you can use it within that same script as many times as you want, simply by typing the variable name. Below we have the same variables as above, but now we are actually using them.
% variable declarations
$cadence = [CEG] [FAC] [B,GD] [CEG]
$x = CEGB
$y = { FAce; GBdf; }
% now we can use the variables!
$cadence $x $cadence $y $x $y $cadence
copy to scratchpad
In the following example, a variable represents a chord progression. Note that
the variable declarations must be located below items like N:chords
L:1/8
, L:16
, and R:even
,
since those items must appear at the very beginning of a script.
N:chords
% variable declaration
$251 = D-7 | G7 | C | C
% now we can use the variable!
| C | $251 | A-7 | $251 | C |: $251 :|
copy to scratchpadThe ear trainer has the ability to say various words aloud. The supported words and their tags are as follows:
<a> <b> <c> <d> <e> <f> <g> <sharp> <flat> <doublesharp> <doubleflat> <root> <minor2nd> <major2nd> <minor3rd> <major3rd> <perfect4th> <tritone> <perfect5th> <minor6th> <major6th> <minor7th> <major7th> <octave> <major> <minor> <dominant> <halfdiminished> <diminished> <augmented> <sus> <2> <3> <4> <5> <6> <7> <9> <11> <13> <15> <17> <down> <up>
copy to scratchpad
For greater control over when and how individual note names are spoken, you can use the <say>
tag.
In the following example, a C is played for 2 beats. After resting for a beat, a random note is played and then spoken after a beat of rest.
Next, two notes are played simultaneously and spoken in ascending order. Finally, two more notes are played and then spoken in descending order.
C2 z <say>{C; D; E; F; G; A; B;}z</say>
<say asc>[{2:C; D; E; F; G; A; B;}]z</say>
<say desc>[{2:C; D; E; F; G; A; B;}]z</say>
copy to scratchpadWhen using chord progressions, you can also use special tags to say various items like the current chord's key and chord quality. The following example will play various progressions and speak each of the available options.
"D-" <#chord> | "G7" <#chord_short> | "Cdim" <#chord_quality> | "C" <#chord_key> |
copy to scratchpadLearning To Improvise - Introduction: This article discusses my jazz education and the odd absence of adequate ear training.
Learning To Improvise - Ear Training: This article discusses the importance of ear training in jazz improvisation.
Suzuki Method & Music Education: This article discusses some of the principles behind the Suzuki Method and how those principles help students learn to play by ear.
Dave Douglas on Ear Training: Jazz trumpeter, Dave Douglas, shares his thoughts about ear training.
John Murphy - Ear Training Interview: In this article, I present an interview I did with University of North Texas professor, John Murphy.
I built the first version of this online ear trainer in 2004, as a Java applet. Back then, Java applets were fairly common, and they offered the best performance for audio sequencing in a web browser.
I wanted to move away from Java for my ear trainer for some time, but I couldn't accomplish the fine-grained sequencing directly in HTML prior to the advent of HTML5. In 2015, with the power of HTML5 and MIDI.js, I could finally create a version of my ear trainer that runs without any additional plugins!
In 2021, I added some new piano sounds, thanks to the free soundfonts at soundfonts4u.
This ear training application performs best in recent versions of Chrome, Opera, and Firefox web browsers. Performance is fine in Safari, but the audio quality isn't quite as good. If you find any bugs, please let me know.