一.背景
因为最近要开发一款音频硬件配套软件。所以我仔细研究了一款音频vst机架软件,用来进行分析和研究。 这款软件就是一款开源音频处理软件,完全用C++开发的,他的界面和底层音频采用JUCE库,这个库也是一个开源的跨平台的界面和音频开发库,可以开发window,Mac和Linux 的库,这点跟 QT很像,不过JUCE开发界面没有qt软件那么炫,但是它对于音频处理是非常专业的,底层集成大量音频处理相关功能,这是我研究的重点。
音频处理软件是一个专业度很高的一个细分集成行业。是一个很吃经验的细分方向,可以说学到老干到老的行业。现在流行的也就是那么几家,比如Ozone ,Au。国内的有一些厂家比如超级音雄推出几款民用级的一些产品。但通常用于主播或者K歌之类的应用.但是我们的目标是开发录音级的专业控制软件,所以我们要从源码进行分析,并且整理出设计思路和算法。
我是祝融降火星,音频处理软件除了开发能力外更多的是音频的处理经验,如果你也在开发类似的软件,欢迎跟我来交流。
但是它的功能还是很完整,而且这个领域的变化并不是很大。Pedalborad2带采用音频流水线处理,与系统其它部份采用特定的声卡如,asio声卡通行通讯,也支持比较常见vst2插件就。可以对声音进行各种各样的特效或者美化处理。经过了一段长时间的错误处理,我下面把它详细的编译步骤整理出来。
二.编译
Pedalborad2,它的源码并没携带配套JUCE库源码,而 上下载下来的JUCE库版本太高,跟他编译的会有大量的错误,作为一个2013年就停止开发经过近10年的发展,JUCE已经升高到很高的版本了版本 是 6.1.5,直接套用后,,发现这一条路行不通,太多源码不兼容了,先不说大改程序源码是否正常工作,即便是几千个编译错误也会让工作量变成无比巨大。而且新的JUCE库在VS2010编译通不过。
最后突然想到我应该找到对应JUCE的版本源码,才能可能编译。在Pedalborad2里ChangeLog提到他适配的时候,2.0.27版本。所以6.0基本不能编译通过,年代太久远了, 上也找不到老版本的代码,最后突然想起来,如果就是个库源码采用git保存,如果规范的话我可以利用版本控制命令完成回滚搞对应版本不就可以了吗?
果然查询后发现国外的开发人员做的还是很规范,我通过如下的步骤找到了JUCE的2.0.27版本
//查找相应包含2.0.27的提交 git log –grep 2.0.27
E:workspaceJUCE>git log –grep 2.0.27
commit ad958be260d308af261d232a3e87f8c9f5cce11b
Author: jules <jules@rawmaterialsoftware.com>
Date: Sat Sep 8 14:37:39 2012 +0100
Version bump: 2.0.27
//把源码重置到对应的版本 git reset –hard
ad958be260d308af261d232a3e87f8c9f5cce11b
E:workspaceJUCE>git reset –hard ad958be260d308af261d232a3e87f8c9f5cce11b
Updating files: 100% (3572/3572), done.
HEAD is now at ad958be26 Version bump: 2.0.27
果然只剩下一些小错误 最多是一个未定义的变量 dontSendNotification,
将其直接加入宏定义当中。
安
装几个sdk,一个asio驱动sdk,另一个是vst插件sdk,
插件规范的处理也顺便一一找到相应的源码。还有几个小函数的适配后终于编译出来.
接下来就是要对应的硬件上进行对应的适配,我是祝融降火星,如果你也是音频处理行业的, 评论点赞,我们进行交流。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!