VB.NET 实现DirectSound9 (10) 均衡器

2016-01-29 12:44 43 1 收藏

VB.NET 实现DirectSound9 (10) 均衡器,VB.NET 实现DirectSound9 (10) 均衡器

【 tulaoshi.com - ASP.NET 】


关键字: VB.NET DirectSound9 播放器 均衡器 作者:董含君
转载请注明来自:http://blog.csdn.net/a11s
发现最近发帖有点上瘾,这个估计真的是最后一篇关于DirectSound的文章了.用VB做播放器--估计又是我填补国内空白了.呵呵开玩笑.用MediaPlayer做播放器的不要看不起我哦...现在来写一下均衡器.必要知识是示波器,如果没有示波器的知识来做均衡器估计比较困难.这个是连接
http://blog.csdn.net/a11s/archive/2005/03/07/313672.aspx
依旧是拿WinAmp来分析
中间的那个就是均衡器(这个图没有截好,而且这个Blog居然不能删除上传的图像,我晕)

上面的1k 3k 6k ...都是可以调整的.
根据上一篇文章的说明,就是修改播放的buffer
1 primaryBuffer 这里面是DirectSound的最终播放缓冲,通常说来,你不需要修改他的内容,包括SDK的例子也没有涉及到PrimaryBuffer的操作.包括写入,锁定,播放 三个部分.更加详细的资料只能参照C++的资料的,全部都是英文的.不要指望我来翻译,我怕挨骂.
2 针对当时示波器的方案,应用到均衡器.就是将某一段的音量进行调整.这个"段"可以映射到riff的数据块,也就是播放前就修改了Primary的数据,然后lock ,最后play
3 最重要的还是这个"范围"的定义.由于我对声学了解几乎为0.但是相信winAmp这么划分时有道理的.你仔细看均衡器的上面有一条曲线.他的放大并不是大起大落,而是平滑的,这样你的EQ函数跟示波器的绘制函数一样,应该是连续的效果才会比较好

4 多种声音的加载.
这个在示波器没有多说,主要是为了拿到均衡器这边来.
既然知道均衡器最终的实质是修改PrimaryBuffer,那么你应该很容易就联想到怎么加载mp3 或者 wma了
最"经典"的办法,自己读mp3文件,然后转化成响应的riff,写PrimaryBuffer,最后Play
流行的办法,利用现有的插件,COM对象.没有发现么,DIrectShow支持的文件格式基本上就包含了MediaPlayer的文件格式,很多播放器都是这样.基本上都是为windows media player做插件.RealOne也有自己的Update 站点升级插件,WinAmp的插件也很多.他们的功能就是将目标文件专成riff然后给源程序播放.
5 播放器的播放环节
5.1 初始化
5.2 打开文件
5.3 找合适的插件读取文件内容,变成riff
5.4 找合适的插件进行示波
5.5 找合适的插件进行EQ调整
5.6 找合适的插件进行输出(这里我们用DirectSound)
5.7 播放进行时,处理各种时间以及做好节目列表
5.8 ....
可见,里面插件担当了非常重要的技术,而且不是一个人能够做的来的.
视频操作更是如此.
但是都是利用了一个同一的标准,然后大家具体实现其中的内容.
6 说了这么多,是不是对插件感兴趣?这个你可以直接用.但是需要到winamp的官方查看他的示例代码.当年豪杰曾经也出过演示程序,C++的.然后既然知道了接口,你就应该能够制作出这样的程序来适应他的插件.
相关技术主要还是经典的dll的动态加载问题,C# 以及 vb.net J# 都办不到.建议还是看C++或者Delphi吧.虽说安装插件的VB6也能做到.....估计这块已经没有什么可以再值得研究的了,或者说也不是一个人能够做到的了.仅仅了解一下就可以了.如果真的认真做,需要耗费的时间跟精力是难以估量的.或者你去做个forlinux的也许还能有前途,这个就不是我要讨论的问题了=============End===============

来源:http://www.tulaoshi.com/n/20160129/1487364.html

延伸阅读
---VB.NET Single & Double---single的精度的问题先简单说明一下:项目里面有个金额的内容,一开始使用的single,后来发现只有金额在(-100000.66,1000000.66)区间中才能真实的储存对应的值,测试了一下代码如下: 小数点后第二位6开始进位,例如100000.66成为100000.7 1 Private Sub Button1_Click()Sub Button1_Click(ByVal sender As System.Obje...
天天动听音效均衡器怎么设置   许多朋友pc中都安装了天天动听吧,在天天动听中可以在pc中设置音效均衡器使音乐更加符合自己的口味,使用这个方法比网上推荐的音乐模式要好听得多,但是很多小伙伴却不知道怎么设置,下面小编就给大家详细的介绍一下设置的方法,希望能够对大家有所帮助。 pc中均衡器的设置方法:   ...
标签: vb
在win nt,win 2000,win xp中都有一个性能查看器,我们可以用它来查看计算机上正在运行的程序,获得与程序相关的主窗口名,和查看cpu和内存,虚拟页面的使用情况。但是对于更高要求的计算机使用人员来说,这些是不够的,特别是一些diy的发烧友,他们希望自己可以随时对自己的计算机进行查看,了解更多的信息从而可以知道自己的计算机是...
标签: vb
我的计算机系统是Windows 2000服务器版,回想当初从Win 98升级到Win 2000时,主要原因除了在Win 98下无法安装Visual Studio .Net 2002外,另外一个原因就是Win 2000自带一个我非常喜欢的可以管理进程的应用程序,通过这个管理器可以得到计算机到底运行了多少进程,在掌握那些进程属于正常进程的情况下,就可以得到计算机中那些是不正常的...
标签: vb
游戏开发是许多程序员的梦想,看着游戏中那华丽的画面。有多少人会感叹,如果自己能做就好了。  然而开发游戏需要对DirectX的调用,原来除了C++没有其他语言可以胜任这份工作,虽然DirectX7.0SDK加入了对VB的支持,但是VB毕竟能力有限,无法胜任这份严峻的工作,游戏可以说是最吃资源的程序,VB的速度无法完成。即使做出个游戏...

经验教程

542

收藏

98

精华推荐

全面剖析VB.NET(5)

全面剖析VB.NET(5)

槿丶少爷

全面剖析VB.NET(4)

全面剖析VB.NET(4)

浅笑___only

全面剖析VB.NET(6)

全面剖析VB.NET(6)

专治尼姑的和尚

微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部