Pular para conteúdo

Acordes

Módulo de acordes.

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

acorde(cifra)

Gera as notas de um acorde a partir de uma cifra

Parameters:

Name Type Description Default
cifra str

Cifra de um acorde

required

Returns:

Type Description
dict[str, list[str]]

Um dicionário com as notas e graus do acorde

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
 67
 68
 69
 70
 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
def acorde(cifra: str) -> dict[str, list[str]]:
    """
    Gera as notas de um acorde a partir de uma cifra

    Parameters:
        cifra: Cifra de um acorde

    Returns:
        Um dicionário com as notas e graus do acorde

    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+']}
    """
    graus = (0, 2, 4)
    if 'm' in cifra:
        notas, graus = _menor(cifra)

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

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

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

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

semiton(nota, intervalo)

Calcula a distancia em semitons entre duas notas usando intervalos.

Parameters:

Name Type Description Default
nota

Nota de referência

required
intervalo

Intervalo em semitons

required

Returns:

Type Description
list[str]

Uma nota correspondente ao intervalo dado

Examples:

>>> semiton('C', intervalo=+1)
'C#'
>>> semiton('C', intervalo=-1)
'B'
Source code in notas_musicais/acordes.py
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
def semiton(nota, intervalo) -> list[str]:
    """
    Calcula a distancia em semitons entre duas notas usando intervalos.

    Parameters:
        nota: Nota de referência
        intervalo: Intervalo em semitons

    Returns:
        Uma nota correspondente ao intervalo dado

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

        >>> semiton('C', intervalo=-1)
        'B'
    """
    pos = NOTAS.index(nota.upper())
    return NOTAS[(pos + intervalo) % len(NOTAS)]

triade(nota, tonalidade)

Gera tríades de uma nota tônica e uma tonalidade.

Parameters:

Name Type Description Default
nota

Uma nota da qual se deseja obter a tríade

required
tonalidade

Uma tonalidade na qual será formado o acorde

required

Returns:

Type Description
list[str]

A tríade do acorde referente a nota e tonalidade

Examples:

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

    Parameters:
        nota: Uma nota da qual se deseja obter a tríade
        tonalidade: Uma tonalidade na qual será formado o acorde

    Returns:
        A tríade do acorde referente a nota e 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]