saebekassebil / teoria

Javascript taught Music Theory
http://saebekassebil.github.io/teoria
MIT License
1.31k stars 114 forks source link

Scale.simple() Can Produce Double-Sharp Notes #85

Closed mjhasbach closed 8 years ago

mjhasbach commented 8 years ago

Is there a reason for this? I'm pretty new to music theory.

Test:

var doubleAccidentals = [],
    tonics = ['C', 'C#', 'D', 'D#', 'E', 'F', 'F#', 'G', 'G#', 'A', 'A#', 'B'],
    scales = [
        'major',
        'minor',
        'dorian',
        'phrygian',
        'lydian',
        'mixolydian',
        'locrian',
        'majorpentatonic',
        'minorpentatonic',
        'chromatic',
        'blues',
        'doubleharmonic',
        'flamenco',
        'harmonicminor',
        'melodicminor',
    ];

tonics.forEach(function(tonic){
    scales.forEach(function(scale){
        teoria.scale(tonic, scale).notes().forEach(function(teoriaNote, i){
            var note = teoriaNote.scientific();

            if (note.indexOf('x') > -1 || note.indexOf('bb') > -1){
                doubleAccidentals.push('Note "' + note + '" at degree ' + (i + 1) + ' of scale ' + tonic + ' ' + scale + ' has a double accidental');
            }
        });
    });
});

console.log(doubleAccidentals.join('\n'));

Output:

Note "Fx2" at degree 4 of scale C# lydian has a double accidental
Note "Fx2" at degree 7 of scale C# chromatic has a double accidental
Note "Fx2" at degree 4 of scale C# blues has a double accidental
Note "Fx2" at degree 3 of scale D# major has a double accidental
Note "Cx3" at degree 7 of scale D# major has a double accidental
Note "Fx2" at degree 3 of scale D# lydian has a double accidental
Note "Gx2" at degree 4 of scale D# lydian has a double accidental
Note "Cx3" at degree 7 of scale D# lydian has a double accidental
Note "Fx2" at degree 3 of scale D# mixolydian has a double accidental
Note "Fx2" at degree 3 of scale D# majorpentatonic has a double accidental
Note "Fx2" at degree 5 of scale D# chromatic has a double accidental
Note "Gx2" at degree 7 of scale D# chromatic has a double accidental
Note "Cx3" at degree 12 of scale D# chromatic has a double accidental
Note "Gx2" at degree 4 of scale D# blues has a double accidental
Note "Fx2" at degree 3 of scale D# doubleharmonic has a double accidental
Note "Cx3" at degree 7 of scale D# doubleharmonic has a double accidental
Note "Fx2" at degree 3 of scale D# flamenco has a double accidental
Note "Cx3" at degree 7 of scale D# flamenco has a double accidental
Note "Cx3" at degree 7 of scale D# harmonicminor has a double accidental
Note "Cx3" at degree 7 of scale D# melodicminor has a double accidental
Note "Fx3" at degree 7 of scale G# major has a double accidental
Note "Cx3" at degree 4 of scale G# lydian has a double accidental
Note "Fx3" at degree 7 of scale G# lydian has a double accidental
Note "Cx3" at degree 7 of scale G# chromatic has a double accidental
Note "Fx3" at degree 12 of scale G# chromatic has a double accidental
Note "Cx3" at degree 4 of scale G# blues has a double accidental
Note "Fx3" at degree 7 of scale G# doubleharmonic has a double accidental
Note "Fx3" at degree 7 of scale G# flamenco has a double accidental
Note "Fx3" at degree 7 of scale G# harmonicminor has a double accidental
Note "Fx3" at degree 7 of scale G# melodicminor has a double accidental
Note "Cx3" at degree 3 of scale A# major has a double accidental
Note "Fx3" at degree 6 of scale A# major has a double accidental
Note "Gx3" at degree 7 of scale A# major has a double accidental
Note "Fx3" at degree 6 of scale A# dorian has a double accidental
Note "Cx3" at degree 3 of scale A# lydian has a double accidental
Note "Dx3" at degree 4 of scale A# lydian has a double accidental
Note "Fx3" at degree 6 of scale A# lydian has a double accidental
Note "Gx3" at degree 7 of scale A# lydian has a double accidental
Note "Cx3" at degree 3 of scale A# mixolydian has a double accidental
Note "Fx3" at degree 6 of scale A# mixolydian has a double accidental
Note "Cx3" at degree 3 of scale A# majorpentatonic has a double accidental
Note "Fx3" at degree 5 of scale A# majorpentatonic has a double accidental
Note "Cx3" at degree 5 of scale A# chromatic has a double accidental
Note "Dx3" at degree 7 of scale A# chromatic has a double accidental
Note "Fx3" at degree 10 of scale A# chromatic has a double accidental
Note "Gx3" at degree 12 of scale A# chromatic has a double accidental
Note "Dx3" at degree 4 of scale A# blues has a double accidental
Note "Cx3" at degree 3 of scale A# doubleharmonic has a double accidental
Note "Gx3" at degree 7 of scale A# doubleharmonic has a double accidental
Note "Cx3" at degree 3 of scale A# flamenco has a double accidental
Note "Gx3" at degree 7 of scale A# flamenco has a double accidental
Note "Gx3" at degree 7 of scale A# harmonicminor has a double accidental
Note "Fx3" at degree 6 of scale A# melodicminor has a double accidental
Note "Gx3" at degree 7 of scale A# melodicminor has a double accidental
saebekassebil commented 8 years ago

Hi @mjhasbach,

TL;DR: Double sharp notes exists - mainly for theoretical reasons.

Yes there is a reason for this. First of all .simple() might be a bad method name. It isn't "simplifying" anything, it's just a method for returning the scale's notes as strings instead of objects.

So, D# major is a "theoretical" scale. Basically it's enharmonic (sounds equal) with Eb major. And since Eb major is part of the circle of fifth, and has no "double accidentals" - that's the one you'd most often use. Sometimes, though, in analysis, you'll come across double accidentals as part of a "theoretical" scale, such as D# major.

The idea is that you don't count scales in semitones, but rather in intervals. Thus a scale is defined as an array of intervals. The major scale goes like this:

['M2', 'M2', 'm2', 'M2, 'M2, 'M2', 'm2'] - major second, major second, minor second, etc..

A second is defined as the interval between two adjacent notes on the keyboard (or staff). A minor when there's only 1 semitone between the two, and a major when there's 2 semitones between the two.

So take D# major. Major second on top of D# is E#. A major second on top of E# is F## or Fx. (E# is enharmonic with F, and we need to go two semitones further thus F##).

   'M2', 'M2', 'm2', 'M2, 'M2, 'M2', 'm2'
D#  E#    Fx    G#    A#   B#   Cx    D#

That was quite the rant.. does is make sense?

mjhasbach commented 8 years ago

Thanks a lot! I was lacking some fundamental knowledge regarding how to build a scale from a tonic. Given the above example (D# major), I was wondering why the third scale degree wasn't simply called G. Your explanation helped a lot, and so did this video.