Karya, built on 2023-08-29T07:47:28 (patch 7a412d5d6ba4968ca4155ef276a062ccdeb9109a)
Safe HaskellSafe-Inferred

User.Elaforge.Instrument.Vsl

Description

Vienna Symphonic Library.

Synopsis

Documentation

util

find_attrs :: InstT.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 :: Patch.AttributeMap -> 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.

keyswitches

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.

attrs

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 #

Constructors

HarmonicMap 

Fields

Instances

Instances details
Show HarmonicMap Source # 
Instance details

Defined in User.Elaforge.Instrument.Vsl

infer seconds