ICode9

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

用c++设计音效插件 : 介绍

2022-06-16 13:32:02  阅读:195  来源: 互联网

标签:采样 插件 框架 音效 C++ API c++ ASPiK


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

第一批负担得起的数字音频设备在80年代中期开始出现。数字信号处理(DSP)数学从1960年代起就已经出现了。商业数字录音首次出现在20世纪70年代初,但该技术直到15年后才开始广泛传播,当时光盘的出现开创了数字音频的时代。数字采样是指从一个连续的模拟信号中获取数据点。这些数据点在一个固定的时间间隔内被采样,称为 "采样周期 "或 "采样间隔"。采样周期的倒数是采样频率,我们把它表示为fs。一张光盘使用44,100赫兹的采样频率,每秒每通道产生44,100个离散样本,采样间隔约为22.7微秒(μS)。虽然数字采样适用于许多不同的系统,但本书只关注其中一种应用:音频。在20世纪90年代初之前,数字音频效果和合成器是在由微处理器、微控制器、DSP芯片和其他组件组成的硬件设备中实现的。这些设备一开始几乎都以模拟输入和输出连接为特色,后来开始加入数字I/O。数字音频工作站(DAW)出现在20世纪80年代末,音频软件开始盛行。微软发布了一个名为DirectX®的软件开发工具包(SDK),其目标是最初被称为多媒体的东西--当时很多人使用这个词,但很少有人真正理解。在DirectX中,有处理音频和视频数据流的信号处理规范,并在短时间内出现了第一个支持DirectX "插件 "的DAWs。大约在同一时间,斯坦伯格媒体技术公司发布了其虚拟工作室技术(VST)的规范,这可以说是有史以来最流行的插件格式。

在本书的学习过程中,你将同时学习DSP理论和C++软件应用。你可以立即接触到几十个C++对象,这些对象实现了书中的每一种信号处理算法,第9章到第22章将具体揭示算法向C++代码的转换。这些章节中的每一章都将包括一到三个这样的C++对象。这些对象不受任何插件格式或操作系统的约束。你可以很容易地将它们与其他信号处理对象或框架结合起来,而且你有许可证,可以按照你的意愿将它们用于商业或非商业插件。由此产生的产品听起来非常棒。当你开始发明你自己独特的插件,或实现最先进的音频算法时,你会得到极大的满足。

1.1 Using This Book

包括三个主要的商业化特效规格AAX(Avid Audio eXtension)、音频单元(AU)和VST3(Steinberg Media Technology GmbH)的单独章节。插件规范也被称为API。本书设计最重要的一点是,你可以在MacOS或Windows上,在你选择的DAW中使用任何你希望的平台来编写和测试你的插件。封装在上述C++对象中的DSP算法是平台和API中立的。当你学习API的具体章节时,你会了解到这三个API的内部功能确实非常相似,但不同的API的实现细节可能会让人不知所措。这导致了对第三方插件开发框架的使用。

你可能已经在使用这些框架之一了,比如JUCE--如果是这样,那就很好。你可以很容易地将C++信号处理对象纳入这些框架,因为这些对象不是以API或平台为中心的。请确保你遵守这些框架所要求的任何许可限制,并遵循他们的软件发布或代码公布规则。你将需要知道如何将音频输入和输出这些框架,以及如何设计你的图形用户界面(GUI)和处理来自GUI或DAW自动化的参数变化,所以请参考这些框架的文档以了解这些信息。

如果您和大多数读者一样,您可能还没有使用这些框架开发过插件,或者您尝试过,但被陡峭的学习曲线和新的实施细节所困扰,而这些框架本应有助于缓解这种情况。或者你可能已经下载了其中一个SDK,但对其内容感到困惑。这也没关系,因为我们在过去的三年里开发了一个功能齐全、真正专业、免许可的平台供你使用,这个平台叫ASPiK™(代表 "音频专用插件内核")。ASPiK由一组C++对象组成,这些对象是定制的,可以直接与AAX、AU和VST3插件对接,同时还有一个机制可以轻松生成新的插件项目。

本书中的项目被打包成ASPiK插件项目,如果你想使用其他第三方框架,可以简单地将其集成到这些框架中。本书中所有的插件项目都是以一种能够使代码简单地传送到其他开发系统的方式来编写的。此外,各个章节的代码并不关注任何API,也不关注ASPiK本身。本书的基本目标是帮助你理解音频信号处理算法,以及如何将它们转换为C++对象;它尽量做到平台、框架和API中立。

ASPiK框架中包括一个完整的、与平台无关的GUI设计系统,称为PluginGUI对象,它有一个拖放界面,可以在不写一行代码的情况下创建漂亮而专业的GUI。如果你想尝试GUI编程,你可以在第21章中了解自定义GUI设计的情况。

如果你是插件编程的新手,或者你想以最有效的方式开发新的插件或测试算法,你可能想使用RackAFX™软件,然而本书不是以RackAFX为中心,也不需要使用它。在ASPiK或其附带的对象中绝对没有RackAFX专用代码。然而,RackAFX简化了插件的编程和设计,允许你快速定义插件的参数和用户界面,它还包括测试你的插件算法的工具,如振荡器、示波器、频谱分析仪等。你也可以使用RackAFX在你的设计基础上生成ASPiK项目,这些ASPiK项目不依赖也不包括任何RackAFX专用的东西。你在本书中看到的几乎所有的实时响应图--包括频率、脉冲、阶跃和相位响应--都是用RackAFX的插件分析器完成的,它可以在插件运行时对其算法进行分析测量。

标签:采样,插件,框架,音效,C++,API,c++,ASPiK
来源: https://www.cnblogs.com/pencilCool/p/16381635.html

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

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

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

ICode9版权所有