跳到主要内容

本周项目:Voltra

·阅读 6 分钟

本周我们与 Aprile ElcichPaolo Fragomeni 见面,讨论了 Voltra,一个由 Electron 驱动的音乐播放器。


什么是 Voltra?

Voltra 是一款专为想要拥有自己音乐的人设计的音乐播放器。它也是一个商店,你可以在其中根据已有的音乐发现和购买新音乐。它无广告,跨桌面和移动平台。它也不会监视你。

voltra-artistview

Voltra 适合谁?

任何听音乐的人。

是什么促使你创建 Voltra?

广播一直拥有大量听众。它正在从无线电波转向互联网。现在你可以按需租用音乐——这是一场广播复兴!因此出现了许多新产品和服务,但流媒体广播仍然让其他人控制着你的音乐以及你体验音乐的方式。

我们想要一款完全专注于你所拥有的音乐的产品。一款能让你轻松地直接从艺术家或唱片公司发现和购买新音乐的产品。

有免费版本吗?

桌面播放器是完全免费的。销售你的音乐也是免费的!我们没有广告支持。

由于该应用是免费的,我们可能会在稍后开源它。目前我们没有精力来管理它。我们对功能和发展方向也有非常具体的想法。我们有一个活跃的 Beta 社区,我们非常重视他们的反馈。

你们如何盈利?

我们有高级功能!

我们的 Voltra 音频档案 是一项专门为音乐设计的云备份服务。我们不压缩或共享数据块。你的音乐收藏会为你进行物理备份。

对于艺术家和唱片公司,我们的 专业会员资格 提供了工具,帮助他们接触更多相关受众,例如分析和专业的艺术家网页。

Voltra 有何不同?

设计和可用性对我们来说至关重要。我们希望为听众提供无干扰的聆听体验!市面上有一些有趣的音乐播放器和商店。但其中许多比其创作者意识到的更高级且更难使用。我们希望让 Voltra 尽可能多的人能够使用。

我们也不从艺术家或唱片公司那里抽取佣金。这是我们的一个关键区别。这非常重要,因为它降低了艺术家将音乐推向市场的门槛。

你们在设计和技术方面做出了哪些决定?

在设计 Voltra 时,我们考虑了原生应用和网络的 UI 约定,我们也深入思考了可以删除哪些内容。我们有一个活跃的私人 Beta 测试组,在过去几个月里他们给了我们重要的反馈。

我们发现专辑封面和照片对人们来说非常重要。许多播放器只是文件列表。拥有实体专辑的优点之一就是专辑封面,我们希望在 Voltra 桌面应用中强调这一点。

voltra-albumview

我们还确保不干扰用户的文件。我们使用文件监视,因此你可以将文件放在任何你想要的位置,我们不会为你重命名或移动它们。我们有一个嵌入式数据库来跟踪被监视目录的状态,以便即使进程没有运行,我们也能跟踪新的内容。

在构建 Voltra 过程中,你们遇到了哪些挑战?

我们花了很多时间专注于性能。我们最初使用框架,但后来转向了原生 Javascript。根据我们的经验,框架提供的通用抽象所带来的性能损失和繁琐操作,大于它们所带来的好处。

目前我们处理非常大的集合表现良好。大的集合可能意味着数万张图片!Node.js 的文件系统模块可以直接从渲染进程中获得,这使得基于 DOM 事件快速地惰性加载和卸载大量图片变得非常容易。

总的来说,***setImmediate*** 和 ***requestIdleCallback*** 是在执行大量处理同时保持 UI 响应的关键工具。更具体地说,将 CPU 密集型任务分配到单独的进程中确实有助于保持用户界面的响应。例如,我们将实际的音频上下文移动到一个单独的进程中,通过 IPC 与其通信,以避免繁忙的 UI 可能造成的干扰。

为什么选择在 Electron 上构建 Voltra?

浏览器的沙盒对我们的应用来说限制太多了。但我们也在开发一个网页播放器。因此,我们可以在两种实现之间共享几乎 100% 的代码,这是一个巨大的胜利。

我们实际上最初是用 Swift 构建了一个原生应用。我们发现的主要问题是,我们正在重新发明很多东西。网络拥有世界上最大的开源生态系统。所以我们很快就转向了 Electron。

此外,最重要的是,使用 Electron 可以一次开发,并且它应该在所有主要平台上“开箱即用™”。虽然不保证,但为每个平台进行原生编码的成本,肯定超过了 Electron 引入的任何其他成本。

你最喜欢 Electron 的哪些方面?

GTD!:将 Node.js 的网络堆栈和 Chromium 的表现层打包在一起,是实现目标的秘诀。

能力:它只是一个 Web 技术栈,所以我们的整个团队都参与了产品的实际构建。

社区:有一个组织良好、沟通能力很强的社区!有这样的支持,我们对开发感到非常满意。

Electron 在哪些方面可以改进?

我们希望看到 Electron 认可一个单一的打包工具。打包工具对 Electron 的重要性,就像包管理器对 Node 的重要性一样。用户空间中有多个打包工具,每个都有有趣的特性,但也都存在 Bug。社区达成共识将有助于引导贡献者投入的精力。

接下来会发生什么?

我们目前正在开发一款移动应用,并与艺术家和唱片公司合作,将他们的音乐添加到 Voltra 商店。嘿!如果你是艺术家或唱片公司,现在就注册吧!我们计划在达到 1000 万首歌曲的目标时开放商店。