Karya, built on Mon Jul 24 11:39:07 PDT 2017 (patch 33511aca01257b76b88de7c7a2763b7a965c084e)

Safe HaskellNone

Derive.Call.Prelude.Parent

Contents

Description

Note calls that transform other note calls. They rely on track slicing via Sub.sub_events.

Synopsis

Documentation

tuplet

lily_tuplet :: PassedArgs d -> NoteDeriver -> NoteDeriver Source #

c_tuplet works by lengthening notes to fit in its range, but staff notation tuplets work by shortening notes. So I double the duration of the events and figure out how much to shrink them to get to the desired duration.

Since the t call is more flexible than a staff tuplet, this enforces some restrictions. Both the tuplet's notes and the tuplet as a whole must be a Duration, and all the notes must be the same duration. So I don't support tuplets with ties and whatnot inside. It's theoretically possible, but seems hard.

arpeggio

data Arpeggio Source #

Direction in which to arpeggiate. This is a general arpeggiation that just makes each track slightly delayed with regard to its neighbor.

Since I can't know the pitch of things (and a Sub.Event may not have a single pitch), the arpeggiation is by track position, not pitch.

Constructors

ToRight 
ToLeft 
Random 

Instances

arpeggio :: Arpeggio -> RealTime.RealTime -> Double -> [[Sub.Event]] -> NoteDeriver Source #

Shift each track of notes by a successive amount.

arpeggio_by_note :: Arpeggio -> RealTime.RealTime -> NoteDeriver -> NoteDeriver Source #

This is the old version that shifts each note as a postproc. This means it can arpeggiate by pitch since it knows the pitches at that point, but also means it won't place events that consist of multiple notes correctly.

It's also buggy for events after the start since it will make their duration negative.

interpolate

all_equal :: Eq a => [a] -> Bool Source #

cycle