VST 2.0编程总结
之前搞VST 2.0 SDK编程,基本上入门了,4月份开始搁置。现在想再捡起来,发现代码有点生疏了,是时候再梳理一下了。
插件的重要的部分一个是音频信号处理算法,一个是GUI。
音频效果对应一个AudioEffectX类。通过定义一个类继承自AudioEffectX,重写processReplacing方法来实现音频信号处理的功能。音频效果的重要的一点是参数。用户通过交互界面将调整的参数告诉程序,VST 2.0中,所有的参数必须是float型,且范围是0.0~1.0,这种方式虽然显得不那么优雅,但是也能减少许多麻烦。
GUI部分对应一个AEffGUIEditor类。使用AudioEffectX类时,构造时通过调用
setEditor(new AEffGUIEditor(this));
来建立效果类和GUI类的映射,使二者互相能找到对方。
GUI的任务,一是作为用户和程序的接口,调整参数,一是为了显示。用户操作改变参数时,触发回调进行参数更新。提供了一个监听器类CControlListener来实现这个功能。为了使用监听器的valueChanged方法,自定义效果器类要同时继承CControlListener。
自定义效果器类只实现:
virtual bool open(void * ptr);
virtual void close();
virtual void setParameter(VstInt32 index, float value);/* @Override CControlListener::valueChanged */
virtual void valueChanged(CDrawContext* context, CControl* control);
即可完成基本功能。
open函数基本完成图形部分的初始化。对于Slider,只需要给出Background和Thumb即可,当用户拖动滑条时,重绘是自动完成的,程序员做的只要在setParameter函数里SetDirty即可。setParameter函数中还要对参数进行更新。
以上对程序整体思路进行了梳理,通过边看代码边整理,加上以前的记忆,基本上又都理解回来了。可以说这个框架让开发者的工作尽量降到最低了,使得开发者能够更专心于算法本身,而不被线程、事件等等这些所扰。在工作中也要强化这个概念,要把应用层和驱动本身隔离开,抽象出所有的接口,让应用层以实现回调函数为主,而不必理会底层运转的很多细节。
下一步把算法移植进去,进行测试。
VST 2.0编程总结相关推荐
- 零编程基础学python-如果是一个纯0编程基础的小白,如何学Python
Python 可用的地方非常多.无论是从入门级选手(爬虫.前端.后端.自动化运维)到专业级数据挖掘.科学计算.图像处理.人工智能,Python 都可以胜任.或许是因为这种万能属性,周围好更多的小伙伴都 ...
- ActionScript 3.0 编程
Adobe 公司出版的中文版电子书:<ActionScript 3.0 编程> 下载地址:http://www.91files.com/?XY7UE2JM7R72CWU17ZJ6
- objective-c 2.0编程语言,Objective-C 2.0编程快速上手 EXE版[12MB]
Objective-C 2.0编程快速上手 内容简介: <Objective-C 2.0编程快速上手>是介绍Objective-C编程的基础教程.全书采用实例讲解.按部就班的方式,全面详细 ...
- 怎么制作app?0编程外卖平台系统开发
随着智能手机的普及及外卖配送平台的兴起,现在年轻人已经习惯通过各大外卖平台点餐.现在一二线城市市场已经饱和,但是在三四线中小城市及县城地区还有海量外卖市场可以挖掘.外卖作为刚需产品,进行外卖平台系统开 ...
- 轻松玩转Scratch 3.0编程课程计划
轻松玩转Scratch 3.0编程课程计划 1.选用教材信息: 书名:<轻松玩转Scratch3.0编程 第二版> 编著: 刘凤飞 出版社:清华大学出版社 ISBN:978-7-302-5 ...
- java opengl es_OPENGL ES 3.0编程指南
OPENGL ES 3.0编程指南 OPENGL ES 3.0编程指南\.gitignore, 215, 2017-05-03 __MACOSX __MACOSX\OPENGL ES 3.0编程指南 ...
- 058_《突破Delphi7.0编程实例五十讲》
<突破Delphi7.0编程实例五十讲> Delphi 教程 系列书籍 (058) <突破Delphi7.0编程实例五十讲> 网友(邦)整理 EMail: shuaihj@16 ...
- vb 6.0编程错误
vb 6.0编程错误 Private Function 验证当前窗口(窗口 As 程序_窗口验证.窗口参数) As Boolean Dim hwndS() As Long Dim T ...
- 0基础小白学python好学吗-如果是一个纯0编程基础的小白,如何学Python
Python 可用的地方非常多.无论是从入门级选手(爬虫.前端.后端.自动化运维)到专业级数据挖掘.科学计算.图像处理.人工智能,Python 都可以胜任.或许是因为这种万能属性,周围好更多的小伙伴都 ...
最新文章
- python的jupyter的使用教程-如何优雅地使用 Jupyter?
- GPU编程与CG语言之阳春白雪下里巴人 读书笔记
- AssertJ Fest Hamcrest
- 在wp中,使用NavigationService.Navigate导航页面出现错误
- “最严”整改后的海淀黄庄 :学费收取仍有猫腻
- ogg 查看某条更新_明道云Web 6.1更新:日历视图上线
- CentOS7 FTP安装与配置
- hiho #1014 : Trie树(模板)
- micropython 人脸识别检测_Flask实战!从后台管理到人脸识别,六款优质Flask开源项目介绍...
- 基于halcon的颜色识别---杜邦线识别
- 香槟分校计算机研究生专业,伊利诺伊大学香槟分校计算机科学专业各大方向介绍...
- OJ 2311 Problem A	Orange
- java制作闪星星_three.js制作星球和星星闪烁的简单示例
- Java 第三阶段增强分析需求,代码实现能力【满汉楼】
- 数据可视化 | Tableau从入门到高手 入门联接关系数据预处理
- 新支点“B4G+5G”聚合路由器多链路图传技术巩固安防监控行业
- 图像修复 python_用python进行图像修复与去除水印
- Unirech:阿里云国际版怎么获得免费试用的机会以及注册流程
- 好文转载—程序员的禅修之路
- 回文序列是指正读反读均相同的字符序列,如“abba”和“abdba”均是 回文,但“good”不是回文。试写一个算法判定给定的字符串是否为回文序列。