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

Derive.Call.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

 # Methods # MethodsshowList :: [TumpukPitch] -> ShowS #

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 #

# 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

 # 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 #

Pentatonic pitch degree.

Constructors

 I O E U A

Instances

 # MethodstoEnum :: Int -> Degree #enumFrom :: Degree -> [Degree] #enumFromThen :: Degree -> Degree -> [Degree] #enumFromTo :: Degree -> Degree -> [Degree] #enumFromThenTo :: Degree -> Degree -> Degree -> [Degree] # # Methods(==) :: Degree -> Degree -> Bool #(/=) :: Degree -> Degree -> Bool # # Methods(<) :: Degree -> Degree -> Bool #(<=) :: Degree -> Degree -> Bool #(>) :: Degree -> Degree -> Bool #(>=) :: Degree -> Degree -> Bool #max :: Degree -> Degree -> Degree #min :: Degree -> Degree -> Degree # # MethodsshowsPrec :: Int -> Degree -> ShowS #showList :: [Degree] -> ShowS # # 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

 # Methods # MethodsshowList :: [Position] -> ShowS #

# damping

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

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 sufficiently far, or the opposite hand if it is not too busy.

Possibly create a damped note at the end of the given note.

True for events which could get an inferred damp.

data Hand Source #

Constructors

 L R

Instances

 # Methods(==) :: Hand -> Hand -> Bool #(/=) :: Hand -> Hand -> Bool # # MethodsshowsPrec :: Int -> Hand -> ShowS #show :: Hand -> String #showList :: [Hand] -> ShowS # # MethodsformatList :: [Hand] -> Doc Source #

zip_next :: [a] -> [(a, [a])] Source #

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

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