Karya, built on Mon Jul 24 11:39:07 PDT 2017 (patch 33511aca01257b76b88de7c7a2763b7a965c084e)

Safe HaskellNone




Functions to do with performance. This is split off from Cmd.Play, which contains play Cmds and their direct support.



initial_environ :: BaseTypes.Environ Source #

There are a few environ values that almost everything relies on.

cached_derive :: Cmd.M m => BlockId -> m Result Source #

Derive with the cache.

derive_block :: Cmd.M m => Cache -> ScoreDamage -> BlockId -> m Result Source #

Derive the contents of the given block to score events.

run :: Cmd.M m => Cache -> ScoreDamage -> Deriver a -> m (RunResult a) Source #

run_with_dynamic :: Cmd.M m => Dynamic -> Deriver a -> m (RunResult a) Source #

Run a derivation when you already know the Dynamic. This is the case when deriving at a certain point in the score via the TrackDynamic.

get_constant :: Cmd.M m => Ui.State -> Cache -> ScoreDamage -> m Constant Source #

Create deriver configuration. This is the main place where Cmd level configuration is adapted to the deriver.


first_time :: [LEvent.LEvent Midi.WriteMessage] -> RealTime.RealTime Source #

The first timestamp from the msgs.

events_from Source #


:: Set Instrument

scan back for starts of these

-> RealTime.RealTime 
-> Vector.Vector Score.Event 
-> ([Score.Event], Vector.Vector Score.Event)

(extra events before start, events from start)

As a special case, a start <= 0 will get all events, including negative ones. This is so notes pushed before 0 won't be clipped on a play from 0.

overlapping_events :: RealTime.RealTime -> Vector.Vector Score.Event -> [Score.Event] Source #

How to know how far back to go? Impossible to know! Well, I could look up overlapping ui events, then map the earliest time to RealTime, and start searching there. But for now scanning from the beginning should be fast enough.