macros

Method summary
ji-pc-ratio (x rational)
Function summary
aux-def-tempered-score-instruments temperament score-parts
aux-def-tempered-score-let-decls score-parts
aux-def-tempered-score-mpe-parts-var-name instr
chord-sequences-to-parts sequence n
Macro summary
def-tempered-score name global-args &rest instruments
deftemperament name vals generators &optional docstring
ji-pc-ratio   (x rational)  [Method]

Transforms the frequency ratio `x' into the interval [1, 2) to represent a corresponding pitch class expressed as a fraction.

chord-sequences-to-parts   sequence n  [Function]

Return `n' monophonic sequences that distribute chords tones in `sequence' across the returned sequences.

aux-def-tempered-score-mpe-parts-var-name   instr  [Function]

Return a variable name (symbol) for the quasi MPE parts for the given instr (symbol).

aux-def-tempered-score-instruments   temperament score-parts  [Function]

[Called at compile time by macro] Generate the instruments body for def-score generated by def-tempered-score, where the instruments are split into multiple instruments on different MIDI channels for quasi MPE playback.

aux-def-tempered-score-let-decls   score-parts  [Function]

[Called at compile time by macro] Generate the variable declarations around the def-score generated by def-tempered-score, which split the instrument parts into multiple parts for the different MIDI channels. The let is needed for efficiency (value reuse).

deftemperament   name vals generators &optional docstring  [Macro]

Define a temperament with the given `vals' and `generators' bound to the `name'. This results in a method of the given name expecting a ratio and returning the temperament pitch in cents. The `vals' and `generators' can also later be accessed with `get-temperament-vals' and `get-temperament-generators'.

Note that `vals' and `generators' are evaluated (so they can be an expression resulting in the actual values), while the name is not.

Arguments:

def-tempered-score   name global-args &rest instruments  [Macro]

The same as the Opusmodus builtin `def-score', but with the added arg `temperament'.

Arguments:

TODO: Allow somehow for temperament to change over time (like arguments such as tempo etc.).

  • temperament (symbol): a temperament defined with deftemperament.

The other arguments are documented for the builtin `def-score'.