Skip to main content

chorder 0.1.4

Installation

chorder is a chord detection and reharmonize tool for .mid files. You can download chorder using pip:

pip install chorder

To check if chorder is successfully installed, type python in the terminal, and do the following:

>>> from chorder import Chord
>>> Chord()
Chord(root_pc=None, quality=None, bass_pc=None)

Documentation

Chord

The Chord class is the basic building block for the whole chorder package. A Chord instance has four attributes, including:

  • root_pc
    • the pitch class of a chord's root note
    • is an integer ranging from 0 to 11
  • quality, the quality of a chord (the complete list of quality)
    • the quality of a chord
    • is a string
    • the complete list of qualities covered in chorder can be found at Chord.standard_qualities
  • bass_pc
    • the pitch class of a chord's bass note
    • is an integer ranging from 0 to 11
  • scale
    • the scale of the chord
    • is a list of strings representing the note names of each pitch class from 0 to 11
    • if a scale is not specified, a default scale is used, which is in Chord.default_scale

Chord.__init__(self, args=None, scale=None)

Parameters
  • args: None or str or tuple, optional
    • None: implies constructing an empty chord
    • str: a chord symbol, such as 'Bbmaj7'
    • tuple: a tuple consisting of `(root_pc, quality, bass_pc)
  • scale: list, optional
    • specify the scale the chord uses
    • will use Chord.default_scale if left as None

Chord.root(self)

Returns the root note name of a chord based on the chord's scale.

Chord.bass(self)

Returns the bass note name of a chord based on the chord's scale.

Chord.is_complete(self)

Returns if any attributes of a chord is None. This can help filtering empty chords.

Chord.transpose(self, key)

Transposes a chord to C-based relative chord. For example, Chord('Bb7').transpose(3) should return Chord('G7').

Parameters
  • key: int
    • the pitch class of the key
    • ranges from 0 to 11

Chord.simple_text(self)

Returns a chord's root and quality, with an underscore in between. For example, C_M.

Chord.simplify(self)

Returns a new chord which reduces a seventh chord to a triad.

DeChorder

DeChorder is a class that consists of static methods related to chord recognition. To utilize this class, the midi information has to be in the form of miditoolkit objects.

Dechorder.get_bass_pc(notes, start=0, end=1e7)

Returns the pitch class of bass note among the notes between the time range of start and end.

Parameters
  • notes: list
    • the group of notes
    • notes are in the form of miditoolkit.midi.containers.Note
  • start: int
    • the start tick of the notes to be considered
    • set it to notes[0].start for now, as this feature will later be updated
  • end: int
    • the end tick of the notes to be considered
    • set it to notes[-1].end for now, as this feature will later be updated

Dechorder.get_chord_quality(notes, start=0, end=1e7, consider_bass=False)

Returns the chord among the notes between the time range of start and end.

Parameters
  • notes: list
    • the group of notes
    • notes are in the form of miditoolkit.midi.containers.Note
  • start: int
    • the start tick of the notes to be considered
    • set it to notes[0].start for now, as this feature will later be updated
  • end: int
    • the end tick of the notes to be considered
    • set it to notes[-1].end for now, as this feature will later be updated
  • consider_bass: `bool
    • decreases the likelihood of chords with non-chord tones as bass to be chosen as the answer

Dechorder.dechord(midi_obj, scale=None)

Returns a list of chords by beat.

Parameters
  • midi_obj: miditoolkit.midi.parser.MidiFile
    • the midi object to extract chord symbols from
  • scale: list
    • the list of note names for each pitch class
    • must be a list of strings

Schorer

Schorer is a class that consists of static methods related to chord-alignment metrics. To utilize this class, the midi information has to be in the form of miditoolkit objects.

Schorer.get_regional_chord_score(notes, chord, start=0, end=1e7)

Returns the group of notes' alignment score with the chord as a float.

Parameters
  • notes: list
    • the group of notes
    • notes are in the form of miditoolkit.midi.containers.Note
  • chord: chorder.Chord
    • the chord whose alignment with the notes will be tested
  • start: int
    • the start tick of the notes to be considered
    • set it to notes[0].start for now, as this feature will later be updated
  • end: int
    • the end tick of the notes to be considered
    • set it to notes[-1].end for now, as this feature will later be updated

Schorer.get_chord_scores(midi_obj, split_char='_')

Returns a tuple of two elements: the list of chords in the midi object's markers, and the numpy array of alignment scores

Parameters
  • midi_obj: miditoolkit.midi.parser.MidiFile
    • the midi object to evaluate on
  • split_char: str
    • The splitting string in chord marker text. For example, if the markers' text come in the form of A_m7, then split_char is '_'.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

chorder-0.1.4.tar.gz (10.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

chorder-0.1.4-py3-none-any.whl (10.5 kB view details)

Uploaded Python 3

File details

Details for the file chorder-0.1.4.tar.gz.

File metadata

  • Download URL: chorder-0.1.4.tar.gz
  • Upload date:
  • Size: 10.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.8.10

File hashes

Hashes for chorder-0.1.4.tar.gz
Algorithm Hash digest
SHA256 27487c1d9bda8fdc3a63eb2c0254ad6e1ac01010643a9c6a0a25f9771a0bee27
MD5 a62660dbbb02c8836f7ef6a8bb577c83
BLAKE2b-256 23591127f112416043e62b1bb7d18e2b37e38e1d31a2303974f337a4b3d1ce56

See more details on using hashes here.

File details

Details for the file chorder-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: chorder-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 10.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.6.1 pkginfo/1.7.1 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.61.2 CPython/3.8.10

File hashes

Hashes for chorder-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 bc1d458e9c3aa12baf553079e6cbaf7f9ecead4115b4c3ec602b482e4aed5aca
MD5 ba139170b8e37e831b2cb54e28a49847
BLAKE2b-256 c4002936a62b82a97aa647be5f73ab247f8e2addf0262678c078ba1eceb1f092

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.4 This release

2 files

0.1.3

2 files

0.1.2

2 files

0.1.1

2 files

0.1.0

2 files

0.0.6

2 files

0.0.5

2 files

0.0.4

2 files

0.0.3

2 files

0.0.2

2 files

0.0.1

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page