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.
| 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
- 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.
- 02
Confundir
indexcomstring_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. - 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.
- 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.