1. gzyueqian
      18529173453

      Windows CE上的聲音處理

      更新時(shí)間: 2007-05-11 13:22:43來(lái)源: 粵嵌教育瀏覽量:1160


        現(xiàn)在有一些標(biāo)準(zhǔn)類型的數(shù)字音樂(lè)。例如,WAV,MP3,MIDI,MOD等等。每種音樂(lè)在技術(shù)上只有些細(xì)微的差別。MP3和WAV是其實(shí)是相似的,除了使用不同的記錄和重放方法外就只在壓縮技術(shù)略有區(qū)別。

        MIDI和MOD更是除了音源不一樣以外完全一樣。眾所周知有兩種音樂(lè)技術(shù)可以制作數(shù)字音樂(lè)。這兩種方法是采樣和MIDI。MIDI(Musical Instrument Ditaigal Interface)是一個(gè)縮略詞表示樂(lè)器數(shù)字接口。在樂(lè)器和計(jì)算機(jī)之間它充當(dāng)一個(gè)接口。在MIDI文件內(nèi), 包含了音樂(lè)序列的代碼(音符,效果,節(jié)拍等等)。音序器將發(fā)送代碼到聲音模塊生產(chǎn)音樂(lè)和聲音。所以播放MIDI我們需要兩個(gè)主要的部件,音序器和聲音模塊。音序器能用軟件實(shí)現(xiàn),聲音模塊通常是硬件。

        不是很清楚有沒(méi)有Windows CE將此設(shè)備嵌入。一般來(lái)說(shuō)如果你想在你的Windws CE設(shè)備上播放MIDI,你需要添加專用的硬件設(shè)備。采樣技術(shù)是非常有趣的。如果我們記錄聲音(例如狗叫) 在8KHz,當(dāng)我們?cè)谄渌念l率下播放它,例如在6KHz。我們將聽(tīng)見(jiàn)比原始聲音低一些的聲音。 相反的如果我們?cè)?0KHz頻率下播放它,我們將得到高一些音調(diào)的聲音。因此如果從鋼琴錄制了一段C音符,我們幾乎將播放出任何想要的音符。MOD(聲道)音樂(lè)出自Amiga系統(tǒng)。它也使用采樣技術(shù)。它帶給我們的主要是,它是一種能使用純軟件播放音樂(lè)文件。在以前只有Amiga有四聲道硬件音頻設(shè)備。所以MOD是的有四個(gè)軌道的音樂(lè),它能同時(shí)播放四個(gè)音符。現(xiàn)在我們應(yīng)用軟件混頻技術(shù),依靠處理器的高速度我們可以將許多聲道混合成一個(gè)聲音。 我們可以擁有超過(guò)四個(gè)音軌,多可以達(dá)到128軌。一個(gè)典型的MOD聲音文件的組成是音效(樂(lè)器)和音樂(lè)符號(hào)(歌曲)。數(shù)字音樂(lè)支持將采樣和MIDI這兩種基本的重要的音樂(lè)標(biāo)準(zhǔn)技術(shù)聯(lián)合使用。但是非常遺憾的是他們忘記了Windows CE系統(tǒng)。對(duì)Windows CE系統(tǒng)來(lái)說(shuō)這些聲音文件太大并且太復(fù)雜了。現(xiàn)在, 讓我們回到20年以前。你還能想起下面的代碼嗎;Play "L1O1C1E2DGA";沒(méi)錯(cuò),它們是MBASIC音樂(lè)代碼式樣。用它為一個(gè)簡(jiǎn)單的游戲產(chǎn)聲音樂(lè)是很簡(jiǎn)單的方法。我們不需要外部的資源。我們將試著做一個(gè)小程序來(lái)模擬MBASIC音樂(lè)。下面是對(duì)這個(gè)技術(shù)的簡(jiǎn)單描述;

        1。 編寫一個(gè)規(guī)則,用來(lái)產(chǎn)生音調(diào)和頻率。

        2。 寫一個(gè)函數(shù)用來(lái)轉(zhuǎn)換音樂(lè)編碼流。

        3。 使用定時(shí)器的控制節(jié)拍。現(xiàn)在,讓我們看下面的代碼。

        static BYTE *pMusicStream;

        static int nMusicPos;

        static nNotePeroid;

        static nNoteOctep;

        static int chtoi(char ch)

        {

        return ch - '0';

        }

        void PlayMusic(void)

        {

        switch(pMusicStream[nMusicPos])

        {

        case 'L': // tempo

        nTempo = chtoi(pMusicStream[nMusicPos+1]);

        nMusicPos++;

        break;

        case 'O': // octep

        nOctep = chtoi(pMusicStream[nMusicPos+1]);

        nMusicPos++;

        break;

        case 'C': // note

        case 'D':

        case 'E':

        case 'F':

        case 'G':

        case 'A':

        case 'B':

        note_no = pMusicStream[nMusicPos] - 'C';

        if(isdigit(pMusicStream[nMusicPos+1]))

        {

        tempo1 = chtoi(pMusicStream[nMusicPos+1]);

        Tone(note_no,nOctep,nTempo*tempo1);

        nMusicPos++;

        }

        else

        Tone(note_no,nOctep,nTempo);

        break;

        }

        nMusicPos++;

        }

        我們甚至可以把它應(yīng)用到我們的游戲中。看到了吧音樂(lè)可以這樣容易的被實(shí)現(xiàn)。在前的章節(jié),我已經(jīng)提及關(guān)于我們的動(dòng)態(tài)產(chǎn)生聲音的函數(shù)庫(kù)。這個(gè)庫(kù)使用一些低級(jí)的音頻API使我們能夠獲得有效的音樂(lè)和動(dòng)態(tài)的音響效果。 更多的詳細(xì)介紹放在我們的網(wǎng)頁(yè)上. 你可以播放一首歌曲作為背景音樂(lè)。你可以使用pg_LoadMod(…)函數(shù)裝載音樂(lè)并暫時(shí)保存音樂(lè)。你可以使用pg_PlayMod(…)函數(shù)播放音樂(lè)。當(dāng)你裝載了新的音樂(lè)先前的一個(gè)將自動(dòng)地卸載由新的代替。使用pg_ModStop(…)函數(shù)你能停止播放。用什么辦法創(chuàng)建MOD格式的音樂(lè)呢?答案是你需要一個(gè)聲道音樂(lè)作曲軟件。這類軟件通常都是功能很強(qiáng)大的,但也是不容易使用的。:/解決這個(gè)問(wèn)題,我們能用采樣技術(shù)從MBASIC音樂(lè)流生產(chǎn)音樂(lè)。混合的代碼是太復(fù)雜的,這樣,我們將把這些特征加到我們的聲音引擎。現(xiàn)在,下面是它的實(shí)現(xiàn)..... 在音樂(lè)控制方面的更深層的函數(shù)是...pg_LoadInstrument(...)- 裝載聲音到內(nèi)存pg_LoadMusicData(...)- 保存音樂(lè)流到游戲緩沖區(qū)pg_PlayMusic(...) - 開(kāi)始播放背景音樂(lè)pg_StopMusic(...) - 停止播放音樂(lè)

      免費(fèi)預(yù)約試聽(tīng)課

      亚洲另类欧美综合久久图片区_亚洲中文字幕日产无码2020_欧美日本一区二区三区桃色视频_亚洲AⅤ天堂一区二区三区

      
      

      1. 日韩在线视频网站 | 日韩成人AV片在线观看 | 久久99一区二区五月天 | 中文AV网址在线观看 | 日韩国产欧美一区二区三区 | 精品少妇一区二 |