Skip to content

Documentation

Pedro Santos edited this page Apr 15, 2018 · 10 revisions

Table of Contents

Basics

Notes

open Vaughan.Notes
Example Output
noteName C "C"
noteName CSharp "C#"
noteName DFlat "Db"
sharp EFlat E
flat E EFlat
measureAbsoluteSemitones C G 7
intervalBetween C FSharp DiminishedFifth
transpose C MajorSixth A

Intervals

open Vaughan.Notes
Example Output
intervalName DiminishedFifth "DiminishedFifth"
fromDistance 6 DiminishedFifth

Keys

open Vaughan.Notes
open Vaughan.Keys
Example Output
keyNotes CMajor [ C; D; E; F; G; A; B ]
keyNotes EFlatMajor [ EFlat; F; G; AFlat; BFlat; C; D ]
keyNotes DMinor [ D; E; F; G; A; BFlat; C ]

Scales

open Vaughan.Notes
open Vaughan.Scales
Example Output
createScaleNotes Phrygian C [ C; DFlat; EFlat; F; G; AFlat; BFlat]
createScaleNotes LydianAugmented C [ C; D; E; FSharp; GSharp; A; B ]

Chords

open Vaughan.Notes
open Vaughan.Scales
open Vaughan.Chords
open Vaughan.ChordVoiceLeading

let cMaj7 = {notes= [(C, Root); (E, Third); (G, Fifth); (B, Seventh)]; chordType=Closed}
let cMaj = chordFromRootAndFunction c Major
Example Output
noteNames cMaj7 ["C"; "E"; "G"; "B"]
bass cMaj7 C
lead cMaj7 B
name cMaj7 "CMaj7"
cMaj7.Notes [(C, Root); (E, Third); (G, Fifth); (B, Seventh)]
(cMaj7 |> invert).Notes [(E, Third); (G, Fifth); (B, Seventh); (C, Root)]
(cMaj7 |> invert |> invert).Notes [(G, Fifth); (B, Seventh); (C, Root); (E, Third)]
(cMaj7 |> invert |> invert |> invert).Notes [(B, Seventh); (C, Root); (E, Third); (G, Fifth)]
(cMaj7 |> toDrop2).Notes [(C, Root); (G, Fifth); (B, Seventh); (E, Third)]
(cMaj7 |> toDrop3).Notes [(C, Root); (B, Seventh); (E, Third); (G, Fifth)]
inversionForFunctionAsLead cMaj Third cMaj |> invert |> invert
inversionForFunctionAsBass cMaj Fifth cMaj |> invert |> invert
invertionWithLeadClosestToNote cMaj CSharp cMaj |> invert
invertionWithBassClosestToNote cMaj F cMaj |> invert

Scale harmonizing

open Vaughan.Notes
open Vaughan.Scales
open Vaughan.Chords
open Vaughan.ScaleHarmonizer

let cMaj = {Notes= [(C, Root); (E, Third); (G, Fifth)]; ChordType=Closed; Name="CMaj"}
let cMin = {Notes= [(C, Root); (EFlat, Third); (G, Fifth)]; ChordType=Closed; Name="CMin"}

let cMaj7 = {Notes= [(C, Root); (E, Third); (G, Fifth); (B, Seventh)]; ChordType=Closed; Name="CMaj7"}

let cIonian = createScaleNotes Ionian C
let cMinor = createScaleNotes HarmonicMinor C
Example Output
triadsHarmonizer ScaleDgrees.I cIonian cMaj
triadsHarmonizer ScaleDgrees.I cMinor cMin
triadsHarmonizer ScaleDgrees.I cMinor cMin
seventhsHarmonizer ScaleDgrees.I cIonian cMaj7

Guitar basics

Guitar chord tab drawing

Note: This part of the documentation is a bit out of date on 14/04/2018 see sample code until I have time to update documentation

open Vaughan.Notes
open Vaughan.Chords
open Vaughan.Guitar
open Vaughan.GuitarTab
open Vaughan.ScaleHarmonizer
open Vaughan.Scales
createScaleNotes Ionian C
|> triadsHarmonizer ScaleDgrees.I
|> createGuitarChord SixthString
|> tabify

Output:

  CMaj
E|---|
B|---|
G|---|
D|-5-|
A|-7-|
E|-8-|
createScaleNotes Ionian C
|> seventhsHarmonizer ScaleDgrees.I
|> toDrop2
|> createGuitarChord FifthString
|> tabify

Output:

  CMaj7
E|---|
B|-5-|
G|-4-|
D|-5-|
A|-3-|
E|---|
createScaleNotes Ionian A
|> seventhsHarmonizer ScaleDgrees.I
|> toDrop2
|> createGuitarChord FifthString
|> tabify

Output:

  AMaj7
E|----|
B|-14-|
G|-13-|
D|-14-|
A|-12-|
E|----|
createScaleNotes Ionian F
|> seventhsHarmonizer ScaleDgrees.I
|> createGuitarChord FourthString
|> tabify

Output:

  FMaj7
E|-12-|
B|-13-|
G|-14-|
D|-15-|
A|----|
E|----|
createScaleNotes Ionian C
|> seventhsHarmonizer ScaleDgrees.I
|> toDrop3
|> createGuitarChord SixthString
|> tabify

Output:

  CMaj7
E|---|
B|-8-|
G|-9-|
D|-9-|
A|---|
E|-8-|
createScaleNotes Ionian C
|> seventhsHarmonizer ScaleDgrees.I
|> toDrop3
|> createGuitarChord FifthString
|> tabify

Output:

  CMaj7
E|-3-|
B|-5-|
G|-4-|
D|---|
A|-3-|
E|---|
createScaleNotes Ionian C
|> seventhsHarmonizer ScaleDgrees.I
|> toDrop2
|> createGuitarChord FifthString
|> shapify

Output:

CMaj7
EADGBE
X3545X
let cIonian = createScaleNotes Ionian C
let cMaj = seventhsHarmonizer ScaleDgrees.I cIonian
let dMin = seventhsHarmonizer ScaleDgrees.II cIonian
let eMin = seventhsHarmonizer ScaleDgrees.III cIonian
let fMaj = seventhsHarmonizer ScaleDgrees.IV cIonian

let guitarChords =  [cMaj; dMin; eMin; fMaj]
                    |> List.map (toDrop2 >> (createGuitarChord FifthString))

tabifyAll guitarChords

Output:

      CMaj7   DMin7   EMin7   FMaj7
E|-------------------------------------|
B|----5-------6-------8-------10-------|
G|----4-------5-------7-------9--------|
D|----5-------7-------9-------10-------|
A|----3-------5-------7-------8--------|
E|-------------------------------------|

Guitar scales tab drawing

open Vaughan.Notes
open Vaughan.Chords
open Vaughan.Scales
open Vaughan.Guitar
open Vaughan.GuitarTab
open Vaughan.ScaleHarmonizer
createScale Ionian C
|> createGuitarScale 2 6
|> createGuitarMelodicLineFromScale
|> tabifyMelodicLine
|> printf "\n%s"

Output:

e||---------------------------------------------3--5-||
B||------------------------------------3--5--6-------||
G||---------------------------2--4--5----------------||
D||------------------2--3--5-------------------------||
A||---------2--3--5----------------------------------||
E||---3--5-------------------------------------------||
createScale Ionian C
|> createGuitarScale 4 8
|> tabifyScale
|> printf "\n%s"

Output:

e||---------------------------------------------5--7--8-||
B||------------------------------------5--6--8----------||
G||---------------------------4--5--7-------------------||
D||---------------------5--7----------------------------||
A||------------5--7--8----------------------------------||
E||---5--7--8-------------------------------------------||
createScale Ionian C
|> createGuitarScale 7 10
|> tabifyScale
|> printf "\n%s"

Output:

e||---------------------------------------------7--8--10-||
B||---------------------------------------8--10----------||
G||------------------------------7--9--10----------------||
D||---------------------7--9--10-------------------------||
A||------------7--8--10----------------------------------||
E||---7--8--10-------------------------------------------||
createScale Ionian C
|> createGuitarScale 9 13
|> tabifyScale
|> printf "\n%s"

Output:

e||---------------------------------------------10--12--13-||
B||------------------------------------10--12--13----------||
G||---------------------------9--10--12--------------------||
D||------------------9--10--12-----------------------------||
A||------------10--12--------------------------------------||
E||---10--12--13-------------------------------------------||

Guitar arpeggio tab drawing

Note: This part of the documentation is a bit out of date on 14/04/2018 see sample code until I have time to update documentation

open Vaughan.Notes
open Vaughan.Chords
open Vaughan.Scales
open Vaughan.Guitar
open Vaughan.GuitarTab
open Vaughan.ScaleHarmonizer

let cIonian = createScaleNotes Ionian C
(cIonian
|> triadsHarmonizer ScaleDegree.I
|> createGuitarArpeggio 2 5)
|> tabifyArpeggio
|> printf "\n%s"

Output:

e||---------------------3---||
B||------------------5------||
G||---------------5---------||
D||---------2--5------------||
A||------3------------------||
E||---3---------------------||
(cIonian
|> triadsHarmonizer ScaleDegree.I
|> createGuitarArpeggio 1 4)
|> tabifyArpeggio
|> printf "\n%s"

Output:

e||------------------3---||
B||---------------1------||
G||-------------1--------||
D||---------2------------||
A||------3---------------||
E||---3------------------||
(cIonian
|> triadsHarmonizer ScaleDegree.I
|> createGuitarArpeggio 7 10)
|> tabifyArpeggio
|> printf "\n%s"

Output:

e||---------------------8---||
B||------------------8------||
G||---------------9---------||
D||------------10-----------||
A||------7--10--------------||
E||---8---------------------||
(cIonian
|> triadsHarmonizer ScaleDegree.I
|> createGuitarArpeggio 0 3)
|> tabifyArpeggio
|> printf "\n%s"

Output:

e||---------------------0--3---||
B||------------------1---------||
G||---------------0------------||
D||------------2---------------||
A||---------3------------------||
E||---0--3---------------------||
(cIonian
|> triadsHarmonizer ScaleDegree.I
|> createGuitarArpeggio 9 22)
|> tabifyArpeggio
|> printf "\n%s"

Output:

e||------------------------------------------------12--15--20-||
B||---------------------------------------13--17--20----------||
G||------------------------------9--12--17--------------------||
D||---------------------10--14--17----------------------------||
A||------------10--15--19-------------------------------------||
E||---12--15--20----------------------------------------------||

Guitar improvisation

Guitar improvising over chords with arpeggios

Note: This part of the documentation is a bit out of date on 14/04/2018 see sample code until I have time to update documentation

open Vaughan.Notes
open Vaughan.Chords
open Vaughan.Scales
open Vaughan.Guitar
open Vaughan.GuitarTab
open Vaughan.ScaleHarmonizer
open Vaughan.ImprovisationGuitar
[chord C Minor7; chord F Dominant7; chord BFlat Major7]
|> tabifyArpeggiosFromChords 5 8
|> List.map (fun t -> printf "\n%s" t)

Output:

CMin7
e||---------------------------6--8-||
B||------------------------8-------||
G||------------------5--8----------||
D||------------5--8----------------||
A||---------6----------------------||
E||---6--8-------------------------||

F7
e||---------------------------5--8-||
B||------------------------6-------||
G||------------------5--8----------||
D||---------------7----------------||
A||---------6--8-------------------||
E||---5--8-------------------------||

BbMaj7
e||---------------------------5--6-||
B||------------------------6-------||
G||---------------------7----------||
D||---------------7--8-------------||
A||---------5--8-------------------||
E||---5--6-------------------------||
["Cm7"; "F7"; "CMaj7"]
|> tabifyArpeggiosFromChordNames 2 5
|> List.map (fun t -> printf "\n%s" t)

Output:

CMin7
e||---------------------------6--8-||
B||------------------------8-------||
G||------------------5--8----------||
D||------------5--8----------------||
A||---------6----------------------||
E||---6--8-------------------------||

F7
e||---------------------------5--8-||
B||------------------------6-------||
G||------------------5--8----------||
D||---------------7----------------||
A||---------6--8-------------------||
E||---5--8-------------------------||

BbMaj7
e||---------------------------5--6-||
B||------------------------6-------||
G||---------------------7----------||
D||---------------7--8-------------||
A||---------5--8-------------------||
E||---5--6-------------------------||

Guitar improvising over chords with scales

Generated scales contain all chord tones

open Vaughan.Notes
open Vaughan.Chords
open Vaughan.Scales
open Vaughan.Guitar
open Vaughan.GuitarTab
open Vaughan.ScaleHarmonizer
open Vaughan.ImprovisationGuitar
[chord C Minor7; chord F Dominant7; chord BFlat Major7]
|> tabifyScalesFromChords 5 8
|> List.map (fun t -> printf "\n%s" t)

Output: Scales containing all chord tones

CMin7
C Dorian
e||---------------------------------------------5--6--8-||
B||---------------------------------------6--8----------||
G||------------------------------5--7--8----------------||
D||---------------------5--7--8-------------------------||
A||------------5--6--8----------------------------------||
E||---5--6--8-------------------------------------------||

C Phrygian
e||---------------------------------------6--8-||
B||---------------------------------6--8-------||
G||------------------------5--6--8-------------||
D||---------------5--6--8----------------------||
A||---------6--8-------------------------------||
E||---6--8-------------------------------------||

C Aolian
e||------------------------------------------6--8-||
B||------------------------------------6--8-------||
G||---------------------------5--7--8-------------||
D||------------------5--6--8----------------------||
A||---------5--6--8-------------------------------||
E||---6--8----------------------------------------||

C MinorPentatonic
e||---------------------------------6--8-||
B||---------------------------6--8-------||
G||---------------------5--8-------------||
D||---------------5--8-------------------||
A||---------6--8-------------------------||
E||---6--8-------------------------------||

C Blues
e||------------------------------------6--8-||
B||---------------------------6--7--8-------||
G||---------------------5--8----------------||
D||---------------5--8----------------------||
A||---------6--8----------------------------||
E||---6--8----------------------------------||

C Dorianb2
e||------------------------------------------5--6--8-||
B||------------------------------------6--8----------||
G||---------------------------5--6--8----------------||
D||------------------5--7--8-------------------------||
A||------------6--8----------------------------------||
E||---5--6--8----------------------------------------||

C HalfWholeDiminished
e||---------------------------------------------5--6--8-||
B||------------------------------------5--7--8----------||
G||---------------------------5--6--8-------------------||
D||------------------5--7--8----------------------------||
A||------------6--7-------------------------------------||
E||---5--6--8-------------------------------------------||

D Phrygian
e||---------------------------------------------5--6--8-||
B||---------------------------------------6--8----------||
G||------------------------------5--7--8----------------||
D||---------------------5--7--8-------------------------||
A||------------5--6--8----------------------------------||
E||---5--6--8-------------------------------------------||

D Locrian
e||------------------------------------------6--8-||
B||------------------------------------6--8-------||
G||---------------------------5--7--8-------------||
D||------------------5--6--8----------------------||
A||---------5--6--8-------------------------------||
E||---6--8----------------------------------------||

G Phrygian
e||------------------------------------------6--8-||
B||------------------------------------6--8-------||
G||---------------------------5--7--8-------------||
D||------------------5--6--8----------------------||
A||---------5--6--8-------------------------------||
E||---6--8----------------------------------------||

G Aolian
e||---------------------------------------------5--6--8-||
B||---------------------------------------6--8----------||
G||------------------------------5--7--8----------------||
D||---------------------5--7--8-------------------------||
A||------------5--6--8----------------------------------||
E||---5--6--8-------------------------------------------||

G Locrian
e||---------------------------------------6--8-||
B||---------------------------------6--8-------||
G||------------------------5--6--8-------------||
D||---------------5--6--8----------------------||
A||---------6--8-------------------------------||
E||---6--8-------------------------------------||

G HarmonicMinor
e||------------------------------------------5--6--8-||
B||------------------------------------7--8----------||
G||---------------------------5--7--8----------------||
D||------------------5--7--8-------------------------||
A||------------5--6----------------------------------||
E||---5--6--8----------------------------------------||

G NeapolitanMinor
e||---------------------------------------6--8-||
B||---------------------------------7--8-------||
G||------------------------5--7--8-------------||
D||---------------5--6--8----------------------||
A||---------5--6-------------------------------||
E||---6--8-------------------------------------||

G LocrianSharp2
e||------------------------------------------5--6--8-||
B||------------------------------------6--8----------||
G||---------------------------5--6--8----------------||
D||------------------5--7--8-------------------------||
A||------------6--8----------------------------------||
E||---5--6--8----------------------------------------||

A Locrian
e||---------------------------------------------5--6--8-||
B||---------------------------------------6--8----------||
G||------------------------------5--7--8----------------||
D||---------------------5--7--8-------------------------||
A||------------5--6--8----------------------------------||
E||---5--6--8-------------------------------------------||

A AlteredDominant
e||------------------------------------------5--6--8-||
B||------------------------------------6--8----------||
G||---------------------------5--6--8----------------||
D||------------------5--7--8-------------------------||
A||------------6--8----------------------------------||
E||---5--6--8----------------------------------------||

F7
C Dorian
e||---------------------------------------------5--6--8-||
B||---------------------------------------6--8----------||
G||------------------------------5--7--8----------------||
D||---------------------5--7--8-------------------------||
A||------------5--6--8----------------------------------||
E||---5--6--8-------------------------------------------||

C MelodicMinor
e||------------------------------------------5--7--8-||
B||------------------------------------6--8----------||
G||---------------------------5--7--8----------------||
D||---------------------5--7-------------------------||
A||------------5--6--8-------------------------------||
E||---5--7--8----------------------------------------||

C Dorianb2
e||------------------------------------------5--6--8-||
B||------------------------------------6--8----------||
G||---------------------------5--6--8----------------||
D||------------------5--7--8-------------------------||
A||------------6--8----------------------------------||
E||---5--6--8----------------------------------------||

C MinorSixthDiminishedScale
e||---------------------------------------------5--7--8-||
B||---------------------------------------6--8----------||
G||------------------------------5--7--8----------------||
D||---------------------5--6--7-------------------------||
A||------------5--6--8----------------------------------||
E||---5--7--8-------------------------------------------||

D Phrygian
e||---------------------------------------------5--6--8-||
B||---------------------------------------6--8----------||
G||------------------------------5--7--8----------------||
D||---------------------5--7--8-------------------------||
A||------------5--6--8----------------------------------||
E||---5--6--8-------------------------------------------||

D Dorianb2
e||------------------------------------------5--7--8-||
B||------------------------------------6--8----------||
G||---------------------------5--7--8----------------||
D||---------------------5--7-------------------------||
A||------------5--6--8-------------------------------||
E||---5--7--8----------------------------------------||

D HalfWholeDiminished
e||------------------------------------------5--7--8-||
B||------------------------------------6--7----------||
G||---------------------------5--7--8----------------||
D||---------------------6--7-------------------------||
A||------------5--6--8-------------------------------||
E||---5--7--8----------------------------------------||

Eb Lydian
e||---------------------------------------------5--6--8-||
B||---------------------------------------6--8----------||
G||------------------------------5--7--8----------------||
D||---------------------5--7--8-------------------------||
A||------------5--6--8----------------------------------||
E||---5--6--8-------------------------------------------||

Eb LydianAugmented
e||------------------------------------------5--7--8-||
B||------------------------------------6--8----------||
G||---------------------------5--7--8----------------||
D||---------------------5--7-------------------------||
A||------------5--6--8-------------------------------||
E||---5--7--8----------------------------------------||

Eb LydianDominant
e||------------------------------------------5--6--8-||
B||------------------------------------6--8----------||
G||---------------------------5--6--8----------------||
D||------------------5--7--8-------------------------||
A||------------6--8----------------------------------||
E||---5--6--8----------------------------------------||

F Mixolydian
e||---------------------------------------------5--6--8-||
B||---------------------------------------6--8----------||
G||------------------------------5--7--8----------------||
D||---------------------5--7--8-------------------------||
A||------------5--6--8----------------------------------||
E||---5--6--8-------------------------------------------||

F LydianDominant
e||------------------------------------------5--7--8-||
B||------------------------------------6--8----------||
G||---------------------------5--7--8----------------||
D||---------------------5--7-------------------------||
A||------------5--6--8-------------------------------||
E||---5--7--8----------------------------------------||

F Mixolydianb6
e||------------------------------------------5--6--8-||
B||------------------------------------6--8----------||
G||---------------------------5--6--8----------------||
D||------------------5--7--8-------------------------||
A||------------6--8----------------------------------||
E||---5--6--8----------------------------------------||

F Bebop
e||---------------------------------------------------5--6--8-||
B||------------------------------------------5--6--8----------||
G||---------------------------------5--7--8-------------------||
D||------------------------5--7--8----------------------------||
A||------------5--6--7--8-------------------------------------||
E||---5--6--8-------------------------------------------------||

F HalfWholeDiminished
e||------------------------------------------5--7--8-||
B||------------------------------------6--7----------||
G||---------------------------5--7--8----------------||
D||---------------------6--7-------------------------||
A||------------5--6--8-------------------------------||
E||---5--7--8----------------------------------------||

F DominantDiminishedScale
e||------------------------------------------------5--6--8-||
B||---------------------------------------5--6--8----------||
G||------------------------------5--6--8-------------------||
D||---------------------5--7--8----------------------------||
A||------------6--7--8-------------------------------------||
E||---5--6--8----------------------------------------------||

G Aolian
e||---------------------------------------------5--6--8-||
B||---------------------------------------6--8----------||
G||------------------------------5--7--8----------------||
D||---------------------5--7--8-------------------------||
A||------------5--6--8----------------------------------||
E||---5--6--8-------------------------------------------||

G Mixolydianb6
e||------------------------------------------5--7--8-||
B||------------------------------------6--8----------||
G||---------------------------5--7--8----------------||
D||---------------------5--7-------------------------||
A||------------5--6--8-------------------------------||
E||---5--7--8----------------------------------------||

G LocrianSharp2
e||------------------------------------------5--6--8-||
B||------------------------------------6--8----------||
G||---------------------------5--6--8----------------||
D||------------------5--7--8-------------------------||
A||------------6--8----------------------------------||
E||---5--6--8----------------------------------------||

A Locrian
e||---------------------------------------------5--6--8-||
B||---------------------------------------6--8----------||
G||------------------------------5--7--8----------------||
D||---------------------5--7--8-------------------------||
A||------------5--6--8----------------------------------||
E||---5--6--8-------------------------------------------||

A LocrianSharp2
e||------------------------------------------5--7--8-||
B||------------------------------------6--8----------||
G||---------------------------5--7--8----------------||
D||---------------------5--7-------------------------||
A||------------5--6--8-------------------------------||
E||---5--7--8----------------------------------------||

A AlteredDominant
e||------------------------------------------5--6--8-||
B||------------------------------------6--8----------||
G||---------------------------5--6--8----------------||
D||------------------5--7--8-------------------------||
A||------------6--8----------------------------------||
E||---5--6--8----------------------------------------||

BbMaj7
C Dorian
e||---------------------------------------------5--6--8-||
B||---------------------------------------6--8----------||
G||------------------------------5--7--8----------------||
D||---------------------5--7--8-------------------------||
A||------------5--6--8----------------------------------||
E||---5--6--8-------------------------------------------||

C Mixolydian
e||---------------------------------------------5--6--8-||
B||------------------------------------5--6--8----------||
G||------------------------------5--7-------------------||
D||---------------------5--7--8-------------------------||
A||------------5--7--8----------------------------------||
E||---5--6--8-------------------------------------------||

C Bebop
e||------------------------------------------------5--6--7--8-||
B||---------------------------------------5--6--8-------------||
G||---------------------------------5--7----------------------||
D||------------------------5--7--8----------------------------||
A||---------------5--7--8-------------------------------------||
E||---5--6--7--8----------------------------------------------||

D Phrygian
e||---------------------------------------------5--6--8-||
B||---------------------------------------6--8----------||
G||------------------------------5--7--8----------------||
D||---------------------5--7--8-------------------------||
A||------------5--6--8----------------------------------||
E||---5--6--8-------------------------------------------||

D Aolian
e||---------------------------------------------5--6--8-||
B||------------------------------------5--6--8----------||
G||------------------------------5--7-------------------||
D||---------------------5--7--8-------------------------||
A||------------5--7--8----------------------------------||
E||---5--6--8-------------------------------------------||

D HarmonicMinor
e||------------------------------------------5--6-||
B||---------------------------------5--6--8-------||
G||---------------------------6--7----------------||
D||------------------5--7--8----------------------||
A||---------5--7--8-------------------------------||
E||---5--6----------------------------------------||

D NeapolitanMinor
e||------------------------------------------5--6-||
B||------------------------------------6--8-------||
G||---------------------------6--7--8-------------||
D||------------------5--7--8----------------------||
A||---------5--6--8-------------------------------||
E||---5--6----------------------------------------||

E Locrian
e||---------------------------------------------5--6--8-||
B||------------------------------------5--6--8----------||
G||------------------------------5--7-------------------||
D||---------------------5--7--8-------------------------||
A||------------5--7--8----------------------------------||
E||---5--6--8-------------------------------------------||

G Dorian
e||---------------------------------------------5--6--8-||
B||------------------------------------5--6--8----------||
G||------------------------------5--7-------------------||
D||---------------------5--7--8-------------------------||
A||------------5--7--8----------------------------------||
E||---5--6--8-------------------------------------------||

G Aolian
e||---------------------------------------------5--6--8-||
B||---------------------------------------6--8----------||
G||------------------------------5--7--8----------------||
D||---------------------5--7--8-------------------------||
A||------------5--6--8----------------------------------||
E||---5--6--8-------------------------------------------||

A Phrygian
e||---------------------------------------------5--6--8-||
B||------------------------------------5--6--8----------||
G||------------------------------5--7-------------------||
D||---------------------5--7--8-------------------------||
A||------------5--7--8----------------------------------||
E||---5--6--8-------------------------------------------||

A Locrian
e||---------------------------------------------5--6--8-||
B||---------------------------------------6--8----------||
G||------------------------------5--7--8----------------||
D||---------------------5--7--8-------------------------||
A||------------5--6--8----------------------------------||
E||---5--6--8-------------------------------------------||

A NeapolitanMinor
e||------------------------------------------5--6--8-||
B||------------------------------------5--6----------||
G||------------------------------5--7----------------||
D||---------------------6--7--8----------------------||
A||------------5--7--8-------------------------------||
E||---5--6--8----------------------------------------||

Bb Ionian
e||---------------------------------------------5--6--8-||
B||---------------------------------------6--8----------||
G||------------------------------5--7--8----------------||
D||---------------------5--7--8-------------------------||
A||------------5--6--8----------------------------------||
E||---5--6--8-------------------------------------------||

Bb Lydian
e||---------------------------------------------5--6--8-||
B||------------------------------------5--6--8----------||
G||------------------------------5--7-------------------||
D||---------------------5--7--8-------------------------||
A||------------5--7--8----------------------------------||
E||---5--6--8-------------------------------------------||

Bb Bebop
e||------------------------------------------------5--6--8-||
B||------------------------------------------6--8----------||
G||---------------------------------5--7--8----------------||
D||---------------------5--6--7--8-------------------------||
A||------------5--6--8-------------------------------------||
E||---5--6--8----------------------------------------------||

Bb SixthDiminishedScale
e||------------------------------------------------5--6--8-||
B||---------------------------------------6--7--8----------||
G||------------------------------5--7--8-------------------||
D||---------------------5--7--8----------------------------||
A||------------5--6--8-------------------------------------||
E||---5--6--8----------------------------------------------||

Bb DominantDiminishedScale
e||---------------------------------------------5--6--8-||
B||---------------------------------------6--7----------||
G||------------------------------5--7--8----------------||
D||---------------------6--7--8-------------------------||
A||------------5--6--8----------------------------------||
E||---5--6--8-------------------------------------------||

SonicPI

SonicPI integration

Experimental, still very new, may change a lot

#r "../packages/bespoke-osc-library/1.0.0/lib/Bespoke.Common.Osc.dll"

#load "Infrastructure.fs"
#load "Domain.fs"
#load "Notes.fs"
#load "Chords.fs"
#load "SonicPi.fs"

open Vaughan.Domain
open Vaughan.Chords
open Vaughan.SonicPi

Statments[
        UseBpm 120<bpm>;
        WithSynth(Fm, [
                    WithFx(Reverb, [Mix(0.5)], [
                                            Repeat(2, [
                                                    PlayNote(C, OneLine, [
                                                                        Amplitude(0.5<loud>);
                                                                        Panning(0.0<pan>);
                                                                        Attack(2.0<beat>);
                                                                        Release(2.0<beat>)]);
                                                    PlayChord(chord C Major, TwoLine, [
                                                                                    Amplitude(1.0<loud>);
                                                                                    Release(2.0<beat>);
                                                                                    Panning(1.0<pan>)]);
                                                    Rest 2<beat>;
                                                    Arpeggio([C; E; G; B], OneLine, [1.0<beat>], [])
                                                    ])
                                                ])
                ])
        ]
|> toSonicPiScript
|> sonicPiRun

Execute sample code above: cd Vaughan and fsharpi SonicPi.fsx

Live loop example

#r "../packages/bespoke-osc-library/1.0.0/lib/Bespoke.Common.Osc.dll"

#load "Infrastructure.fs"
#load "Domain.fs"
#load "Notes.fs"
#load "Chords.fs"
#load "SonicPi.fs"

open Vaughan.Domain
open Vaughan.SonicPi

Statments
    [
        UseBpm 120<bpm>;
        LiveLoop("Foo",
                    [
                        PlaySample(LoopingSample Garzul, []);
                        UseSynth TheProphet;
                        PlayNote(G, Great, [Release(8.0<beat>)]);
                        Rest 8<beat>
                    ])
    ]
|> toSonicPiScript
|> sonicPiRun

sonicPiStop

Execute sample code above: cd Vaughan and fsharpi SonicPiLiveLoop.fsx to stop this script sound, for now, you have to do it from SonicPi interface (could not get message to halt execution to work yet).

Song DSL example

DSL for communicating with SonicPi, requires SonicPi on machine and requires SonicPi to be running.

#r "../packages/bespoke-osc-library/1.0.0/lib/Bespoke.Common.Osc.dll"

#load "Infrastructure.fs"
#load "Domain.fs"
#load "Notes.fs"
#load "Chords.fs"
#load "SonicPi.fs"

open Vaughan.Domain
open Vaughan.SonicPi

let section = Section(
                (4<beat>, Quarter),
                CMajor,
                [
                    [
                        1.0<beat>, [(D, OneLine, Quarter); (F, OneLine, Quarter); (A, OneLine, Quarter)];
                        2.0<beat>, [(D, OneLine, Quarter); (F, OneLine, Quarter); (A, OneLine, Quarter)];
                        3.0<beat>, [(D, OneLine, Quarter); (F, OneLine, Quarter); (A, OneLine, Quarter)];
                        4.0<beat>, [(D, OneLine, Quarter); (F, OneLine, Quarter); (A, OneLine, Quarter)]
                    ];
                    [
                        1.0<beat>, [(G, OneLine, Quarter); (B, OneLine, Quarter); (D, OneLine, Quarter)];
                        2.0<beat>, [(G, OneLine, Quarter); (B, OneLine, Quarter); (D, OneLine, Quarter)];
                        3.0<beat>, [(G, OneLine, Quarter); (B, OneLine, Quarter); (D, OneLine, Quarter)];
                        4.0<beat>, [(G, OneLine, Quarter); (B, OneLine, Quarter); (D, OneLine, Quarter)]
                    ];
                    [
                        1.0<beat>, [(C, OneLine, Quarter); (E, OneLine, Quarter); (G, OneLine, Quarter)];
                        2.0<beat>, [(C, OneLine, Quarter); (E, OneLine, Quarter); (G, OneLine, Quarter)];
                        3.0<beat>, [(C, OneLine, Quarter); (E, OneLine, Quarter); (G, OneLine, Quarter)];
                        4.0<beat>, [(C, OneLine, Quarter); (E, OneLine, Quarter); (G, OneLine, Quarter)]
                    ];
                ])

Statments[UseBpm 120<bpm>; WithSynth(Pluck, [section])]
|> toSonicPiScript
|> sonicPiRun

Execute sample code above: cd Vaughan and fsharpi SonicPiSong.fsx

Examples

Example usage

This code works on last build more up to date than documentation

#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

[StandardTunning; Start; Notes(ascEightsRootAbove (guitarArpeggio 5 8 (chord BFlat Major7))); End]
|> renderTab
|> printf "\n%s"

[StandardTunning; Start; Notes(descEightsRootBelow (guitarArpeggio 5 8 (chord BFlat Major7))); End]
|> renderTab
|> printf "\n%s"

[StandardTunning; Start; Notes(ascEightsRootEnclosed (guitarArpeggio 5 8 (chord BFlat Major7))); End]
|> renderTab
|> printf "\n%s"

[StandardTunning; Start; Notes(descEightsThirdEnclosed (guitarArpeggio 2 5 (chord C Major7))); End]
|> renderTab
|> printf "\n%s"

[StandardTunning; Start; Notes(ascEightsRootEnclosed (guitarArpeggio 2 5 (chord C Major7))); End]
|> renderTab
|> printf "\n%s"

[StandardTunning; Start; Notes(ascEightsThirdEnclosed (guitarArpeggio 2 5 (chord C Major7))); End]
|> renderTab
|> printf "\n%s"

[StandardTunning; Start; Notes(ascEightsRootEnclosed (guitarArpeggio 5 8 (chord C Minor7))); End]
|> renderTab
|> printf "\n%s"

[StandardTunning; Start; Notes(ascEightsSeventhEnclosed (guitarArpeggio 5 8 (chord C Minor7))); End]
|> renderTab
|> printf "\n%s"

[StandardTunning; Start; Notes(ascEightsThirdEnclosed (guitarArpeggio 5 8 (chord C Minor7))); End]
|> renderTab
|> printf "\n%s"

[StandardTunning; Start; ArbArpeggio(descendingArpeggioFrom root (guitarArpeggio 2 5 (chord C Major7))); End]
|> renderTab
|> printf "\n%s"

[StandardTunning; Start; Arpeggio(ascendingArpeggioFrom root (guitarArpeggio 2 5 (chord C Major))); End]
|> renderTab
|> printf "\n%s"

[StandardTunning; Start; Arpeggio(ascendingArpeggioFrom root (guitarArpeggio 2 5 (chord G Major))); End]
|> renderTab
|> printf "\n%s"

[StandardTunning; Start; Scale(createScale Ionian C |> guitarScale 2 6); End]
|> renderTab
|> printf "\n%s"

[StandardTunning; Start; Arpeggio(guitarArpeggio 9 22 (chord C Major)); End]
|> renderTab 
|> printf "\n%s"

[
    StandardTunning;
    Start;
    Note({GuitarString=FirstString; Fret=8; Note=C})
    End
]
|> renderTab
|> printf "\n%s"

[
    StandardTunning;
    Start;
    Chord(chord D Minor7 |> toDrop3 |> guitarChord SixthString);
    Chord(chord G Dominant7 |> toDrop3 |> guitarChord SixthString);
    Chord(chord C Major7 |> toDrop3 |> guitarChord SixthString);
    End
]
|> renderTab
|> printf "\n%s"

[StandardTunning; Start; Scale(createScale Ionian C |> guitarScale 4 8); End]
|> renderTab
|> printf "\n%s"

[StandardTunning; Start; Scale(createScale Ionian C |> guitarScale 7 10); End]
|> renderTab
|> printf "\n%s"

[StandardTunning; Start; Scale(createScale Ionian C |> guitarScale 9 13); End]
|> renderTab
|> printf "\n%s"

[StandardTunning; Start; Arpeggio(chord C Major |> guitarArpeggio 9 22); End]
|> renderTab
|> printf "\n%s"

[StandardTunning; Start; Arpeggio(chord C Major |> guitarArpeggio 7 10); End]
|> renderTab
|> printf "\n%s"

[StandardTunning; Start; Arpeggio(chord C Major |> guitarArpeggio 4 5); End]
|> renderTab
|> printf "\n%s"

[StandardTunning; Start; Arpeggio(chord C Major |> guitarArpeggio 1 4); End]
|> renderTab
|> printf "\n%s"

[StandardTunning; Start; Arpeggio(chord C Major |> guitarArpeggio 7 10); End]
|> renderTab
|> printf "\n%s"

[StandardTunning; Start; Arpeggio(chord C Major |> guitarArpeggio 0 13); End]
|> renderTab
|> printf "\n%s"

chord C Major7
|> toDrop3
|> guitarChord SixthString
|> tabifyChord
|> printf "\n%s"

chord C Major7
|> toDrop2
|> guitarChord FifthString
|> tabifyChord
|> printf "\n%s"

chord C Major
|> guitarChord FifthString
|> tabifyChord
|> printf "\n%s"

chord C Dominant9
|> skipFunction Fifth
|> guitarChord FifthString
|> tabifyChord
|> printf "\n%s"

chord C Major9
|> skipFunction Fifth
|> guitarChord FifthString
|> tabifyChord
|> printf "\n%s"

createScaleNotes Aolian DSharp
|> triadsHarmonizer ScaleDegree.III
|> guitarChord SixthString
|> tabifyChord
|> printf "\n%s"

createScaleNotes Ionian A
|> seventhsHarmonizer ScaleDegree.I
|> toDrop2
|> guitarChord FifthString
|> tabifyChord
|> printf "\n%s"

createScaleNotes Ionian C
|> seventhsHarmonizer ScaleDegree.I
|> toDrop3
|> guitarChord FifthString
|> tabifyChord
|> printf "\n%s"

createScaleNotes Aolian FSharp
|> seventhsHarmonizer ScaleDegree.III
|> toDrop3
|> guitarChord SixthString
|> tabifyChord
|> printf "\n%s"

createScaleNotes HarmonicMinor BFlat
|> seventhsHarmonizer ScaleDegree.VII
|> guitarChord SixthString
|> tabifyChord
|> printf "\n%s"

createScaleNotes HarmonicMinor C
|> seventhsHarmonizer ScaleDegree.VII
|> guitarChord SixthString
|> tabifyChord
|> printf "\n%s"

createScaleNotes HarmonicMinor C
|> seventhsHarmonizer ScaleDegree.VII
|> guitarChord SixthString
|> tabifyChord
|> printf "\n%A"

createScaleNotes HarmonicMinor C
|> seventhsHarmonizer ScaleDegree.VII
|> toOpen
|> guitarChord SixthString
|> tabifyChord
|> printf "\n%A"

noteName C |> printf "\n%A"
noteName CSharp |> printf "\n%A"
noteName DFlat |> printf "\n%A"
sharp EFlat |> printf "\n%A"
flat E |> printf "\n%A"
measureAbsoluteSemitones C G |> printf "\n%A"
intervalBetween C FSharp |> printf "\n%A"
transpose C MajorSixth |> printf "\n%A"
intervalName DiminishedFifth |> printf "\n%A"
fromDistance 6<ht> |> printf "\n%A"
toDistance PerfectFifth |> printf "\n%A"

keyNotes CMajor |> printf "\n%A"
keyNotes EFlatMajor |> printf "\n%A"
keyNotes DMinor |> printf "\n%A"

createScaleNotes Phrygian C |> printf "\n%A"
createScaleNotes LydianAugmented C  |> printf "\n%A"

let cMaj7 = {Notes= [(C, Root); (E, Third); (G, Fifth); (B, Seventh)]; ChordType=Closed; Name="CMaj7"}
let cMaj = chord C Major

noteNames cMaj7 |> printf "\n%A"
bass cMaj7 |> printf "\n%A"
lead cMaj7 |> printf "\n%A"
name cMaj7 |> printf "\n%A"
cMaj7.Notes |> printf "\n%A"
(cMaj7 |> invert).Notes |> printf "\n%A"
(cMaj7 |> invert |> invert).Notes |> printf "\n%A"
(cMaj7 |> invert |> invert |> invert).Notes |> printf "\n%A"
(cMaj7 |> toDrop2).Notes |> printf "\n%A"
(cMaj7 |> toDrop3).Notes |> printf "\n%A"


inversionForFunctionAsLead cMaj Third |> printf "\n%A"
inversionForFunctionAsBass cMaj Fifth |> printf "\n%A"
invertionWithLeadClosestToNote cMaj CSharp |> printf "\n%A"
invertionWithBassClosestToNote cMaj F |> printf "\n%A"

printfn "\n"
printfn "Chords Fitting"

chordsFitting [D; F; A] |> printf "\n%A"
chordsFitting [C; E; G; B] |> printf "\n%A"

printfn "\n"
printfn "Scales Fitting"

let chord = chord C ChordQuality.Dominant7

scalesFitting chord

Output

e||--------------------------||
B||-----------------------6--||
G||--------------------7-----||
D||--------------7--8--------||
A||--------5--8--------------||
E||--7--6--------------------||

e||--5--6--5-----------------||
B||-----------6--------------||
G||--------------7-----------||
D||-----------------8--7-----||
A||-----------------------8--||
E||--------------------------||

e||--------------------------||
B||--------------------------||
G||-----------------------7--||
D||-----------------7--8-----||
A||-----------5--8-----------||
E||--7--5--6-----------------||

e||--------------------------||
B||--6--4--5-----------------||
G||-----------5--4-----------||
D||-----------------5--2-----||
A||-----------------------3--||
E||--------------------------||

e||--------------------------||
B||-----------------------5--||
G||-----------------4--5-----||
D||-----------2--5-----------||
A||--4--2--3-----------------||
E||--------------------------||

e||-----------------------3--||
B||--------------------5-----||
G||--------------4--5--------||
D||--3--1--2--5--------------||
A||--------------------------||
E||--------------------------||

e||--------------------------||
B||--------------------------||
G||--------------------5--8--||
D||--------------5--8--------||
A||-----------6--------------||
E||--9--7--8-----------------||

e||--------------------------||
B||--------------------------||
G||-----------------------5--||
D||-----------------5--8-----||
A||--------------6-----------||
E||--7--5--6--8--------------||

e||--------------------------||
B||-----------------------8--||
G||-----------------5--8-----||
D||-----------5--8-----------||
A||--7--5--6-----------------||
E||--------------------------||

e||-----------------------||
B||-----------------------||
G||--5--4-----------------||
D||--------5--2-----------||
A||--------------3--2-----||
E||--------------------3--||

e||-----------------3--||
B||--------------5-----||
G||-----------5--------||
D||-----2--5-----------||
A||--3-----------------||
E||--------------------||

e||--------------------3--||
B||-----------------3-----||
G||--------------4--------||
D||-----------5-----------||
A||-----2--5--------------||
E||--3--------------------||

e||--------------------------------------------3--5--||
B||-----------------------------------3--5--6--------||
G||--------------------------2--4--5-----------------||
D||-----------------2--3--5--------------------------||
A||--------2--3--5-----------------------------------||
E||--3--5--------------------------------------------||

e||-------------------------------------------------------------12--15--20--||
B||-------------------------------------------------13--17--20--------------||
G||--------------------------------------9--12--17--------------------------||
D||--------------------------10--14--17-------------------------------------||
A||--------------10--15--19-------------------------------------------------||
E||--12--15--20-------------------------------------------------------------||

e||--8--||
B||-----||
G||-----||
D||-----||
A||-----||
E||-----||

e||------------||
B||--10--3--8--||
G||--10--4--9--||
D||--10--3--9--||
A||------------||
E||--10--3--8--||

e||--------------------------------------------5--7--8--||
B||-----------------------------------5--6--8-----------||
G||--------------------------4--5--7--------------------||
D||--------------------5--7-----------------------------||
A||-----------5--7--8-----------------------------------||
E||--5--7--8--------------------------------------------||

e||-------------------------------------------------7--8--10--||
B||------------------------------------------8--10------------||
G||--------------------------------7--9--10-------------------||
D||----------------------7--9--10-----------------------------||
A||------------7--8--10---------------------------------------||
E||--7--8--10-------------------------------------------------||

e||--------------------------------------------------------10--12--13--||
B||--------------------------------------------10--12--13--------------||
G||---------------------------------9--10--12--------------------------||
D||----------------------9--10--12-------------------------------------||
A||--------------10--12------------------------------------------------||
E||--10--12--13--------------------------------------------------------||

e||-------------------------------------------------------------12--15--20--||
B||-------------------------------------------------13--17--20--------------||
G||--------------------------------------9--12--17--------------------------||
D||--------------------------10--14--17-------------------------------------||
A||--------------10--15--19-------------------------------------------------||
E||--12--15--20-------------------------------------------------------------||

e||----------------------8--||
B||-------------------8-----||
G||----------------9--------||
D||------------10-----------||
A||-----7--10---------------||
E||--8----------------------||

e||------------------1--||
B||--------------5-----||
G||-----------5--------||
D||--------5-----------||
A||------1--------------||
E||---1-----------------||

e||-----------------3--||
B||--------------1-----||
G||------------1--------||
D||--------2-----------||
A||-----3--------------||
E||--3-----------------||

e||----------------------8--||
B||-------------------8-----||
G||----------------9--------||
D||------------10-----------||
A||-----7--10---------------||
E||--8----------------------||

e||-------------------------------------------------0--3--8--||
B||----------------------------------------1--5--8-----------||
G||-------------------------------0--5--9--------------------||
D||---------------------2--5--10-----------------------------||
A||-----------3--7--10---------------------------------------||
E||--0--3--8-------------------------------------------------||

e||-----||
B||--8--||
G||--9--||
D||--9--||
A||-----||
E||--8--||

e||-----||
B||--5--||
G||--4--||
D||--5--||
A||--3--||
E||-----||

e||--3--||
B||--1--||
G||--5--||
D||--2--||
A||--3--||
E||-----||

e||-----||
B||--3--||
G||--3--||
D||--2--||
A||--3--||
E||-----||

e||-----||
B||--3--||
G||--4--||
D||--2--||
A||--3--||
E||-----||

e||------||
B||------||
G||------||
D||--11--||
A||--13--||
E||--14--||

e||------||
B||--14--||
G||--13--||
D||--14--||
A||--12--||
E||------||

e||--3--||
B||--5--||
G||--4--||
D||-----||
A||--3--||
E||-----||

e||-----||
B||--5--||
G||--6--||
D||--6--||
A||-----||
E||--5--||

e||--2--||
B||--1--||
G||--2--||
D||--1--||
A||--3--||
E||--2--||

e||--1--||
B||--3--||
G||--1--||
D||--3--||
A||--2--||
E||--1--||

"e||--1--||
B||--3--||
G||--1--||
D||--3--||
A||--2--||
E||--1--||
"
"e||--1--||
B||--0--||
G||--1--||
D||--0--||
A||--2--||
E||--1--||
"
"C"
"C#"
"Db"
E
EFlat
7
DiminishedFifth
A
"DiminishedFifth"
DiminishedFifth
7
[C; D; E; F; G; A; B]
[EFlat; F; G; AFlat; BFlat; C; D]
[D; E; F; G; A; BFlat; C]
[C; DFlat; EFlat; F; G; AFlat; BFlat]
[C; D; E; FSharp; GSharp; A; B]
["C"; "E"; "G"; "B"]
C
B
"CMaj7"
[(C, Root); (E, Third); (G, Fifth); (B, Seventh)]
[(E, Third); (G, Fifth); (B, Seventh); (C, Root)]
[(G, Fifth); (B, Seventh); (C, Root); (E, Third)]
[(B, Seventh); (C, Root); (E, Third); (G, Fifth)]
[(C, Root); (G, Fifth); (B, Seventh); (E, Third)]
[(C, Root); (B, Seventh); (E, Third); (G, Fifth)]
{Notes = [(G, Fifth); (C, Root); (E, Third)];
 ChordType = Closed;
 Name = "CMaj";}
{Notes = [(G, Fifth); (C, Root); (E, Third)];
 ChordType = Closed;
 Name = "CMaj";}
{Notes = [(E, Third); (G, Fifth); (C, Root)];
 ChordType = Closed;
 Name = "CMaj";}
{Notes = [(E, Third); (G, Fifth); (C, Root)];
 ChordType = Closed;
 Name = "CMaj";}

Chords Fitting

[{Notes = [(A, Root); (D, Third); (F, Fifth)];
  ChordType = Closed;
  Name = "ASus4Aug";}; {Notes = [(D, Root); (F, Third); (A, Fifth)];
                        ChordType = Closed;
                        Name = "DMin";}]
[{Notes = [(C, Root); (E, Third); (G, Fifth); (B, Seventh)];
  ChordType = Closed;
  Name = "CMaj7";}]

Scales Fitting
val generateArpeggioExercise :
  arpeggio:Vaughan.Domain.GuitarArpeggio -> unit list
val CMinor7 : Vaughan.Domain.Chord =
  {Notes = [(C, Root); (EFlat, Third); (G, Fifth); (BFlat, Seventh)];
   ChordType = Closed;
   Name = "CMin7";}
val CMinor7Arpeggio : Vaughan.Domain.GuitarArpeggio =
  {BaseChord =
    {Notes = [(C, Root); (EFlat, Third); (G, Fifth); (BFlat, Seventh)];
     ChordType = Closed;
     Name = "CMin7";};
   ArpeggioFrets =
    [{GuitarString = FirstString;
      Fret = 8;
      Note = C;}; {GuitarString = FirstString;
                   Fret = 6;
                   Note = BFlat;}; {GuitarString = SecondString;
                                    Fret = 8;
                                    Note = G;}; {GuitarString = ThirdString;
                                                 Fret = 5;
                                                 Note = C;};
     {GuitarString = ThirdString;
      Fret = 8;
      Note = EFlat;}; {GuitarString = FourthString;
                       Fret = 5;
                       Note = G;}; {GuitarString = FourthString;
                                    Fret = 8;
                                    Note = BFlat;};
     {GuitarString = FifthString;
      Fret = 6;
      Note = EFlat;}; {GuitarString = SixthString;
                       Fret = 8;
                       Note = C;}; {GuitarString = SixthString;
                                    Fret = 6;
                                    Note = BFlat;}];}
val F7 : Vaughan.Domain.Chord =
  {Notes = [(F, Root); (A, Third); (C, Fifth); (EFlat, Seventh)];
   ChordType = Closed;
   Name = "F7";}
val F7Arpeggio : Vaughan.Domain.GuitarArpeggio =
  {BaseChord = {Notes = [(F, Root); (A, Third); (C, Fifth); (EFlat, Seventh)];
                ChordType = Closed;
                Name = "F7";};
   ArpeggioFrets =
    [{GuitarString = FirstString;
      Fret = 5;
      Note = A;}; {GuitarString = FirstString;
                   Fret = 8;
                   Note = C;}; {GuitarString = SecondString;
                                Fret = 6;
                                Note = F;}; {GuitarString = ThirdString;
                                             Fret = 5;
                                             Note = C;};
     {GuitarString = ThirdString;
      Fret = 8;
      Note = EFlat;}; {GuitarString = FourthString;
                       Fret = 7;
                       Note = A;}; {GuitarString = FifthString;
                                    Fret = 8;
                                    Note = F;}; {GuitarString = FifthString;
                                                 Fret = 6;
                                                 Note = EFlat;};
     {GuitarString = SixthString;
      Fret = 5;
      Note = A;}; {GuitarString = SixthString;
                   Fret = 8;
                   Note = C;}];}
val BbMajor7 : Vaughan.Domain.Chord =
  {Notes = [(BFlat, Root); (D, Third); (F, Fifth); (A, Seventh)];
   ChordType = Closed;
   Name = "BbMaj7";}
val BbMajor7Arpeggio : Vaughan.Domain.GuitarArpeggio =
  {BaseChord = {Notes = [(BFlat, Root); (D, Third); (F, Fifth); (A, Seventh)];
                ChordType = Closed;
                Name = "BbMaj7";};
   ArpeggioFrets =
    [{GuitarString = FirstString;
      Fret = 6;
      Note = BFlat;}; {GuitarString = FirstString;
                       Fret = 5;
                       Note = A;}; {GuitarString = SecondString;
                                    Fret = 6;
                                    Note = F;}; {GuitarString = ThirdString;
                                                 Fret = 7;
                                                 Note = D;};
     {GuitarString = FourthString;
      Fret = 8;
      Note = BFlat;}; {GuitarString = FourthString;
                       Fret = 7;
                       Note = A;}; {GuitarString = FifthString;
                                    Fret = 5;
                                    Note = D;}; {GuitarString = FifthString;
                                                 Fret = 8;
                                                 Note = F;};
     {GuitarString = SixthString;
      Fret = 6;
      Note = BFlat;}; {GuitarString = SixthString;
                       Fret = 5;
                       Note = A;}];}
val EbMajor7 : Vaughan.Domain.Chord =
  {Notes = [(EFlat, Root); (G, Third); (ASharp, Fifth); (D, Seventh)];
   ChordType = Closed;
   Name = "EbMaj7";}
val EbMajor7Arpeggio : Vaughan.Domain.GuitarArpeggio =
  {BaseChord =
    {Notes = [(EFlat, Root); (G, Third); (ASharp, Fifth); (D, Seventh)];
     ChordType = Closed;
     Name = "EbMaj7";};
   ArpeggioFrets =
    [{GuitarString = FirstString;
      Fret = 6;
      Note = ASharp;}; {GuitarString = SecondString;
                        Fret = 8;
                        Note = G;}; {GuitarString = ThirdString;
                                     Fret = 8;
                                     Note = EFlat;};
     {GuitarString = ThirdString;
      Fret = 7;
      Note = D;}; {GuitarString = FourthString;
                   Fret = 5;
                   Note = G;}; {GuitarString = FourthString;
                                Fret = 8;
                                Note = ASharp;}; {GuitarString = FifthString;
                                                  Fret = 6;
                                                  Note = EFlat;};
     {GuitarString = FifthString;
      Fret = 5;
      Note = D;}; {GuitarString = SixthString;
                   Fret = 6;
                   Note = ASharp;}];}
val Am7b5 : Vaughan.Domain.Chord =
  {Notes = [(A, Root); (C, Third); (EFlat, Fifth); (G, Seventh)];
   ChordType = Closed;
   Name = "AMin7b5";}
val Am7b5Arpeggio : Vaughan.Domain.GuitarArpeggio =
  {BaseChord = {Notes = [(A, Root); (C, Third); (EFlat, Fifth); (G, Seventh)];
                ChordType = Closed;
                Name = "AMin7b5";};
   ArpeggioFrets =
    [{GuitarString = FirstString;
      Fret = 5;
      Note = A;}; {GuitarString = FirstString;
                   Fret = 8;
                   Note = C;}; {GuitarString = SecondString;
                                Fret = 8;
                                Note = G;}; {GuitarString = ThirdString;
                                             Fret = 5;
                                             Note = C;};
     {GuitarString = ThirdString;
      Fret = 8;
      Note = EFlat;}; {GuitarString = FourthString;
                       Fret = 7;
                       Note = A;}; {GuitarString = FourthString;
                                    Fret = 5;
                                    Note = G;}; {GuitarString = FifthString;
                                                 Fret = 6;
                                                 Note = EFlat;};
     {GuitarString = SixthString;
      Fret = 5;
      Note = A;}; {GuitarString = SixthString;
                   Fret = 8;
                   Note = C;}];}
val D7 : Vaughan.Domain.Chord =
  {Notes = [(D, Root); (FSharp, Third); (A, Fifth); (C, Seventh)];
   ChordType = Closed;
   Name = "D7";}
val D7Arpeggio : Vaughan.Domain.GuitarArpeggio =
  {BaseChord =
    {Notes = [(D, Root); (FSharp, Third); (A, Fifth); (C, Seventh)];
     ChordType = Closed;
     Name = "D7";};
   ArpeggioFrets =
    [{GuitarString = FirstString;
      Fret = 5;
      Note = A;}; {GuitarString = FirstString;
                   Fret = 8;
                   Note = C;}; {GuitarString = SecondString;
                                Fret = 7;
                                Note = FSharp;}; {GuitarString = ThirdString;
                                                  Fret = 7;
                                                  Note = D;};
     {GuitarString = ThirdString;
      Fret = 5;
      Note = C;}; {GuitarString = FourthString;
                   Fret = 7;
                   Note = A;}; {GuitarString = FifthString;
                                Fret = 5;
                                Note = D;}; {GuitarString = FifthString;
                                             Fret = 9;
                                             Note = FSharp;};
     {GuitarString = SixthString;
      Fret = 5;
      Note = A;}; {GuitarString = SixthString;
                   Fret = 8;
                   Note = C;}];}
val Gm7 : Vaughan.Domain.Chord =
  {Notes = [(G, Root); (BFlat, Third); (D, Fifth); (F, Seventh)];
   ChordType = Closed;
   Name = "GMin7";}
val Gm7Arpeggio : Vaughan.Domain.GuitarArpeggio =
  {BaseChord = {Notes = [(G, Root); (BFlat, Third); (D, Fifth); (F, Seventh)];
                ChordType = Closed;
                Name = "GMin7";};
   ArpeggioFrets =
    [{GuitarString = FirstString;
      Fret = 6;
      Note = BFlat;}; {GuitarString = SecondString;
                       Fret = 8;
                       Note = G;}; {GuitarString = SecondString;
                                    Fret = 6;
                                    Note = F;}; {GuitarString = ThirdString;
                                                 Fret = 7;
                                                 Note = D;};
     {GuitarString = FourthString;
      Fret = 5;
      Note = G;}; {GuitarString = FourthString;
                   Fret = 8;
                   Note = BFlat;}; {GuitarString = FifthString;
                                    Fret = 5;
                                    Note = D;}; {GuitarString = FifthString;
                                                 Fret = 8;
                                                 Note = F;};
     {GuitarString = SixthString;
      Fret = 6;
      Note = BFlat;}];}
val cMaj7 : Vaughan.Domain.Chord =
  {Notes = [(C, Root); (E, Third); (G, Fifth); (B, Seventh)];
   ChordType = Closed;
   Name = "CMaj7";}
val cMaj : Vaughan.Domain.Chord =
  {Notes = [(C, Root); (E, Third); (G, Fifth)];
   ChordType = Closed;
   Name = "CMaj";}
val chord : Vaughan.Domain.Chord =
  {Notes = [(C, Root); (E, Third); (G, Fifth); (BFlat, Seventh)];
   ChordType = Closed;
   Name = "C7";}
val it : Vaughan.Domain.Scale list =
  [{Scale = Mixolydian;
    Notes = [C; D; E; F; G; A; BFlat];};
   {Scale = LydianDominant;
    Notes = [C; D; E; FSharp; G; A; BFlat];};
   {Scale = Mixolydianb6;
    Notes = [C; D; E; F; G; AFlat; BFlat];};
   {Scale = Bebop;
    Notes = [C; D; E; F; G; A; BFlat; B];};
   {Scale = HalfWholeDiminished;
    Notes = [C; DFlat; EFlat; E; FSharp; G; A; BFlat];};
   {Scale = DominantDiminishedScale;
    Notes = [C; D; E; F; G; GSharp; BFlat; B];};
   {Scale = Aolian;
    Notes = [D; E; F; G; A; BFlat; C];};
   {Scale = Mixolydianb6;
    Notes = [D; E; FSharp; G; A; BFlat; C];};
   {Scale = LocrianSharp2;
    Notes = [D; E; F; G; AFlat; BFlat; C];};
   {Scale = Locrian;
    Notes = [E; F; G; A; BFlat; C; D];};
   {Scale = LocrianSharp2;
    Notes = [E; FSharp; G; A; BFlat; C; D];};
   {Scale = AlteredDominant;
    Notes = [E; F; G; GSharp; BFlat; C; D];};
   {Scale = Dorian;
    Notes = [G; A; BFlat; C; D; E; F];};
   {Scale = MelodicMinor;
    Notes = [G; A; BFlat; C; D; E; FSharp];};
   {Scale = Dorianb2;
    Notes = [G; AFlat; BFlat; C; D; E; F];};
   {Scale = MinorSixthDiminishedScale;
    Notes = [G; A; BFlat; C; D; DSharp; E; FSharp];};
   {Scale = Phrygian;
    Notes = [A; BFlat; C; D; E; F; G];};
   {Scale = Dorianb2;
    Notes = [A; BFlat; C; D; E; FSharp; G];};
   {Scale = HalfWholeDiminished;
    Notes = [A; BFlat; C; CSharp; DSharp; E; FSharp; G];};
   {Scale = Lydian;
    Notes = [BFlat; C; D; E; F; G; A];};
   {Scale = LydianAugmented;
    Notes = [BFlat; C; D; E; FSharp; G; A];};
   {Scale = LydianDominant;
    Notes = [BFlat; C; D; E; F; G; AFlat];}]