- 博客:新闻、指南与更新
- 🛡️ 隐私设计的核心:深入解析 MIDI Toolbox 的架构(以及为什么我们不保存您的文件)
🛡️ 隐私设计的核心:深入解析 MIDI Toolbox 的架构(以及为什么我们不保存您的文件)
对于音乐家、作曲家和制作人来说,MIDI 文件不仅仅是数据——它们是知识产权 (IP)。无论是下一首热门歌曲的草稿,还是私人的练习课,您完全有权发问:“当我使用 MIDI Toolbox 时,我的文件去哪儿了?”
在“云优先”已成为默认设置的时代,我们做出了一个深思熟虑的决定:构建**“隐私优先”**的工具。
为了赢得您的信任,我们信奉**“极致透明 (Radical Transparency)”**。在这篇深度文章中,我们将准确解释我们的技术是如何工作的,我们的本地工具与云端工具有何区别,以及为什么即使我们想“窃取”您的音乐,我们在物理上也做不到。
1. 核心理念:“客户端”处理 (Client-Side) 💻
对于我们 90% 的功能——包括 播放器 (Player)、编辑器 (Editor) 和 音频转换器 (Audio Converter)——MIDI Toolbox 采用的是“客户端”架构。
它是如何工作的(技术拆解)
当您将 MIDI 文件拖入我们的播放器或编辑器时,会发生以下一系列事件:
- 浏览器沙箱 (Sandboxing): 您的网络浏览器(Chrome, Edge 等)会创建一个安全、隔离的环境,称为“沙箱”。
- 内存加载: 我们的代码将您的文件作为
ArrayBuffer读取到您设备的 RAM(随机存取存储器)中。 - 本地合成: 我们使用 Web Audio API 和 Tone.js 等库,直接通过您计算机的声卡生成声音。
关键在于,在整个过程中,您的 MIDI 文件从未通过互联网传输。 这与在您的电脑上用记事本打开一个文本文件没有什么不同。处理能力来自您的 CPU,而不是我们的服务器。

2. 例外情况:“五线谱”可视化 (Score) 及其安全机制 🎼
我们要诚实。我们网站上有一个特定功能需要服务器端处理:MIDI 转五线谱 (Score) 转换器。
为什么?因为将原始 MIDI 数据转换为可读、精美的乐谱 (MusicXML/PDF) 需要复杂的渲染引擎,这些引擎目前过于庞大,无法在网页浏览器中高效运行。
“短暂处理 (Ephemeral Processing)” 协议
当您使用 Score 页面时,我们执行一项严格的安全协议,称为短暂处理。以下是您的数据在该页面上的生命周期:
- 安全上传 (TLS 1.3): 您的文件通过加密的 SSL 隧道 (HTTPS) 传输。
- 即时转换: 我们的服务器将文件接收到临时内存缓冲区中。乐谱引擎立即对其进行处理。
- “发射后即焚 (Fire and Forget)” 策略: 一旦乐谱生成并发回您的屏幕,原始文件和结果将立即从我们服务器的 RAM 中删除。
我们没有用于存储文件的数据库。 我们的服务器上没有“用户文件夹”。一旦交易完成,数据就在我们这边彻底消失了。

3. 为什么“本地”也意味着“更快” (性能优势) ⚡
隐私并不是我们选择这种架构的唯一原因。这同时也关乎性能。
在传统的“云转换器”中,您面临着延迟循环:
上传 (等待) -> 服务器排队 (等待) -> 处理 (等待) -> 下载 (等待)
通过本地处理,MIDI Toolbox 实现了零延迟解析。
- AudioWorklet 技术: 我们利用浏览器的
AudioWorklet在独立的 CPU 线程上运行音频处理。这意味着即使您播放包含 10,000 个音符的“黑乐谱 (Black MIDI)”,您的界面也不会冻结,音频也不会卡顿。 - 即时反馈: 当您在编辑器中移动一个音符时,您会立即听到它。不需要往返服务器来“重新渲染”音频。
4. “离线”证明 (飞行模式测试) ✈️
验证我们要点的最好方法是亲自测试。我们邀请所有用户尝试**“飞行模式测试”**:
- 加载 MIDI 播放器。
- 界面显示后,断开您的互联网连接。
- 加载一个 MIDI 文件并播放。
它将完美运行。

这是因为我们的声音引擎和 SoundFonts 已经缓存到了您的浏览器中(通过我们不可变的缓存策略,最长可达一年)。MIDI Toolbox 本质上变成了一个在浏览器内运行的桌面应用程序。您可以在地下室、飞机上或 Wi-Fi 信号差的工作室里练习,而您的数据始终安全地留在您的机器上。
5. 控制您的历史记录 (IndexedDB) 💾
您可能会注意到最近打开文件的“历史记录 (History)”列表。如果我们不将文件存储在服务器上,我们如何显示此列表?
我们使用一种名为 IndexedDB 的浏览器原生数据库。
- 您的数据,您的设备: 此数据库位于您的硬盘上的您的浏览器配置文件中。
- 无外部访问: 我们(网站所有者)无法远程访问您的 IndexedDB。
- 完全控制: 您可以通过点击 “Clear History (清除历史记录)” 按钮或清除浏览器缓存随时清除此历史记录。

结论:源于架构的信任
我们并没有因为容易才这样构建 MIDI Toolbox。用 JavaScript 构建完整的 DAW 级引擎很难。我们这样构建是因为我们要坚守一个信念:您的创作工具不应该监视您。
无论您是在本地编辑,还是通过我们要安全的瞬时服务器生成乐谱,您的隐私都已硬编码在我们的架构中。
自由创作吧。我们为您保驾护航。