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
- era :: (HasPosition a, Transformable a) => Lens' a Span
- position :: (HasPosition a, Transformable a) => Duration -> Lens' a Time
- 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
- _setEra :: (HasPosition a, Transformable a) => Span -> a -> a
- _getEra :: HasPosition a => a -> Span
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 0 to 1, the global position
goes from the onset
to the offset
of the value.
For instantaneous values, a suitable instance is:
_position
x =const
t
For values with an onset and offset we can use alerp
:
_position
x =alerp
(_onset
x) (_offset
x)
Nothing
_position :: a -> Duration -> Time Source
Return the onset of the given value, or the value between the attack and decay phases.
_onset, _offset :: a -> Time Source
Return the onset of the given value, or the value between the attack and decay phases.
HasPosition Span | |
HasPosition Time | |
(HasPosition a, HasDuration a) => HasPosition [a] | |
HasPosition a => HasPosition (Bound a) | |
HasPosition a => HasPosition (AddMeta a) | |
HasPosition (Delayed a) | |
HasPosition (Track a) | |
HasPosition (Note a) | |
HasPosition (Score a) | |
HasPosition (Future a) | |
HasPosition (Past a) |
Era
era :: (HasPosition a, Transformable a) => Lens' a Span Source
A lens to the position
Position
position :: (HasPosition a, Transformable a) => Duration -> Lens' a Time Source
Position of the given value.
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
Internal
_setEra :: (HasPosition a, Transformable a) => Span -> a -> a Source
Place a value over the given span.
placeAt s t
places the given thing so that x^.place = s
_getEra :: HasPosition a => a -> Span Source