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

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| 麻豆精品国产91久久久久久| 亚洲先锋成人| 亚洲麻豆视频| 亚洲高清不卡在线| 亚洲第一成人在线| 狠狠综合久久| 亚洲人成在线播放| 亚洲国产二区| 91久久在线播放| 日韩视频免费在线观看| 亚洲精品偷拍| 久久精品人人做人人爽电影蜜月| av成人黄色| 亚洲深夜福利| 欧美制服丝袜第一页| 欧美一区二区三区播放老司机| 亚洲区欧美区| 亚洲午夜国产一区99re久久 | 免费视频一区二区三区在线观看| 欧美一区深夜视频| 欧美成人国产va精品日本一级| 欧美成人一区在线| 欧美日韩在线一区二区| 国产一区91精品张津瑜| 国内精品99| 国产精品99久久久久久久久久久久| 正在播放日韩| 香蕉成人伊视频在线观看| 久久精品av麻豆的观看方式| 免费看亚洲片| 在线亚洲一区二区| 久久精品视频播放| 农村妇女精品| 国产一区二区三区四区| 亚洲国产色一区| 一本综合精品| 亚洲欧美三级伦理| 激情综合自拍| 亚洲片区在线| 午夜精品美女久久久久av福利| 亚洲欧美日韩一区二区三区在线| 午夜日韩激情| 亚洲成色999久久网站| 99在线热播精品免费| 亚洲电影第1页| 欧美国产先锋| 亚洲精品1区2区| 在线欧美影院| 亚洲另类黄色| 亚洲高清在线| 欧美日韩免费高清| 亚洲午夜小视频| 亚洲黄色视屏| 国产精品99久久久久久久久久久久 | 在线中文字幕一区| 欧美特黄一级| 一区二区欧美国产| 亚洲国产高清一区二区三区| 亚洲新中文字幕| 欧美a一区二区| 亚洲精品乱码久久久久久黑人 | 91久久精品国产91久久性色| 免费欧美电影| 欧美在线一二三四区| 亚洲自拍偷拍一区| 夜夜爽www精品| 欧美激情精品久久久久久大尺度 | 久久视频精品在线| 嫩草国产精品入口| 国产精品一区久久久久| 国产精品国产自产拍高清av王其| 久久精品在线观看| 国产亚洲美州欧州综合国| 亚洲欧美第一页| 麻豆国产精品777777在线| 国产精品黄色| 欧美在线免费视屏| 久久久久久久久久看片| 欧美性jizz18性欧美| 一区二区三区高清视频在线观看| 亚洲一区二区三区涩| 夜夜嗨av一区二区三区网站四季av| 亚洲精品一区二区三| 午夜综合激情| 亚洲美女网站| 国产精品久久国产三级国电话系列| 日韩亚洲欧美综合| 久久国产乱子精品免费女 | 欧美国产日本在线| 亚洲你懂的在线视频| 国产香蕉97碰碰久久人人| 久久精品国产第一区二区三区最新章节 | 欧美午夜一区| 免费在线成人av| 一区二区三区国产精华| 国产精品系列在线| 欧美三级在线视频| 欧美国产一区在线| 久久精品一区蜜桃臀影院| 日韩一区二区免费看| 久久夜色精品国产欧美乱极品| 亚洲级视频在线观看免费1级| 欧美在线观看一二区| 亚洲欧洲一区二区三区| 国产精品观看| 性久久久久久久久| 欧美成人精品| 一本色道久久99精品综合| 猫咪成人在线观看| 9l国产精品久久久久麻豆| 欧美一区二区三区免费大片| 中国av一区| 欧美一区二区视频免费观看 | 另类专区欧美制服同性| 亚洲黄色尤物视频| 激情文学综合丁香| 亚洲人成在线播放| 亚洲综合不卡| 欧美成人午夜免费视在线看片| 麻豆国产精品va在线观看不卡| 欧美韩日一区二区三区| 亚洲国产一区视频| 亚洲第一区色| 99热免费精品在线观看| 久久综合一区| 性高湖久久久久久久久| 99亚洲一区二区| 一区福利视频| 国产精品私人影院| 欧美1区免费| 欧美亚洲综合网| 亚洲欧美春色| 久久青草欧美一区二区三区| 欧美多人爱爱视频网站| 久久久久久一区二区三区| 欧美一级在线播放| 久久精品人人做人人综合| 欧美在线视频日韩| 亚洲欧美日本国产有色| 欧美国产亚洲精品久久久8v| 欧美α欧美αv大片| 99在线精品视频| 欧美劲爆第一页| 亚洲国产高清在线| 久久久视频精品| 亚洲一区二区精品| 国产欧美在线观看| 中日韩视频在线观看| 亚洲日本aⅴ片在线观看香蕉| 久久久久一区二区三区| 激情欧美日韩| 欧美激情偷拍| 国产精品久久婷婷六月丁香| 亚洲精选91| 亚洲国产婷婷综合在线精品| 久久婷婷激情| 国内精品久久久久国产盗摄免费观看完整版 | 香蕉久久a毛片| 久久精品一区中文字幕| 久久久水蜜桃av免费网站| 国产午夜精品久久| 久久手机精品视频| 亚洲三级电影在线观看| 制服丝袜亚洲播放| 国产在线一区二区三区四区| 欧美专区亚洲专区| 日韩视频永久免费| 久久婷婷麻豆| 亚洲欧美高清| 亚洲人成啪啪网站| 国产区在线观看成人精品| 欧美va亚洲va国产综合| 亚洲男人的天堂在线aⅴ视频| 欧美88av| 欧美一区在线看| 日韩亚洲精品电影| 精品成人一区二区三区四区| 欧美视频免费在线| 久久综合亚洲社区| 午夜精品久久久久久99热| 亚洲黄色免费| 麻豆国产精品777777在线| 夜夜嗨网站十八久久| 狠狠干综合网| 国产精品乱码人人做人人爱| 欧美丰满少妇xxxbbb| 久久国产精品久久久久久电车| 9l国产精品久久久久麻豆| 欧美高清视频一区二区| 久久激情综合| 亚洲在线日韩| 中日韩高清电影网| 亚洲精品久久| 亚洲精品久久久久| 亚洲国产精品免费| 奶水喷射视频一区| 黄色工厂这里只有精品|