Module lib.musicutil

Music utility module.

Utility methods for working with notes, scales and chords. The norns script reference has examples for this module.

Info:

  • Release: v1.1.2
  • Author: Mark Eats

Functions

generate_scale (root_num, scale_type[, octaves]) Generate scale from a root note.
generate_scale_of_length (root_num, scale_type, length) Generate given number of notes of a scale from a root note.
generate_chord (root_num, chord_type[, inversion]) Generate chord from a root note.
generate_chord_roman (root_num, scale_type, roman_chord_type) Generate a chord using Roman chord notation for a given root note and scale.
generate_chord_scale_degree (root_num, scale_type, degree[, seventh]) Generate a chord from a scale degree, for a given root note and key, using the system of tonal harmony from the European common-practice period.
chord_types_for_note (note_num, key_root, key_type) List chord types for a given root note and key.
snap_note_to_array (note_num, snap_array) Snap a MIDI note number to the nearest note number in an array.
snap_notes_to_array (note_nums_array, snap_array) Snap an array of MIDI note numbers to an array of note numbers.
note_num_to_name (note_num[, include_octave]) Return a MIDI note number's note name.
note_nums_to_names (note_nums_array[, include_octave]) Return an array of MIDI note numbers' names.
note_num_to_freq (note_num) Return a MIDI note number's frequency.
note_nums_to_freqs (note_nums_array) Return an array of MIDI note numbers' frequencies.
freq_to_note_num (freq) Return a frequency's nearest MIDI note number.
freqs_to_note_nums (freqs_array) Return an array of frequencies' nearest MIDI note numbers.
interval_to_ratio (interval) Return the ratio of an interval.
intervals_to_ratios (intervals_array) Return an array of ratios of intervals.
ratio_to_interval (ratio) Return the interval of a ratio.
ratios_to_intervals (ratios_array) Return an array of intervals of ratios.


Functions

generate_scale (root_num, scale_type[, octaves])
Generate scale from a root note.

Parameters:

  • root_num integer MIDI note number (0-127) where scale will begin.
  • scale_type string String defining scale type (eg, "major", "aeolian" or "neapolitan major"), see class for full list.
  • octaves integer Number of octaves to return, defaults to 1. (optional)

Returns:

    {integer...} Array of MIDI note numbers.
generate_scale_of_length (root_num, scale_type, length)
Generate given number of notes of a scale from a root note.

Parameters:

  • root_num integer MIDI note number (0-127) where scale will begin.
  • scale_type integer String defining scale type (eg, "major", "aeolian" or "neapolitan major"), see class for full list.
  • length integer Number of notes to return, defaults to 8.

Returns:

    {integer...} Array of MIDI note numbers.
generate_chord (root_num, chord_type[, inversion])
Generate chord from a root note.

Parameters:

  • root_num integer MIDI note number (0-127) for chord.
  • chord_type string String defining chord type (eg, "major", "minor 7" or "sus4"), see class for full list.
  • inversion integer Number of chord inversion. (optional)

Returns:

    {integer...} Array of MIDI note numbers.
generate_chord_roman (root_num, scale_type, roman_chord_type)
Generate a chord using Roman chord notation for a given root note and scale. This function can return notes that are outside the scale and will not try to resolve ambiguous notation with context.

See chord_types_for_note or generate_chord_scale_degree if you want to constrain chords to in-scale pitches.

See MusicUtil.SCALES for the supported scale types and MusicUtil.CHORDS for the chords that can be returned.

Parameters:

  • root_num integer MIDI note number (0-127) defining the key.
  • scale_type string String defining scale type (eg, "Major", "Dorian".)
  • roman_chord_type string Roman-numeral-style string defining chord type (eg, "V", "iv7" or "III+") including limited bass notes (e.g. "iv6-9") and lowercase-letter inversion notation (e.g. "IIb" for first inversion)

Returns:

    {integer...} Array of MIDI note numbers.
generate_chord_scale_degree (root_num, scale_type, degree[, seventh])
Generate a chord from a scale degree, for a given root note and key, using the system of tonal harmony from the European common-practice period.

See MusicUtil.SCALECHORDDEGREES for the specific chords assigned to each degree.

Parameters:

  • root_num integer MIDI note number (0-127) defining the key.
  • scale_type string String defining scale type. Not all scales are supported; valid values are "Major" (or "Ionian"), "Natural Minor" (or "Minor" or "Aeolian"), "Harmonic Minor", "Melodic Minor", "Dorian", "Phrygian", "Lydian", "Mixolydian", or "Locrian".
  • degree integer Number between 1-7 selecting the degree of the chord.
  • seventh boolean Return the 7th chord if set to true (optional) (optional)

Returns:

    {integer...} Array of MIDI note numbers.
chord_types_for_note (note_num, key_root, key_type)
List chord types for a given root note and key.

Parameters:

  • note_num integer MIDI note number (0-127) for root of chord.
  • key_root integer MIDI note number (0-127) for root of key.
  • key_type string String defining key type (eg, "major", "aeolian" or "neapolitan major"), see class for full list.

Returns:

    {string...} Array of chord type strings that fit the criteria.
snap_note_to_array (note_num, snap_array)
Snap a MIDI note number to the nearest note number in an array.

Parameters:

  • note_num integer MIDI note number input (0-127).
  • snap_array {integer...} Array of MIDI note numbers to snap to, must be in low to high order.

Returns:

    integer Adjusted note number.
snap_notes_to_array (note_nums_array, snap_array)
Snap an array of MIDI note numbers to an array of note numbers.

Parameters:

  • note_nums_array {integer...} Array of input MIDI note numbers.
  • snap_array {integer...} Array of MIDI note numbers to snap to, must be in low to high order.

Returns:

    {integer...} Array of adjusted note numbers.
note_num_to_name (note_num[, include_octave])
Return a MIDI note number's note name.

Parameters:

  • note_num integer MIDI note number (0-127).
  • include_octave boolean Include octave number in return string if set to true. (optional)

Returns:

    string Name string (eg, "C#3").
note_nums_to_names (note_nums_array[, include_octave])
Return an array of MIDI note numbers' names.

Parameters:

  • note_nums_array {integer...} Array of MIDI note numbers.
  • include_octave boolean Include octave number in return strings if set to true. (optional)

Returns:

    {string...} Array of name strings.
note_num_to_freq (note_num)
Return a MIDI note number's frequency.

Parameters:

  • note_num integer MIDI note number (0-127).

Returns:

    float Frequency number in Hz.
note_nums_to_freqs (note_nums_array)
Return an array of MIDI note numbers' frequencies.

Parameters:

  • note_nums_array {integer...} Array of MIDI note numbers.

Returns:

    {float...} Array of frequency numbers in Hz.
freq_to_note_num (freq)
Return a frequency's nearest MIDI note number.

Parameters:

  • freq float Frequency number in Hz.

Returns:

    integer MIDI note number (0-127).
freqs_to_note_nums (freqs_array)
Return an array of frequencies' nearest MIDI note numbers.

Parameters:

  • freqs_array {float...} Array of frequency numbers in Hz.

Returns:

    {integer...} Array of MIDI note numbers.
interval_to_ratio (interval)
Return the ratio of an interval.

Parameters:

  • interval float Interval in semitones.

Returns:

    float Ratio number.
intervals_to_ratios (intervals_array)
Return an array of ratios of intervals.

Parameters:

  • intervals_array {float...} Array of intervals in semitones.

Returns:

    {float...} Array of ratio numbers.
ratio_to_interval (ratio)
Return the interval of a ratio.

Parameters:

  • ratio float Ratio number.

Returns:

    float Interval in semitones.
ratios_to_intervals (ratios_array)
Return an array of intervals of ratios.

Parameters:

  • ratios_array {float...} Array of ratio numbers.

Returns:

    {float...} Array of intervals in semitones.
generated by LDoc 1.5.0 Last updated 2024-10-13 17:45:04