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 阅读(1506) 评论(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
    @小时候可靓了
    啥多啊?  回复  更多评论   

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理