跳至主要内容

本周项目:Voltra

·阅读时长:6 分钟

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


什么是 Voltra?

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

voltra-artistview

Voltra 适合谁?

任何听音乐的人。

是什么促使您创建 Voltra?

广播一直拥有大量听众。它正在从广播电台转移到互联网。现在,您可以按需租用音乐 - 这是广播的复兴!由于此项技术的发展,很多新产品和服务应运而生,但流媒体广播仍然让其他人控制您的音乐以及您体验音乐的方式。

我们希望创建一个完全专注于您拥有的音乐的产品。让您能够轻松地直接从艺术家或唱片公司那里发现和购买新音乐。

有免费版本吗?

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

由于该应用程序是免费的,我们可能会在稍后将其开源。目前,我们还没有足够的带宽来管理这项工作。我们也对功能和我们想要采取的路线有非常明确的想法。我们有一个活跃的 beta 社区,我们非常重视他们的反馈。

您如何赚钱?

我们提供高级功能!

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

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

是什么让 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,您只需开发一次,它就能在所有主要平台上正常运行™。虽然不能保证,但为每个平台进行原生编码的成本无疑超过了 Electron 引入的任何其他成本。

您最喜欢 Electron 的哪些方面?

GTD!:将 Node.js 的网络堆栈和 Chromium 的呈现层打包在一起,是完成任务的秘诀。

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

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

Electron 在哪些方面可以改进?

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

接下来是什么?

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