跳转到主要内容

本周项目:Voltra

·6 分钟阅读

本周我们采访了 Aprile ElcichPaolo Fragomeni,聊了聊 Voltra,一款基于 Electron 的音乐播放器。


Voltra 是什么?

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

voltra-artistview

Voltra 是为谁准备的?

任何听音乐的人。

是什么促使您创建 Voltra?

广播一直以来都有大量的听众。它正从广播波段转向互联网。现在您可以按需租用音乐——这是一次广播的复兴!由此涌现了许多新产品和服务,但流媒体广播仍然让别人控制您的音乐以及您体验音乐的方式。

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

有免费版本吗?

桌面播放器完全免费。 销售您的音乐也免费! 我们不靠广告支持。

由于这款应用是免费的,我们稍后可能会开源它。目前我们没有精力来管理它。我们也有非常具体的关于功能和发展方向的想法。我们有一个活跃的 beta 社区,并且我们认真对待用户的反馈。

你们如何盈利?

我们有高级功能!

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

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

Voltra 有何不同?

设计和可用性对我们来说非常重要。我们希望为听众提供一种不受干扰的听觉体验!市面上有一些有趣的音乐播放器和商店。但其中许多比它们的创作者意识到的要复杂和难用。我们希望让 Voltra 尽可能多的人都能使用。

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

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

在设计 Voltra 时,我们考虑了原生应用程序和 Web 的 UI 约定,并且还仔细考虑了我们可以去除的内容。我们有一个活跃的私人 beta 小组,他们在过去几个月里给了我们重要的反馈。

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

voltra-albumview

我们还确保不干扰用户的文件。我们使用文件监视,这样您就可以将文件放在任何地方,我们不会为您重命名或移动它们。我们有一个嵌入式数据库来跟踪已监视目录的状态,以便即使在进程未运行时也能跟踪新内容。

在构建 Voltra 的过程中,您面临过哪些挑战?

我们花费了大量时间专注于性能。我们从框架开始,然后转向 vanilla Javascript。根据我们的经验,它们提供的通用抽象 outweighs 了它们引入的性能损失和仪式感。

目前我们能够很好地处理非常大的音乐库。大型音乐库可能意味着数万张图片!Node.js 的文件系统模块可以直接从渲染进程访问,这使得基于 DOM 事件非常快速地懒加载和卸载大量图像变得非常容易。

总的来说,setImmediaterequestIdleCallback 是执行大量处理同时保持 UI 响应的重要工具。更具体地说,将 CPU 密集型任务分发到单独的进程中,有助于保持用户界面的响应性。例如,我们将实际的音频上下文移到了一个单独的进程中,通过 IPC 进行通信,以避免繁忙 UI 可能带来的中断。

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

浏览器的沙箱对我们的应用程序来说太受限制了。但我们也在开发一个网页播放器。因此,我们能够在这两个实现之间共享几乎 100% 的代码是一个巨大的优势。

我们实际上是从使用 Swift 构建原生应用程序开始的。我们发现的主要问题是我们一直在重复造轮子。Web 拥有世界上最大的开源生态系统。所以我们很快就切换到了 Electron。

另外,最重要的是,使用 Electron,您只需开发一次,它就应该能在所有主要平台上正常工作™。这并非总能保证,但为每个平台原生编码的成本肯定 outweighs 了 Electron 带来的任何其他成本。

您最喜欢 Electron 的哪些方面?

高效!:将 Node.js 的网络堆栈和 Chromium 的表示层打包在一起,是高效完成工作的秘诀。

能力:它就是 Web 堆栈,所以我们的整个团队都直接参与产品的构建。

社区:有一个高度组织的社区,他们知道如何很好地沟通!在这种支持下开发,我们感觉非常好。

Electron 在哪些方面可以改进?

我们希望看到 Electron 能够支持一个统一的打包器。打包器对 Electron 的重要性相当于包管理器对 Node 的重要性。用户空间中有多种打包器,每种都有其有趣的功能,但也都存在 bug。社区的共识将有助于引导贡献者投入的精力。

下一步是什么?

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