Copyright | (c) Hans Hoglund 2012-2014 |
---|---|
License | BSD-style |
Maintainer | hans@hanshoglund.se |
Stability | experimental |
Portability | non-portable (TF,GNTD) |
Safe Haskell | None |
Language | Haskell2010 |
- module Music.Time.Duration
- class HasDuration a => HasPosition a where
- position :: (HasPosition a, Transformable a) => Duration -> Lens' a Time
- era :: (HasPosition a, Transformable a) => Lens' a Span
- onset :: (HasPosition a, Transformable a) => Lens' a Time
- midpoint :: (HasPosition a, Transformable a) => Lens' a Time
- offset :: (HasPosition a, Transformable a) => Lens' a Time
- preOnset :: (HasPosition a, Transformable a) => Lens' a Time
- postOffset :: (HasPosition a, Transformable a) => Lens' a Time
- postOnset :: (HasPosition a, Transformable a) => Lens' a Time
- startAt :: (Transformable a, HasPosition a) => Time -> a -> a
- stopAt :: (Transformable a, HasPosition a) => Time -> a -> a
- placeAt :: (Transformable a, HasPosition a) => Duration -> Time -> a -> a
- stretchRelative :: (HasPosition a, Transformable a) => Duration -> Duration -> a -> a
- stretchRelativeOnset :: (HasPosition a, Transformable a) => Duration -> a -> a
- stretchRelativeMidpoint :: (HasPosition a, Transformable a) => Duration -> a -> a
- stretchRelativeOffset :: (HasPosition a, Transformable a) => Duration -> a -> a
- delayRelative :: (HasPosition a, Transformable a) => Duration -> Duration -> a -> a
- delayRelativeOnset :: (HasPosition a, Transformable a) => Duration -> a -> a
- delayRelativeMidpoint :: (HasPosition a, Transformable a) => Duration -> a -> a
- delayRelativeOffset :: (HasPosition a, Transformable a) => Duration -> a -> a
- transformRelative :: (HasPosition a, Transformable a) => Duration -> Span -> a -> a
- transformRelativeOnset :: (HasPosition a, Transformable a) => Span -> a -> a
- transformRelativeMidpoint :: (HasPosition a, Transformable a) => Span -> a -> a
- transformRelativeOffset :: (HasPosition a, Transformable a) => Span -> a -> a
Documentation
module Music.Time.Duration
The HasPosition class
class HasDuration a => HasPosition a where Source
Class of values that have a position in time.
Many values such as notes, envelopes etc can in fact have many positions such as onset,
attack point, offset, decay point time etc. Rather than having separate methods for a
discrete set of cases, this class provides an interpolation from a local position to
a global position. While the local position goes from zero to one,
the global position goes from the onset
to the offset
of the value.
Instances should satisfy:
x ^.duration
= x ^.era
.duration
x ^.position
n = x ^.era
.position
n (transform
s x) ^.era
=transform
s (x ^.era
)
_position :: a -> Duration -> Time Source
Map a local time in value to global time.
_era :: HasPosition a => a -> Span Source
Return the conventional bounds of a value (local time zero and one).
HasPosition Span | |
(HasPosition a, Transformable a) => HasPosition [a] | |
HasPosition a => HasPosition (AddMeta a) | |
HasPosition (Event a) | |
HasPosition (Score a) | |
(HasDuration v, Transformable v) => HasPosition (Aligned v) |
Position and Era
position :: (HasPosition a, Transformable a) => Duration -> Lens' a Time Source
Position of the given value.
era :: (HasPosition a, Transformable a) => Lens' a Span Source
A lens to the position
Specific positions
onset :: (HasPosition a, Transformable a) => Lens' a Time Source
Onset of the given value.
midpoint :: (HasPosition a, Transformable a) => Lens' a Time Source
Midpoint of the given value, or the value between the decay and sustain phases.
offset :: (HasPosition a, Transformable a) => Lens' a Time Source
Onset of the given value.
preOnset :: (HasPosition a, Transformable a) => Lens' a Time Source
Pre-onset of the given value, or the value right before the attack phase.
postOffset :: (HasPosition a, Transformable a) => Lens' a Time Source
Post-offset of the given value, or the value right after the release phase.
postOnset :: (HasPosition a, Transformable a) => Lens' a Time Source
Deprecated: Use midpoint
Moving
startAt :: (Transformable a, HasPosition a) => Time -> a -> a Source
Move a value forward in time.
stopAt :: (Transformable a, HasPosition a) => Time -> a -> a Source
Move a value forward in time.
placeAt :: (Transformable a, HasPosition a) => Duration -> Time -> a -> a Source
Transforming relative a position
stretchRelative :: (HasPosition a, Transformable a) => Duration -> Duration -> a -> a Source
stretchRelativeOnset :: (HasPosition a, Transformable a) => Duration -> a -> a Source
stretchRelativeMidpoint :: (HasPosition a, Transformable a) => Duration -> a -> a Source
stretchRelativeOffset :: (HasPosition a, Transformable a) => Duration -> a -> a Source
delayRelative :: (HasPosition a, Transformable a) => Duration -> Duration -> a -> a Source
delayRelativeOnset :: (HasPosition a, Transformable a) => Duration -> a -> a Source
delayRelativeMidpoint :: (HasPosition a, Transformable a) => Duration -> a -> a Source
delayRelativeOffset :: (HasPosition a, Transformable a) => Duration -> a -> a Source
transformRelative :: (HasPosition a, Transformable a) => Duration -> Span -> a -> a Source
transformRelativeOnset :: (HasPosition a, Transformable a) => Span -> a -> a Source
transformRelativeMidpoint :: (HasPosition a, Transformable a) => Span -> a -> a Source
transformRelativeOffset :: (HasPosition a, Transformable a) => Span -> a -> a Source