Bang-0.1.0.6: A Drum Machine DSL for Haskell

Copyright(c) Benjamin Kovach, 2014
LicenseMIT
Maintainerbkovach13@gmail.com
Stabilityexperimental
PortabilityMac OSX
Safe HaskellSafe-Inferred
LanguageHaskell2010

Bang.Music.Class

Description

Implements the core data structures for use in the Bang library.

Synopsis

Documentation

data Primitive d a Source

Primitive objects in music are simply notes with duration and type, or rests with only duration.

Constructors

Note

A Note with duration dur and type ntype

Fields

dur :: d
 
ntype :: a
 
Rest

A Rest with duration dur

Fields

dur :: d
 

Instances

Functor (Primitive dur) 
(Eq d, Eq a) => Eq (Primitive d a) 
(Show d, Show a) => Show (Primitive d a) 

data Music dur a Source

A musical composition with duration type dur (typically Dur) and instrument type a (typically a PercussionSound)

Constructors

Prim (Primitive dur a)

A Primitive musical object.

(Music dur a) :+: (Music dur a)

Sequential composition of music

(Music dur a) :=: (Music dur a)

Parallel composition of music

Modify Control (Music dur a)

Modifier (typically BPM or Tempo change)

Instances

Bifunctor Music 
Bifoldable Music 
Functor (Music dur) 
Foldable (Music dur) 
(Eq dur, Eq a) => Eq (Music dur a) 
(Show dur, Show a) => Show (Music dur a) 
Num dur => Monoid (Music dur a) 

data Control Source

Simple data type representing different control structures for compositions.

Constructors

BPM Integer

Set the beats per minute (WARNING: Only set this once, or BPM will multiply!)

Tempo Rational

Set the speed for a section of music (default 1)

Instrument InstrumentName

Change the instrument (currently unused)

Instances

data InstrumentName Source

Simple data type representing the types of instruments Bang supports.

Currently, the only value is DrumSet.

Constructors

DrumSet 

duration :: (Fractional a, Ord a) => Music a b -> a Source

Get the duration of a full composition

cappend :: Music dur a -> Music dur a -> Music dur a Source

Parallel mappend

Part of a second Monoid "instance" for Music

cempty :: Num dur => Music dur a Source

Parallel mempty

Part of a second Monoid "instance" for Music

cconcat :: Num dur => [Music dur a] -> Music dur a Source

Parallel mconcat

Part of a second Monoid "instance" for Music