Pular para conteúdo

Acordes

Módulo de acordes.

O módulo de acordes conta com funções e ferramentas necessárias para a geração de acordes.

acorde(cifra)

Gera as notas de um acorde partindo de uma cifra.

Parameters:

Name Type Description Default
cifra str

Um acorde em forma de cifra.

required

Returns:

Type Description
dict[str, list[str]]

Um dicionário com as notas e os graus correpondes a escala maior.

Examples:

>>> acorde('C')
{'notas': ['C', 'E', 'G'], 'graus': ['I', 'III', 'V']}
>>> acorde('Cm')
{'notas': ['C', 'D#', 'G'], 'graus': ['I', 'III-', 'V']}
>>> acorde('C°')
{'notas': ['C', 'D#', 'F#'], 'graus': ['I', 'III-', 'V-']}
>>> acorde('C+')
{'notas': ['C', 'E', 'G#'], 'graus': ['I', 'III', 'V+']}
>>> acorde('Cm+')
{'notas': ['C', 'D#', 'G#'], 'graus': ['I', 'III-', 'V+']}
Source code in notas_musicais/acordes.py
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
def acorde(cifra: str) -> dict[str, list[str]]:
    """
    Gera as notas de um acorde partindo de uma cifra.

    Parameters:
        cifra: Um acorde em forma de cifra.

    Returns:
        Um dicionário com as notas e os graus correpondes a escala maior.

    Examples:
        >>> acorde('C')
        {'notas': ['C', 'E', 'G'], 'graus': ['I', 'III', 'V']}

        >>> acorde('Cm')
        {'notas': ['C', 'D#', 'G'], 'graus': ['I', 'III-', 'V']}

        >>> acorde('C°')
        {'notas': ['C', 'D#', 'F#'], 'graus': ['I', 'III-', 'V-']}

        >>> acorde('C+')
        {'notas': ['C', 'E', 'G#'], 'graus': ['I', 'III', 'V+']}

        >>> acorde('Cm+')
        {'notas': ['C', 'D#', 'G#'], 'graus': ['I', 'III-', 'V+']}
    """
    if 'm' in cifra:
        notas, graus = _menor(cifra)

    elif '°' in cifra:
        nota, _ = cifra.split('°')
        tonica, terca, quinta = triade(nota, 'menor')
        notas = [tonica, terca, semitom(quinta, intervalo=-1)]
        graus = ['I', 'III-', 'V-']

    elif '+' in cifra:
        nota, _ = cifra.split('+')
        tonica, terca, quinta = triade(nota, 'maior')
        notas = [tonica, terca, semitom(quinta, intervalo=+1)]
        graus = ['I', 'III', 'V+']

    else:
        notas = triade(cifra, 'maior')
        graus = ['I', 'III', 'V']

    return {'notas': notas, 'graus': graus}

semitom(nota, *, intervalo)

Calcula a distância em semitons para uma outra nota usando intervalos.

Parameters:

Name Type Description Default
nota str

Uma nota qualquer

required
intervalo int

um intervalo em semitons

required

Returns:

Type Description
str

Uma nota correspondente ao intervalo

Examples:

>>> semitom('C', intervalo=+1)
'C#'
>>> semitom('c', intervalo=-1)
'B'
Source code in notas_musicais/acordes.py
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
def semitom(nota: str, *, intervalo: int) -> str:
    """
    Calcula a distância em semitons para uma outra nota usando intervalos.

    Parameters:
        nota: Uma nota qualquer
        intervalo: um intervalo em semitons

    Returns:
        Uma nota correspondente ao intervalo

    Examples:
        >>> semitom('C', intervalo=+1)
        'C#'

        >>> semitom('c', intervalo=-1)
        'B'
    """
    pos = NOTAS.index(nota.upper()) + intervalo

    return NOTAS[pos % 12]

triade(nota, tonalidade)

Gera triades a partir de uma tônica e uma tonalidade.

Parameters:

Name Type Description Default
nota

Uma nota da qual se deseja obter um acorde

required
tonalidade

Tonalidade na qual será formado o acorde

required

Returns:

Type Description
list[str]

A tríade do acorde referente a nota e a tonalidade

Examples:

>>> triade('C', 'maior')
['C', 'E', 'G']
>>> triade('C', 'menor')
['C', 'D#', 'G']
Source code in notas_musicais/acordes.py
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
def triade(nota, tonalidade) -> list[str]:
    """
    Gera triades a partir de uma tônica e uma tonalidade.

    Parameters:
        nota: Uma nota da qual se deseja obter um acorde
        tonalidade: Tonalidade na qual será formado o acorde

    Returns:
        A tríade do acorde referente a nota e a tonalidade

    Examples:
        >>> triade('C', 'maior')
        ['C', 'E', 'G']

        >>> triade('C', 'menor')
        ['C', 'D#', 'G']
    """
    graus = (0, 2, 4)
    notas_da_escala, _ = escala(nota, tonalidade).values()

    return [notas_da_escala[grau] for grau in graus]