I WAS DOING ALL RIGHT

An updated version of this ear trainer is available. Click here to refresh and update.

Online Ear Trainer

Click here to begin!
Loading ear trainer files...
I assembled these sample exercises to demonstrate various features, and to share exercises that I've found helpful. For instructions, hover over the icon shown next to each exercise.

Click here for more information.

Use this form to save the current settings (tempo, key center, active tab, etc) as a new "exercise," which you can return to in the future.

Exercise Name
Save
Your Saved Exercises
Click or press up arrow for the results

Intervals

Chords

Melodies

Progressions

Custom

Tempo:
Play Mode
Key Center
Starting Cadence
Results Options
Repeat Count
Repeat Modulation
Piano Type

Share these settings
Note Direction

Root Note

Sequence Length

Sequence Type


Ear Trainer Introduction

This ear training tool has call-and-response exercises for Intervals, Chords, and Melodies. After each exercise is played, try to play back the notes you heard, using your instrument. You can also use this in hands-free mode, where the ear trainer will speak the results to you after each exercise (this is set in the "Results Options" dropdown).

For jazz improvisation, the Progressions feature allows you to play along with random chords and common jazz chord progressions. You can also use the Custom feature to create your own ear training exercises and scripts.

Last updated on February 24, 2024. Please let me know if you run into any problems.
Inversions
Root
1st
2nd
3rd
All
No Drop
Drop 2
Drop 3
Drop 2+4
All

Note Direction

Sequence Type

Chord Key

Chord Bass Note
Note/Scale Options
C
C#
D
Eb
E
F
F#
G
Ab
A
Bb
B
All
Each box is a...

Melody Length

Sequence Type

Restrict to Single Octave
This feature generates random melodies that you can use for sight-singing and call-and-response ear training.

I recommend that you begin with "Single Note" mode and short 2- or 3-note melodies. As your skills improve, you can move on to longer melodies, scale patterns, popular songs, and jazz licks.
Keys To Play
C
C#
D
Eb
E
F
F#
G
Ab
A
Bb
B
All

Starting Chord

Duration Per Chord

Measures Per Chorus

12 Key Modulation

Chorus Count

Count In

This feature generates random chord progressions that you can use for ear training and jazz improvisation.

Progression Type
Jazz   Piano Triads

Jazz Accompaniment
Melody
Bass
Piano
Hi-Hat
Ride Cymbal
All

Stay in a Single Key?
Yes, Major   Yes, Minor   No, Randomize


Scratchpad
Login to save the stratchpad contents as a custom script, which you can access during future ear training sessions.


Keys To Play
Orig
C
C#
D
Eb
E
F
F#
G
Ab
A
Bb
B
All
Accompaniment
Melody
Bass
Piano
Hi-Hat
Ride Cymbal
All

Chorus Count

Count In

Your Custom Scripts
Login to view your saved scripts.

Scratchpad Examples
Click here for examples and additional information about the custom scratchpad.

GETTING STARTED WITH THE SAMPLE EXERCISES

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.

ADDITIONAL EAR TRAINING SUGGESTIONS

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.

As you become more familiar with how the ear training tool works, you'll probably want to use the automatic looping function for many of the exercises. This is done simply by selecting one of the "Auto" Play Modes.

Looking for more material to play by ear? If so, be sure to check out my simple song randomizer.

KEYBOARD SHORTCUTS

  • Spacebar ⋅ Play/Stop the ear trainer.
  • Down Arrow Key ⋅ Plays the next exercise. If Repeat Count is more than one, it will play a fresh exercise and reset the repeat count.
  • Right Arrow Key ⋅ Plays the next exercise. If Repeat Count is more than one, it will move to the next repeat.
  • Left Arrow Key ⋅ Repeats the current exercise.
  • Left Arrow Key + Shift Key ⋅ Repeats the current exercise, omitting the starting cadence (if any).
  • Period Key ⋅ Plays a middle C

ABOUT THE CUSTOM EAR TRAINING SCRATCHPAD

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:

EXAMPLE 1: QUARTER-NOTE MELODY

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

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

EXAMPLE 2: SIMULTANEOUS NOTES

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

EXAMPLE 3: JAZZ CHORD PROGRESSIONS

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 scratchpad

While 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 the final measure.

N:chords
D- | G7 | N | 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

EXAMPLE 4: CHORDS AND QUARTER-NOTE MELODIES

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

EXAMPLE 5: CHORDS AND EIGHTH-NOTE MELODIES

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

EXAMPLE 6: EVEN RHYTHMS AND SIXTEENTH-NOTE MELODIES

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 scratchpad

EXAMPLE 7: RANDOM SEQUENCES

Use 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 scratchpad

To 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

EXAMPLE 8: MODULATION

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 results.

<hide>[CEG] [FAC] [B,GD] [CEG]</hide> z2 [M] C E G B
copy to scratchpad

The standard modulation tag ( [M] ) will choose a random key, however you can also specify the number of half steps to move 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

EXAMPLE 9: REPEATS

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 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 scratchpad

EXAMPLE 10: VARIABLES

A 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 scratchpad

EXAMPLE 11: SPEECH

The 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 scratchpad

When 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 scratchpad

ADDITIONAL READING

If you'd like to learn more about ear training, here are some recommended articles from my jazz blog:

Learning 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.

TECHNICAL NOTES

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.