Karya, built on 2020-11-26T21:03:17 (patch 23b5be2d53a9e8e7d6136cda5aae2849abe5cded)
Safe HaskellNone



Re-export the core deriver library. Most calls should import this module rather than the lower level ones.



get_track :: TrackId -> Deriver Track Source #

Because Deriver is not a UiStateMonad.

TODO I suppose it could be, but then I'd be tempted to make a ReadOnlyUiStateMonad. And I'd have to merge the exceptions. Or just rethrow, right?

eval_ui :: Stack => StateId a -> Deriver a Source #

Evaluate a Ui.M computation, rethrowing any errors.

place :: ScoreTime -> ScoreTime -> Deriver a -> Deriver a Source #

at and stretch in one. It's a little more efficient than using them separately. The order is stretch, then shift.

block_logical_range :: BlockId -> Deriver (TrackTime, TrackTime) Source #

Sub-derived blocks are stretched according to their length, and this function defines the length of a block. This is therefore the logical duration of the block, which may be shorter or lorger than the end of the last event, or the ruler.