musical_scales package

Module contents

Retrieve a scale based on a given mode and starting note.

exception musical_scales.MusicException

Bases: Exception

Base exception for the musical_scales module.

class musical_scales.Note(name: Optional[str] = None, semitones_above_middle_c: Optional[int] = None)

Bases: object

A single note in a given octave, e.g. C#3.

Measured as a number of semitones above Middle C:
  • Note(0) # Middle C, i.e. C3

  • Note(2) # D3

property midi

Note name and octave, e.g. C3.

name: str
octave: int
semitones_above_middle_c: int
musical_scales.interval_from_names = {'A': 9, 'A#': 10, 'Ab': 8, 'B': 11, 'B#': 0, 'Bb': 10, 'C': 0, 'C#': 1, 'Cb': 11, 'D': 2, 'D#': 3, 'Db': 1, 'E': 4, 'E#': 5, 'Eb': 3, 'F': 5, 'F#': 6, 'Fb': 4, 'G': 7, 'G#': 8, 'Gb': 6}

Dictionary from note names to number of semitones above C.

musical_scales.names_from_interval = {0: 'C', 1: 'C#', 2: 'D', 3: 'D#', 4: 'E', 5: 'F', 6: 'F#', 7: 'G', 8: 'G#', 9: 'A', 10: 'A#', 11: 'B'}

From an interval give the note name, favouring sharps over flats.

musical_scales.scale(starting_note, mode='ionian', octaves=1)

Return a sequence of Notes starting on the given note in the given mode.

Example

  • scale(“C”) # C major (ionian)

  • scale(Note(4), “harmonic minor”) # E harmonic minor