| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- #include "std.h"
- #include "bbaudio.h"
- gxAudio *gx_audio;
- static inline void debugSound( gxSound *s ){
- if( debug ){
- if( !gx_audio->verifySound( s ) ) RTEX( "Sound does not exist" );
- }
- }
- static gxSound *loadSound( BBStr *f,bool use_3d ){
- string t=*f;delete f;
- return gx_audio ? gx_audio->loadSound( t,use_3d ) : 0;
- }
- static gxChannel *playMusic( BBStr *f,bool use_3d ){
- string t=*f;delete f;
- return gx_audio ? gx_audio->playFile( t,use_3d ) : 0;
- }
- gxSound *bbLoadSound( BBStr *f ){
- return loadSound( f,false );
- }
- void bbFreeSound( gxSound *sound ){
- if( !sound ) return;
- debugSound( sound );
- gx_audio->freeSound( sound );
- }
- void bbLoopSound( gxSound *sound ){
- if( !sound ) return;
- debugSound( sound );
- sound->setLoop( true );
- }
- void bbSoundPitch( gxSound *sound,int pitch ){
- if( !sound ) return;
- debugSound( sound );
- sound->setPitch( pitch );
- }
- void bbSoundVolume( gxSound *sound,float volume ){
- if( !sound ) return;
- debugSound( sound );
- sound->setVolume( volume );
- }
- void bbSoundPan( gxSound *sound,float pan ){
- if( !sound ) return;
- debugSound( sound );
- sound->setPan( pan );
- }
- gxChannel *bbPlaySound( gxSound *sound ){
- if( !sound ) return 0;
- debugSound( sound );
- return sound->play();
- }
- gxChannel *bbPlayMusic( BBStr *f ){
- return playMusic( f,false );
- }
- gxChannel *bbPlayCDTrack( int track,int mode ){
- return gx_audio ? gx_audio->playCDTrack( track,mode ) : 0;
- }
- void bbStopChannel( gxChannel *channel ){
- if( !channel ) return;
- channel->stop();
- }
- void bbPauseChannel( gxChannel *channel ){
- if( !channel ) return;
- channel->setPaused( true );
- }
- void bbResumeChannel( gxChannel *channel ){
- if( !channel ) return;
- channel->setPaused( false );
- }
- void bbChannelPitch( gxChannel *channel,int pitch ){
- if( !channel ) return;
- channel->setPitch( pitch );
- }
- void bbChannelVolume( gxChannel *channel,float volume ){
- if( !channel ) return;
- channel->setVolume( volume );
- }
- void bbChannelPan( gxChannel *channel,float pan ){
- if( !channel ) return;
- channel->setPan( pan );
- }
- int bbChannelPlaying( gxChannel *channel ){
- return channel ? channel->isPlaying() : 0;
- }
- #ifdef PRO
- gxSound *bbLoad3DSound( BBStr *f ){
- return loadSound( f,true );
- }
- #endif
- bool audio_create(){
- gx_audio=gx_runtime->openAudio( 0 );
- return true;
- }
- bool audio_destroy(){
- if( gx_audio ) gx_runtime->closeAudio( gx_audio );
- gx_audio=0;
- return true;
- }
- void audio_link( void(*rtSym)(const char*,void*) ){
- rtSym( "%LoadSound$filename",bbLoadSound );
- rtSym( "FreeSound%sound",bbFreeSound );
- rtSym( "LoopSound%sound",bbLoopSound );
- rtSym( "SoundPitch%sound%pitch",bbSoundPitch );
- rtSym( "SoundVolume%sound#volume",bbSoundVolume );
- rtSym( "SoundPan%sound#pan",bbSoundPan );
- rtSym( "%PlaySound%sound",bbPlaySound );
- rtSym( "%PlayMusic$midifile",bbPlayMusic );
- rtSym( "%PlayCDTrack%track%mode=1",bbPlayCDTrack );
- rtSym( "StopChannel%channel",bbStopChannel );
- rtSym( "PauseChannel%channel",bbPauseChannel );
- rtSym( "ResumeChannel%channel",bbResumeChannel );
- rtSym( "ChannelPitch%channel%pitch",bbChannelPitch );
- rtSym( "ChannelVolume%channel#volume",bbChannelVolume );
- rtSym( "ChannelPan%channel#pan",bbChannelPan );
- rtSym( "%ChannelPlaying%channel",bbChannelPlaying );
- #ifdef PRO
- rtSym( "%Load3DSound$filename",bbLoad3DSound );
- #endif
- }
|