Karya, built on 2018-05-31T02:46:59 (patch 0a1a35479c514820d77330ae8a978975ba22a47a)

Safe HaskellNone



Utilities for Derive.Call.Block.

Derivation of a block is much more complicated than it might first appear. This can cause score code to be evaluated more times than you think it should be.

One culprit is evaluating tracks for control signals for signal render. Under some circumstances, the track's normal control output can be directly reused as the signal render, but in many cases it has to be evaluated again. This is further complicated by the presence of inversion and orphans.



control_deriver :: BlockId -> Ui.StateId ControlDeriver Source #

Control blocks are very restricted: they should consist of a single branch ending in a track with a % title, which is the default control, which should have been set by the calling track. If the requirements are met, a fake note track will be appended to make this a valid note block, with a single note event whose only job is to collect the the default control.

capture_null_control :: Expr.Symbol Source #

Name of the call for the control deriver hack.

has_top_tempo_track :: [Tree.Tree TrackTree.Track] -> Maybe (Tree.Tree TrackTree.Track) Source #

The tempo track, if the top level track is a tempo track.