Takafumi Horiuchi

Um metrônomo que pulsa

Visão geral

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

Tela do metrônomo. Um círculo branco fica no centro de um fundo preto, com quatro pontos de batida acima e 120 BPM e botões −/+ abaixo. O círculo se expande e volta ao tamanho de repouso a cada batida.
Esta tela interativa usa as mesmas equações do app e funciona a 120 BPM, com quatro tempos por compasso. Toque no círculo para parar.

Criei o app para minha própria prática de saxofone tenor. Basta abrir e iniciar; a batida permanece visível mesmo quando é difícil ouvir os cliques. Fiz pessoalmente o planejamento, o design, a implementação em SwiftUI e a síntese dos cliques.

Controles: toque no que deseja mudar

Os controles são pontos de batida, um círculo e um valor de andamento. Não há menus nem instruções escritas: toque no que deseja mudar.

O app parado. Um círculo cinza-claro com um triângulo de reprodução no centro, quatro pontos de batida acima, 120 BPM e botões −/+ abaixo e um pequeno ícone de informações no canto superior esquerdo.
ⓘ
Abre a página de suporte.
Pontos de batida
Toque para acrescentar um tempo, entre um e sete tempos por compasso. Deslize para acrescentar ou remover tempos.
Círculo
Toque para iniciar ou parar. Mantenha pressionado e depois bata no ritmo de uma música para definir o andamento.
Andamento
Arraste para aumentar ou diminuir o andamento. Mova devagar para ajustes mais precisos. Toque em − ou + para alterar em 1 BPM.
O app parado. O texto se limita a números e “BPM”.

Pulsação: acompanhar o instante e a intensidade de cada clique

O instante da pulsação do círculo é ajustado para coincidir com o clique usando a latência de saída informada pelo iOS. Fones Bluetooth podem introduzir um atraso de aproximadamente 0,1 a 0,3 segundo. A expansão é proporcional ao volume do clique: o primeiro tempo tem um clique mais agudo e mais forte, com uma pulsação visivelmente maior.

Gráfico dos cliques e do tamanho do círculo ao longo de um compasso de quatro tempos. O círculo se expande a cada clique, alcançando 1,25 vez seu tamanho de repouso no tempo 1 e 1,15 vez nos tempos 2 a 4, depois encolhe brevemente além do tamanho de repouso antes de se estabilizar.
Cliques (áreas preenchidas) e tamanho do círculo (linha) ao longo de um compasso a 120 BPM, com quatro tempos por compasso. O círculo atinge o tamanho máximo 0,02 segundo após o início do clique e, em seguida, encolhe um pouco além do tamanho de repouso antes de se estabilizar, como gelatina.

A thread de áudio programa cada batida com precisão de amostra. O cálculo de tempo evita o acúmulo de erros, mantendo o desvio dentro de 0,5 amostra mesmo após uma hora de reprodução contínua.

O alcance e as condições de cálculo por trás do valor de 0,5 amostra ainda precisam ser confirmados. Ele não deve ser interpretado como uma medida do instante em que o som chega ao ouvinte nem da sincronização com a tela.

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

Mantenha o círculo pressionado para fazê-lo oscilar como gelatina. Toque no ritmo de uma música ou do andamento que imagina: o círculo afunda no ponto tocado, oscila e retorna. A resposta tátil permite sentir o andamento.

Seis quadros mostram o contorno do círculo após um único toque na borda superior. O topo afunda em 0,03 segundo, começa a voltar em 0,08, se deforma levemente na vertical e na horizontal em 0,17 e 0,3 e volta a ser circular em 1,3 segundo.
Contorno do círculo após um único toque na borda superior, desenhado com as mesmas equações do app. O contorno pontilhado é um círculo perfeito.
Versão de desenvolvimento do app. O círculo está cinza no modo de andamento por toques. Abaixo, um painel em japonês de “Ajuste da gelatina” tem controles deslizantes e explicações, incluindo “Elasticidade (velocidade de oscilação): 3,6 ciclos por segundo” e “Viscosidade (amortecimento das oscilações): 0,10”.
Ajustei a oscilação com um painel disponível apenas na versão de desenvolvimento. Alterei dez parâmetros, incluindo elasticidade e viscosidade, por meio de controles deslizantes, enquanto tocava no círculo para sentir os resultados. Comparei predefinições chamadas “pudim”, “warabi mochi” e “mais líquido” e escolhi “gelatina” como padrão: uma oscilação viva que se estabiliza em cerca de 0,9 segundo.

O app fica deliberadamente em silêncio enquanto você marca o ritmo. Reproduzir um som em resposta a cada toque introduziria um atraso audível via Bluetooth e se sobreporia aos cliques do metrônomo. Quando você para de tocar, os cliques no andamento definido começam quase inaudíveis e aumentam gradualmente até o volume habitual ao longo de seis segundos.

Após cinco toques, os pontos que representam a vibração diminuem gradualmente enquanto as barras dos cliques crescem a partir de um nível quase inaudível ao longo de seis segundos.
Cinco toques a 120 BPM, seguidos de uma pausa. De baixo para cima: toques, vibração (marcas menores significam vibração mais fraca) e cliques (marcas mais altas significam cliques mais fortes). O volume aumenta a uma taxa constante em decibéis, evitando um salto brusco a partir de um som fraco.

Som: escolher uma altura que eu consiga distinguir em meio ao som do saxofone

Os cliques são sintetizados a partir de ondas senoidais, sem arquivos de áudio gravado. Criei uma página de comparação e comparei os sons pelo alto-falante do iPhone três vezes enquanto tocava saxofone tenor. Escolhi 1875 Hz e 1250 Hz, 1,25 vez as frequências originais. Elas ficam acima da faixa em que a energia do saxofone é mais forte e abaixo da faixa que tende a soar estridente.

Eixo de frequências de 100 Hz a 10 kHz. A energia do saxofone tenor se concentra na parte inferior; a faixa que tende a soar estridente vai de 2,5 a 4 kHz. Os cliques de 1250 Hz e 1875 Hz ficam entre as duas faixas, com as frequências originais de 1000 Hz e 1500 Hz indicadas por linhas pontilhadas.
A faixa sombreada mostra onde se concentra a energia do saxofone tenor, diminuindo para a direita. A faixa hachurada marca a região de 2,5 a 4 kHz, que tende a soar estridente. As linhas pontilhadas mostram as frequências originais (1000 e 1500 Hz); as contínuas, as frequências escolhidas. A altura da linha representa o volume.

Sons mais agudos e mais longos e versões com harmônicos adicionais eram mais fáceis de ouvir. Ainda assim, escolhi sons que preservavam um timbre eletrônico suave e neutro.

Manter a simplicidade: o que deixei de fora

Deixei de fora opções que fariam as pessoas hesitar. Antes de remover cada função, verifiquei se o app poderia funcionar sem ela.

Anúncios, rastreamento e contas
Descartei esses recursos desde o início. O app não inicia requisições de rede.
Tela de configurações
Tudo se resolve em uma única tela.
Escolha de timbres
Dois sons bastam: um para tempos acentuados e outro para tempos não acentuados. Mais opções podem gerar indecisão.
Controle deslizante de volume
Os botões de volume do aparelho bastam.
Modo claro
Uma única tela com fundo preto.
Oito ou mais tempos por compasso
Conte 12/8 em quatro tempos e 9/8 em três.
Subdivisões (colcheias, tercinas, semicolcheias)
Não são essenciais à função principal do app, mas seriam o primeiro recurso que eu consideraria acrescentar.
Digitar o andamento
Os botões −/+ e o gesto de arrastar bastam.

Construído em SwiftUI sem bibliotecas externas, o app funciona em iPhones com iOS 17 ou posterior. Seu nome em inglês é No Ads Simplest Metronome. As instruções completas e a política de privacidade estão na página de suporte (em inglês).