| 
 | 
 
盖莫音频引擎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/ 
 
头文件全文如下: 
 
 
//! 盖莫游戏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(void) const = 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-> lay("..\\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; 
} 
 
 
 |   
 
 
 
 |