• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            天行健 君子當(dāng)自強(qiáng)而不息

            用DirectX Audio和DirectShow播放聲音和音樂(lè)


            用DirectX Audio和DirectShow播放聲音和音樂(lè)(7)      摘要: MP3是一種音頻壓縮格式,它通過(guò)刪除或修改音樂(lè)中不易被人耳察覺(jué)的部分來(lái)使音樂(lè)更小,占用的存儲(chǔ)空間更少。在項(xiàng)目中使用MP3(.MP3文件)需要使用 DirectX中的DirectShow組件,在這個(gè)組件的幫助下,只需幾行短短的代碼,就能使用任意的MP3文件了(DirectShow也支持其他的媒體文件,比如WMA,AVI,MPG等)。當(dāng)然要想使用更多的媒體文件,必須已經(jīng)在操作系統(tǒng)中安裝了解碼器。

            解碼器(codec)是一個(gè)程序,用于解碼或編碼一些指定的格式(比如MP3解碼器專(zhuān)門(mén)解碼.MP3文件)。通常可以從發(fā)明或者創(chuàng)建這種格式的公司中獲取這種格式的解碼器。比如, MP3解碼器來(lái)自于Fraunhofer Insitute。幸運(yùn)的是,MP3解碼器等幾種比較流行的解碼器已經(jīng)被集成到操作系統(tǒng)中(比如.mp3,.avi,.mpg等),而無(wú)需另外從 internet下載這些格式的解碼器了。

            要在項(xiàng)目中使用DirectShow,需要包含dshow.h頭文件,并且在鏈接庫(kù)中加入strmiids.lib。  
             
            用DirectX Audio和DirectShow播放聲音和音樂(lè)(6)      摘要: DirectMusic加載器在使用固有文件或者M(jìn)IDI文件的時(shí)候會(huì)自動(dòng)加載默認(rèn)的音色庫(kù)。樂(lè)器總是被一組一組地使用,很多組樂(lè)器音色的集合被稱(chēng)之為 DLS音色庫(kù)(可下載的音樂(lè))。每組樂(lè)器使用三個(gè)值編號(hào),它們是:最高有效位(most-significant byte,MSB),最低有效位(least-significant byte,LSB)和組編號(hào)。

            通常播放MIDI文件的樂(lè)器組是標(biāo)準(zhǔn)化的,也就是說(shuō)編號(hào)為1的樂(lè)器總是鋼琴,如果想使用新的鋼琴作為樂(lè)器,可以從DLS集合中加載。 DirectMusic包含了標(biāo)準(zhǔn)的樂(lè)器集合,通常稱(chēng)之為GM/GS集合(GM = General MIDI,GS = General Synthesizer),這個(gè)集合由日本羅蘭(Roland)公司提出,稱(chēng)為MIDI合成器標(biāo)準(zhǔn)。
              
             
            用DirectX Audio和DirectShow播放聲音和音樂(lè)(5)      摘要: 在DirectAudio中,DirectSound負(fù)責(zé)數(shù)字音頻方面的處理,而DirectMusic則負(fù)責(zé)Midi文件(Musical Instrument Data Interface,數(shù)字音樂(lè)格式,.mid作為文件擴(kuò)展名),DirectMusic固有音樂(lè)文件(.sgt文件)和數(shù)字錄音設(shè)備錄制的波形格式文件(.wav文件)等文件的播放操作。

            能體現(xiàn)DirectMusic的強(qiáng)大之處是DirectMusic固有文件格式,一首用DirectMusic固有文件格式制作的音樂(lè)包括數(shù)個(gè)小音樂(lè)格式,這些樣式還能用不同的樂(lè)器組合一個(gè)接一個(gè)地播放。隨機(jī)的樣式和樂(lè)器的選取創(chuàng)造出了隨時(shí)都在改變的音樂(lè),再加上節(jié)拍變化,就形成了一個(gè)魅力無(wú)窮的音樂(lè)系統(tǒng)。DirectMusic的另一個(gè)特性是可以使用“基調(diào)”,就是在正在播放的音樂(lè)片段上疊加一段其他音樂(lè),新加入的音樂(lè)可以很平滑的融入到原有的音樂(lè)中。這在很多時(shí)候都有用,比如一個(gè)玩家完成了一個(gè)目標(biāo),可以馬上播放一段“獲得榮譽(yù)”的音樂(lè)提示他。 
             
            用DirectX Audio和DirectShow播放聲音和音樂(lè)(4)      摘要: “通告”是一種觸發(fā)機(jī)制,當(dāng)緩存中播放位置達(dá)到某個(gè)固定的位置時(shí),就會(huì)向程序發(fā)出通知。有了通告,就可以知道播放什么時(shí)候結(jié)束,這種機(jī)制在比較長(zhǎng)的聲音中特別有效。通告使用一個(gè)叫做IDirectSoundNotify8的對(duì)象,這個(gè)程序的作用就是在音頻緩存中標(biāo)記一個(gè)位置,然后觸發(fā)事件通知應(yīng)用程序,而應(yīng)用程序可以通過(guò)消息循環(huán)或者單獨(dú)的線程進(jìn)行處理。

            標(biāo)記的位置可以是一個(gè)緩存中的偏移值,也可以是由宏指定的停止標(biāo)記,這個(gè)表示停止的宏是DSBPN_OFFSETSTOP。并不是任何偏移值都可以用來(lái)作為通告發(fā)生的位置,這個(gè)值必須和音頻的數(shù)據(jù)塊對(duì)齊,并且通告的偏移必須按照從小到大的順序排列。偏移值是不能夠共享的,如果使用 DSBPN_OFFSETSTOP宏,它必須被放在最后。舉例來(lái)說(shuō),對(duì)于一個(gè)塊大小為2的音頻(單聲道、16位),嘗試對(duì)偏移為4和5的位置設(shè)通告會(huì)導(dǎo)致失敗,因?yàn)槠屏课恢?和5都在同一個(gè)數(shù)據(jù)塊中。 
             
            用DirectX Audio和DirectShow播放聲音和音樂(lè)(3)      摘要: 所謂聲道平衡就是調(diào)節(jié)左右聲道的大小, DirectSound定義了兩個(gè)宏幫助把聲道平衡調(diào)節(jié)到最左邊和最右邊,使用DSBPAN_LEFT將聲道調(diào)整到最左邊,使用DSBPAN_RIGHT 將聲道調(diào)整到最右邊。

            通過(guò)調(diào)用IDirectSoundBuffer8::SetPan函數(shù)可以調(diào)節(jié)聲道平衡。   
             
            用DirectX Audio和DirectShow播放聲音和音樂(lè)(2)      摘要: 讓緩存在程序啟動(dòng)的時(shí)候開(kāi)始播放可以節(jié)省不少處理器時(shí)間。因?yàn)閮?nèi)存資源是有限的,特別是在硬件設(shè)備中,而你使用的數(shù)據(jù)緩存可能需要任意大小,因此主音頻緩沖區(qū)和輔助緩沖區(qū)使用環(huán)形緩存。因?yàn)閿?shù)據(jù)緩沖是一個(gè)一維數(shù)組,所以可以讓這個(gè)緩沖區(qū)頭尾相接。這是一個(gè)十分強(qiáng)大的技術(shù),利用這個(gè)技術(shù)我們可以節(jié)省大量的內(nèi)存。

            聲音在進(jìn)行混音處理后,被送入環(huán)形主音頻緩存。一旦播放位置到達(dá)主音頻緩存的終點(diǎn),聲音又從頭開(kāi)始播放,這樣聲音就被無(wú)間隙地連續(xù)播放。如果想要使用緩存的這種循環(huán)特性,需要指定啟用循環(huán)播放的特性,若不然當(dāng)播放到緩沖區(qū)終點(diǎn)時(shí),播放就停止了。

            為了播放緩存中的音頻數(shù)據(jù)(在開(kāi)啟循環(huán)選項(xiàng)的情況下播放),需要調(diào)用Play函數(shù)。  
             
            用DirectX Audio和DirectShow播放聲音和音樂(lè)(1)      摘要: 音樂(lè)就是一系列的音符,這些音符在不同的時(shí)間用不同的幅度被播放或者停止。有非常多的指令被用來(lái)播放音樂(lè),但是這些指令的操作基本相同,都在使用各種各樣不同的音符。在計(jì)算機(jī)上進(jìn)行作曲,實(shí)際上是存儲(chǔ)了很多組音樂(lè),回放時(shí)由音頻硬件將這些音符播放出來(lái)。

            Midi格式(文件擴(kuò)展名是.MID)是存儲(chǔ)數(shù)字音樂(lè)的標(biāo)準(zhǔn)格式。

            DirectMusic 音樂(lè)片段(music segments)使用.SGT文件擴(kuò)展名,其他的相關(guān)文件包括樂(lè)隊(duì)文件(band file .BND),這種文件里面包含樂(lè)器信息;弦映射表文件(chordmaps file .CDM)包含在回放時(shí)修改音樂(lè)的和弦指令;樣式文件(styles file .STY)包含回放樣式信息;模板文件(templates file .TPL)包含創(chuàng)造音樂(lè)片段的模板。  


            posted on 2007-09-24 23:38 lovedday 閱讀(3799) 評(píng)論(0)  編輯 收藏 引用 所屬分類(lèi): ■ DirectX 9 Program

            公告

            導(dǎo)航

            統(tǒng)計(jì)

            常用鏈接

            隨筆分類(lèi)(178)

            3D游戲編程相關(guān)鏈接

            搜索

            最新評(píng)論

            亚洲国产高清精品线久久| 久久久久久一区国产精品| 久久影视国产亚洲| 国产精品女同一区二区久久| 久久精品aⅴ无码中文字字幕重口| 亚洲国产精品无码久久久久久曰| 久久久91人妻无码精品蜜桃HD| 国产精品99久久久久久www| 999久久久国产精品| 国产精品99久久久久久宅男| 久久精品18| 国产成人精品综合久久久久| 久久99国产乱子伦精品免费| 久久A级毛片免费观看| 国产人久久人人人人爽| 亚洲国产成人久久综合碰碰动漫3d | 久久久国产精品福利免费| 国产午夜精品理论片久久影视 | 免费精品久久天干天干| 少妇久久久久久久久久| 国产美女久久久| 色婷婷噜噜久久国产精品12p| 久久人人添人人爽添人人片牛牛| 中文字幕日本人妻久久久免费 | 精品久久久久久国产| 久久成人国产精品| 免费精品99久久国产综合精品| 久久久久人妻一区精品果冻| 午夜久久久久久禁播电影| 青青热久久综合网伊人| 久久久这里只有精品加勒比| 久久国产精品99精品国产987| 国内精品久久久久久麻豆 | 久久ZYZ资源站无码中文动漫| 国产成人综合久久精品尤物| 久久久一本精品99久久精品88| 99久久中文字幕| 精品国产青草久久久久福利| 狠狠久久综合| 欧美精品一本久久男人的天堂| 精品久久久久久无码不卡|