ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

用c++设计音效插件 : 前言

2022-06-16 13:35:23  阅读:145  来源: 互联网

标签:插件 音效 -- C++ API c++ RackAFX ASPiK


Designing Audio Effect Plugins in C++, 2nd Edition

总结:

RackAFX 过时了,这个用了不合标的c++ ,没有用c++ 标准库
作者 开发了新的 ASPiK , 入门教程: www.willpirkle.com/support/video-tutorials/


翻译自:https://learning.oreilly.com/library/view/designing-audio-effect/9780429954313/xhtml/Ch01.xhtml#sec1_1

在大学里教书有很多值得喜爱的地方--学期的周期性(即使飓风艾尔玛来短暂访问),每一届毕业的高年级学生让位给新一批新生时的复兴和重生,当然还有暑假。但最酷的部分之一是,你每年都可以重塑、振兴和重塑你的班级。在每一个新的学年,你都有一个永久的 "重来 "机会,以纠正错误、偏离主题的切入点,以及时机不对的突击测验--每年春季毕业那天,我都会列出一个清单,列出下一年要做的不同事情。

当我收到第一本《用C++设计音频效果插件》的时候,我就开始列举如果再给我一次机会写第二版,我会做哪些不同的事情。这发生在2016年秋天,我在音频工程协会(AES)大会上与我的Focal出版社编辑会面,我向她提出了编写新版的想法,以解决第一版的问题。

当我把第一本书放在一起时,我的想法是把DSP理论和C++实践结合起来,展示这些算法如何在代码中实现。我使用我的RackAFX平台和应用编程接口(API)有两个原因:API是惊人的轻量级和简单易懂,而且它不与任何其他软件相联系。我不必担心它变得过时。但有些读者不喜欢这些插件不能在虚拟工作室技术(VST®)或音频单元(AU®)中运行,起初我并不理解。这本书不应该是关于这些东西的;它是关于算法和C++的。RackAFX是一个API的例子,用作展示这些想法的渠道。毕竟,其他的API基本上都是一样的,都是做同样的事情。

为这些API生成插件的需要引起了RackAFX软件和原始API的连锁反应,现在被命名为RAFS1并优雅地退役了。RAFX1的最后版本可以在Windows或MacOS上的Microsoft Visual Studio和Apple Xcode项目中导出为AAX®(Avid Audio eXtension)、AU和VST2/3,并在Windows 32位数字音频工作站(DAW)上直接作为VST2和VST3插件运行。这一切是有代价的:有很多可以追溯到2004年或更早的代码,其中大部分现在被认为在C++11中是 "非法的"。 那时,很多程序员没有使用std::库,他们更喜欢手工编码链表和哈希表。此外,最初的RAFX1从未打算需要显示一个自定义的图形用户界面(GUI)。最初的API是为一个咨询项目编写的,涉及一个硬接线DSP芯片--不需要GUI。因此,当我在2016年的那个秋天找到我的Focal Press编辑时,我有一个新的工作前提:首先,算法应该在C++对象中实现,在所有API中完全可移植。毕竟,标题确实说"......用C++"。

第二,更重要的是,第二版不能以RackAFX为中心,需要有一个平台,任何人都可以在他们选择的DAW和操作系统(Windows或MacOS)上编写和设计插件。最重要的是,这个平台需要从第三方那里免费获得,原因和以前一样--不用担心有人使产品过时,也不用担心有人决定对其使用收取费用或版权费。我必须自己编写这个新平台,独立于RackAFX或任何软件开发工具包(SDK)或操作系统(OS)。

因此,在AES展会上与我的编辑告别后,我坐上飞机,开始为现在的ASPiK(音频专用插件内核)做笔记。两年后,新的平台已经完成,同时还有一本新书,展示了超过55个C++对象中的几十种算法,供你在自己的项目中使用。这些对象是为任何API编写的,可能很容易跨平台和SDK使用。如果你已经致力于使用另一个框架,如JUCE,你会发现C++对象将融入任何API或框架--正如我的研究生Madhur常说的 "抽象101"。这本书不是关于ASPiK的(尽管如果你需要它,它就在那里),它不依赖于任何平台。那55个C++对象也不是ASPiK对象:它们是直接的C++,开箱即用。

第1-8章是关于插件和各种插件的API。与其尝试重新打印所有API中所有插件的完整代码(我不会再尝试),每个API都有自己的 "编程指南 "章节。如果你看一下目录,你可以看到每一章的章节列表几乎都是一样的。这些编程指南是为了帮助你浏览各种API文档和示例代码。当你浏览这些文件时,你会开始注意到一些东西:API基本上都是一样的,做的都是一模一样的事情,只是实现细节不同。如果你是插件编程的新手,你可以使用免费的ASPiK平台。它是完全独立的,包括一个内置的拖放式GUI设计器,可以从任何平台(Windows或MacOS)上的任何插件窗口(AAX、AU或VST)启动。第6章和第7章介绍了ASPiK的基础知识,以及如何使用RackAFX来生成ASPiK项目--这是可选的,你不需要RackAFX来使用ASPiK或生成新的空白项目。第8章解释了如何打包C++书中的对象,以及如何展示一个插件GUI参数列表的例子。有用于低级信号处理杂务的DSP对象,封装了完整的效果算法的效果对象,并被设计成与任何插件框架中的GUI接口,最后还有整个波浪数字滤波器(WDF)组件和适配器库,用于生成无数种数字梯形滤波器。

第9章到第22章包含了DSP理论、效果算法和C++对象以及它们在音频插件中的使用。第9章和第10章是基本的DSP理论章节,与第一版相比几乎没有变化,因为它们似乎是读者的最爱。然而,第10章加强了其余常见的双曲滤波器结构,同时在家庭作业部分增加了一个奖励结构。第11-22章涵盖了其他所有的内容--所有原来的效果,加上关于调制、WDF和虚拟模拟滤波器的新章节,一个奇妙的新混响,非线性处理,FFT(快速傅里叶变换),相位声码器,以及最后的采样率转换。这些效果都是从头开始重新编码的,它们听起来非常棒,而且很专业。

如果你在目录中看一下本书每半部分的流程,你可以看到有内置的 "贯穿线",平行于各章之间。这一点从各章节的排序和命名中最为明显,这些章节成组重复,一开始是与各种SDK一起,后来是围绕不同的DSP和效果对象。你可以在每一章的相同位置找到关于设置AAX、AU或VST的插件延迟的信息。同样地,一旦你掌握了做前几个C++项目的技巧,那么剩下的就很容易了,因为它们都遵循非常一致的设计和编码模式。使用ASPiK是非常简单的,在www.willpirkle.com/support/video-tutorials/,
有大量的教程视频可以让你入门。ASPiK也非常深入,包括非常复杂的GUI和绘图选项、GUI缩放和其他对本文来说太过高级的主题--所有这些也都与ASPiK产品一起被记录下来,并且在我的网站上也有。

感谢我的Focal Press编辑Lara Zoble,她鼓励我并相信第二版的前提。此外,我还需要感谢迈阿密大学弗罗斯特音乐学院的所有人员,他们既支持我,又把音乐工程技术项目委托给我。他们包括院长Shelly Berg、Rey Sanchez和Serona Elton,以及我的教师同事Joe Abbati、Chris Bennett、Dana Salminen,当然还有我的老上司Ken Pohlmann,他现在正在佛罗里达州北部的某个地方冲浪,并且终于达到了我们曾经梦想的 "更高层次",对每年需要提交的SACS报告浑然不知。再次感谢。还要感谢我的学生,他们在RackAFX软件方面提供了很大的帮助,并在这些年里帮助指导我的课程方向。最近,这将包括Madhur Murli、Lucas Pylypczak、Luke Habermehl、Akhil Singh、Jay Coggin、Hunter Garcia和Sanket Kulkarni,另外还有很多人也发挥了作用。我必须对我以前的学生Alex Zinn大加赞赏,他将Kammeyer和Kroschel所写的《Digitale Signalverarbeitung》一书的各个部分--第12章中WDF RL、LC和RL组合模型的原始来源--从德语翻译过来。

和原书一样,我期待着听到你们在自己的插件实验室里做出来的东西。你可以在 www.willpirkle.com 找到我。请发送你的插件音频的疯狂的视频和录音!

Will Pirkle
August 1, 2018

标签:插件,音效,--,C++,API,c++,RackAFX,ASPiK
来源: https://www.cnblogs.com/pencilCool/p/16381610.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有