Takafumi Horiuchi

Um metrônomo que pulsa

Visão geral

O círculo no centro da tela pulsa no mesmo instante e com a mesma intensidade de cada clique. Criei um metrônomo para iPhone sem anúncios, contas ou tela de configurações.

Tela do metrônomo. Um círculo branco no centro de uma tela preta, quatro pontos de batida acima e 120 BPM com −/+ abaixo. O círculo aumenta e volta ao tamanho original a cada batida.
Esta tela funciona dentro da página com as mesmas equações do app (120 BPM, quatro tempos por compasso). Toque no círculo para parar.

Fiz o app para usar nos meus estudos de saxofone tenor. Basta abrir e começar; a batida continua visível mesmo quando é difícil ouvir o som. Fiz tudo sozinho, da concepção e do design à implementação em SwiftUI e à síntese dos cliques.

Controles — tocar no que se quer mudar

A tela contém apenas pontos de batida, um círculo e o número do andamento. Sem menus ou instruções: basta tocar diretamente no que se quer mudar.

Tela parada. Um círculo cinza-claro com um triângulo de reprodução no centro, quatro pontos acima, 120 BPM e −/+ abaixo e um pequeno ⓘ no canto superior esquerdo.
ⓘ
Abre a página de suporte.
Pontos
Toque para acrescentar uma batida (1–7). Deslize para aumentar ou diminuir a quantidade.
Círculo
Toque para iniciar ou parar. Mantenha pressionado e depois bata no ritmo de uma música para definir o andamento.
Números
Arraste para acelerar ou desacelerar. Movimentos lentos permitem ajustes finos. −/+ altera de um em um.
A tela parada. O único texto são os números e “BPM”.

Pulsação — o mesmo instante, a mesma intensidade

O círculo aumenta quando o som chega aos ouvidos, e não quando é emitido. O atraso de cerca de 0.1–0.3 segundo dos fones Bluetooth é compensado pela latência de saída informada pelo iOS. A expansão é proporcional ao volume do clique: a primeira batida tem um som mais agudo e forte e uma expansão visivelmente maior.

Gráfico dos cliques e do tamanho do círculo em um compasso de quatro tempos. A curva sobe imediatamente a cada clique, chegando a 1.25 vez o tamanho de repouso no primeiro tempo e 1.15 nos tempos 2–4; depois cai um pouco abaixo de 1 e se estabiliza.
Cliques (áreas preenchidas) e tamanho do círculo (linha) em um compasso a 120 BPM, com quatro tempos. O círculo atinge o máximo 0.02 segundo após o som, contrai um pouco além do necessário, como gelatina, e para.

A thread de áudio determina o instante de cada batida com precisão de amostra. O cálculo evita acumular erros: mesmo após uma hora de reprodução contínua, o desvio fica dentro de 0.5 amostra.

Andamento por toques — silêncio enquanto você marca o ritmo

Mantenha o círculo pressionado e ele começa a tremer como gelatina. Bata no ritmo de uma música ou do andamento que está imaginando: o círculo afunda no ponto tocado, oscila e volta. A vibração devolve o andamento a você.

Seis quadros do contorno após um toque na borda superior. Ela afunda em 0.03 segundo, começa a voltar em 0.08, deforma levemente na vertical e na horizontal em 0.17 e 0.3 e volta a ser circular em 1.3 segundo.
O contorno após um toque na borda superior, desenhado com as mesmas equações do app. O pontilhado é um círculo perfeito.
Versão de desenvolvimento. O círculo está cinza no modo de andamento por toques. Abaixo, um painel em japonês de “Ajuste da gelatina” mostra controles e explicações, como “Elasticidade (velocidade de oscilação): 3.6 ciclos/segundo” e “Viscosidade (amortecimento): 0.10”.
Ajustei a oscilação com um painel exclusivo da versão de desenvolvimento. Alterava dez valores, incluindo elasticidade e viscosidade, com controles deslizantes, enquanto tocava o círculo para conferir a sensação. Comparei “pudim”, “warabi mochi” e “mais líquido” e escolhi “gelatina” como padrão: um retorno vivo que se acalma em cerca de 0.9 segundo.

O silêncio durante os toques é intencional. Uma resposta sonora imediata chegaria atrasada pelo Bluetooth e se sobreporia aos cliques do metrônomo. Ao parar de tocar, os cliques naquele andamento começam quase inaudíveis e atingem o volume normal ao longo de seis segundos.

Após cinco toques, os pontos de vibração diminuem gradualmente, enquanto as barras dos cliques crescem a partir de um nível quase inaudível durante seis segundos.
Cinco toques a 120 BPM, seguidos de uma pausa. De baixo para cima: toques, vibração (menor significa mais fraca) e cliques (mais alto significa mais forte). O volume sobe uniformemente em decibéis, evitando um salto repentino a partir de um som fraco.

Som — escolher de ouvido uma altura que se destaque do saxofone

Os cliques são sintetizados a partir de ondas senoidais, sem arquivos de áudio. Criei uma página de comparação e fiz três comparações de escuta no alto-falante do iPhone enquanto tocava saxofone tenor. Escolhi 1875 Hz e 1250 Hz, 1.25 vez as frequências originais: acima da faixa mais forte do saxofone e abaixo da faixa que tende a soar estridente.

Eixo de frequências de 100 Hz a 10 kHz. A faixa do saxofone tenor ocupa a região baixa; a faixa estridente fica em 2.5–4 kHz. Os cliques de 1250 Hz e 1875 Hz estão entre elas; os sons originais de 1000 Hz e 1500 Hz aparecem em linhas pontilhadas.
A faixa sombreada indica onde se concentra a energia do saxofone tenor (mais fraca à direita); as hachuras indicam os 2.5–4 kHz estridentes. As linhas pontilhadas são os sons originais (1000/1500 Hz); as contínuas, os escolhidos. A altura representa o volume.

Sons mais agudos e longos ou com harmônicos adicionais eram mais fáceis de ouvir. Ainda assim, escolhi dentro da faixa que preservava um caráter eletrônico suave e neutro.

Subtrair — o que deixei de fora

Nada que cause indecisão. Verifiquei, item a item, se o app funcionava sem aquilo e retirei.

Anúncios, rastreamento e contas
Decidido desde o início. O app não inicia comunicações de rede por conta própria.
Tela de configurações
Tudo se resolve em uma única tela.
Escolha de timbres
Dois sons bastam, para batidas acentuadas e não acentuadas. Opções geram indecisão.
Controle deslizante de volume
Os botões de volume do aparelho bastam.
Modo claro
Apenas uma tela preta.
Oito tempos ou mais
Conte 12/8 em quatro tempos e 9/8 em três.
Subdivisões (colcheias, tercinas, semicolcheias)
Não são essenciais. Ficam como a primeira opção para uma futura adição.
Digitar o andamento
−/+ e arrastar bastam.

Implementado em SwiftUI, sem bibliotecas externas. Funciona no iPhone com iOS 17 ou posterior. O nome em inglês é No Ads Simplest Metronome. Estou preparando o lançamento na App Store (setembro de 2026). As instruções completas e a política de privacidade estão na página de suporte (em inglês).