Whistle Synth 是一款 macOS 应用程序,可将吹口哨实时转换为合成器声音。用户对着外接麦克风或耳机吹口哨(建议使用有线耳机以最小化延迟),并通过选定的合成器音色听到对应音符的播放。该应用通过不同时使用 Mac 内置麦克风和扬声器来避免反馈问题。

该项目最初几年前是一个命令行工具,但最近一次由 AI Claude 辅助的改版带来了显著改进。Kaufman 要求 Claude 降低延迟,这涉及将麦克风对准耳机来测量往返时间,并尝试音频回调 API。这项工作将音频往返延迟从大约 80 毫秒降至仅 5 毫秒,使乐器感觉灵敏。Claude 还帮助重构代码,将音高检测与合成分离,消除了困扰早期版本的卡顿问题。

音色开发是另一个重点。Claude 原型化了许多贝斯音色,最终形成一个无八度贝斯音色,随着音高上升会调整其谐波混合以保持感知八度恒定。对于高音范围,Kaufman 选择了抽头 Hammond 风琴音色,指出旋转的 Leslie 扬声器为持续音符增添了活力——这是用更简单的波形更难实现的品质。App Store 列表确认该应用提供十二种音色:Bass、Sub Bass、Octaveless、Reese、808、Pluck、FM、FM Sub、Grind、Square、Drawbar 和 Drawbar Hi,外加一个用于输入电平和门控的 Passthrough。

Whistle Synth 紧凑的演奏标签
带有音色选择的小演奏标签www.jefftk.com

此图像对应文章列出的十二种音色(Bass、Sub Bass、Octaveless、Reese、808、Pluck、FM、FM Sub、Grind、Square、Drawbar、Drawbar Hi、Passthrough)以及音色开发部分。

额外的演奏功能包括一个“低五度”选项,将每个音色向下移动一个纯音程(吹 D 听起来像 G),一个在吹口哨停止后保持音符的延音锁,以及通过 M 键实现的即时静音。音色编辑器暴露了脉冲宽度、光谱倾斜和共振等参数,允许用户通过调整旋钮来学习合成。

Whistle Synth 扩展的演奏界面
显示所有控制选项的放大演奏标签www.jefftk.com

该标签说明了文章对额外演奏功能的描述,如“低五度”选项、延音锁、通过 M 键即时静音以及可调整的音色参数。

AI 辅助超出了代码范围。Gemini 生成了初始应用图标,Claude 随后将其细化为多种尺寸的代码生成图标。将应用引入 Mac App Store 需要开发者会员身份和身份验证;Apple 最初将 Kaufman 的姓氏误读为“Kaufhan”,但 Apple Support 纠正了该错误。Claude 引导 Kaufman 完成提交过程,包括准备截图和演示视频。

Whistle Synth 图标在 Mac App Store 列表中
Whistle Synth 出现在 Mac App Store 搜索结果中www.jefftk.com

文章描述了该应用的 App Store 发布、Apple 最初将 Kaufman 的姓氏误读为“Kaufhan”,以及通过 Apple Support 的纠正;此图像在视觉上代表该列表。

在底层,Mac 应用使用重写的引擎(zeros2.c),拆分为 pitch.c、synth.c 和 engine.c,用 CoreAudio 替换 PortAudio 并提供立体声输出。源代码在 GitHub 上公开,显示一个基于过零的音高检测器,向合成器提供 PitchHint 结构,合成器从不直接读取麦克风输入。

隐私是核心原则:该应用在本地处理音频,不收集数据,不执行网络活动,正如其 App Store 隐私部分所述。