AlgoRhythm-0.1.0.0: Algorithmic music composition

Safe HaskellSafe
LanguageHaskell2010

Music.Types

Contents

Synopsis

Types

data Music a Source #

Constructors

(Music a) :+: (Music a) infixr 4 
(Music a) :=: (Music a) infixr 4 
Note Duration a 
Rest Duration 

Instances

Functor Music Source # 

Methods

fmap :: (a -> b) -> Music a -> Music b #

(<$) :: a -> Music b -> Music a #

Foldable Music Source # 

Methods

fold :: Monoid m => Music m -> m #

foldMap :: Monoid m => (a -> m) -> Music a -> m #

foldr :: (a -> b -> b) -> b -> Music a -> b #

foldr' :: (a -> b -> b) -> b -> Music a -> b #

foldl :: (b -> a -> b) -> b -> Music a -> b #

foldl' :: (b -> a -> b) -> b -> Music a -> b #

foldr1 :: (a -> a -> a) -> Music a -> a #

foldl1 :: (a -> a -> a) -> Music a -> a #

toList :: Music a -> [a] #

null :: Music a -> Bool #

length :: Music a -> Int #

elem :: Eq a => a -> Music a -> Bool #

maximum :: Ord a => Music a -> a #

minimum :: Ord a => Music a -> a #

sum :: Num a => Music a -> a #

product :: Num a => Music a -> a #

Retrogradable Music a Source # 

Methods

(><) :: Music a -> Music a Source #

(Show a, Invertible [] a) => Invertible Music a Source # 

Methods

invert :: Music a -> Music a Source #

invertN :: Int -> Music a -> Music a Source #

Eq a => Eq (Music a) Source # 

Methods

(==) :: Music a -> Music a -> Bool #

(/=) :: Music a -> Music a -> Bool #

Show a => Show (Music a) Source # 

Methods

showsPrec :: Int -> Music a -> ShowS #

show :: Music a -> String #

showList :: [Music a] -> ShowS #

Generic (Music a) Source # 

Associated Types

type Rep (Music a) :: * -> * #

Methods

from :: Music a -> Rep (Music a) x #

to :: Rep (Music a) x -> Music a #

Repeatable (Music a) Source # 

Methods

(##) :: Int -> Music a -> Music a Source #

Scalable (Music a) Source # 

Methods

(*~) :: Rational -> Music a -> Music a Source #

Transposable a => Transposable (Music a) Source # 
type Rep (Music a) Source # 

data PitchClass Source #

Constructors

C 
Cs 
D 
Ds 
E 
F 
Fs 
G 
Gs 
A 
As 
B 

Instances

Bounded PitchClass Source # 
Enum PitchClass Source # 
Enum Pitch Source # 
Enum FullPitch Source # 
Eq PitchClass Source # 
Ord PitchClass Source # 
Show PitchClass Source # 
Generic PitchClass Source # 

Associated Types

type Rep PitchClass :: * -> * #

Default PitchClass Source # 

Methods

def :: PitchClass #

ToMusicCore PitchClass Source # 
ToMusicCore Pitch Source # 
ToMusicCore FullPitch Source #

FullPitch is defined as the core music type, so this instance doesn't change anything.

Transposable FullPitch Source # 
Invertible [] Pitch Source # 

Methods

invert :: [Pitch] -> [Pitch] Source #

invertN :: Int -> [Pitch] -> [Pitch] Source #

Generatable GenState PitchClass Source # 
Generatable GenState Pitch Source # 
Abstract Interval PitchClass PitchClass Source # 
Expand HarmonyConfig Degree Modulation SemiChord Source #

Expands modulations and intreprets degrees to chords.

Abstract [Interval] PitchClass [PitchClass] Source # 
Abstract [Interval] Pitch [Pitch] Source #

Covers both Chord and Scale.

Methods

instantiate :: Pitch -> [Interval] -> [Pitch] Source #

type Rep PitchClass Source # 
type Rep PitchClass = D1 (MetaData "PitchClass" "Music.Types" "AlgoRhythm-0.1.0.0-3sacqxtBfmvEqzJonJZhK8" False) ((:+:) ((:+:) ((:+:) (C1 (MetaCons "C" PrefixI False) U1) ((:+:) (C1 (MetaCons "Cs" PrefixI False) U1) (C1 (MetaCons "D" PrefixI False) U1))) ((:+:) (C1 (MetaCons "Ds" PrefixI False) U1) ((:+:) (C1 (MetaCons "E" PrefixI False) U1) (C1 (MetaCons "F" PrefixI False) U1)))) ((:+:) ((:+:) (C1 (MetaCons "Fs" PrefixI False) U1) ((:+:) (C1 (MetaCons "G" PrefixI False) U1) (C1 (MetaCons "Gs" PrefixI False) U1))) ((:+:) (C1 (MetaCons "A" PrefixI False) U1) ((:+:) (C1 (MetaCons "As" PrefixI False) U1) (C1 (MetaCons "B" PrefixI False) U1)))))

data Octave Source #

Constructors

Oct0 
Oct1 
Oct2 
Oct3 
Oct4 
Oct5 
Oct6 

Instances

Bounded Octave Source # 
Enum Octave Source # 
Enum Pitch Source # 
Enum FullPitch Source # 
Eq Octave Source # 

Methods

(==) :: Octave -> Octave -> Bool #

(/=) :: Octave -> Octave -> Bool #

Ord Octave Source # 
Show Octave Source # 
Generic Octave Source # 

Associated Types

type Rep Octave :: * -> * #

Methods

from :: Octave -> Rep Octave x #

to :: Rep Octave x -> Octave #

Default Octave Source # 

Methods

def :: Octave #

ToMusicCore Pitch Source # 
ToMusicCore FullPitch Source #

FullPitch is defined as the core music type, so this instance doesn't change anything.

Transposable FullPitch Source # 
Invertible [] Pitch Source # 

Methods

invert :: [Pitch] -> [Pitch] Source #

invertN :: Int -> [Pitch] -> [Pitch] Source #

Generatable GenState Octave Source # 
Generatable GenState Pitch Source # 
Abstract [Interval] Pitch [Pitch] Source #

Covers both Chord and Scale.

Methods

instantiate :: Pitch -> [Interval] -> [Pitch] Source #

type Rep Octave Source # 
type Rep Octave = D1 (MetaData "Octave" "Music.Types" "AlgoRhythm-0.1.0.0-3sacqxtBfmvEqzJonJZhK8" False) ((:+:) ((:+:) (C1 (MetaCons "Oct0" PrefixI False) U1) ((:+:) (C1 (MetaCons "Oct1" PrefixI False) U1) (C1 (MetaCons "Oct2" PrefixI False) U1))) ((:+:) ((:+:) (C1 (MetaCons "Oct3" PrefixI False) U1) (C1 (MetaCons "Oct4" PrefixI False) U1)) ((:+:) (C1 (MetaCons "Oct5" PrefixI False) U1) (C1 (MetaCons "Oct6" PrefixI False) U1))))

data PitchAttribute Source #

Instances

Enum FullPitch Source # 
Eq PitchAttribute Source # 
Show PitchAttribute Source # 
Generic PitchAttribute Source # 

Associated Types

type Rep PitchAttribute :: * -> * #

ToMusicCore FullPitch Source #

FullPitch is defined as the core music type, so this instance doesn't change anything.

Transposable FullPitch Source # 
type Rep PitchAttribute Source # 

data Dynamic Source #

Constructors

PPPPP 
PPPP 
PPP 
PP 
P 
MP 
MF 
F_ 
FF 
FFF 
FFFF 

Instances

Bounded Dynamic Source # 
Enum Dynamic Source # 
Eq Dynamic Source # 

Methods

(==) :: Dynamic -> Dynamic -> Bool #

(/=) :: Dynamic -> Dynamic -> Bool #

Ord Dynamic Source # 
Show Dynamic Source # 
Generic Dynamic Source # 

Associated Types

type Rep Dynamic :: * -> * #

Methods

from :: Dynamic -> Rep Dynamic x #

to :: Rep Dynamic x -> Dynamic #

type Rep Dynamic Source # 
type Rep Dynamic = D1 (MetaData "Dynamic" "Music.Types" "AlgoRhythm-0.1.0.0-3sacqxtBfmvEqzJonJZhK8" False) ((:+:) ((:+:) ((:+:) (C1 (MetaCons "PPPPP" PrefixI False) U1) (C1 (MetaCons "PPPP" PrefixI False) U1)) ((:+:) (C1 (MetaCons "PPP" PrefixI False) U1) ((:+:) (C1 (MetaCons "PP" PrefixI False) U1) (C1 (MetaCons "P" PrefixI False) U1)))) ((:+:) ((:+:) (C1 (MetaCons "MP" PrefixI False) U1) ((:+:) (C1 (MetaCons "MF" PrefixI False) U1) (C1 (MetaCons "F_" PrefixI False) U1))) ((:+:) (C1 (MetaCons "FF" PrefixI False) U1) ((:+:) (C1 (MetaCons "FFF" PrefixI False) U1) (C1 (MetaCons "FFFF" PrefixI False) U1)))))

data Interval Source #

Constructors

P1 
Mi2 
M2 
Mi3 
M3 
P4 
A4 
P5 
Mi6 
M6 
Mi7 
M7 
P8 
Mi9 
M9 
A9 
M10 
P11 
A11 
P12 
Mi13 
M13 
Mi14 
M14 
P15 

Instances

Bounded Interval Source # 
Enum Interval Source # 
Eq Interval Source # 
Ord Interval Source # 
Show Interval Source # 
Generic Interval Source # 

Associated Types

type Rep Interval :: * -> * #

Methods

from :: Interval -> Rep Interval x #

to :: Rep Interval x -> Interval #

Invertible [] Interval Source # 
Abstract Interval PitchClass PitchClass Source # 
Abstract [Interval] PitchClass [PitchClass] Source # 
Abstract [Interval] Pitch [Pitch] Source #

Covers both Chord and Scale.

Methods

instantiate :: Pitch -> [Interval] -> [Pitch] Source #

type Rep Interval Source # 
type Rep Interval = D1 (MetaData "Interval" "Music.Types" "AlgoRhythm-0.1.0.0-3sacqxtBfmvEqzJonJZhK8" False) ((:+:) ((:+:) ((:+:) ((:+:) (C1 (MetaCons "P1" PrefixI False) U1) ((:+:) (C1 (MetaCons "Mi2" PrefixI False) U1) (C1 (MetaCons "M2" PrefixI False) U1))) ((:+:) (C1 (MetaCons "Mi3" PrefixI False) U1) ((:+:) (C1 (MetaCons "M3" PrefixI False) U1) (C1 (MetaCons "P4" PrefixI False) U1)))) ((:+:) ((:+:) (C1 (MetaCons "A4" PrefixI False) U1) ((:+:) (C1 (MetaCons "P5" PrefixI False) U1) (C1 (MetaCons "Mi6" PrefixI False) U1))) ((:+:) (C1 (MetaCons "M6" PrefixI False) U1) ((:+:) (C1 (MetaCons "Mi7" PrefixI False) U1) (C1 (MetaCons "M7" PrefixI False) U1))))) ((:+:) ((:+:) ((:+:) (C1 (MetaCons "P8" PrefixI False) U1) ((:+:) (C1 (MetaCons "Mi9" PrefixI False) U1) (C1 (MetaCons "M9" PrefixI False) U1))) ((:+:) (C1 (MetaCons "A9" PrefixI False) U1) ((:+:) (C1 (MetaCons "M10" PrefixI False) U1) (C1 (MetaCons "P11" PrefixI False) U1)))) ((:+:) ((:+:) (C1 (MetaCons "A11" PrefixI False) U1) ((:+:) (C1 (MetaCons "P12" PrefixI False) U1) (C1 (MetaCons "Mi13" PrefixI False) U1))) ((:+:) ((:+:) (C1 (MetaCons "M13" PrefixI False) U1) (C1 (MetaCons "Mi14" PrefixI False) U1)) ((:+:) (C1 (MetaCons "M14" PrefixI False) U1) (C1 (MetaCons "P15" PrefixI False) U1))))))

type MusicCore = Music FullPitch Source #

Core Music datatype.

type Rhythm = Music () Source #

type Chord = [Pitch] Source #

type Scale = [Pitch] Source #

Classes

class ToMusicCore a where Source #

To allow playback, exporting to MIDI and rendering scores, all user-defined abstractions must be convertible to MusicCore.

Minimal complete definition

toMusicCore

class (Eq a, Enum a, Bounded a) => BoundEnum a where Source #

Methods

safeToEnum :: Int -> a Source #

Safely convert from Int, respecting bounds.

next :: a -> a Source #

Get next value or min/max if out-of-bounds.

prev :: a -> a Source #

Get previous value or min/max if out-of-bounds.

moveN :: Int -> a -> a Source #

Move n-times forward.

prev_ :: Eq a => a -> a Source #

Variant of prev that cycles forth to the maximum.

next_ :: Eq a => a -> a Source #

Variant of next that cycles back to the minimum.

moveN_ :: Eq a => Int -> a -> a Source #

Cycle n-times forward.

Instances

(Eq a, Enum a, Bounded a) => BoundEnum a Source # 

Methods

safeToEnum :: Int -> a Source #

next :: a -> a Source #

prev :: a -> a Source #

moveN :: Int -> a -> a Source #

prev_ :: a -> a Source #

next_ :: a -> a Source #

moveN_ :: Int -> a -> a Source #

Shorthands

(<$$>) :: (Duration -> Duration) -> Music a -> Music a infixr 4 Source #

(<$$$>) :: (Music a -> Music b) -> Music a -> Music b Source #

(%) :: Integral a => a -> a -> Ratio a infixl 7 #

Forms the ratio of two integral numbers.

(//) :: Rational -> Rational -> Int Source #

Operator precedence.

class Default a where #

A class for types with a default value.

Methods

def :: a #

The default value for this type.

Instances

Default Double 

Methods

def :: Double #

Default Float 

Methods

def :: Float #

Default Int 

Methods

def :: Int #

Default Int8 

Methods

def :: Int8 #

Default Int16 

Methods

def :: Int16 #

Default Int32 

Methods

def :: Int32 #

Default Int64 

Methods

def :: Int64 #

Default Integer 

Methods

def :: Integer #

Default Ordering 

Methods

def :: Ordering #

Default Word 

Methods

def :: Word #

Default Word8 

Methods

def :: Word8 #

Default Word16 

Methods

def :: Word16 #

Default Word32 

Methods

def :: Word32 #

Default Word64 

Methods

def :: Word64 #

Default () 

Methods

def :: () #

Default CShort 

Methods

def :: CShort #

Default CUShort 

Methods

def :: CUShort #

Default CInt 

Methods

def :: CInt #

Default CUInt 

Methods

def :: CUInt #

Default CLong 

Methods

def :: CLong #

Default CULong 

Methods

def :: CULong #

Default CLLong 

Methods

def :: CLLong #

Default CULLong 

Methods

def :: CULLong #

Default CFloat 

Methods

def :: CFloat #

Default CDouble 

Methods

def :: CDouble #

Default CPtrdiff 

Methods

def :: CPtrdiff #

Default CSize 

Methods

def :: CSize #

Default CSigAtomic 

Methods

def :: CSigAtomic #

Default CClock 

Methods

def :: CClock #

Default CTime 

Methods

def :: CTime #

Default CUSeconds 

Methods

def :: CUSeconds #

Default CSUSeconds 

Methods

def :: CSUSeconds #

Default CIntPtr 

Methods

def :: CIntPtr #

Default CUIntPtr 

Methods

def :: CUIntPtr #

Default CIntMax 

Methods

def :: CIntMax #

Default CUIntMax 

Methods

def :: CUIntMax #

Default All 

Methods

def :: All #

Default Any 

Methods

def :: Any #

Default Direction 

Methods

def :: Direction #

Default Octave # 

Methods

def :: Octave #

Default PitchClass # 

Methods

def :: PitchClass #

Default [a] 

Methods

def :: [a] #

Default (Maybe a) 

Methods

def :: Maybe a #

Integral a => Default (Ratio a) 

Methods

def :: Ratio a #

Default a => Default (IO a) 

Methods

def :: IO a #

(Default a, RealFloat a) => Default (Complex a) 

Methods

def :: Complex a #

Default a => Default (Dual a) 

Methods

def :: Dual a #

Default (Endo a) 

Methods

def :: Endo a #

Num a => Default (Sum a) 

Methods

def :: Sum a #

Num a => Default (Product a) 

Methods

def :: Product a #

Default (First a) 

Methods

def :: First a #

Default (Last a) 

Methods

def :: Last a #

Default r => Default (e -> r) 

Methods

def :: e -> r #

(Default a, Default b) => Default (a, b) 

Methods

def :: (a, b) #

(Default a, Default b, Default c) => Default (a, b, c) 

Methods

def :: (a, b, c) #

(Default a, Default b, Default c, Default d) => Default (a, b, c, d) 

Methods

def :: (a, b, c, d) #

(Default a, Default b, Default c, Default d, Default e) => Default (a, b, c, d, e) 

Methods

def :: (a, b, c, d, e) #

(Default a, Default b, Default c, Default d, Default e, Default f) => Default (a, b, c, d, e, f) 

Methods

def :: (a, b, c, d, e, f) #

(Default a, Default b, Default c, Default d, Default e, Default f, Default g) => Default (a, b, c, d, e, f, g) 

Methods

def :: (a, b, c, d, e, f, g) #

line :: [Music a] -> Music a Source #

chord :: [Music a] -> Music a Source #

scale :: [Music a] -> Music a Source #

voices :: Music a -> [Music a] Source #

notes :: Music a -> [a] Source #

Orphan instances