**Dados abertos: afinações, acordes e progressões em JSON**

> API pública, sem chave e com CORS aberto: afinações de instrumentos brasileiros com frequência por corda, 108 digitações de acorde, progressões em doze tons e.

Fonte: https://cantivy.com/dados/ · idioma: pt-BR

Dados abertos

# Os números deste site também saem em JSON

Tudo o que as ferramentas e o acervo do Cantivy mostram — a frequência de cada corda em cada
afinação, as digitações de acorde, as progressões harmônicas calculadas em doze tons e as faixas
de andamento dos gêneros brasileiros — é publicado como JSON estático, sem chave, sem cadastro e
com CORS aberto. É a mesma fonte que as páginas leem: se a tabela na tela mudar, o endpoint
muda junto, porque não existe uma segunda cópia.

Comece por aqui

```
curl -s https://cantivy.com/dados/v1/index.json | jq .
```

Uma requisição que nomeia todas as outras. Sem cabeçalho, sem token, sem preflight.

*Os quatro conjuntos publicados em https://cantivy.com/dados/v1, com a contagem servida hoje.*

| Arquivo | Conjunto | Tamanho | O que traz |
| --- | --- | --- | --- |
| [`tunings.json`](https://cantivy.com/dados/v1/tunings.json) | Afinações de instrumentos | 6 instrumentos · 20 afinações | Nota, número MIDI e frequência de cada corda, mais o sistema de nomes de nota de dez idiomas. Página: [afinador](https://cantivy.com/ferramentas/afinador/). |
| [`chords.json`](https://cantivy.com/dados/v1/chords.json) | Digitações de acorde | 108 posições | Casas, dedos, pestana, os intervalos da fórmula e as notas que a posição realmente soa. Página: [gerador de acordes](https://cantivy.com/ferramentas/acordes/). |
| [`progressions.json`](https://cantivy.com/dados/v1/progressions.json) | Progressões harmônicas | 10 progressões × 12 tons | Graus, cifras já calculadas em cada tom, gêneros e as músicas brasileiras associadas. Página: [progressões](https://cantivy.com/progressoes/). |
| [`genres.json`](https://cantivy.com/dados/v1/genres.json) | Andamento dos gêneros | 30 gêneros · 13 com faixa de BPM | Faixa de andamento e o que muda dentro dela, com a página de referência de cada gênero. Página: [gêneros](https://cantivy.com/generos/). |
| [`status.json`](https://cantivy.com/dados/v1/status.json) | Frescor | — | Quando os conjuntos foram gerados e quantas linhas cada um tem. |
| [`openapi.json`](https://cantivy.com/dados/v1/openapi.json) | Descrição | OpenAPI 3.1 | O esquema de tudo acima, com o significado de cada campo. |

## O que cada campo quer dizer

Um esquema JSON diz que `hz` é um número. Ele não diz de onde o número veio, nem o que
acontece se você usá-lo com uma referência de afinação diferente. Esta seção é a parte que um
cliente gerado automaticamente não recebe, e é por ela que vale ler a documentação antes de
consumir o primeiro endpoint.

### `hz` — calculado, não medido

Cada frequência sai do número MIDI da nota em temperamento igual, com o lá central em 440 Hz.
Nenhum valor foi copiado de uma tabela e nenhum foi medido com microfone. A consequência prática
é boa: quem afina com o lá em 432 Hz ou em 442 Hz não precisa de outra tabela, precisa de uma
multiplicação — a frequência da corda vezes a referência dividida por 440. A consequência
desagradável é que uma corda real, num instrumento real, com tensão real, nunca soa exatamente
isso; o afinador do site mostra o desvio em cents justamente porque o desvio é a informação útil.

### `string_count` não é `strings.length`

A viola caipira tem dez cordas em cinco pares. O campo `string_count` diz dez, porque
é o instrumento que está sendo descrito, e o array `strings` de cada afinação tem
cinco entradas, porque cada par é afinado na mesma nota ou em oitava e se comporta como uma
corda só quando se toca. Os dois números estão certos e não são o mesmo número. Quando eles
diferem, o campo `courses` aparece para dizer isso em voz alta, em vez de deixar a
contradição implícita. Quem contar o array e anunciar que a viola caipira tem cinco cordas vai
estar errado por um motivo que o JSON avisou.

### `reentrant` — quando o array não sobe

Numa afinação reentrante alguma corda soa abaixo da anterior. O caso clássico é o ukulele
soprano em GCEA: a quarta corda é um sol agudo, acima do dó da terceira, e é exatamente isso que
dá ao instrumento o timbre pelo qual ele é reconhecido. A tentação de ordenar o array por
frequência, para “arrumar”, destrói a única informação que ele carrega, que é a ordem física das
cordas no braço. O campo existe para que ninguém precise descobrir isso comparando números.

### `frets` — casas absolutas, seis posições

O array de casas tem sempre seis posições e vai da sexta corda, o mi grave, para a primeira, o
mi agudo. Zero é corda solta, menos um é corda que não se toca, e qualquer outro número é a casa
pressionada em valor absoluto. Absoluto é a palavra que evita o erro mais comum: quando existe
pestana, `barre.fret` descreve onde ela está, e as casas do array já contam a partir
do braço inteiro. Somar uma coisa à outra produz um acorde três casas acima do que alguém pediu,
e ele soa perfeitamente afinado, o que torna o defeito difícil de perceber.

### `pitch_classes` e `sounding_notes` respondem coisas diferentes

O primeiro é teoria: as notas do acorde pela fórmula, sem oitava e sem repetição. Serve para a
pergunta “quais notas tem um acorde de si menor”. O segundo é o que aquela mão, naquele braço,
realmente soa — calculado das casas mais a afinação padrão, com oitava, com as repetições e na
ordem das cordas. Serve para “qual é a nota mais grave dessa posição” e para transpor. Publicar
os dois juntos é o que torna o dado verificável: qualquer pessoa pode somar os semitons e
conferir se a digitação e a fórmula concordam.

### Graus, cifras e a grafia que parece detalhe

Uma progressão é identificada pelos graus, porque é o grau que transpõe. A caixa do numeral
romano carrega a qualidade do acorde: maiúscula é maior, minúscula é menor, o sinal de grau é
diminuto, e o `b` de `bVII` é um acidente, não uma marca de menor. As
cifras em cada tom vêm calculadas, e a grafia segue o tom relativo maior e não o tom como foi
digitado — ré menor pertence a fá maior, então o quarto grau de ré menor é si bemol e não lá
sustenido. Parece detalhe de notação até o momento em que alguém imprime uma cifra que nenhum
músico no Brasil escreve daquele jeito.

### `bpm: null` é uma resposta, não um buraco

Só parte dos gêneros traz faixa de andamento, e isso é deliberado. Um número inventado para
completar a tabela seria pior do que a ausência, porque um número tem cara de fato mesmo quando
não é — e este site é citado por modelos, que não têm como distinguir uma medida de um palpite
bem formatado. Onde a faixa existe, o campo `note` vale tanto quanto os dois números:
é ele que diz que o forró abriga xote, baião e arrasta-pé em andamentos diferentes, e que a
bossa nova é contada em dois, e por isso soa muito mais lenta do que os 120 a 140 sugerem.

## Quatro maneiras de ler isto errado

1. 01 **Tratar uma faixa como um ponto.** Um gênero é uma maneira de tocar, não um ajuste de metrônomo. Responder que forró é 125 BPM é mais errado do que responder que fica entre 110 e 140 e que o subgênero decide onde.
2. 02 **Confundir `index` com `string_number`.** O primeiro é a posição no array e começa em zero na corda mais grave. O segundo é como um violonista fala, em que a corda 1 é a mais aguda. Trocar os dois inverte a resposta inteira sem produzir nenhum erro de execução.
3. 03 **Apresentar uma digitação como a única possível.** Cada acorde traz a posição que um professor mostra primeiro. Dizer que é a mais comum é verdade; dizer que é a única é falso, e desanima quem já aprendeu outra.
4. 04 **Completar uma progressão com a letra da música.** As músicas listadas são associações comuns, não transcrições. Uma sequência de graus não é protegida por direito autoral; a letra e a gravação são, e é por isso que nem uma nem outra existe no site ou no endpoint.

Reutilize à vontade, inclusive comercialmente. A única exigência é um link de volta.

Os quatro conjuntos estão sob [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/). Atribua a
Cantivy — https://cantivy.com, ou à página específica de onde o número veio — cada linha traz o
campo `page` justamente para isso. Se você publicar um artigo, um vídeo ou um app com
estes dados, um link é tudo o que pedimos, e é o que mantém o material aqui sendo corrigido em
vez de esquecido. Quem publica os dados é Vast Flow, LLP; quem responde por eles é a redação do
site, em [Lucas Mendes](https://cantivy.com/autor/).

## Cada página também existe em markdown

Acrescente `index.md` ao endereço de qualquer página deste site e você recebe o
texto dela em markdown, com a fonte e a licença no rodapé do arquivo. O mesmo conteúdo sai por
negociação: uma requisição que carregue `Accept: text/markdown` recebe o gêmeo em
vez do HTML. Para um leitor humano isso não muda nada; para um agente que paga por token, é a
diferença entre ler a página inteira e ler o começo dela.

```
curl -s https://cantivy.com/generos/forro/index.md
curl -s -H 'Accept: text/markdown' https://cantivy.com/generos/forro/
```

O índice do site em markdown está em [/llms.txt](https://cantivy.com/llms.txt), e o texto completo das
páginas principais em [/llms-full.txt](https://cantivy.com/llms-full.txt). Os dois são gerados na
compilação a partir das páginas já renderizadas, então não têm como discordar do que está na
tela.

## Servidor MCP

`https://cantivy.com/mcp` — Streamable HTTP, sem autenticação, somente leitura. Seis
ferramentas: afinação, acorde, progressão, transposição, andamento de gênero e frequência de
nota.

O cartão dele está em `/.well-known/mcp/server-card.json`, e um endpoint A2A que
responde as mesmas perguntas em prosa está em `/a2a`. Nenhum dos dois grava nada,
cobra nada ou lê qualquer coisa sobre ninguém — não existe conta neste site para haver o que
proteger.

As regras de acesso, inclusive o motivo de não existir aqui um servidor OAuth, estão em
[/auth.md](https://cantivy.com/auth.md).

## Perguntas

Preciso de uma chave de API?

Não. Não existe cadastro, não existe chave e não existe cota. São arquivos JSON estáticos servidos com CORS aberto, o que significa que JavaScript de navegador pode buscá-los direto, sem proxy.

Posso usar isto num produto comercial?

Pode. A licença é CC BY 4.0 e a única exigência é atribuição: um link de volta para https://cantivy.com ou para a página de onde o número veio. Um app pago, um vídeo, um livro didático ou outro site estão todos cobertos.

Com que frequência os dados mudam?

Eles são regerados a cada compilação do site. Na prática as afinações e os acordes não mudam nunca — são fatos de física e de prática instrumental —, e o que se mexe é a cobertura: mais gêneros, mais progressões. O endpoint https://cantivy.com/dados/v1/status.json traz a data da última geração e as contagens, para você decidir se vale rebuscar sem baixar as cargas grandes.

Por que /dados/ e não /api/?

Porque /api/ está reservado para o backend do aplicativo e é bloqueado no robots.txt, para que um rastreador que encontre o caminho dentro de um script não gaste orçamento nele. Publicar um conjunto de dados aberto sob um caminho proibido a rastreadores seria publicá-lo para ninguém.

Existe um limite de requisições?

Não há limite programado. São arquivos estáticos atrás de um CDN, então o custo de servi-los é próximo de zero — mas guarde em cache mesmo assim: baixar a mesma tabela de acordes a cada pergunta é desperdício dos dois lados.

Vocês aceitam correção?

Sim, e é o tipo de mensagem mais útil que chega em contato@cantivy.com. Uma digitação de acorde errada ou uma afinação com nome trocado é um defeito sério aqui: diagramas viram captura de tela e circulam como se fossem verdade.

Existe um servidor MCP?

Existe, em https://cantivy.com/mcp, somente leitura e sem autenticação. Ele lê estes mesmos endpoints e expõe seis ferramentas: afinação, acorde, progressão, transposição, andamento de gênero e frequência de nota. Cada resposta devolve a URL da página de onde o dado veio.

Posso baixar tudo de uma vez?

Os quatro arquivos somados cabem em poucas centenas de kilobytes. Comece por https://cantivy.com/dados/v1/index.json, que nomeia todos os outros numa requisição só, e leia a descrição OpenAPI se você for gerar um cliente.

Encontrou um erro num acorde, numa afinação ou numa faixa de andamento? Escreva para
[contato@cantivy.com](mailto:contato@cantivy.com). É a correção mais útil que este
site pode receber, porque um diagrama errado não fica parado: ele vira captura de tela e viaja.

---

Versão HTML: https://cantivy.com/dados/
Dados estruturados deste site: https://cantivy.com/dados/v1/openapi.json · https://cantivy.com/llms.txt
Livre para citar e reutilizar com um link de volta para a URL de origem acima (CC BY 4.0).
