[C++翻译]为什么我使用JUCE

2,267 阅读6分钟

原文地址:medium.com/@jatinchowd…

原文作者:medium.com/@jatinchowd…

发布时间:2020年7月18日-5分钟阅读

作为一名音频程序员,我一直在使用JUCE框架进行专业、个人和学术项目,到现在已经有四年了。在过去的几年里,我从社区和我的同事那里听到了很多关于JUCE的负面评论。虽然这些抱怨中有很多是有道理的,但我想花一些时间来概述一下我使用JUCE的一些原因。

使用Projucer建立项目

便携性

当我开始做音频程序员的时候,我尝试的第一个框架就是VST SDK。作为一个相对缺乏经验的C++程序员,我上手困难重重,最后花了近一年时间打转,更何况即使做了一个插件,也没办法和使用不同平台、不同插件格式的朋友分享。所以,当2016年夏天我哥给我指点了JUCE框架的时候,我无比欣慰! 用JUCE编程让我可以比较轻松地写出可移植的代码,让我的插件可以跨平台、跨插件格式编译。

我需要提到的是,虽然JUCE可以让你写出可移植的代码,但它并不能保证你用JUCE写的代码一定是可移植的。我已经听到了好几个沮丧的用户抱怨。"我的JUCE插件在我的机器上编译得很好,但在X机器上却不行"。归根结底,你写的还是C++代码,而写出不可移植的C++是非常容易的。

也就是说,JUCE并不是唯一的跨平台插件框架。值得注意的竞争者包括Filipe Coelho的DISTRHO Plugin Framework(DPF)和Oli Larkin的iPlug2,它们都有各自的优势(DPF支持更多的Linux插件格式,iPlug2支持Web音频模块、Faust等)。我认为,重要的是要有替代方案,让开发者有选择的余地,根据他们在某个项目中需要的功能来选择合适的框架。

twitter.com/olilarkin/s…

iPlug2提供的一些整洁的图形功能

另一个重要的一点是,JUCE不仅仅是一个插件框架。JUCE是构建跨平台应用和移动应用的绝佳工具,这些应用依赖于高级音频功能。据我所知,没有其他框架能提供这样的灵活性。

支持服务

下一个关于JUCE的最大特点是它为新用户和高级用户提供了大量的支持。

教程

对于希望使用JUCE开始一个新项目的初学者来说,JUCE教程提供了简单易懂的解释,说明如何编写JUCE代码来完成特定任务。这些教程在我刚开始学习时是非常宝贵的,但我现在仍然经常参考它们。每个教程中附带的示例代码通常是开始实现与教程相关的一些新功能的好方法。

文档

JUCE的文档和我使用过的任何文档一样好。虽然大部分的API文档都是用Doxygen生成的(类似于许多其他的C++工具),但JUCE的文档经常对可用的类和函数给出非常清晰的解释,以及有用的代码示例。最后,文档中包含了大量的自我参考,帮助读者准确地找到他们要找的东西。

社区

JUCE提供支持的另一个重要部分是JUCE用户的活跃社区。JUCE论坛是一个不可缺少的资源,可以从过去开发者处理过的bug中学习,了解JUCE的新功能,甚至是寻找JUCE相关的工作。最近,The Audio Programmer社区也是一个很好的资源,在YouTube上举办JUCE教程,并定期举办开发者见面会。

许可证

JUCE框架是双重授权的:用户既可以在开源通用公共许可证(GPL)下使用JUCE,也可以支付专有许可证的授权费。作为一个普通的开源贡献者,拥有免费的开源许可选项是至关重要的,但即使是专有项目,JUCE的许可费也是相当合理的。鉴于JUCE最近被PACE收购,人们对JUCE未来的开源地位产生了一些担忧,但JUCE的开发者坚持认为他们对开源的支持不会减少。

扩展性

我还想提一下JUCE框架的可扩展性。JUCE使用了一系列被称为模块的库,让用户选择他们的项目需要哪些JUCE模块。然而,JUCE也允许用户创建和使用自己的自定义模块。我最喜欢的几个模块包括

用Plugin GUI Magic构建插件GUI。

最近,由于JUCE 6中引入了对CMake的全面支持,JUCE变得更加容易扩展。 我在一个新的项目中利用了这一特性,将用Rust编写的DSP代码集成到了一个JUCE音频插件中。

改进

使用JUCE已经好几年了,我也有机会看到JUCE的改进。无论是性能的提升还是新功能的加入,都让我作为一个程序员的生活变得更加轻松,我很高兴看到JUCE在未来继续做出哪些改进。也许最重要的是,JUCE在进行改进时,会倾听用户的意见。大约每年我都会填写一份开发者调查,告诉JUCE的人哪些功能对我很重要,以及我希望他们把时间和精力花在哪里。

然而这些调查可能是一把双刃剑。最近,我正在考虑将我的一个插件移植到Linux用户的LV2格式中。不幸的是,JUCE目前并不支持构建LV2插件,而且由于在用户调查中得分较低,也没有计划增加LV2支持。幸运的是,JUCE的可扩展性和开源性救了我:在Konstantin Voinov的JUCE fork(他的LV2移植项目的一部分)的帮助下,我成功地将LV2支持添加到了我的磁带仿真插件中。也就是说,如果你想要JUCE的LV2支持,请在他们的下一次用户调查中告知他们

结束语

归根结底,JUCE和其他工具一样,也是一个工具,任何工具的最终目标都是帮助用户实现安心。在你的工作中,你应该使用任何能给你和你的合作者带来安心的工具,不管那是JUCE还是其他的工具。我在这里说的一切都是我自己的观点,你应该自由地同意/不同意,因为你认为合适。说到这里,我希望我能够帮助大家解释一下为什么我(以及其他许多音频开发人员)经常使用JUCE。


www.deepl.com 翻译