Score operation functions for translating, scaling, repeating, and merging
serial and parallel parts. Also for calculating durations. Assumption about
score note format are described in each function's documentation.
Calculates score block duration. Assumes 2nd and 3rd items in each Note
represent start time and duration.
(|*| sco num-repeat dur)
(|*| sco num-repeat dur start)
Repeat score for num-repeat times every duration in time.
(|+| sco start)
Adjust start times for score. Assumes 2nd item in each Note represents
(|p| & sco-blocks)
Flattens list of score blocks into a single list in parallel. (Simply
(|scale-to| sco dur)
(|scale| sco multiplier)
(|s| & sco-blocks)
Flattens list of score blocks into single list in series, adjusting
start times for each event in score block to follow previous score block.
If an item within the sco-blocks is a number, it will advance the start time
by that number (useful to put in space between score blocks).