Takafumi Horiuchi

Un métronome qui bat

Présentation

Le cercle au centre de l’écran bat au même instant et avec la même intensité que chaque clic. J’ai créé un métronome pour iPhone sans publicité, sans compte et sans écran de réglages.

L’écran du métronome. Un cercle blanc au centre d’un écran noir, quatre points au-dessus et 120 BPM avec −/+ en dessous. Le cercle gonfle puis revient à sa taille à chaque temps.
Cet écran s’anime dans la page avec les mêmes équations que l’app (120 BPM, quatre temps par mesure). Touchez le cercle pour l’arrêter.

Je l’ai créé pour mes séances de saxophone ténor. On l’ouvre et on peut démarrer aussitôt ; la pulsation reste visible même quand le son est difficile à entendre. J’ai tout fait seul, de la conception au design, à l’implémentation en SwiftUI et à la synthèse des clics.

Commandes — toucher ce que l’on veut changer

L’écran ne contient que les points des temps, un cercle et la valeur du tempo. Ni menus ni instructions : on touche directement ce que l’on veut changer.

L’écran à l’arrêt. Un cercle gris clair avec un triangle de lecture au centre, quatre points au-dessus, 120 BPM et −/+ en dessous, et un petit ⓘ en haut à gauche.
ⓘ
Ouvre la page d’assistance.
Points
Touchez pour ajouter un temps, de un à sept temps par mesure. Faites glisser pour ajouter ou retirer des temps.
Cercle
Touchez pour démarrer ou arrêter. Maintenez le doigt, puis tapez au rythme d’un morceau pour fixer le tempo.
Tempo
Faites glisser pour augmenter ou diminuer le tempo. Un mouvement lent permet un réglage plus fin. Touchez − ou + pour le modifier de 1 BPM.
L’écran à l’arrêt. Le seul texte est constitué des chiffres et de « BPM ».

Pulsation — au même instant, avec la même intensité

La pulsation du cercle est programmée pour coïncider avec le clic, en utilisant la latence de sortie signalée par iOS. Des écouteurs Bluetooth peuvent introduire un retard d’environ 0,1 à 0,3 seconde. L’amplitude du gonflement est proportionnelle au volume du clic : au premier temps, le son est plus aigu et plus fort, et la pulsation nettement plus ample.

Graphique des clics et de la taille du cercle sur une mesure à quatre temps. La courbe monte immédiatement à chaque clic, atteint 1,25 fois la taille au repos au premier temps et 1,15 aux temps 2–4, puis descend légèrement sous 1 avant de se stabiliser.
Les clics (aplats) et la taille du cercle (courbe) sur une mesure à quatre temps, à 120 BPM. Le cercle atteint sa taille maximale 0,02 seconde après le début du clic, puis se contracte légèrement en dessous de sa taille au repos avant de se stabiliser, comme de la gelée.

Le thread audio programme chaque temps avec une précision à l’échantillon près. Le calcul évite l’accumulation des erreurs et maintient l’écart dans une limite de 0,5 échantillon, même après une heure de lecture continue.

La portée et les conditions de calcul de cette valeur de 0,5 échantillon restent à confirmer. Elle ne doit pas être interprétée comme une mesure du moment où le son parvient à l’auditeur ni de sa synchronisation avec l’affichage.

Tempo par frappes — le silence pendant la saisie

Un appui long fait trembler le cercle comme de la gelée. Tapez au rythme d’un morceau ou du tempo que vous imaginez : le cercle s’enfonce au point touché, oscille et reprend sa forme. La vibration vous restitue le tempo.

Six images du contour après une frappe sur le bord supérieur. Il s’enfonce à 0,03 seconde, commence à revenir à 0,08, se déforme légèrement verticalement et horizontalement à 0,17 et 0,3, puis redevient circulaire à 1,3 seconde.
Le contour après une frappe sur le bord supérieur, tracé avec les mêmes équations que l’app. Le pointillé représente un cercle parfait.
Une version de développement. Le cercle est gris en mode de saisie du tempo. En dessous, un panneau japonais « Réglage de la gelée » affiche des curseurs et leurs explications, dont « Élasticité (vitesse d’oscillation) : 3,6 cycles/seconde » et « Viscosité (amortissement) : 0,10 ».
J’ai réglé l’oscillation avec un panneau réservé à la version de développement. Je modifiais dix valeurs, dont l’élasticité et la viscosité, avec des curseurs, tout en tapant le cercle pour éprouver le résultat. Après comparaison avec « flan », « warabi mochi » et « plus liquide », j’ai retenu « gelée » comme réglage par défaut : un rebond vif qui s’apaise en environ 0,9 seconde.

Le silence pendant les frappes est volontaire. Un retour sonore immédiat arriverait en retard en Bluetooth et se superposerait aux clics du métronome. Quand on cesse de taper, les clics au tempo saisi commencent presque inaudibles et atteignent leur volume habituel en six secondes.

Après cinq frappes, les points représentant la vibration rétrécissent progressivement, tandis que les barres des clics grandissent depuis un niveau presque inaudible pendant six secondes.
Cinq frappes à 120 BPM, puis un arrêt. De bas en haut : frappes, vibration (plus petit signifie plus faible), clics (plus haut signifie plus fort). Le volume augmente régulièrement en décibels pour éviter un saut soudain depuis un son ténu.

Son — choisir à l’oreille une hauteur qui porte au-dessus du saxophone

Les clics sont synthétisés à partir de sinusoïdes, sans fichiers audio. J’ai créé une page de comparaison et effectué trois écoutes comparatives sur le haut-parleur de l’iPhone en jouant du saxophone ténor. J’ai retenu 1875 Hz et 1250 Hz, soit 1,25 fois les fréquences initiales : au-dessus de la zone la plus forte du saxophone et en dessous de celle qui paraît facilement perçante.

Un axe de fréquences de 100 Hz à 10 kHz. Le saxophone ténor occupe le bas du spectre ; la zone perçante se situe à 2,5–4 kHz. Les clics à 1250 Hz et 1875 Hz sont entre les deux. Les fréquences initiales de 1000 Hz et 1500 Hz sont en pointillés.
La bande ombrée indique où se concentre l’énergie du saxophone ténor (plus faible vers la droite) ; les hachures indiquent les 2,5–4 kHz perçants. Les pointillés sont les sons initiaux (1000/1500 Hz), les traits pleins les sons retenus. La hauteur représente le volume.

Des sons plus aigus et plus longs, ou enrichis en harmoniques, étaient plus audibles. J’ai néanmoins retenu des sons qui conservaient un timbre électronique doux et neutre.

Soustraire — ce que j’ai laissé de côté

Rien qui fasse hésiter entre des options. J’ai vérifié pour chaque élément si l’app pouvait fonctionner sans lui, puis je l’ai retiré.

Publicité, suivi et comptes
Décidé dès le départ. L’app n’établit aucune communication réseau de sa propre initiative.
Écran de réglages
Tout se fait sur un seul écran.
Choix de timbres
Deux sons suffisent, pour les temps accentués et non accentués. Les options font hésiter.
Curseur de volume
Les boutons de volume de l’appareil suffisent.
Mode clair
Un seul écran noir.
Huit temps ou plus
Compter le 12/8 en quatre temps et le 9/8 en trois.
Subdivisions (croches, triolets, doubles croches)
Elles ne sont pas indispensables à la fonction principale de l’application, mais ce serait la première fonctionnalité dont j’envisagerais l’ajout.
Saisie numérique du tempo
−/+ et le glissement suffisent.

Réalisée en SwiftUI sans bibliothèques externes, l’application fonctionne sur iPhone avec iOS 17 ou une version ultérieure. Son nom anglais est No Ads Simplest Metronome. Le mode d’emploi complet et la politique de confidentialité figurent sur la page d’assistance (en anglais).