Takafumi Horiuchi

会搏动的节拍器

概述

屏幕中央的圆与咔哒声在同一瞬间、以相同强度搏动。我制作了一款没有广告、没有账号、没有设置页面的 iPhone 节拍器。

节拍器画面。黑色屏幕中央是白色圆,上方有四个表示节拍的点,下方排列着 120 BPM 和 −/+。圆随每一拍膨胀,再恢复原状。
页面中的画面使用与应用相同的公式运行(120 BPM,每小节4拍)。轻点圆即可停止。

这是为自己练习次中音萨克斯而做的工具。打开就能开始,即使声音不易听清,也能看见节拍。从策划、设计,到 SwiftUI 实现与点击音合成,都由我独立完成。

操作——直接触碰想改变的东西

屏幕上只有节拍的点、圆和速度数字。没有菜单,也没有说明文字;想改变什么,就直接触碰它。

停止时的画面。中央是浅灰色圆,叠着播放三角形。上方有四个点,下方有 120 BPM 和 −/+,左上角有一个小小的 ⓘ。
ⓘ
打开支持页面。
点
轻点增加一拍(1–7拍),也可以滑动增减。
圆
轻点开始或停止。长按后,可跟着歌曲敲击来设定速度。
数字
拖动调快或调慢;慢慢移动可精细调整。−/+每次调整1。
停止时的画面。屏幕上的文字只有数字和“BPM”。

搏动——同一瞬间,相同强度

圆在声音传到耳朵的瞬间膨胀,而不是在声音发出的瞬间。蓝牙耳机会产生约0.1–0.3秒延迟,应用利用 iOS 报告的输出延迟加以补偿。膨胀幅度与点击音的音量成正比:第一拍音调更高、音量更大,圆也明显膨胀得更大。

一小节四拍的点击音与圆的大小曲线。每次点击时,大小曲线立即上升;第一拍达到原来的1.25倍,第2–4拍达到1.15倍,随后略微低于1倍,再恢复。
一小节的点击音(填色)与圆的大小(线条)。120 BPM,每小节4拍。圆在声音出现后0.02秒达到最大,像果冻一样稍微收缩过头,再静止。

每一拍的时刻由音频线程以采样为单位确定。计算方式不会累积误差,即使连续播放一小时,偏差也保持在0.5个采样以内。

敲击测速——敲击时保持安静

长按圆,它就会像果冻一样颤动。跟着歌曲或脑海中的速度敲击,触碰的位置会凹下去,晃动后弹回。速度通过振动反馈给你。

在圆的上缘敲击一次后的六帧轮廓。0.03秒时上缘凹陷,0.08秒开始恢复,0.17秒和0.3秒时纵横略有变形,1.3秒时恢复正圆。
在圆的上缘敲击一次后的轮廓,使用与应用相同的公式绘制。虚线表示正圆。
开发中的应用画面。敲击测速模式下,圆为灰色,下方打开了日文的“果冻调整”面板,列有“弹性(摆动速度)3.6次/秒”“黏性(摆动的收敛方式)0.10”等滑块及说明。
我用仅在开发版本中提供的面板调整晃动方式。一边拖动滑块改变弹性、黏性等10个数值,一边实际敲击圆来确认手感。也对比了“布丁”“蕨饼”和“偏液体”的效果,最终选用回弹明显、约0.9秒平息的“果冻”作为默认值。

敲击时刻意不发声。若敲下去就返回声音,蓝牙会让它延迟传来,并与节拍器的声音重叠。停止敲击后,该速度的点击音从几乎听不见开始,在6秒内升至正常音量。

五次敲击后,表示振动的点逐渐缩小,点击音的竖条则从几乎听不见的高度开始,在6秒内逐渐升高。
以120 BPM敲击5次后停手。从下往上依次是敲击、振动(越小越弱)、点击音(越高越响)。音量按分贝均匀增加,不会从微弱声音突然变响。

声音——用耳朵选出不被萨克斯淹没的音高

点击音由正弦波合成,不使用音频文件。我制作了试听比较页面,一边吹次中音萨克斯,一边通过 iPhone 扬声器进行了3轮比较,最终选择1875 Hz和1250 Hz,即原始频率的1.25倍。它们高于萨克斯能量最集中的频段,又低于容易刺耳的频段。

从100 Hz到10 kHz的频率轴。次中音萨克斯的频段位于低频侧,2.5–4 kHz为容易刺耳的频段。1250 Hz和1875 Hz的点击音位于两者之间,原始的1000 Hz和1500 Hz以虚线标出。
填色区域是次中音萨克斯能量集中的频段(越往右越弱),斜线区域是容易刺耳的2.5–4 kHz。虚线为原始声音(1000/1500 Hz),实线为最终选择。线条高度表示音量。

音调更高、时长更长或增加泛音的候选声音确实更容易听见。即便如此,我仍选择了能保留柔和、中性电子音质感的范围。

做减法——没有加入的东西

不放入让人犹豫的东西。逐一确认少了它是否仍能成立,再将它去掉。

广告、追踪与账号
一开始就确定的事。应用不会主动联网。
设置页面
所有操作在一个屏幕内完成。
音色选择
强拍、弱拍两种声音就够了。选项会带来犹豫。
音量滑块
设备本身的音量键已经足够。
浅色模式
只保留一个黑色画面。
8拍及以上
12/8拍按4拍数,9/8拍按3拍数。
细分节拍(八分、三连音、十六分)
不是应用成立的必要条件,留作优先考虑的新增功能。
输入速度数值
−/+和拖动已经足够。

使用 SwiftUI 实现,无外部库。支持运行 iOS 17及以上版本的 iPhone。英文名为 No Ads Simplest Metronome,正在准备于 App Store 发布(2026年9月)。完整使用说明与隐私政策见支持页面(英语)。