packages feed

live-sequencer-0.0.2: data/base/Chords.hs

module Chords where

import Midi


chord ::
   Integer -> [Integer] ->
   [Midi.Event Midi.Message] ;
chord dur =
   mergeMany . map (note dur) ;


chord3 ::
   Integer ->
   Integer -> Integer -> Integer ->
   [Midi.Event Midi.Message] ;
chord3 dur p0 p1 p2 = chord dur [p0, p1, p2] ;

chord4 ::
   Integer ->
   Integer -> Integer -> Integer -> Integer ->
   [Midi.Event Midi.Message] ;
chord4 dur p0 p1 p2 p3 = chord dur [p0, p1, p2, p3] ;


major, major7, minor, minor7 ::
   Integer -> Integer -> [Midi.Event Midi.Message] ;

major dur base =
   chord4 dur base (base + 4) (base + 7) (base + 12) ;

major7 dur base =
   chord4 dur base (base + 4) (base + 7) (base + 10) ;

minor dur base =
   chord4 dur base (base + 3) (base + 7) (base + 12) ;

minor7 dur base =
   chord4 dur base (base + 3) (base + 7) (base + 10) ;