   case major
   case minor
   case harmonicMinor
+  case melodicMinor
+  case pentatonicMajor
+  case pentatonicMinor
+  case pentatonicBlues
+  case pentatonicNeutral
+  case ionian
+  case aeolian
   case dorian
+  case mixolydian
   case phrygian
   case lydian
-  case mixolydian
   case locrian
+  case dimHhalf
+  case dimWhole
+  case whole
+  case augmented
+  case chromatic
+  case roumanianMinor
+  case spanishGypsy
+  case blues
+  case diatonic
+  case doubleHarmonic
+  case eightToneSpanish
+  case enigmatic
+  case leadingWholeTone
+  case lydianAugmented
+  case neopolitanMajor
+  case neopolitanMinor
+  case pelog
+  case prometheus
+  case prometheusNeopolitan
+  case sixToneSymmetrical
+  case superLocrian
+  case lydianMinor
+  case lydianDiminished
+  case nineToneScale
+  case auxiliaryDiminished
+  case auxiliaryAugmented
+  case auxiliaryDimBlues
+  case majorLocrian
+  case overtone
+  case diminishedWholeTone
+  case pureMinor
+  case dominant7th
   case custom(intervals: [Interval])
 
   /// Intervals of the scale.

    switch self {
    case .major: return [.unison, .M2, .M3, .P4, .P5, .M6, .M7]
    case .minor: return [.unison, .M2, .m3, .P4, .P5, .m6, .m7]
    case .harmonicMinor: return [.unison, .M2, .m3, .P4, .P5, .M6, .m7]
    case .dorian: return [.unison, .M2, .m3, .P4, .P5, .M6, .m7]
    case .phrygian: return [.unison, .m2, .m3, .P4, .P5, .m6, .m7]
    case .lydian: return [.unison, .M2, .M3, .d5, .P5, .M6, .M7]
    case .mixolydian: return [.unison, .M2, .M3, .P4, .P5, .M6, .m7]
    case .locrian: return [.unison, .m2, .m3, .P4, .d5, .m6, .m7]
    case .custom(let intervals): return intervals
    }
  }

  /// An array of all `ScaleType` values.
  public static var all: [ScaleType] {
    return [
      .major,
      .minor,
      .harmonicMinor,
      .melodicMinor,
      .pentatonicMajor,
      .pentatonicMinor,
      .pentatonicBlues,
      .pentatonicNeutral,
      .ionian,
      .aeolian,
      .dorian,
      .mixolydian,
      .phrygian,
      .lydian,
      .locrian,
      .dimHhalf,
      .dimWhole,
      .whole,
      .augmented,
      .chromatic,
      .roumanianMinor,
      .spanishGypsy,
      .blues,
      .diatonic,
      .doubleHarmonic,
      .eightToneSpanish,
      .enigmatic,
      .leadingWholeTone,
      .lydianAugmented,
      .neopolitanMajor,
      .neopolitanMinor,
      .pelog,
      .prometheus,
      .prometheusNeopolitan,
      .sixToneSymmetrical,
      .superLocrian,
      .lydianMinor,
      .lydianDiminished,
      .nineToneScale,
      .auxiliaryDiminished,
      .auxiliaryAugmented,
      .auxiliaryDimBlues,
      .majorLocrian,
      .overtone,
      .diminishedWholeTone,
      .pureMinor,
      .dominant7th,
    ]
  }
}
