Pular para conteúdo

2.7 Tons e Escalas🔗

Mudando o Tom🔗

Para alterar a raiz (ou tonalidade) da música no FoxDot, basta alterar o valor da variável Root.default:

Root.default = 2

Quando você inicia o FoxDot, ele é automaticamente definido como 0, que é a tonalidade de C. Definir o valor Root.default como um número indica quantos semitons mover a tônica. Então, para criar música na tonalidade de D, você definiria o valor como 2. Esse valor pode ser um número inteiro, um valor de ponto flutuante, um TimeVar ou uma string. Você pode usar uma string para definir explicitamente a tonalidade da seguinte maneira:

Root.default = "D"

Você pode especificar sustenidos e bemóis usando os caracteres # e b, respectivamente:

Root.default = "D#"
Root.default = "Db"

Você pode definir a raiz de um objeto Player explicitamente usando o parâmetro root. Observação: isso não pode ser uma string.

# Forçar o player a tocar na tonalidade de Ré
p1 >> pluck([0, 2, 4], root=2)

# Isso gerará um erro
p1 >> pluck([0, 2, 4], root="D")

Atualizando a Escala🔗

When starting FoxDot the scale is automatically set to the major scale. To view all of the available builtin scales, run the following:

Ao iniciar o FoxDot, a escala é automaticamente definida como a escala maior. Para ver todas as escalas disponíveis, execute o seguinte:

print(Scale.names())

Isso retornará uma lista semelhante a esta:

['aeolian', 'altered', 'bebopDom', 'bebopDorian', 'bebopMaj', 'bebopMelMin',
'blues', 'chinese', 'chromatic', 'custom', 'default', 'diminished', 'dorian', 'dorian2',
'egyptian', 'freq', 'halfDim', 'halfWhole', 'harmonicMajor', 'harmonicMinor',
'hungarianMinor', 'indian', 'justMajor', 'justMinor', 'locrian', 'locrianMajor', 'lydian',
'lydianAug', 'lydianDom', 'lydianMinor', 'major', 'majorPentatonic', 'melMin5th',
'melodicMajor', 'melodicMinor', 'minMaj', 'minor', 'minorPentatonic', 'mixolydian',
'phrygian', 'prometheus', 'romanianMinor', 'susb9', 'wholeHalf', 'wholeTone',
'yu', 'zhi']

Para ver os semitons usados por uma escala em particular, por exemplo, locrian, você pode executar print(Scale.locrian), que retornará um objeto Pattern. Semelhante à configuração da raiz, você pode atualizar a escala alterando o valor de Scale.default. Isso pode ser o nome da escala como uma string, o objeto da escala, por exemplo, Scale.locrian, ou um Pattern de valores de semitons a serem usados.

Scale.default = "minor"
Scale.default = Scale.minor
Scale.default = P[0, 2, 3, 5, 7, 8, 10]

Afinação🔗

Você também pode definir a afinação da escala usando Scale.default.set() e fornecendo um parâmetro de afinação. Os tipos de afinação disponíveis atualmente são os seguintes:

Sintaxe do FoxDot Descrição
Tuning.ET12 12-notas temperamento igual (padrão)
Tuning.just Entonação justa
Tuning.bohlen_pierce Bohlen Pierce Scale

Como mencionado, para usar um tipo de afinação diferente, você precisa usar .set() com a escala padrão:

Scale.default.set("major", tuning=Tuning.just)

Você pode criar seu próprio sistema de afinação fornecendo uma lista de números que dividem a escala de forma que o último número seja igual ao primeiro número uma oitava acima, por exemplo, o sistema de afinação de 12 tons temperados usaria os números [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12].

Scale.default.set(
    [0, 2, 3, 5, 6, 9, 10],
    tuning=[0, 0.9, 2.1, 2.9, 4.1, 4.9, 6.1, 6.9, 8.1, 8.9, 10.1, 10.9, 12]
)