之前搞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编程总结相关推荐

  1. 零编程基础学python-如果是一个纯0编程基础的小白,如何学Python

    Python 可用的地方非常多.无论是从入门级选手(爬虫.前端.后端.自动化运维)到专业级数据挖掘.科学计算.图像处理.人工智能,Python 都可以胜任.或许是因为这种万能属性,周围好更多的小伙伴都 ...

  2. ActionScript 3.0 编程

    Adobe 公司出版的中文版电子书:<ActionScript 3.0 编程> 下载地址:http://www.91files.com/?XY7UE2JM7R72CWU17ZJ6

  3. objective-c 2.0编程语言,Objective-C 2.0编程快速上手 EXE版[12MB]

    Objective-C 2.0编程快速上手 内容简介: <Objective-C 2.0编程快速上手>是介绍Objective-C编程的基础教程.全书采用实例讲解.按部就班的方式,全面详细 ...

  4. 怎么制作app?0编程外卖平台系统开发

    随着智能手机的普及及外卖配送平台的兴起,现在年轻人已经习惯通过各大外卖平台点餐.现在一二线城市市场已经饱和,但是在三四线中小城市及县城地区还有海量外卖市场可以挖掘.外卖作为刚需产品,进行外卖平台系统开 ...

  5. 轻松玩转Scratch 3.0编程课程计划

    轻松玩转Scratch 3.0编程课程计划 1.选用教材信息: 书名:<轻松玩转Scratch3.0编程 第二版> 编著: 刘凤飞 出版社:清华大学出版社 ISBN:978-7-302-5 ...

  6. 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编程指南 ...

  7. 058_《突破Delphi7.0编程实例五十讲》

    <突破Delphi7.0编程实例五十讲> Delphi 教程 系列书籍 (058) <突破Delphi7.0编程实例五十讲> 网友(邦)整理 EMail: shuaihj@16 ...

  8. vb 6.0编程错误

     vb 6.0编程错误 Private Function 验证当前窗口(窗口 As 程序_窗口验证.窗口参数) As Boolean     Dim hwndS() As Long     Dim T ...

  9. 0基础小白学python好学吗-如果是一个纯0编程基础的小白,如何学Python

    Python 可用的地方非常多.无论是从入门级选手(爬虫.前端.后端.自动化运维)到专业级数据挖掘.科学计算.图像处理.人工智能,Python 都可以胜任.或许是因为这种万能属性,周围好更多的小伙伴都 ...

最新文章

  1. python的jupyter的使用教程-如何优雅地使用 Jupyter?
  2. GPU编程与CG语言之阳春白雪下里巴人 读书笔记
  3. AssertJ Fest Hamcrest
  4. 在wp中,使用NavigationService.Navigate导航页面出现错误
  5. “最严”整改后的海淀黄庄 :学费收取仍有猫腻
  6. ogg 查看某条更新_明道云Web 6.1更新:日历视图上线
  7. CentOS7 FTP安装与配置
  8. hiho #1014 : Trie树(模板)
  9. micropython 人脸识别检测_Flask实战!从后台管理到人脸识别,六款优质Flask开源项目介绍...
  10. 基于halcon的颜色识别---杜邦线识别
  11. 香槟分校计算机研究生专业,伊利诺伊大学香槟分校计算机科学专业各大方向介绍...
  12. OJ 2311 Problem A Orange
  13. java制作闪星星_three.js制作星球和星星闪烁的简单示例
  14. Java 第三阶段增强分析需求,代码实现能力【满汉楼】
  15. 数据可视化 | Tableau从入门到高手 入门联接关系数据预处理
  16. 新支点“B4G+5G”聚合路由器多链路图传技术巩固安防监控行业
  17. 图像修复 python_用python进行图像修复与去除水印
  18. Unirech:阿里云国际版怎么获得免费试用的机会以及注册流程
  19. 好文转载—程序员的禅修之路
  20. 回文序列是指正读反读均相同的字符序列,如“abba”和“abdba”均是 回文,但“good”不是回文。试写一个算法判定给定的字符串是否为回文序列。

热门文章

  1. 50个Bootstrap扩展插件
  2. 梁定郊在英十几年,旅行贿赠福利
  3. 网络管理服务器篇之FTP
  4. python学习——CMD中快速执行python文件
  5. oracle数据泵导出文件权限,oracle数据泵导出
  6. 查看电脑的真实Ip(可连接访问的IP)
  7. 使用simsun的黑体
  8. python调音_Linux实现远程控制ALSA调音台?!
  9. 指针之野指针系列(2):如何规避野指针
  10. Java通过Freemarker生成docx文件