游戏开发论坛

 找回密码
 立即注册
搜索
查看: 5440|回复: 2

盖莫音频SDK1.6.0来了

[复制链接]

56

主题

94

帖子

98

积分

注册会员

Rank: 2

积分
98
发表于 2010-10-26 08:48:00 | 显示全部楼层 |阅读模式
【基本介绍】
盖莫音频引擎SDK1.6.0(类似fmod音频api)原本为盖莫游戏引擎开发
当前支持win7,xmp,vista操作系统
支持10种音频格式:mp3,ogg,wav,au,aiff,mod,it,xm,s3m,flac
支持真3d音效
使用多线程流式播放
支持vc和mingw系列编译器
注意这并不是一个播放器!

下面是header全文
/*!==========================================================================
*  GaiMo Audio SDK1.6.0
*     personal edition free.
*     enterprise edition 388$
*     emai:gaimosoft@yahoo.com
*     website:www.gaimosoft.com
*     please ensure openal is installed.  
*****************************************************************************
/*!==========================================================================
*  GaiMo Audio SDK is a Cplusplus Library designed for game engine used(GaimoEngine.).
*  The following audio type is supported:
*  ogg,mp3,wav,it,mod,xm,s3m,flac,au,aiff
*  And it support 3D playing mode and support.
*  There are 2 versions here:
*     personal edition free
*     and enterprise edition 388$
*     Emai:gaimosoft@yahoo.com
*  libsndfile.dll is additive.
*     PLEASE ENSURE OPENAL IS INSTALLED.
*****************************************************************************
//! 盖莫游戏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驱动     
****************************************************************************/
/*!==========================================================================
* 2010.05.18 版本1.4.2
*     1.平台支持:xp,vista,win7
*     2.编译器支持vc6,vc7,vc9,codeblock,devc++
*     4.增加对aiff,flac音频格式的支持
*     5.改用多线程录入音频
****************************************************************************/
/*!==========================================================================
* 2010.06.20 版本1.5.5
*     1.通过使用sndfile插件支持flac,au等其它音频格式
*     2.增加了设置音频插件目录的参数
*     3.提供获取音频播放当前时间和总播放时间的接口
*     4.支持从内存播放音频
*     5.支持efx reverb
*     6.支持reverb
*     7.支持lowpass filter.
*     7.可配置的音效参数修改(通过xml配置)
*     8.增加了检测音卡的日志输出内容
*     8.增加了一个完全的播放器界面-盖莫播放器
****************************************************************************/
/*!==========================================================================
* 2010.10.25 版本1.6.0
*     1.changed interface.
*     2.remove effect config file setting.
****************************************************************************/
/*!==========================================================================
* 盖莫音频引擎发展方向
*     1.对多平台的支持(含mac,xbox,unix...)
*     2.对多语言的支持(C#,Python,Dephi,易语言,...)
*     3.脱离OpenAL音频接口
*     4.对其他音频格式的支持(voc,aac,acc,ape,wma,midi)(插件或内置)
*     5.音频频谱处理
*     6.音频格式转换
****************************************************************************/
/*!==========================================================================
* 盖莫音频引擎设计的原则和宗旨
*     1.针对游戏开发,在保持使用极其方便的基础之上满足游戏音频的各类需要
*     2.可使用盖莫音频引擎设计简单的播放器
****************************************************************************/  
#ifndef GAIMO_AUDIODEVICE_HPP
#define GAIMO_AUDIODEVICE_HPP

////////////////////////////////////////////////////////////
/// header file include
////////////////////////////////////////////////////////////
#include <string>

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

#ifndef __cplusplus
    #error please use cplusplus compiler.
#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;

//! 个人版,企业版
#ifndef GAUDIO_VERSION_PERSON
#define GAUDIO_VERSION_PERSON  
#endif

namespace core
{

/////////////////////////////////////////////////////////
//! audio file type.
/////////////////////////////////////////////////////////
enum AUDIO_FILE_TYPE
{   
    //! WAV音频格式
    AUDIO_FILE_TYPE_WAV = 0,  //! support!
        //! OGG音频格式
        AUDIO_FILE_TYPE_OGG,      //! support!
        //! MP3音频格式
    AUDIO_FILE_TYPE_MP3,      //! support!
        //! XM,IT,MOD,S3M格式
        AUDIO_FILE_TYPE_XM,       //! support!
        AUDIO_FILE_TYPE_IT,       //! support!
        AUDIO_FILE_TYPE_MOD,      //! support!
        AUDIO_FILE_TYPE_S3M,      //! support!
        //! AU格式
        AUDIO_FILE_TYPE_AU,       //! support!
        //! AIFF格式
        AUDIO_FILE_TYPE_AIFF,     //! support!
        AUDIO_FILE_TYPE_AAC,
    AUDIO_FILE_TYPE_ACC,
    AUDIO_FILE_TYPE_MP1,
    AUDIO_FILE_TYPE_MP2,
    AUDIO_FILE_TYPE_VOC,
        //! 微软WMA格式
        AUDIO_FILE_TYPE_WMA,      
        //! APE压缩格式
        AUDIO_FILE_TYPE_APE,
        //! MIDI音乐格式
        AUDIO_FILE_TYPE_MIDI,
        //! FLAC音频格式
        AUDIO_FILE_TYPE_FLAC,     //! support!
        //! 空的音频格式
        AUDIO_FILE_TYPE_NULL
};

////////////////////////////////////////////////////////////
/// audio distance mode.  
////////////////////////////////////////////////////////////      
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
};      

/////////////////////////////////////////////////////////
//! audio effect type.
/////////////////////////////////////////////////////////
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_NULL
};

/////////////////////////////////////////////////////////
//! audio filter type.
/////////////////////////////////////////////////////////
enum AUDIO_FILTER_TYPE
{
        AUDIO_FILTER_TYPE_LOWPASS,   
        AUDIO_FILTER_TYPE_HIGHPASS,
        AUDIO_FILTER_TYPE_BANDPASS,
        AUDIO_FILTER_TYPE_NULL
};

//! audio vel.
const float AUDIO_SPACE_VELOCITY = 343.0f;

//! doppler factor.
const float AUDIO_DOPPLER_FACTOR = 1.0f;

/////////////////////////////////////////////////////////
/// audio object.
/////////////////////////////////////////////////////////
class AudioObject
{
public:
        virtual ~AudioObject(){}
public:
    /////////////////////////////////////////////////////
        //! set,get audio object pos.
        /////////////////////////////////////////////////////
        virtual void SetPosition(float x,float y,float z) = 0;
        virtual void GetPosition(float &x,float &y,float &z) = 0;
      
        /////////////////////////////////////////////////////
        //! set,get audio object direction.
        /////////////////////////////////////////////////////
        virtual void SetDirection(float dirx,float diry,float dirz) = 0;
    virtual void GetDirection(float &dirx,float &diry,float &dirz) = 0;

        /////////////////////////////////////////////////////
        //! set,get audio object vel.
        /////////////////////////////////////////////////////
        virtual void SetVelocity(float velx,float vely,float velz) = 0;
    virtual void GetVelocity(float &velx,float &vely,float &velz) = 0;

        ////////////////////////////////////////////////////
        //! move audio object(by offset.)
        ////////////////////////////////////////////////////         
    virtual void Move(float offsetx,float offsety,float offsetz) = 0;         
};

//////////////////////////////////////////////////////
/// audio capture interface.
//////////////////////////////////////////////////////
class AudioCapture
{
public:
        virtual ~AudioCapture(){}
public:
    //////////////////////////////////////////////////
        //! capture audio and stop it.
        //////////////////////////////////////////////////
        virtual void CaptureAudio() = 0;      
        virtual void CaptureStop() = 0;      
};

/////////////////////////////////////////////////////////
/// object listener.
/////////////////////////////////////////////////////////
class AudioListener : public AudioObject
{
public:
    /////////////////////////////////////////////////////
        //! set,get global volume(0.0f,1.0f)
        /////////////////////////////////////////////////////               
    virtual void  SetGlobalVolume(float volume) = 0;
        virtual float GetGlobalVolume()const = 0;     
};

////////////////////////////////////////////////////////
//! audio source object
////////////////////////////////////////////////////////
class AudioSource : public AudioObject
{
public:
    ////////////////////////////////////////////////////
    //! play audio(2d mode.)
        ////////////////////////////////////////////////////
    virtual bool Play(const engine_string& audiofile,bool loop = false) = 0;
      
    ////////////////////////////////////////////////////
    //! play audio(3d mode.)
        ////////////////////////////////////////////////////
    virtual bool Play(const engine_string& audiofile,bool loop,float mindist,float maxdist) = 0;      

        ////////////////////////////////////////////////////
    //! stop,pause audio.
        ////////////////////////////////////////////////////
    virtual bool Stop() = 0;
        virtual bool Pause() = 0;

        ///////////////////////////////////////////////////
        //! check status.
        ///////////////////////////////////////////////////
        virtual bool IsPlay()const = 0;
        virtual bool IsPause()const = 0;
        virtual bool IsStop()const = 0;
      
        ///////////////////////////////////////////////////
        //! set,get volume[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;   

    virtual void SetMaxDistance(float distance) = 0;
    virtual void GetMaxDistance(float &distance)= 0;
    virtual void SetMinDistance(float distance) = 0;
    virtual void GetMinDistance(float &distance)= 0;
   
    virtual void SetAudioCone(float innerangle,float outerangle,float outergain) = 0;
    virtual void GetAudioCone(float &innerangle,float &outerangle,float &outergain) = 0;  
   
        ////////////////////////////////////////////////////
    //! get playing time.
        ////////////////////////////////////////////////////   
        virtual float GetTotalTime()const = 0;
        virtual float GetCurTime()const = 0;

        ////////////////////////////////////////////////////
    //! able,disable effectr
        ////////////////////////////////////////////////////     
        virtual bool EnableEffect(AUDIO_EFFECT_TYPE type) = 0;
        virtual void DisableEffect() = 0;
        virtual bool IsEffectActive() = 0;
      
        ////////////////////////////////////////////////////
    //! able,disable filter.
        ////////////////////////////////////////////////////   
    virtual bool AttachFiler(AUDIO_FILTER_TYPE type) = 0;      
};


//////////////////////////////////////////////////////
//! audio device.
//////////////////////////////////////////////////////
class AudioDevice
{
public:      
        /////////////////////////////////////////////////
    //! get audio device version.
        /////////////////////////////////////////////////
        virtual engine_string GetVerson() const = 0;

        /////////////////////////////////////////////////
        //! get audio maker.
        /////////////////////////////////////////////////
        virtual engine_string GetMaker() const = 0;

        /////////////////////////////////////////////////
        //! check given audio type is supported or not.
        /////////////////////////////////////////////////
    virtual bool IsSupport(const AUDIO_FILE_TYPE& type)const = 0;

        /////////////////////////////////////////////////
        //! get audio source(personal edition for 5 sources.)
        /////////////////////////////////////////////////
        virtual AudioSource*  GetAudioSource() = 0;

        /////////////////////////////////////////////////
        //! get listener pointer(only 1)
        /////////////////////////////////////////////////
    virtual AudioListener* GetAudioListener(float x,float y,float z) = 0;
   
        /////////////////////////////////////////////////
        //! get audio capture pointer(personal edition for 1 capture.)
        /////////////////////////////////////////////////
    virtual AudioCapture* GetAudioCapture(const engine_string& name) = 0;

    virtual void  SetMetersPerUnit(float meters) = 0;
    virtual float GetMetersPerUnit(void) const = 0;  
        virtual int   GetMaxEffectMuber()const = 0;
      
        /////////////////////////////////////////////////
        //! set doppler factor(1.0f,343.3)
        /////////////////////////////////////////////////
    virtual void  SetDoppler(float factor,float vel) = 0;

        /////////////////////////////////////////////////
        //! set audio wolrd sistance model.
        /////////////////////////////////////////////////
        virtual void  SetDistanceModel(const AUDIO_DISTANCE_MODE &model) = 0;
      
        /////////////////////////////////////////////////
        //! check given effect
        /////////////////////////////////////////////////      
        virtual bool  IsSupportAudioEffect(AUDIO_EFFECT_TYPE type) = 0;
};

/////////////////////////////////////////////////////
//! init audio device(return NULL for failed.)
/////////////////////////////////////////////////////
G_FUNC(AudioDevice*) InitAudioDevice();

/////////////////////////////////////////////////////
//! deinit audio device.
/////////////////////////////////////////////////////
G_FUNC(void)         TerminateAudioDevice();

}

#endif
//! maker:ccsdu2004

56

主题

94

帖子

98

积分

注册会员

Rank: 2

积分
98
发表于 2010-10-26 08:56:00 | 显示全部楼层

Re:盖莫音频SDK1.6.0来了

http://www.duote.com/soft/28571.html

0

主题

4

帖子

41

积分

禁止发言

积分
41
发表于 2014-2-27 16:10:58 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2024-4-28 08:02

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表