Karya, built on 2023-08-29T07:47:28 (patch 7a412d5d6ba4968ca4155ef276a062ccdeb9109a)
Safe HaskellSafe-Inferred

Derive.Call.BlockUtil

Description

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.

Synopsis

Documentation

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.