Portability | non-portable (TF,GNTD) |
---|---|
Stability | experimental |
Maintainer | hans@hanshoglund.se |
Safe Haskell | None |
Provides a representation for chords.
- class HasChord a where
- newtype ChordT a = ChordT {
- getChordT :: [a]
- separateVoices :: Ord a => Score a -> [Score a]
- mergePossible :: [Score a] -> [Score a]
- takeNoteInChord :: Int -> Score b -> Score b
- dropNoteInChord :: Int -> Score b -> Score b
- takeNotesInChord :: Int -> Score b -> Score b
- dropNotesInChord :: Int -> Score b -> Score b
- mapSimultaneous :: (Score [a] -> Score [b]) -> Score a -> Score b
- simultaneous :: Semigroup a => Score a -> Score a
- simultaneous' :: Score a -> Score [a]
Chord representation
HasChord [a] | |
HasChord a => HasChord (TieT a) | |
HasChord (ChordT a) | |
HasChord a => HasChord (DynamicT a) | |
HasChord a => HasChord (ArticulationT a) | |
HasChord a => HasChord (SlideT a) | |
HasChord a => HasChord (HarmonicT a) | |
HasChord a => HasChord (TextT a) | |
HasChord a => HasChord (TremoloT a) | |
HasChord a => HasChord (PartT n a) |
Monad ChordT | |
Functor ChordT | |
Typeable1 ChordT | |
Foldable ChordT | |
Bounded a => Bounded (ChordT a) | |
Enum a => Enum (ChordT a) | |
Eq a => Eq (ChordT a) | |
Ord a => Ord (ChordT a) | |
Show a => Show (ChordT a) | |
Monoid (ChordT a) | |
Semigroup (ChordT a) | |
IsDynamics a => IsDynamics (ChordT a) | |
IsPitch a => IsPitch (ChordT a) | |
Reversible (ChordT a) | |
Tiable a => Tiable (ChordT a) | |
HasChord (ChordT a) | |
HasDynamic a => HasDynamic (ChordT a) | |
HasArticulation a => HasArticulation (ChordT a) | |
HasSlide a => HasSlide (ChordT a) | |
HasHarmonic a => HasHarmonic (ChordT a) | |
HasText a => HasText (ChordT a) | |
HasTremolo a => HasTremolo (ChordT a) | |
HasMidi a => HasMidi (ChordT a) | |
HasLilypond a => HasLilypond (ChordT a) | |
HasMusicXml a => HasMusicXml (ChordT a) | |
HasSetPitch a b => HasSetPitch (ChordT a) (ChordT b) |
Voice separation
separateVoices :: Ord a => Score a -> [Score a]Source
mergePossible :: [Score a] -> [Score a]Source
Heuristically merge voices if possible
Chord transformations
takeNoteInChord :: Int -> Score b -> Score bSource
dropNoteInChord :: Int -> Score b -> Score bSource
takeNotesInChord :: Int -> Score b -> Score bSource
dropNotesInChord :: Int -> Score b -> Score bSource
simultaneous :: Semigroup a => Score a -> Score aSource
simultaneous' :: Score a -> Score [a]Source
Group simultaneous events as lists.
Two events a and b are considered simultaneous if and only if they have the same
era, that is if era
a == era
b
Note that simultaneous
is identical to simultaneous
.
fmap
return