Safe Haskell | Safe-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.
Documentation
note_deriver :: BlockId -> NoteDeriver Source #
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.
derive_tracks :: TrackTree.EventsTree -> NoteDeriver Source #
Derive an EventsTree.
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.