国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

VB.NET 實現DirectSound9 (10) 均衡器

2024-07-10 13:00:48
字體:
來源:轉載
供稿:網友


關鍵字: 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===============


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 西宁市| 定日县| 志丹县| 大田县| 黑河市| 嘉峪关市| 图片| 巢湖市| 黄大仙区| 宁晋县| 包头市| 洞头县| 常熟市| 南郑县| 苗栗县| 运城市| 青海省| 铁力市| 于田县| 乌拉特后旗| 珲春市| 山西省| 黄大仙区| 长岛县| 安西县| 时尚| 顺平县| 五原县| 元朗区| 湾仔区| 新和县| 女性| 扶余县| 饶河县| 二连浩特市| 曲沃县| 米林县| 塔河县| 连州市| 神池县| 安泽县|