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 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.
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.
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.
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.
status.json Frescor Quando os conjuntos foram gerados e quantas linhas cada um tem.
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. 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.

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, e o texto completo das páginas principais em /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.

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. É 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.