DOS下DSP播音的編程(一)_第1頁(yè)
DOS下DSP播音的編程(一)_第2頁(yè)
DOS下DSP播音的編程(一)_第3頁(yè)
DOS下DSP播音的編程(一)_第4頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、DOS下 DSP播音的編程 (一)摘要該文介紹了 DSP編程的基本原則和方法,并給出程序?qū)嵗龓椭斫?讀者可以此為基礎(chǔ)來(lái)拓展、生成自己的實(shí)用程序。在 DOS 下編程 ,將聲音轉(zhuǎn)化為數(shù)據(jù)記錄下來(lái) ,或?qū)?shù)據(jù)轉(zhuǎn)化為聲音 ,通過(guò)聲卡上配置的喇叭回放出來(lái) ,是一項(xiàng)很有實(shí)用價(jià)值和開(kāi)發(fā)魅力的技術(shù)。時(shí)下流行的聲卡 ,如 SoundBlasterPro 及其兼容卡 ,都配有數(shù)字聲音處理器 DSP芯片 (DigitalSoundProcessor),專門用于對(duì)聲音進(jìn)行數(shù)字記錄及回放,是聲音數(shù)字處理的基礎(chǔ)硬件。而WAV 文件、 VOC 文件等 ,則都是這些數(shù)據(jù)記載的具體形式。Creative 公司為了方便用戶,

2、提供了一組CT-Voice驅(qū)動(dòng)程序 ,專門針對(duì) VOC文件 ,作為開(kāi)發(fā)利用 DSP功能的軟接口 , 使用比較方便。但是 ,也造成了某些限制。對(duì)于開(kāi)發(fā)者而言 ,直接對(duì) DSP 硬件編程 ,實(shí)現(xiàn)其功能 ,也許是更有吸引力的。聲音 ,無(wú)論是從揚(yáng)聲器輸出的,還是從話筒輸入的 ,都是模擬量。而數(shù)據(jù) ,無(wú)論是內(nèi)存里操作的 ,還是磁盤上存儲(chǔ)的都是數(shù)字量。 因此 ,微機(jī)處理聲音 ,大多離不開(kāi) ADC與 DAC兩種轉(zhuǎn)換。由于聲音數(shù)據(jù)的數(shù)據(jù)量比較大 ,在聲音的數(shù)字處理中 ,除直接由CPU 進(jìn)行傳輸外 ,批量數(shù)據(jù)常采用DMA 方式傳輸 ,以節(jié)省較多的 CPU時(shí)間??偫ㄆ饋?lái) ,ADC與 DAC兩種轉(zhuǎn)換方式 ,直接傳輸

3、和 DMA 傳輸這兩種傳輸方式 ,再加上不同的壓縮方式,如喇叭控制、靜寂等等 ,所有這些的不同組合,就構(gòu)成了 DSP的各種功能。根據(jù) DSP的硬件原理 ,其各種功能都規(guī)定了一定的操作步驟。一、 DSP編程要點(diǎn)在 DSP編程中 ,主要注意命令與端口兩個(gè)層次的操作。1.DSP命令。 DSP的功能一般以一個(gè)操作碼(稱作命令號(hào) )的寫操作為中心,按規(guī)定的步驟 ,配合若干必要的輔助操作 ,構(gòu)成一串操作的組合 ,稱為DSP命令。如 8 位直接播放功能命令號(hào)為 10h,8 位直接錄音功能命令號(hào)為 20h,喇叭的通斷功能命令號(hào)分別為d1h 與 d3h 等等。2.端口操作。 DSP命令主要靠端口操作來(lái)實(shí)現(xiàn)。端口

4、操作包括 DSP初始化、寫 DSP命令 (即發(fā) DSP命令 )、讀 DSP狀態(tài)參數(shù)、 DSP中斷等。所涉及的端口地址及相應(yīng)的用途如表1。表 1DSP端口及用途端口地址由基址2x0h 加 6、0ah、0ch、0eh 等形成 ,其中 ,x 可取值 1、2、3、4、5、6 等,具體情況隨硬件設(shè)置而定,多數(shù)卡在出廠被默認(rèn)設(shè)置為2,即基址為 220h。通過(guò)跳線 ,可改變此值 ,避免與其它設(shè)備口地址沖突。二、編程實(shí)例DSP的功能是比較豐富的 ,限于篇幅 ,本文只簡(jiǎn)要介紹其中的8 位直接播放功能 ,由此舉一反三 ,其它功能的用法不難得知。 各功能的規(guī)定操作可參考文獻(xiàn) 1 和 2。1.命令操作步驟。 8 位直

5、接播放功能的操作步驟如下:·寫命令號(hào) 10h;·寫數(shù)據(jù)字節(jié) (即播放聲音的 8 位數(shù)據(jù) );·按采樣率所需時(shí)間周期延時(shí)。以此三步操作為循環(huán)體 ,進(jìn)行 n 次循環(huán) ,即完成播放。 其中 ,n 為聲音數(shù)據(jù)字節(jié)數(shù)。2.2xch 端口寫操作。在 DSP編程中 ,無(wú)論是發(fā)送命令 ,還是發(fā)送數(shù)據(jù) ,都是通過(guò)寫端口 2xch 來(lái)完成的。在寫端口 2xch 之前 ,應(yīng)先讀此端口 ,直到所得值的 bit7 為 0,這才表明此端口處于可寫狀態(tài) ,才能進(jìn)行寫操作。此過(guò)程的 c 語(yǔ)言形式如下 :while(inportb(0x22c)&0x80);outportb(0x22c,b

6、yte);這里假定端口基址為220h。句中 byte 可以是命令號(hào) ,也可以是數(shù)據(jù)。3.定時(shí)器。為使播放按一定的采樣率進(jìn)行 ,需對(duì)數(shù)據(jù)發(fā)送進(jìn)行定時(shí)控制。這一般是借用主機(jī)定時(shí)中斷 int8, 將其調(diào)用頻率提高到與采樣率相當(dāng)?shù)某潭?,利用其監(jiān)視、控制數(shù)據(jù)發(fā)送的時(shí)間 ,來(lái)滿足播音頻率的要求。關(guān)于定時(shí)中斷的編程技術(shù)已有過(guò)許多介紹 ,限于篇幅 ,不再贅述 ,讀讀文后的程序清單 ,即一目了然。應(yīng)該說(shuō)明的是 ,對(duì)于 CPU較慢的機(jī)型如 386,由于計(jì)時(shí)代碼本身的執(zhí)行時(shí)間可能已經(jīng)超過(guò)采樣率對(duì)應(yīng)的時(shí)間周期 ,定時(shí)控制就達(dá)不到預(yù)期的效果。 這種情況下 ,用一個(gè)空循環(huán)來(lái)定時(shí) ,調(diào)整循環(huán)次數(shù),即可滿足頻率要求。 此法

7、的缺點(diǎn)是定時(shí)精度差 ,參數(shù)因 CPU速度而異。所幸的是 ,目前多數(shù)配置多媒體的 PC機(jī),其 CPU都在 486 以上。4.內(nèi)存利用。人耳可辨聲音的最高頻率可達(dá) 20kHz 以上 ,因此 DSP的采樣率至少也要達(dá)到與此相當(dāng)?shù)乃?,而為了容納立體聲雙聲道信息 ,采樣率還要再翻一倍。 常見(jiàn)的 WAV聲音的采樣率有 44100、22050、11025等。在這么高的采樣率下,聲音的數(shù)據(jù)量自然很大,如 44k 采樣率下 ,20秒的錄音數(shù)據(jù)長(zhǎng)達(dá)800 多 k。為在 DOS常規(guī)內(nèi)存內(nèi)處理這種規(guī)模的數(shù)據(jù),實(shí)例程序采取了分塊處理的方式 ,將數(shù)據(jù)分成以當(dāng)前剩余自由內(nèi)存大小為單位的塊 ,將其逐次讀入 ,逐次處理。同

8、時(shí) ,由于 C 語(yǔ)言的 read()函數(shù)每次讀操作的字節(jié)數(shù)最多不過(guò) 64k-1,因此 ,每一個(gè)分塊又需分若干次讀入。實(shí)例表明 ,經(jīng)此法處理的播放程序不受 WAV文件長(zhǎng)度的限制,筆者在 Windows 下錄制的長(zhǎng)達(dá) 5M 多的 WAV 文件 (11k 采樣率 ,約 8分鐘 )也照播不誤。5.聲音文件。本文提供的程序?qū)嵗渎曇魯?shù)據(jù)取自WAV 文件 ,其實(shí) ,對(duì)于VOC 文件 ,本播放技術(shù)也一樣適用 ,只不過(guò)數(shù)據(jù)的讀取格式有所不同而已。關(guān)于 WAV文件的格式 ,可參考文獻(xiàn) 3,VOC文件的格式參考獻(xiàn) 1 和 2。實(shí)例程序用 BorlandC+3.1編譯 ,在配置 OPTI386主板、海洋 486 主

9、板及多種與 SoundBlasterPro兼容聲卡的兼容機(jī)上運(yùn)行通過(guò)。三、源程序清單#include#include#include#include#include#include#include#include#include"timer.h"#definen120#definen2100structWavHeadcharriff4;longsize0;charwavefmt8;longsize1;intfmttag;intchannel;longsamplespersec;longbytespersec;intblockalign;intbitspersample;charflg4;whead;unsignedPort=0x2

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論