Sound.cpp
上传用户:sz83729876
上传日期:2013-03-07
资源大小:4140k
文件大小:2k
源码类别:

OpenGL

开发平台:

Windows_Unix

  1. #include <windows.h>
  2. #include "Sound.h"
  3. Sound::Sound()
  4. {
  5.     m_bSongLoaded = false;
  6. }
  7. Sound::~Sound()
  8. {
  9. }
  10. bool Sound::Initialize( int iFreq, bool bForce8Bit )
  11. {
  12.     if (BASSMOD_GetVersion() != MAKELONG( 1, 6 ))
  13.     {
  14.         Log::Print( "Sound: Wrong BASSMOD.DLL version!" );
  15.         return false;
  16.     }
  17.     m_iFrequency = iFreq;
  18.     m_bForce8Bit = bForce8Bit;
  19.     long dwFlags = BASS_DEVICE_NOSYNC;
  20.     if (bForce8Bit)
  21.         dwFlags |= BASS_DEVICE_8BITS;
  22.     if (!BASSMOD_Init( -1, iFreq, dwFlags ))
  23.     {
  24.         Log::Print( "Sound: Can't initialize BASSMOD...." );
  25.         return false;
  26.     }
  27.     return true;
  28. }
  29. void Sound::Cleanup()
  30. {
  31.     BASSMOD_Free();
  32. }
  33. bool Sound::LoadSong( std::string strFile )
  34. {
  35.     BASSMOD_MusicFree();
  36.     if (!BASSMOD_MusicLoad( false, (void*)strFile.c_str(), 0, 0, BASS_MUSIC_RAMPS ))
  37.     {
  38.         Log::Print( "Sound: Unable to load "%s" music file...", strFile.c_str() );
  39.         return false;
  40.     }
  41.     m_bSongLoaded = true;
  42.     return true;
  43. }
  44. bool Sound::Play()
  45. {
  46.     if (!m_bSongLoaded)
  47.     {
  48.         Log::Print( "Sound: No song loaded..."  );
  49.         return false;
  50.     }
  51.     if (!BASSMOD_MusicPlay())
  52.     {
  53.         Log::Print( "Sound: Unable to play song..."  );
  54.         return false;
  55.     }
  56.     return true;
  57. }
  58. bool Sound::Stop()
  59. {
  60.     if (m_bSongLoaded)
  61.     {
  62.         BASSMOD_MusicStop();
  63.         return true;
  64.     }
  65.     return false;
  66. }
  67. bool Sound::SetInstSync( unsigned short sInst, SYNCPROC *proc )
  68. {
  69.     BASSMOD_MusicSetSync( BASS_SYNC_MUSICINST, MAKELONG( 6, -1 ), proc, 0 );
  70.     return true;
  71. }