青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Cpper
C/C++高級工程師 Android高級軟件工程師 IT集成工程師 音頻工程師 熟悉c,c++,java,c#,py,js,asp等多種語言 程序猿

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

蓋莫音頻引擎系列的最大特點:簡單易用

可能問題:
1.為啥不支持各種音效?
   當前為alpha版本,betha版會加入的
2.是否支持xbox,iphone?
   當前不支持.不過后者在考慮之列
3.為啥不支持midi?
   以后會支持的
4.是否支持Python等語言?
   以后會支持的  
5.是否支持播放壓縮包中的音頻?
   下一版本會的(播放內存音頻)
6.業余使用是否收費?
   不收費,只需要告訴一聲即可
7.商業使用是否收費?
   需要一點維護費
8.音頻這塊比較簡單,自行設計一個豈不更好?
   自行設計成本遠高于使用本引擎
0.弄這個多久了?
   3年吧
10.使用的時候為啥跑出來一個log文件?
   不出來才奇怪
11.當前版本功能是否達到游戲開發要求
   一般游戲足以
12.非游戲開發領域是否可以使用?
   當前可以
13.去那里下載?
   下面的鏈接地址
14.其他問題請發郵件到: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音頻引擎是成都蓋莫軟件技術工作室推出的一款專門
//! 面向游戲開發的音頻庫,該庫具有使用簡介,功能強大的功能
//! 本音頻庫使用于非商業產品不收取任何費用
//! 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格式
 *              使用多線程流式播放
 *              簡單易用的程序接口 
 *     使用本版本需要安裝OpenAL驅動     
 ***************************************************************************
*/
/*!==========================================================================
 *  2010.03.20 版本:1.1.0
 *     提供功能:真3d音效,及幾個音效 
 *     使用本版本需要安裝OpenAL驅動     
 ***************************************************************************
*/
 
/*!==========================================================================
 *  2010.05.05 版本:1.2.8
 *     增加功能:支持音頻錄入到文件(當前僅為wav格式) 
 *     增加了對:it,s3m,xm,mod4種音樂文件的支持
 *     修改了幾個接口
 *     使用本版本需要安裝OpenAL驅動     
 ***************************************************************************
*/
 
/*!==========================================================================
 * 1.4.2 alpha版本修改說明(本發布版本) 
 *     1.平臺支持:xp,vista,win7
 *     2.編譯器支持vc6,vc7,vc9,codeblock,devc++
 *     3.提供pdf說明文檔一份
 *     4.增加對aiff,flac,midi音頻格式的支持
 *     5.改用多線程錄入音頻 
 ***************************************************************************
*/
 
/*!==========================================================================
 * 1.5.0版本展望
 *     1.語種方面:考慮對C#,Python,Lua,易語言的綁定
 *     2.平臺方面:考慮對Linux的支持
 *     3.支持播放內存音頻
 *     4.音效方面(支持音效待定)
 *     5.音頻格式增加對APE,WMA的支持
 ***************************************************************************
*/ 
 
/*!==========================================================================
 * 蓋莫音頻引擎發展方向
 *     1.對多平臺的支持(含mac,xbox,unix)
 *     2.對多語言的支持(C#,Python,Dephi,易語言,)
 *     3.脫離OpenAL音頻接口
 *     4.全方位的音效支持
 ***************************************************************************
*/ 
 
/*!==========================================================================
 * 蓋莫音頻引擎設計的原則和宗旨
 *     1.針對游戲開發,在保持使用極其方便的基礎之上滿足游戲音頻的各類需要
 ***************************************************************************
*/  
#ifndef GAIMO_AUDIODEVICE_HPP
#define GAIMO_AUDIODEVICE_HPP

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

#ifdef G_ENGINE
  
#error 蓋莫游戲引擎內置蓋莫音頻引擎! 
#endif 

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

#ifndef __cplusplus
    
#error 請使用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 
{
          
////////////////////////////////////////////////////////
/// 定義引擎引用計數類
////////////////////////////////////////////////////////     
class RefCount
{
public:
    
////////////////////////////////////////////////////////////
    
/// 引用計數構造函數
    
////////////////////////////////////////////////////////////
    RefCount(): refcnt(1),auto_del(true){}

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

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

////////////////////////////////////////////////////////
/// 模板RefPtr用于基于計數的對象管理
/// 所有對象都必須要從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音樂格式
    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
};

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

//! 定義默認空間音速
const float AUDIO_SPACE_VELOCITY = 343.0f;

//! 定義默認多普勒因子
const float AUDIO_DOPPLER_FACTOR = 1.0f;

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

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

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

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

/////////////////////////////////////////////////////////
/// 定義音頻聽者基類
/////////////////////////////////////////////////////////
class AudioListener : public AudioObject
{
public:
    
/////////////////////////////////////////////////////
    //! 設置,獲取全局音量(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模式)(參數:音頻文件名字,是否循環播放,音頻穿透能力,最小音距,最小音距)
    ////////////////////////////////////////////////////
    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;

    
///////////////////////////////////////////////////
    //! 檢測音源狀態函數 
    ///////////////////////////////////////////////////
    virtual bool IsPlay()const = 0;
    
virtual bool IsPause()const = 0;
    
virtual bool IsStop()const = 0
    
    
///////////////////////////////////////////////////
    //! 設置,獲取音頻增益[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;    

    
///////////////////////////////////////////////////
    
/// 設置,獲取音源最大,最小傳播距離(僅對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;
    
    
///////////////////////////////////////////////////
    
/// 設置,獲取音源錐(內錐,外錐,外增益)(僅對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:
    
//////////////////////////////////////////////////
    //! 捕獲,停止捕獲音頻數據 
    //////////////////////////////////////////////////
    virtual void CaptureAudio() = 0;    
    
virtual void CaptureStop() = 0;    
};

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

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

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

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

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

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

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

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

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

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

}

#endif
//! maker:ccsdu2004

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

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

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

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

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

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

    
return EXIT_SUCCESS;
}


2.
/*!==========================================================================
 *
 *  蓋莫游戲引擎(GaiMo Game Engine)
 *
 *  版權所有 (C) 2009-2009 成都蓋莫軟件技術工作室 保留所有權利
 *  Copyright (C) 成都蓋莫軟件技術工作室.  All Rights Reserved.
 *
 *  了解更多情況,請訪問 
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();    ;

    
//! 獲取一個音源
    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; 
    
//! 初始化設備并獲取音頻設備指針
    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)
 *
 *  版權所有 (C) 2009-2009 成都蓋莫軟件技術工作室 保留所有權利
 *  Copyright (C) 成都蓋莫軟件技術工作室.  All Rights Reserved.
 *
 *  了解更多情況,請訪問 
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//愛笑的眼睛.aif";
char* flac = "..\\audio//duck.flac";
short flag = 0;

int main()
{    
    std::cout
<<"歡迎使用蓋莫音頻引擎!"<<std::endl; 
    
//! 初始化設備并獲取音頻設備指針
    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 閱讀(1542) 評論(4)  編輯 收藏 引用 所屬分類: Game引擎
Comments
  • # re: 蓋莫音頻引擎1.4.2(alpha)來了
    f
    Posted @ 2010-05-31 16:00
    網上用的最多的是和H.264配合的Advanced Audio Coding音頻格式,youku上面都是那種格式,這里卻沒有支持到,不能不說是一種遺憾。  回復  更多評論   
  • # re: 蓋莫音頻引擎1.4.2(alpha)來了
    ccsdu2009
    Posted @ 2010-05-31 16:14
    @f
    aac格式?
    acc和ape,mid以后肯定都會支持的
    這些只是解碼問題  回復  更多評論   
  • # re: 蓋莫音頻引擎1.4.2(alpha)來了
    小時候可靚了
    Posted @ 2010-06-01 14:20
    你這搞得有點多哇!  回復  更多評論   
  • # re: 蓋莫音頻引擎1.4.2(alpha)來了
    ccsdu2009
    Posted @ 2010-06-01 14:40
    @小時候可靚了
    啥多啊?  回復  更多評論   
 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            亚洲国产91| 欧美成人精品在线| 久久字幕精品一区| 亚洲女人天堂av| 亚洲欧美自拍偷拍| 午夜在线一区| 欧美一区二区三区四区在线观看| 亚洲桃花岛网站| 亚洲一区二区久久| 亚洲男人的天堂在线aⅴ视频| 欧美一级视频一区二区| 久久香蕉国产线看观看av| 男女视频一区二区| 亚洲精品视频中文字幕| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 欧美国产在线电影| 欧美午夜电影在线| 午夜亚洲福利在线老司机| 午夜久久久久久| 久久综合色一综合色88| 国产精品久久久久秋霞鲁丝| 欧美国产欧美亚州国产日韩mv天天看完整| 久久久青草婷婷精品综合日韩| 免费在线国产精品| 亚洲毛片av在线| 午夜精品国产精品大乳美女| 久久视频这里只有精品| 欧美婷婷久久| 亚洲成色精品| 亚洲新中文字幕| 久久久久久高潮国产精品视| 亚洲福利在线视频| 最新中文字幕一区二区三区| 亚洲欧美一区二区原创| 欧美丰满少妇xxxbbb| 欧美成人中文字幕在线| 国产日韩精品综合网站| 亚洲精品欧美日韩| 久久精品一二三区| 亚洲欧洲视频| 欧美制服丝袜第一页| 欧美日韩精品欧美日韩精品一 | 亚洲精选视频免费看| 欧美影院视频| 国产精品jvid在线观看蜜臀| 91久久嫩草影院一区二区| 欧美亚洲在线| 日韩午夜激情电影| 免播放器亚洲一区| 好吊妞**欧美| 欧美一级淫片播放口| 99在线视频精品| 欧美激情欧美激情在线五月| 激情综合激情| 久久精品99| 亚洲一区亚洲二区| 欧美性开放视频| 亚洲午夜激情网站| 亚洲精品一区二区三区不| 鲁大师影院一区二区三区| 激情久久久久| 久久久另类综合| 亚洲欧洲av一区二区三区久久| 国产精品家庭影院| 亚洲欧美日韩国产中文| 在线亚洲一区| 欧美日韩精品免费| 亚洲手机在线| 亚洲深夜激情| 国产情人综合久久777777| 亚洲欧美怡红院| 在线精品视频一区二区| 亚洲高清色综合| 欧美h视频在线| 久久精品麻豆| 亚洲成人原创| 亚洲国产乱码最新视频| 美女被久久久| 亚洲精品网址在线观看| 亚洲乱码国产乱码精品精天堂 | 久久久一区二区| 亚洲国产婷婷综合在线精品| 欧美激情视频一区二区三区不卡| 欧美成人一品| 亚洲欧美另类中文字幕| 欧美一级片在线播放| 亚洲国产精品第一区二区三区| 亚洲国产一区在线| 国产精品久久久久77777| 久久精品91久久久久久再现| 乱码第一页成人| 亚洲欧美一区二区在线观看| 久久久人成影片一区二区三区观看| 亚洲高清久久久| 一本色道久久综合亚洲91| 国产一区二区高清不卡| 亚洲国产成人tv| 国产精品日韩高清| 欧美国产综合一区二区| 国产精品久久国产三级国电话系列| 另类图片国产| 欧美视频在线一区二区三区| 久久精品一本| 欧美日韩一区二区免费视频| 久久躁日日躁aaaaxxxx| 欧美日韩视频在线一区二区| 久久久噜噜噜久久久| 欧美日韩视频免费播放| 欧美成人69| 国产午夜精品美女视频明星a级| 欧美国产成人在线| 国产精品亚洲一区| 亚洲国产成人av| 国产精品嫩草99av在线| 欧美成人影音| 国产欧美日韩伦理| 一个人看的www久久| 亚洲黄页视频免费观看| 欧美一区二区三区免费观看视频| aa级大片欧美三级| 久久精品最新地址| 99精品视频免费全部在线| 欧美综合二区| 欧美专区在线观看| 欧美视频在线观看免费| 亚洲人成人一区二区在线观看| 又紧又大又爽精品一区二区| 欧美亚洲视频一区二区| 亚洲女人天堂成人av在线| 欧美日韩国产在线看| 欧美成人免费一级人片100| 国产亚洲欧美激情| 亚洲综合成人在线| 亚洲欧美在线免费观看| 欧美午夜片在线观看| 久久精品国产精品| 久久国产日本精品| 国产精品美女久久久久久久 | 香港久久久电影| 午夜精品成人在线视频| 国产精品白丝av嫩草影院| 一区二区三区久久网| 亚洲婷婷免费| 欧美婷婷六月丁香综合色| 日韩手机在线导航| 亚洲影院免费观看| 欧美色视频在线| 亚洲视频每日更新| 性欧美1819性猛交| 国产一区二区在线观看免费| 欧美专区第一页| 久久躁日日躁aaaaxxxx| 红桃视频一区| 欧美va天堂在线| 亚洲国产精品女人久久久| 日韩一区二区免费高清| 欧美日韩中文另类| 亚洲欧美中文另类| 欧美成人精品高清在线播放| 最近中文字幕日韩精品| 欧美日韩黄视频| 亚洲影院色无极综合| 麻豆九一精品爱看视频在线观看免费| 亚洲电影观看| 欧美日韩亚洲精品内裤| 亚洲一区久久久| 久久影院亚洲| 日韩亚洲欧美一区二区三区| 欧美在线视频在线播放完整版免费观看 | 国产日韩精品一区二区三区| 欧美在线视频一区二区三区| 嫩草成人www欧美| 99视频有精品| 国产日韩精品视频一区| 欧美成人免费观看| 亚洲欧美成人在线| 欧美电影在线| 欧美一区二区三区的| 最新日韩在线视频| 国产欧美在线观看| 欧美激情亚洲| 欧美影院在线| av不卡免费看| 亚洲第一免费播放区| 亚洲欧美日韩成人| 亚洲黄色免费| 国产麻豆日韩欧美久久| 欧美—级在线免费片| 欧美一级一区| 一区二区三区免费看| 欧美黄色网络| 久久综合成人精品亚洲另类欧美| 亚洲少妇中出一区| 亚洲国产乱码最新视频| 国产亚洲精品福利| 欧美性淫爽ww久久久久无| 欧美1区2区3区| 久久久噜噜噜| 久久成人国产| 午夜精品一区二区三区在线播放|