-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathchord.go
28 lines (24 loc) · 969 Bytes
/
chord.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package daw
// A chord is a series of intervals implicitly including the root interval
type Chord []Step
var (
MajorTriad Chord = []Step{Major3, Perfect5}
MajorSixth Chord = []Step{Major3, Perfect5, Major6}
DominantSeventh Chord = []Step{Major3, Perfect5, Minor7}
AugmentedTriad Chord = []Step{Major3, Minor6, Major7}
AugmentedSeventh Chord = []Step{Major3, Minor6, Minor7}
MinorTriad Chord = []Step{Minor3, Perfect5}
MinorSixth Chord = []Step{Minor3, Perfect5, Major6}
MinorSeventh Chord = []Step{Minor3, Perfect5, Minor7}
MinorMajorSeventh Chord = []Step{Minor3, Perfect5, Major7}
DiminishedTriad Chord = []Step{Minor3, Tritone}
DiminishedSeventh Chord = []Step{Minor3, Tritone, Major6}
HalfDiminishedSeventh Chord = []Step{Minor3, Tritone, Minor7}
)
func (c Chord) WithRoot(root Pitch) []Pitch {
out := []Pitch{root}
for _, s := range c {
out = append(out, root.Up(s))
}
return out
}