
major7Chord :: Chord
major7Chord = buildChord [0, 4, 7, 11]

type Duration = Int
data Progression =
  Progression
    { chords :: [((Chord, Int), Duration)]
    , key    :: Double
    , tempo  :: Double
    }

applyProgression :: Progression -> WaveFn -> WaveFn
applyProgression prog wave t
  | t == 0    = (applyChord pitch' wave chord') t