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

Safe HaskellNone




Vienna Symphonic Library.




find_attrs :: InstTypes.Name -> String -> [Text] Source #

For interactive use, find keyswitches with the given attributes.

write_matrices :: IO () Source #

Write matrices to a file for visual reference.

map_shape :: ([a] -> [b]) -> [[a]] -> [[b]] Source #

Transform elements but retain the matrix's shape.

instrument definition

note_calls :: Maybe HarmonicMap -> Patch.Patch -> [MidiInst.Call Note] Source #

Add various note calls, depending on the attributes that the patch understands.

harmonic :: Note.Config -> HarmonicMap -> Note.GenerateNote Source #

If +harm+nat (and optionally a string) attributes are present, try to play this pitch as a natural harmonic. That means replacing the pitch and reapplying the default note call.


attribute_priority :: Map Attrs.Attributes Int Source #

Order attributes by priority. This should correspond to specificity, or to perceptual importance, as documented in Patch.AttributeMap.

matrix :: VslInst.Keys -> [[Attrs.Attributes]] -> [Keyswitch] Source #

Since the VSL matrix is only 12x12, a row of articulations greater than that overflows to the next row. Given that I'm definitely going to overflow 12 rows, I wind up overflowing to the next matrix, and when counting tha AB switch, each articulation has 3 or 4 keyswitches.

I could probably cram most instruments into 144 cells and only require 2-3 keyswitches, but it would be hard to read and easy to mess up, wouldn't let me disable and enable cells by row, and with custom patches I'll probably wind up with more than 144 anyway.


strip_attrs :: [Attrs.Attributes] -> [Attrs.Attributes] Source #

Remove attrs which can be assumed as a default. The idea is to make it easier to address an articulation while still remaining non-ambiguous.

Attrs are removed in order unless removal would create a conflict with another articulation. The result is that the attrs early in the strip list are removed first, so if you have both VslInst.med and Attrs.short, VslInst.med will become the default, while Attrs.short retains its attribute.

strip_attr :: Attrs.Attributes -> (Set Attrs.Attributes, [Attrs.Attributes]) -> (Set Attrs.Attributes, [Attrs.Attributes]) Source #

Strip the given attr, but only if it wouldn't cause clashes.

natural harmonics

data HarmonicMap Source #




infer seconds