• <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>
            Cpper
            C/C++高級(jí)工程師 Android高級(jí)軟件工程師 IT集成工程師 音頻工程師 熟悉c,c++,java,c#,py,js,asp等多種語(yǔ)言 程序猿

            蓋莫音頻引擎1.4.2發(fā)布
            1.支持平臺(tái)win7,xp,vista
            2.支持語(yǔ)言c++
            3.支持編譯器vc6.0,vc7.1,vc8,vc9,devc++,codeblock
            4.支持音頻格式flac,aiff,wav,it,mod,s3m,xm,ogg,mp3
            5.播放模式:多線程流式播放
            6.使用多線程處理音頻錄入

            蓋莫音頻引擎系列的最大特點(diǎn):簡(jiǎn)單易用

            可能問(wèn)題:
            1.為啥不支持各種音效?
               當(dāng)前為alpha版本,betha版會(huì)加入的
            2.是否支持xbox,iphone?
               當(dāng)前不支持.不過(guò)后者在考慮之列
            3.為啥不支持midi?
               以后會(huì)支持的
            4.是否支持Python等語(yǔ)言?
               以后會(huì)支持的  
            5.是否支持播放壓縮包中的音頻?
               下一版本會(huì)的(播放內(nèi)存音頻)
            6.業(yè)余使用是否收費(fèi)?
               不收費(fèi),只需要告訴一聲即可
            7.商業(yè)使用是否收費(fèi)?
               需要一點(diǎn)維護(hù)費(fèi)
            8.音頻這塊比較簡(jiǎn)單,自行設(shè)計(jì)一個(gè)豈不更好?
               自行設(shè)計(jì)成本遠(yuǎn)高于使用本引擎
            0.弄這個(gè)多久了?
               3年吧
            10.使用的時(shí)候?yàn)樯杜艹鰜?lái)一個(gè)log文件?
               不出來(lái)才奇怪
            11.當(dāng)前版本功能是否達(dá)到游戲開(kāi)發(fā)要求
               一般游戲足以
            12.非游戲開(kāi)發(fā)領(lǐng)域是否可以使用?
               當(dāng)前可以
            13.去那里下載?
               下面的鏈接地址
            14.其他問(wèn)題請(qǐng)發(fā)郵件到:ccsdu2004@yahoo.com.cn咨詢

            下載鏈接:
            1.vc版本 可使用編譯器vc6.0,vc7.1,vc8,vc9:
               http://www.pudn.com/downloads258/sourcecode/game/detail1192191.html
               http://download.csdn.net/source/2403577
            2.gcc版本 可使用編譯器devc++,codeblock
               http://www.pudn.com/downloads258/sourcecode/multimedia/audio/detail1192125.html   
               http://ccsdu2004.download.csdn.net/

               http://download.csdn.net/source/2403658



            頭文件全文如下:

            //! 蓋莫游戲3d音頻引擎是成都蓋莫軟件技術(shù)工作室推出的一款專門
            //! 面向游戲開(kāi)發(fā)的音頻庫(kù),該庫(kù)具有使用簡(jiǎn)介,功能強(qiáng)大的功能
            //! 本音頻庫(kù)使用于非商業(yè)產(chǎn)品不收取任何費(fèi)用
            //! websize:www.gaimo.net
            //! email:ccsdu2004@yahoo.com.cn
            //! telephone:+86-028-67607663,
            //! fax:      +86-028-67607665
            //! 版本更新list.
            /*
            !==========================================================================
             *  2010.01.22 版本:1.0.0
             *     提供功能:支持wav,ogg,mp3格式
             *              使用多線程流式播放
             *              簡(jiǎn)單易用的程序接口 
             *     使用本版本需要安裝OpenAL驅(qū)動(dòng)     
             ***************************************************************************
            */
            /*!==========================================================================
             *  2010.03.20 版本:1.1.0
             *     提供功能:真3d音效,及幾個(gè)音效 
             *     使用本版本需要安裝OpenAL驅(qū)動(dòng)     
             ***************************************************************************
            */
             
            /*!==========================================================================
             *  2010.05.05 版本:1.2.8
             *     增加功能:支持音頻錄入到文件(當(dāng)前僅為wav格式) 
             *     增加了對(duì):it,s3m,xm,mod4種音樂(lè)文件的支持
             *     修改了幾個(gè)接口
             *     使用本版本需要安裝OpenAL驅(qū)動(dòng)     
             ***************************************************************************
            */
             
            /*!==========================================================================
             * 1.4.2 alpha版本修改說(shuō)明(本發(fā)布版本) 
             *     1.平臺(tái)支持:xp,vista,win7
             *     2.編譯器支持vc6,vc7,vc9,codeblock,devc++
             *     3.提供pdf說(shuō)明文檔一份
             *     4.增加對(duì)aiff,flac,midi音頻格式的支持
             *     5.改用多線程錄入音頻 
             ***************************************************************************
            */
             
            /*!==========================================================================
             * 1.5.0版本展望
             *     1.語(yǔ)種方面:考慮對(duì)C#,Python,Lua,易語(yǔ)言的綁定
             *     2.平臺(tái)方面:考慮對(duì)Linux的支持
             *     3.支持播放內(nèi)存音頻
             *     4.音效方面(支持音效待定)
             *     5.音頻格式增加對(duì)APE,WMA的支持
             ***************************************************************************
            */ 
             
            /*!==========================================================================
             * 蓋莫音頻引擎發(fā)展方向
             *     1.對(duì)多平臺(tái)的支持(含mac,xbox,unix)
             *     2.對(duì)多語(yǔ)言的支持(C#,Python,Dephi,易語(yǔ)言,)
             *     3.脫離OpenAL音頻接口
             *     4.全方位的音效支持
             ***************************************************************************
            */ 
             
            /*!==========================================================================
             * 蓋莫音頻引擎設(shè)計(jì)的原則和宗旨
             *     1.針對(duì)游戲開(kāi)發(fā),在保持使用極其方便的基礎(chǔ)之上滿足游戲音頻的各類需要
             ***************************************************************************
            */  
            #ifndef GAIMO_AUDIODEVICE_HPP
            #define GAIMO_AUDIODEVICE_HPP

            ////////////////////////////////////////////////////////////
            /// 頭文件包含
            ////////////////////////////////////////////////////////////
            #include <string>

            #ifdef G_ENGINE
              
            #error 蓋莫游戲引擎內(nèi)置蓋莫音頻引擎! 
            #endif 

            #if defined(_WIN32) || (defined(__WIN32__)) || defined(WIN32) 
               
            #define G_WIN32  
            #endif  

            #ifndef __cplusplus
                
            #error 請(qǐng)使用c++編譯器
            #endif

            #ifndef G_CALL
            #  ifdef G_WIN32
            #    define G_CALL __stdcall
            #  
            else
            #    define G_CALL __stdcall
            #  endif
            #endif

            #if !defined(G_DLL_API) && defined(G_WIN32)
                
            #if defined(BUILDING_DLL)
                    
            #define G_DLL_API __declspec(dllexport)
                
            #else
                    
            #define G_DLL_API __declspec(dllimport)
                
            #endif
            #endif 

            #define G_FUNC(ret) extern "C" G_DLL_API ret 

            #ifndef NULL
            #define NULL 0
            #endif 

            typedef unsigned 
            char  uchar8;
            typedef unsigned 
            int   uint;
            typedef unsigned 
            char  uint8;
            typedef signed   
            short int16;
            typedef unsigned 
            short uint16;
            typedef signed   
            int   int32; 
            typedef std::
            string    engine_string; 

            namespace core 
            {
                      
            ////////////////////////////////////////////////////////
            /// 定義引擎引用計(jì)數(shù)類
            ////////////////////////////////////////////////////////     
            class RefCount
            {
            public:
                
            ////////////////////////////////////////////////////////////
                
            /// 引用計(jì)數(shù)構(gòu)造函數(shù)
                
            ////////////////////////////////////////////////////////////
                RefCount(): refcnt(1),auto_del(true){}

                
            ////////////////////////////////////////////////////////////
                
            /// 引用計(jì)數(shù)析構(gòu)函數(shù)
                
            ////////////////////////////////////////////////////////////
                virtual ~RefCount(){}
                
                
            ////////////////////////////////////////////////////////////
                
            /// 使用自刪除機(jī)制
                
            ////////////////////////////////////////////////////////////    
                void SetAutoDel(bool able = true){auto_del = able;}
                
                
            ////////////////////////////////////////////////////////////
                
            /// 檢測(cè)是否為自刪除機(jī)制
                
            ////////////////////////////////////////////////////////////
                const bool GetAutoDel()const{return auto_del;}
                
                
            ////////////////////////////////////////////////////////////
                
            /// 增加對(duì)象引用計(jì)數(shù)
                
            ////////////////////////////////////////////////////////////
                void Grab()const{++refcnt;}; 
             
                
            ////////////////////////////////////////////////////////////
                
            /// 減少對(duì)象引用計(jì)數(shù)
                
            ////////////////////////////////////////////////////////////
                bool Drop() const
                {
                    
            --refcnt;
                    
            if (refcnt == 0 && auto_del == true)
                    {
                        delete 
            this;
                        
            return true;
                    }
                    
            return false;
                }

                
            ////////////////////////////////////////////////////////////
                
            /// 獲取引用計(jì)數(shù)
                
            ////////////////////////////////////////////////////////////
                int GetRefCnt()const{return refcnt;}; 
             
            private:
                mutable 
            int  refcnt;
                
            bool    auto_del; 
            };

            ////////////////////////////////////////////////////////
            /// 模板RefPtr用于基于計(jì)數(shù)的對(duì)象管理
            /// 所有對(duì)象都必須要從RefCount繼承之
            ////////////////////////////////////////////////////////
            template<class T>
            class RefPtr
            {
            public:
                RefPtr(T
            * object = NULL)
                {   
                    
            this->object = object;
                    
            if(this->object)
                       
            object->Grab();
                }
                
                RefPtr(
            const RefPtr<T>& other)
                {
                    
            object = NULL;
                    
            *this = other;
                }
                
                
            ~RefPtr() 
                {
                    
            if(object)
                       
            object->Drop();
                    
            object = NULL;
                }
             
                RefPtr
            <T>& operator=(const RefPtr<T>& other)
                {
                    
            if (other)
                       other
            ->Grab();
                    
            if (object)
                       
            object->Drop();
                    
            object = other.get();
                    
            return *this;
                }
                
                RefPtr
            & operator=(T* other)
                {
                    
            if (other)
                        other
            ->Grab(); 
                     
            if (object)
                        
            object->Drop();
                    
            object = other;
                    
            return *this;
                }
                
                
            void swap(RefPtr<T>& other)
                {
                    T
            * tmp = other.get();
                    other 
            = object
                    
            object = tmp;
                }
                
                
            void reset(T* other){*this = other;}
                T
            * get() const {return object;}
                T
            * operator->() const{return object;}
                T
            & operator*() const{return *object;}
                
            bool operator<(const RefPtr<T>& other)const{return object < other.get();}
                
            operator bool() const {return object != NULL;}
            protected:
                T
            *   object;
            };

            /////////////////////////////////////////////////////////
            //! 枚舉音頻文件格式
            /////////////////////////////////////////////////////////
            enum AUDIO_FILE_TYPE
            {   
                
            //! WAV音頻格式
                AUDIO_FILE_TYPE_WAV = 0,  //! 支持
                
            //! OGG音頻格式
                AUDIO_FILE_TYPE_OGG,      //! 支持
                
            //! MP3音頻格式
                AUDIO_FILE_TYPE_MP3,      //! 支持
                
            //! XM,IT,MOD,S3M格式
                AUDIO_FILE_TYPE_XM,       //! 支持
                AUDIO_FILE_TYPE_IT,       //! 支持
                AUDIO_FILE_TYPE_MOD,      //! 支持
                AUDIO_FILE_TYPE_S3M,      //! 支持
                
            //! AU格式
                AUDIO_FILE_TYPE_AU,       
                
            //! AIFF格式 
                AUDIO_FILE_TYPE_AIFF,     //! 支持
                
            //! 微軟WMA格式
                AUDIO_FILE_TYPE_WMA,       
                
            //! APE壓縮格式
                AUDIO_FILE_TYPE_APE, 
                
            //! MIDI音樂(lè)格式
                AUDIO_FILE_TYPE_MIDI,
                
            //! FLAC音頻格式
                AUDIO_FILE_TYPE_FLAC,     //! 支持
                
            //! 空的音頻格式
                AUDIO_FILE_TYPE_NULL
            };

            ////////////////////////////////////////////////////////////
            /// 枚舉音頻音效距離模型
            ////////////////////////////////////////////////////////////    
            enum AUDIO_DISTANCE_MODE
            {
                AUDIO_DISTANCE_MODEL 
            = 0,
                AUDIO_INVERSE_DISTANCE,
                AUDIO_INVERSE_DISTANCE_CLAMPED,
                AUDIO_LINEAR_DISTANCE,
                AUDIO_LINEAR_DISTANCE_CLAMPED,
                AUDIO_EXPONENT_DISTANCE,
                AUDIO_EXPONENT_DISTANCE_CLAMPED,
                AUDIO_DISTANCE_MODE_NULL
            };    

            /////////////////////////////////////////////////////////
            //! 枚舉音效類型
            /////////////////////////////////////////////////////////
            enum AUDIO_EFFECT_TYPE  
            {
                AUDIO_EFFECT_TYPE_REVERB 
            = 0,    
                AUDIO_EFFECT_TYPE_EFXREVERB,
                AUDIO_EFFECT_TYPE_CHORUS,
                AUDIO_EFFECT_TYPE_DISTORTION,
                AUDIO_EFFECT_TYPE_ECHO,
                AUDIO_EFFECT_TYPE_FLANGER,
                AUDIO_EFFECT_TYPE_FREQUENCY_SHIFTER,
                AUDIO_EFFECT_TYPE_VOCAL_MORPHER,
                AUDIO_EFFECT_TYPE_PITCH_SHIFTER,
                AUDIO_EFFECT_TYPE_RING_MODULATOR,
                AUDIO_EFFECT_TYPE_AUTOWAH,
                AUDIO_EFFECT_TYPE_COMPRESSOR,
                AUDIO_EFFECT_TYPE_EQUALIZER,
                AUDIO_EFFECT_TYPE_COUNT,
                AUDIO_EFFECT_TYPE_NULL
            };

            /////////////////////////////////////////////////////////
            //! 枚舉音頻過(guò)濾器類型
            /////////////////////////////////////////////////////////
            enum AUDIO_FILTER_TYPE 
            {
                AUDIO_FILTER_TYPE_LOWPASS,
                AUDIO_FILTER_TYPE_HIGHPASS,
                AUDIO_FILTER_TYPE_BANDPASS,
                AUDIO_FILTER_TYPE_COUNT,
                AUDIO_FILTER_TYPE_NULL
            };

            //! 定義默認(rèn)空間音速
            const float AUDIO_SPACE_VELOCITY = 343.0f;

            //! 定義默認(rèn)多普勒因子
            const float AUDIO_DOPPLER_FACTOR = 1.0f;

            /////////////////////////////////////////////////////////
            /// 定義音頻對(duì)象基類
            /////////////////////////////////////////////////////////
            class AudioObject : public RefCount
            {
            public
                
            /////////////////////////////////////////////////////
                //! 設(shè)置,獲取音頻對(duì)象位置
                /////////////////////////////////////////////////////
                virtual void SetPosition(float x,float y,float z) = 0;
                
            virtual void GetPosition(float &x,float &y,float &z) = 0
                
                
            /////////////////////////////////////////////////////
                //! 設(shè)置,獲取音頻對(duì)象方向
                /////////////////////////////////////////////////////
                virtual void SetDirection(float dirx,float diry,float dirz) = 0;
                
            virtual void GetDirection(float &dirx,float &diry,float &dirz) = 0
             
                
            /////////////////////////////////////////////////////
                //! 設(shè)置,獲取音頻對(duì)象速度
                /////////////////////////////////////////////////////
                virtual void SetVelocity(float velx,float vely,float velz) = 0;
                
            virtual void GetVelocity(float &velx,float &vely,float &velz) = 0;

                
            ////////////////////////////////////////////////////
                //! 移動(dòng)音頻對(duì)象(相對(duì)于上次的位置的偏移量)
                ////////////////////////////////////////////////////       
                virtual void Move(float offsetx,float offsety,float offsetz) = 0;       
            };

            /////////////////////////////////////////////////////////
            /// 定義音頻過(guò)濾器基類
            /////////////////////////////////////////////////////////
            class AudioFilter : public RefCount
            {
            public:
                
            ////////////////////////////////////////////////////////
                //! 設(shè)置,獲取音頻過(guò)濾器音量[0,1]
                //////////////////////////////////////////////////////// 
                virtual bool  SetVolume(const float& volume) = 0;
                
            virtual float GetVolume()const = 0;

                
            ////////////////////////////////////////////////////////
                //! 設(shè)置,獲取低頻音量
                //////////////////////////////////////////////////////// 
                virtual bool  SetLowVolume(const float &volume) = 0;
                
            virtual float GetLowVolume()const = 0;
                
                
            ////////////////////////////////////////////////////////
                //! 設(shè)置,獲取高頻頻音量
                //////////////////////////////////////////////////////// 
                virtual bool  SetHighVolume(const float &volume) = 0;
                
            virtual float GetHighVolume() const = 0;    
                    
                
            ////////////////////////////////////////////////////////
                //! 檢測(cè)過(guò)濾器是否合法
                ////////////////////////////////////////////////////////
                virtual bool IsValid() const = 0;
            };

            /////////////////////////////////////////////////////////
            /// 定義音頻聽(tīng)者基類
            /////////////////////////////////////////////////////////
            class AudioListener : public AudioObject
            {
            public:
                
            /////////////////////////////////////////////////////
                //! 設(shè)置,獲取全局音量(0.0f,1.0f)
                /////////////////////////////////////////////////////        
                virtual void  SetGlobalVolume(float volume) = 0
                
            virtual float GetGlobalVolume()const = 0;     
            };

            ////////////////////////////////////////////////////////
            //! 定義蓋莫音頻引擎音源類
            ////////////////////////////////////////////////////////
            class AudioSource : public AudioObject
            {
            public:
                
            ////////////////////////////////////////////////////
                //! 播放指定音頻文件(2D模式)
                ////////////////////////////////////////////////////
                virtual bool Play(const engine_string& audiofile,bool loop = false= 0
                
                
            ////////////////////////////////////////////////////
                //! 播放指定音頻文件(3D模式)(參數(shù):音頻文件名字,是否循環(huán)播放,音頻穿透能力,最小音距,最小音距)
                ////////////////////////////////////////////////////
                virtual bool Play(const engine_string& audiofile,bool loop,float mindist,float maxdist,float strength = 0.3f= 0;    

                
            ////////////////////////////////////////////////////
                //! 停止,暫停播放音頻
                ////////////////////////////////////////////////////
                virtual bool Stop() = 0;
                
            virtual bool Pause() = 0;

                
            ///////////////////////////////////////////////////
                //! 檢測(cè)音源狀態(tài)函數(shù) 
                ///////////////////////////////////////////////////
                virtual bool IsPlay()const = 0;
                
            virtual bool IsPause()const = 0;
                
            virtual bool IsStop()const = 0
                
                
            ///////////////////////////////////////////////////
                //! 設(shè)置,獲取音頻增益[0.0f,1.0f]
                ///////////////////////////////////////////////////
                virtual void  SetVolume(float gain) = 0;
                
            virtual float GetVolume()const = 0;  
                
            virtual void  SetMaxVolume(float gain) = 0;
                
            virtual float GetMinVolume()const = 0;
                
            virtual void  SetMinVolume(float gain) = 0;
                
            virtual float GetMaxVolume()const = 0;    

                
            ///////////////////////////////////////////////////
                
            /// 設(shè)置,獲取音源最大,最小傳播距離(僅對(duì)3D播放有效)
                
            ///////////////////////////////////////////////////
                virtual void SetMaxDistance(float distance) = 0;
                
            virtual void GetMaxDistance(float &distance)= 0;
                
            virtual void SetMinDistance(float distance) = 0;
                
            virtual void GetMinDistance(float &distance)= 0;
                
                
            ///////////////////////////////////////////////////
                
            /// 設(shè)置,獲取音源錐(內(nèi)錐,外錐,外增益)(僅對(duì)3D播放有效)
                
            ///////////////////////////////////////////////////
                virtual void SetAudioCone(float innerangle,float outerangle,float outergain) = 0;
                
            virtual void GetAudioCone(float &innerangle,float &outerangle,float &outergain) = 0;  
            };

            //////////////////////////////////////////////////////
            /// 定義音頻錄入類接口
            //////////////////////////////////////////////////////
            class AudioCapture : public RefCount
            {
            public:
                
            //////////////////////////////////////////////////
                //! 捕獲,停止捕獲音頻數(shù)據(jù) 
                //////////////////////////////////////////////////
                virtual void CaptureAudio() = 0;    
                
            virtual void CaptureStop() = 0;    
            };

            //////////////////////////////////////////////////////
            //! 定義音頻設(shè)備基類
            //////////////////////////////////////////////////////
            class AudioDevice : public RefCount 
            {
            public:      
                
            /////////////////////////////////////////////////
                //! 獲取音頻引擎版本號(hào)
                /////////////////////////////////////////////////
                virtual engine_string GetVerson() const = 0;

                
            /////////////////////////////////////////////////
                //! 獲取音頻引擎作者
                /////////////////////////////////////////////////
                virtual engine_string GetMaker() const = 0;

                
            /////////////////////////////////////////////////
                //! 查詢音頻設(shè)備是否支持指定格式的音頻文件
                /////////////////////////////////////////////////
                virtual bool IsSupport(const AUDIO_FILE_TYPE& type)const = 0;

                
            /////////////////////////////////////////////////
                //! 抓取音頻音源指針(最大可獲取255個(gè)音源)
                /////////////////////////////////////////////////
                virtual RefPtr<AudioSource>  GetAudioSource()const = 0;

                
            /////////////////////////////////////////////////
                //! 獲取聽(tīng)者指針(全局唯一)(參數(shù):位置)
                /////////////////////////////////////////////////
                virtual RefPtr<AudioListener> GetAudioListener(float x,float y,float z)= 0
                
                
            /////////////////////////////////////////////////
                //! 獲取音頻捕獲設(shè)備指針(參數(shù)為音頻名字)(當(dāng)前僅僅支持wav格式)(全局唯一) 
                /////////////////////////////////////////////////
                virtual RefPtr<AudioCapture> GetAudioCapture(const engine_string& name = "capture")const = 0;     

                
            /////////////////////////////////////////////////
                //! 設(shè)置,獲取音效作用單位
                /////////////////////////////////////////////////
                virtual void  SetMetersPerUnit(float meters) = 0;
                
            virtual float GetMetersPerUnit(voidconst = 0;  

                
            /////////////////////////////////////////////////
                //! 獲取同時(shí)支持的音頻源最大音效個(gè)數(shù)
                /////////////////////////////////////////////////
                virtual int   GetMaxEffectMuber()const = 0
                
                
            /////////////////////////////////////////////////
                //! 設(shè)置多普勒參數(shù)(默認(rèn)為1.0f,343.3)
                /////////////////////////////////////////////////
                virtual void  SetDoppler(float factor,float vel) = 0;

                
            /////////////////////////////////////////////////
                //! 設(shè)置音頻世界距離模型
                /////////////////////////////////////////////////
                virtual void  SetDistanceModel(const AUDIO_DISTANCE_MODE &model) = 0;
            };

            /////////////////////////////////////////////////////
            //! 初始化蓋莫音頻設(shè)備并返回音頻設(shè)備指針(初始化失敗則返回NULL)
            /////////////////////////////////////////////////////
            G_FUNC(AudioDevice*) InitAudioDevice();

            /////////////////////////////////////////////////////
            //! 卸載蓋莫音頻設(shè)備(釋放相關(guān)資源)
            /////////////////////////////////////////////////////
            G_FUNC(void)         TerminateAudioDevice();

            }

            #endif
            //! maker:ccsdu2004

            附帶4個(gè)小demo如下:
            1.
            /*!==========================================================================
             *
             *  蓋莫游戲引擎(GaiMo Game Engine)
             *
             *  版權(quán)所有 (C) 2009-2009 成都蓋莫軟件技術(shù)工作室 保留所有權(quán)利
             *  Copyright (C) 成都蓋莫軟件技術(shù)工作室.  All Rights Reserved.
             *
             *  了解更多情況,請(qǐng)?jiān)L問(wèn) 
            http://www.gaimo.net
             ***************************************************************************
            */
            #include 
            <iostream>
            #include 
            <conio.h>
            #include 
            <stdio.h>
            #include 
            <stdlib.h>
            #include 
            <AudioDevice.hpp>

            int main()
            {
                std::cout
            <<"歡迎使用蓋莫音頻引擎!"<<std::endl;
                
            //! 初始化設(shè)備并獲取音頻設(shè)備指針
                core::AudioDevice *device = core::InitAudioDevice();

                
            //! 獲取音源指針
                core::RefPtr<core::AudioSource> source = device->GetAudioSource();

                
            //! 播放給定音頻文件
                std::cout<<"play:"<<source->Play("..\\audio//愛(ài)笑的眼睛.aif",true)<<std::endl;

                
            while(getche() != 'q');

                core::TerminateAudioDevice();
                system(
            "pause");

                
            return EXIT_SUCCESS;
            }


            2.
            /*!==========================================================================
             *
             *  蓋莫游戲引擎(GaiMo Game Engine)
             *
             *  版權(quán)所有 (C) 2009-2009 成都蓋莫軟件技術(shù)工作室 保留所有權(quán)利
             *  Copyright (C) 成都蓋莫軟件技術(shù)工作室.  All Rights Reserved.
             *
             *  了解更多情況,請(qǐng)?jiān)L問(wèn) 
            http://www.gaimo.net
             ***************************************************************************
            */
            #include 
            <AudioDevice.hpp>
            #include 
            <conio.h>
            #include 
            <cmath>
            #include 
            <iostream>
            #include 
            <stdio.h>
            #include 
            <stdlib.h>

            #define MAX_DST 10
            #define MAX_POS 20

            int main()
            {
                std::cout
            <<"歡迎使用蓋莫音頻引擎!"<<std::endl;
                core::AudioDevice 
            *device = core::InitAudioDevice();    ;

                
            //! 獲取一個(gè)音源
                core::RefPtr<core::AudioSource> source = device->GetAudioSource();

                std::cout
            <<"play:"<<source->Play("..\\audio//主題.wav",true,0,MAX_DST)<<std::endl;

                
            float itr = 0;
                
            while(1)
                {
                    
            float x = MAX_POS * cosf(itr);
                    
            float z = MAX_POS * cosf(itr);
                    source
            ->Move(x,0,z);
                    itr
            += 0.0001*0.017453293f;
                }

                core::TerminateAudioDevice();
                system(
            "pause");

                
            return EXIT_SUCCESS;
            }



            3.
            #include <AudioDevice.hpp>
            #include 
            <iostream>
            #include 
            <conio.h>
            #include 
            <windows.h>

            #define CAPTURE_TIME 30000

            int main()
            {
                std::cout
            <<"歡迎使用蓋莫音頻引擎!"<<std::endl; 
                
            //! 初始化設(shè)備并獲取音頻設(shè)備指針
                core::AudioDevice *device = core::InitAudioDevice();
                
                
            //! 獲取音源指針
                core::RefPtr<core::AudioSource> source = device->GetAudioSource();
                
                
            //! 獲取音頻捕獲指針
                core::RefPtr<core::AudioCapture> capture = device->GetAudioCapture("capture");

                
            //! 播放給定音頻文件 
                std::cout<<"play:"<<source->Play("..\\audio//glance.xm",true)<<std::endl;  

                capture
            ->CaptureAudio();
                
                unsigned 
            long time = timeGetTime(); 
                
            while(1)
                {
                    
            if(timeGetTime() - time >  CAPTURE_TIME)
                       
            break;
                }

                capture
            ->CaptureStop();
                
                core::TerminateAudioDevice();

                
            return 1;
            }


            4.
            /*!==========================================================================
             *
             *  蓋莫游戲引擎(GaiMo Game Engine)
             *
             *  版權(quán)所有 (C) 2009-2009 成都蓋莫軟件技術(shù)工作室 保留所有權(quán)利
             *  Copyright (C) 成都蓋莫軟件技術(shù)工作室.  All Rights Reserved.
             *
             *  了解更多情況,請(qǐng)?jiān)L問(wèn) 
            http://www.gaimo.net
             ***************************************************************************
            */
            #include 
            <iostream>
            #include 
            <conio.h>
            #include 
            <AudioDevice.hpp>

            char* mp3  = "..\\audio//DarinPeerless.mp3";
            char* ogg  = "..\\audio//GetOut.ogg";
            char* xm   = "..\\audio//Azure.xm";
            char* s3m  = "..\\audio//Friday.s3m";
            char* mod  = "..\\audio//Gimme the beat boys.mod";
            char* aiff = "..\\audio//愛(ài)笑的眼睛.aif";
            char* flac = "..\\audio//duck.flac";
            short flag = 0;

            int main()
            {    
                std::cout
            <<"歡迎使用蓋莫音頻引擎!"<<std::endl; 
                
            //! 初始化設(shè)備并獲取音頻設(shè)備指針
                core::AudioDevice *device = core::InitAudioDevice();
                
                std::cout
            <<"按鍵0播放mp3"<<std::endl;
                std::cout
            <<"按鍵1播放ogg"<<std::endl;
                std::cout
            <<"按鍵2播放xm"<<std::endl;
                std::cout
            <<"按鍵3播放s3m"<<std::endl;
                std::cout
            <<"按鍵4播放mod"<<std::endl;
                std::cout
            <<"按鍵5播放aiff"<<std::endl;
                std::cout
            <<"按鍵6播放flac"<<std::endl;
                std::cin 
            >> flag;
                std::cout 
            << std::endl;
                
                
            //! 獲取音源指針
                core::RefPtr<core::AudioSource> source = device->GetAudioSource();
                source
            ->SetVolume(1.0f);
                
                
            //! 播放給定音頻文件 
                if(flag == 0)
                    std::cout
            <<"play:"<<source->Play(mp3,true)<<std::endl;  
                
            else if(flag == 1)
                    std::cout
            <<"play:"<<source->Play(ogg,true)<<std::endl; 
                
            else if(flag == 2)
                    std::cout
            <<"play:"<<source->Play(xm,true)<<std::endl;
                
            else if(flag == 3)
                    std::cout
            <<"play:"<<source->Play(s3m,true)<<std::endl;
                
            else if(flag == 4)
                    std::cout
            <<"play:"<<source->Play(mod,true)<<std::endl;
                
            else if(flag == 5)
                    std::cout
            <<"play:"<<source->Play(aiff,true)<<std::endl;
                
            else if(flag == 6)
                    std::cout
            <<"play:"<<source->Play(flac,true)<<std::endl;
                
            while(getche() != 'q');
                
                core::TerminateAudioDevice();
                system(
            "pause");
                 
                
            return EXIT_SUCCESS;
            }


            ..................................................................................................................................................................................................................................
            posted on 2010-05-28 17:36 ccsdu2009 閱讀(1523) 評(píng)論(4)  編輯 收藏 引用 所屬分類: Game引擎
            Comments
            • # re: 蓋莫音頻引擎1.4.2(alpha)來(lái)了
              f
              Posted @ 2010-05-31 16:00
              網(wǎng)上用的最多的是和H.264配合的Advanced Audio Coding音頻格式,youku上面都是那種格式,這里卻沒(méi)有支持到,不能不說(shuō)是一種遺憾。  回復(fù)  更多評(píng)論   
            • # re: 蓋莫音頻引擎1.4.2(alpha)來(lái)了
              ccsdu2009
              Posted @ 2010-05-31 16:14
              @f
              aac格式?
              acc和ape,mid以后肯定都會(huì)支持的
              這些只是解碼問(wèn)題  回復(fù)  更多評(píng)論   
            • # re: 蓋莫音頻引擎1.4.2(alpha)來(lái)了
              小時(shí)候可靚了
              Posted @ 2010-06-01 14:20
              你這搞得有點(diǎn)多哇!  回復(fù)  更多評(píng)論   
            • # re: 蓋莫音頻引擎1.4.2(alpha)來(lái)了
              ccsdu2009
              Posted @ 2010-06-01 14:40
              @小時(shí)候可靚了
              啥多啊?  回復(fù)  更多評(píng)論   
             
            久久婷婷五月综合成人D啪| 久久99久国产麻精品66| 国内精品久久久久久中文字幕| 久久精品这里热有精品| 99久久亚洲综合精品成人| 91精品国产综合久久香蕉| 久久久国产精品| 久久精品日日躁夜夜躁欧美| 日日噜噜夜夜狠狠久久丁香五月| 午夜人妻久久久久久久久| www.久久热.com| 久久国产成人| 亚洲精品高清国产一线久久| AV色综合久久天堂AV色综合在| 久久久精品一区二区三区| 久久亚洲天堂| 久久永久免费人妻精品下载| 久久综合狠狠色综合伊人| 日韩亚洲国产综合久久久| 亚洲精品无码久久久久sm| 久久亚洲欧美日本精品| 手机看片久久高清国产日韩| 久久久久亚洲AV片无码下载蜜桃| 中文字幕一区二区三区久久网站| 性做久久久久久免费观看| 久久夜色精品国产噜噜亚洲AV| 国产精品成人99久久久久| 久久久SS麻豆欧美国产日韩| 精品久久777| 久久久SS麻豆欧美国产日韩| 久久精品国产亚洲综合色| 欧美黑人激情性久久| 韩国无遮挡三级久久| 久久天天躁狠狠躁夜夜躁2014| 国产精品久久久久9999| 久久91精品国产91久| 久久福利青草精品资源站免费| 久久精品国产清自在天天线 | 国内精品久久久久久野外| 天天影视色香欲综合久久| 久久久久综合网久久|