Safe Haskell | Safe-Inferred |
---|
Utilities for Balinese scales. Mostly that means dealing with umbang and isep.
They're implemented as a modification of ChromaticScales because a saih pitu or pelog scale requires a key or pathet, which winds up being similar to a simplified chromatic scale.
Synopsis
- make_scale :: Pitch.ScaleId -> ScaleMap -> Scale
- data ScaleMap = ScaleMap {}
- type LarasMap = Map Text Laras
- scale_map :: Config -> TheoryFormat.Format -> Maybe (Pitch.Semi, Pitch.Semi) -> ScaleMap
- data Config = Config {}
- instrument_scale_map :: Config -> Instrument -> ScaleMap
- data Instrument = Instrument {}
- instrument_range :: Instrument -> Scale.Range
- data Laras = Laras {}
- laras_map :: [Laras] -> Map Text Laras
- laras :: Text -> Pitch.Pitch -> ([Pitch.NoteNumber] -> [Pitch.NoteNumber]) -> Doc.Doc -> [(Pitch.NoteNumber, Pitch.NoteNumber)] -> Laras
- laras_offset :: Theory.Layout -> Laras -> Pitch.Semi
- laras_nns :: Laras -> [(Pitch.NoteNumber, Pitch.NoteNumber)]
- balinese :: TheoryFormat.Degrees
- ioeua :: TheoryFormat.Degrees
- digit_octave_relative :: TheoryFormat.Degrees -> Bool -> Theory.Key -> ChromaticScales.Keys -> TheoryFormat.Format
- ioeua_relative :: Bool -> Theory.Key -> ChromaticScales.Keys -> TheoryFormat.Format
- type RelativeOctaves = (Char, Maybe Char, Char)
- arrow_octaves :: RelativeOctaves
- balinese_octaves :: RelativeOctaves
- degrees_doc :: TheoryFormat.Degrees -> Text
- relative_arrow :: TheoryFormat.Degrees -> RelativeOctaves -> Pitch.Octave -> Bool -> Theory.Key -> ChromaticScales.Keys -> TheoryFormat.Format
- ioeua_relative_arrow :: Pitch.Octave -> Bool -> Theory.Key -> ChromaticScales.Keys -> TheoryFormat.Format
- ioeua_absolute :: TheoryFormat.Format
- modify_config :: (TheoryFormat.Config -> TheoryFormat.Config) -> TheoryFormat.RelativeFormat key -> TheoryFormat.RelativeFormat key
- set_relative_octaves :: RelativeOctaves -> Pitch.Octave -> TheoryFormat.Config -> TheoryFormat.Config
- cipher_relative_dotted :: Pitch.Octave -> Theory.Key -> ChromaticScales.Keys -> TheoryFormat.Format
- cipher5 :: TheoryFormat.Degrees
- dotted_octaves :: Pitch.Octave -> TheoryFormat.Config -> TheoryFormat.Config
- data Tuning
- c_ombak :: ScoreT.Control
- semis_to_nn :: Theory.Layout -> LarasMap -> Laras -> ChromaticScales.SemisToNoteNumber
- laras_key :: EnvKey.Key
- get_nn :: Vector.Vector Pitch.NoteNumber -> Pitch.FSemi -> Maybe Pitch.NoteNumber
Documentation
make_scale :: Pitch.ScaleId -> ScaleMap -> Scale Source #
Top level scale constructor.
:: Config | |
-> TheoryFormat.Format | |
-> Maybe (Pitch.Semi, Pitch.Semi) | If not given, use the complete range of the saih. |
-> ScaleMap |
instrument_scale_map :: Config -> Instrument -> ScaleMap Source #
This is a specialized version of scale_map
that uses base octave and
low and high pitches to compute the range.
data Instrument Source #
Describe an instrument-relative scale.
Instances
Show Instrument Source # | |
Defined in Derive.Scale.BaliScales showsPrec :: Int -> Instrument -> ShowS # show :: Instrument -> String # showList :: [Instrument] -> ShowS # | |
Eq Instrument Source # | |
Defined in Derive.Scale.BaliScales (==) :: Instrument -> Instrument -> Bool # (/=) :: Instrument -> Instrument -> Bool # |
Laras
Describe the frequencies in a saih. This doesn't say what the range is,
since that's in the ScaleMap
, and all saihs in one scale should have the
same range.
Laras | |
|
laras :: Text -> Pitch.Pitch -> ([Pitch.NoteNumber] -> [Pitch.NoteNumber]) -> Doc.Doc -> [(Pitch.NoteNumber, Pitch.NoteNumber)] -> Laras Source #
laras_offset :: Theory.Layout -> Laras -> Pitch.Semi Source #
laras_nns :: Laras -> [(Pitch.NoteNumber, Pitch.NoteNumber)] Source #
Format
balinese :: TheoryFormat.Degrees Source #
This can't use backtick symbols because then the combining octave characters don't combine.
digit_octave_relative :: TheoryFormat.Degrees -> Bool -> Theory.Key -> ChromaticScales.Keys -> TheoryFormat.Format Source #
arrow_octaves :: RelativeOctaves Source #
Use ascii-art arrows for octaves.
balinese_octaves :: RelativeOctaves Source #
Use combining marks for octaves.
relative_arrow :: TheoryFormat.Degrees -> RelativeOctaves -> Pitch.Octave -> Bool -> Theory.Key -> ChromaticScales.Keys -> TheoryFormat.Format Source #
ioeua_relative_arrow :: Pitch.Octave -> Bool -> Theory.Key -> ChromaticScales.Keys -> TheoryFormat.Format Source #
modify_config :: (TheoryFormat.Config -> TheoryFormat.Config) -> TheoryFormat.RelativeFormat key -> TheoryFormat.RelativeFormat key Source #
set_relative_octaves :: RelativeOctaves -> Pitch.Octave -> TheoryFormat.Config -> TheoryFormat.Config Source #
cipher_relative_dotted :: Pitch.Octave -> Theory.Key -> ChromaticScales.Keys -> TheoryFormat.Format Source #
tuning
Instances
c_ombak :: ScoreT.Control Source #
If ombak is unset, use the hardcoded tunings. Otherwise, create new umbang and isep tunings based on the given number.
semis_to_nn :: Theory.Layout -> LarasMap -> Laras -> ChromaticScales.SemisToNoteNumber Source #
Convert Pitch.FSemi
to Pitch.NoteNumber
.
laras_key :: EnvKey.Key Source #
VStr: Select saih tuning.