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

Derive.C.Bali.Reyong

Description

Calls for reyong and trompong techniques.

 /-------\/----\/-------\/----\--\
4e 4u 4a 5i 5o 5e 5u 5a 6i 6o 6e 6u
3  5  6  1  2  3  5  6  1  2  3  5
Synopsis

# tumpuk

Dyn 0 means a rest.

Constructors

 Transpose Pitch.Step Prev

#### Instances

Instances details
 Source # Instance detailsDefined in Derive.C.Bali.Reyong MethodsshowList :: [TumpukPitch] -> ShowS # Source # Instance detailsDefined in Derive.C.Bali.Reyong Methods

These more or less correspond to the group articulations:

/   X   -   +   o
m-  nx  .o

If dur is long, use the slow end of the patterns. If dur is short, try to fit the pattern in the first 2/3, dropping patterns if they exceed that at their fastest.

Pattern and usable time range. TODO probably I can vary -=, nx, and .o, or just randomize the dyn for non-final notes.

# kilitan

Kilitan is implemented as a set of patterns indexed by an absolute pitch degree. The patterns are similar to kotekan, except with absolute pitches, and without a polos / sangsih division.

filter_voices :: [Voice] -> [a] -> [(Voice, a)] Source #

Select the given Voice indices.

# kotekan

Like Gangsa.get_pitch, but get the symbolic pitch.

Like Gangsa.infer_prepare, except return a parsed Pitch.Pitch.

# articulation

type Voice = Int Source #

# kotekan

Constructors

 KotekanPattern Fieldskotekan_above :: !([Maybe.Maybe Pitch.Step], Pitch.Step)Pair relative steps with the final note's distance from the destination pitch. This is used to find this line's distance from a given position.kotekan_below :: !([Maybe.Maybe Pitch.Step], Pitch.Step)

#### Instances

Instances details
 Source # Instance detailsDefined in Derive.C.Bali.Reyong MethodsshowList :: [KotekanPattern] -> ShowS #

type Chord = [Note] Source #

Figure out a pattern for each note of the scale.

assign_closest :: Ord key => (a -> b -> key) -> [a] -> [b] -> [(a, b)] Source #

Find the value from the first list that is closest to the first element of the first list, and then zip them up.

## absolute

Map a char to the notes it represents for a certain position. Each position has different set of notes available. This is just to interpret a mini-notation for each position.

data Degree Source #

Saih lima pitch degree.

Constructors

 I O E U A

#### Instances

Instances details
 Source # Instance detailsDefined in Derive.C.Bali.Reyong MethodstoEnum :: Int -> Degree #enumFrom :: Degree -> [Degree] #enumFromThen :: Degree -> Degree -> [Degree] #enumFromTo :: Degree -> Degree -> [Degree] #enumFromThenTo :: Degree -> Degree -> Degree -> [Degree] # Source # Instance detailsDefined in Derive.C.Bali.Reyong MethodsshowsPrec :: Int -> Degree -> ShowS #showList :: [Degree] -> ShowS # Source # Instance detailsDefined in Derive.C.Bali.Reyong Methods(==) :: Degree -> Degree -> Bool #(/=) :: Degree -> Degree -> Bool # Source # Instance detailsDefined in Derive.C.Bali.Reyong Methods(<) :: Degree -> Degree -> Bool #(<=) :: Degree -> Degree -> Bool #(>) :: Degree -> Degree -> Bool #(>=) :: Degree -> Degree -> Bool #max :: Degree -> Degree -> Degree #min :: Degree -> Degree -> Degree # Source # Instance detailsDefined in Derive.C.Bali.Reyong MethodsformatList :: [Degree] -> Doc Source #

Map letters to chords, starting from the given octave and Degree. Capital letters get Attrs.mute.

data Position Source #

Constructors

 Position Fieldspos_cek :: !Pitch.Pitch pos_byong :: ![Pitch.Pitch] pos_table :: !NoteTable

#### Instances

Instances details
 Source # Instance detailsDefined in Derive.C.Bali.Reyong MethodsshowList :: [Position] -> ShowS # Source # Instance detailsDefined in Derive.C.Bali.Reyong Methods

# damping

Multiply this by Controls.dynamic for the dynamic of +mute notes created by infer-damp.

Arguments

 :: Set ScoreT.Instrument -> (RealTime.RealTime -> RealTime.RealTime) duration required to damp -> (RealTime.RealTime -> RealTime.RealTime) -> [Score.Event] -> Log.LogId [Score.Event]

Divide notes into voices. Assign each note to a hand. The end of each note needs a free hand to damp. That can be the same hand if the next note with that hand is a sufficiently long time from now, or the opposite hand if it is not too busy.

Create a damped note at the end of the given note.

Arguments

 :: (RealTime.RealTime -> RealTime.RealTime) -> [Score.Event] -> ([Maybe.Maybe Signal.Y], [Score.Event]) dump level for each event, or Nothing if undamped

True for events which could get an inferred damp.

data Hand Source #

Constructors

 L R

#### Instances

Instances details
 Source # Instance detailsDefined in Derive.C.Bali.Reyong MethodsshowsPrec :: Int -> Hand -> ShowS #show :: Hand -> String #showList :: [Hand] -> ShowS # Source # Instance detailsDefined in Derive.C.Bali.Reyong Methods(==) :: Hand -> Hand -> Bool #(/=) :: Hand -> Hand -> Bool # Source # Instance detailsDefined in Derive.C.Bali.Reyong MethodsformatList :: [Hand] -> Doc Source #

assign_hands :: [Score.Event] -> ([(Hand, Score.Event)], [Score.Event]) Source #

Assign hands based on the direction of the pitches. This is a bit simplistic but hopefully works well enough.

# solkattu

These calls are used by the Reyong realization.