Skip to content

Common scales for chords script

Pedro Santos edited this page Apr 16, 2018 · 22 revisions
#load "Infrastructure.fs"
#load "Domain.fs"
#load "Notes.fs"
#load "Chords.fs"
#load "Keys.fs"
#load "Scales.fs"
#load "ScaleHarmonizer.fs"
#load "Guitar.fs"
#load "ImprovisationGuitar.fs"
#load "ChordVoiceLeading.fs"

open Vaughan.Domain
open Vaughan.Notes
open Vaughan.Chords
open Vaughan.Keys
open Vaughan.Scales
open Vaughan.ScaleHarmonizer
open Vaughan.Guitar
open Vaughan.GuitarTab
open Vaughan.ImprovisationGuitar
open Vaughan.ChordVoiceLeading

let scaleName scale =
    sprintf "%s %A" (noteName (scale.Scale.Notes.[0])) scale.Scale.Scale 

let chordToneNames (chord:Chord) =
    sprintf "%s" (chord.Notes 
                    |> List.map (fst >> noteName) 
                    |> List.fold (fun r s -> r + s + " ") "")

let scaleNoteNames scale = 
    sprintf "%s" (scale.Scale.Notes 
                    |> List.map noteName 
                    |> List.fold (fun r s -> r + s + " ") "")

let progression = [
              chord C Minor7;
              chord F Dominant7;
              chord BFlat Major7;
              chord EFlat Major7;
              chord A Minor7b5;
              chord D Dominant7;
              chord G Minor7
             ]

(createScalesForChords 5 8 chords)
|> Seq.map ((fun scalesPerChord -> scalesPerChord |> List.map (fun s -> scaleName s.Scale)) >> Set.ofList)
|> Seq.reduce Set.intersect
|> Seq.fold (fun r s -> r + s + "\n") ""
|> printf "Common scales for all chords: \n%s\n"

Common scales for all chords:

Bb MajorSixthDiminishedScale
WTF? See Barry Harris's Sixth Diminished Scale or The 6th Diminished Scale by Roni Ben-Hur or Sixth Diminished Scale Harmony by Rick Beato

  • CMin7 -> C Eb G Bb
  • F7 -> F A C Eb
  • BbMaj7 -> Bb D F A
  • EbMaj7 -> Eb G Bb D
  • Amin7b5 -> A C Eb G
  • D7 -> D F# A C
  • Gmin7 -> G Bb D F
  • Bb MajorSixthDiminishedScale -> Bb C D Eb F F# G A
e||--------------------------------------------------5--6--8--||
B||-----------------------------------------6--7--8-----------||
G||--------------------------------5--7--8--------------------||
D||-----------------------5--7--8-----------------------------||
A||-----------5--6--8--9--------------------------------------||
E||--5--6--8--------------------------------------------------||
Clone this wiki locally