Karya, built on 2022-03-21T01:30:44 (patch 89d1651424c35e564138d93424a157ff87457245)
Safe HaskellSafe-Inferred



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.