There are many different dialects when discussing music. Some are used in the context of College courses, some in the context of live performance practices, some in the context of constructing music on a computer. The terms used in the college music theory class often don't translate directly to methods used when creating music with computers. We'll discuss three different dialects of 'music speak'.
It seems like it should be very easy to talk about notes and chords in a system that uses 12 tones per octaves. However the standard language to discuss music first developed during a time when there were only 7 tones per octave used in the music of the day. (I'd love to hear a recording from that time to verify, time travel required.) Our current names of A B C D E F G were used without our current chromatic signs of sharps (#) and flats (b). The interval of a half step was between B-C and E-F only. The distance between all other adjacient notes was a whole step. Just like the white keys on a piano.
Wikipedia states that 'from the late 12th century to about 1600' a practice known as musica ficta was used where composers and/or performers where playing or singing notes that were different from what the score displayed. This was first done at final cadences of a composition. During the next centuries musica ficta became more common and it began to change the system into our 12 tones per octave system. The 12 tone system became the standard system during the time of the Baroque period. This very slow evolution meant that the old 7 letter names system needed to remain and a new method was needed to notate these new notes. At first it was a simple mark made above the note on the score. The performers knew what to do, at least the good ones. It took centuries but eventually the notation of sharps and flats became part of the system and #'s and b's were used to fill in the 5 extra notes used in between C-D, D-E, F-G, G-A, A-B.
Gosh, too bad they didn't name each of these chromatic notes with one single name. But I think they were influenced by the alphabetical pattern established by A-G and couldn't just call them [red orange yellow green blue] (or whatever) and be done with it. [Sigh]
The 12 tones per octave system in place today:
This results in a system of 21 names that can map to the 12 tones. Almost all of the notes will have 2 names. And as the system adheres to the alphabetical sequence when expressing harmonic and melodic minor, some double sharps (x) are required in the keys of D#, G# and A# minor. And in some rare cases double flats (bb) might even be used (i.e. Gb minor chord - spelled Gb Bbb Db). It has become more complicated than a simple 12 tones per octave issue. Just to cover the edge cases, many notation software programs allows as many as 35 different names to be mapped to the 12 tones. And choosing the correct names becomes part of the Music Theory knowledge base.
When using the MIDI number system, the structure of scales and chords are easily expressed without ambiguity. The multiple names issue becomes a separate layer. This page addresses some of this multi-layer aspect in the music language.
The following 3 groups of 4 rows show the various dialects 'translations'. Notice that in each group the only dialect that is always the same is dialect 3 (MIDI pitch class numbers). The standard notation numbers (row 2) and names (row 1) may be different for the same pitch. Notice also that the interval names (row 4) change depending on which letter name (row 1) is used for the note. It is easiest to process music structures for computers using the third dialect. The naming layer isn't always needed (sometimes the 'correct' names don't matter, only the correct sound.)
The first group use sharp names for the chromatic tones.
The second group uses flat name for the chromatic tones and 'weird' names (Fb, E#, Cb) for the third, fourth and seventh scale degrees. Although this is not the correct spelling for a major scale, standard notation does allow this type of notation. When unusual name choices are used (such as Cb instead of B) it can create the strange (but legal) interval of C-Cb (either an A1 or d8 depending on if the notes are a half step apart or 11 half steps apart).
The third group uses additional 'weird' names. The names of B# and E# are incorrect for C major but they are legal names in the standard notation language.
Notice that depending on the letter names used, an interval of size 10 half steps might be called an Augmented 6th or a Minor 7th. This is true of any interval size, depending on the names for those note, the interval name will change accordingly.
The major scale is often expressed as an interval formula. In the typical College course it is common to talk about 'half steps' and 'whole steps' (or 'semitones' and 'wholetones'). Sometimes numbers are used: 1 for half step, 2 for whole step. From a starting note, one should apply the interval formula to find the other notes of the scale. The following shows the formula for an ascending major scale in two different systems. (Descending scales will use the pattern in reverse.)
When using a formula with the computer, the second method (using numbers) works well but often a third method is used. Starting with 0 (representing the first note) each number represents the distance in half steps from the starting note.
Natural Minor translated to three different dialects:
The additional layer of naming the notes is discussed on the Play Major Scales and Play Minor Scales pages.
All of the following methods lead to the same result: which is a major triad.
Chord formulas are often espressed as selected scale degrees from a scale.
Another method is using intervals from the root of the chord.
Another method is a stack of intervals.
A method useful for computer generated music is an array of half step values. This is the computer friendly version of the second method above.
Another method useful for computer generated music is an array of scale degree values. This is just like the first method implemented in a computer friendly manner.
Tone.js doesn't work directly with MIDI numbers but it has methods to translate MIDI numbers to frequencies or pitch/octave notation suitable for use with Tone.js. In the other pages in this series discussing Tone.js you'll see some methods that use MIDI numbers to calculate the structures, then using either the methods from Tone.js or some homebrewed code to manage the naming layer. It's useful to understand all of these dialects and be able to make any translation from one to another if needed.