跳到主要内容

每周精选项目:Voltra

·6 分钟阅读

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


什么是 Voltra?

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

voltra-artistview

Voltra 适合哪些人?

任何听音乐的人。

是什么促使您创建 Voltra?

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

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

有免费版本吗?

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

由于该应用程序是免费的,我们可能会在稍后开源它。目前我们没有带宽来管理它。我们对功能以及我们想要发展的方向也有非常具体的想法。我们有一个活跃的 Beta 社区,我们认真对待他们的反馈。

你们如何赚钱?

我们有高级功能!

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

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

是什么让 Voltra 与众不同?

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

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

您做出了一些什么样的设计和技术决策?

在设计 Voltra 时,我们考虑了来自原生应用程序和 Web 的 UI 约定,我们也考虑了很多我们可以删除的内容。我们有一个活跃的私人 beta 测试组,他们在过去几个月中为我们提供了重要的反馈。

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

voltra-albumview

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

在构建 Voltra 时,您遇到了一些什么挑战?

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

在这一点上,我们处理非常大的集合非常好。大型集合可能意味着数以万计的图像!从渲染进程直接访问 Node.js 的文件系统模块使得基于 DOM 事件非常容易地延迟加载和卸载大量图像。

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

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

浏览器的沙箱对我们的应用程序来说过于受限。但我们也在开发一个 Web 播放器。因此,我们可以在两个实现之间共享几乎 100% 的代码,这是一个巨大的胜利。

实际上,我们最初是用 Swift 构建一个原生应用程序。我们发现的主要问题是我们重新发明了很多东西。Web 拥有世界上最大的开源生态系统。因此我们很快就切换到了 Electron。

而且,最重要的是,使用 Electron,您只需开发一次,它就应该在所有主要平台上 Just Work™。虽然不能保证,但为每个平台进行原生编码的成本肯定超过了 Electron 引入的任何其他成本。

您最喜欢 Electron 的哪些方面?

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

能力:它只是 Web 堆栈,因此实际上我们整个团队都参与了产品的构建。

社区:有一个组织性很强的社区,他们知道如何很好地沟通!我们对在这样的支持下进行开发感到非常棒。

Electron 在哪些方面可以改进?

我们希望看到 Electron 支持一个单一的打包器。打包器对于 Electron 的重要性就像包管理器对于 Node 的重要性一样。用户领域中有多个打包器,每个打包器都有有趣的功能,但每个打包器都有错误。社区的共识将有助于引导贡献者花费的精力。

接下来会发生什么?

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