Advertisement
Paul17041993

example music demo using fmod

Oct 7th, 2013
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.01 KB | None | 0 0
  1. ///////////////////////////////
  2. // header
  3.  
  4. #include "fmod/fmod.hpp"
  5.  
  6. //our tracks, ideally you could use an array of strings if you wish
  7. typedef enum MUSIC
  8. {
  9.     NOTHING = 0,
  10.     LOOP1A1 = 1,
  11.     LOOP2A1 = 2,
  12.     EVENT1A1 = 3,
  13.     EVENT2A1 = 4,
  14.     EVENT2B1 = 5,
  15.     END = 6,
  16.     HARDCORE_DISCO = 10,
  17.     BURNING_ROME = 11,
  18.     JUST_HESITATION = 12,
  19.     ASDF = 13
  20. };
  21.  
  22. //music class
  23. class Music
  24. {
  25. public:
  26.     Music(void);
  27.     ~Music(void);
  28.  
  29.     void Initialise();
  30.     void Deinitialise();
  31.  
  32.     void Update(double &dt);
  33.     void SetMusic(MUSIC music);
  34.  
  35.     FMOD::Channel * GetChannel(){return channel;}
  36.     MUSIC GetPlaying(){return musicPlaying;}
  37.  
  38. private:
  39.  
  40.     MUSIC musicPlaying;
  41.  
  42.     FMOD::Channel *channel;
  43.     FMOD::System *system;
  44.  
  45.     FMOD::Sound *loop1a1;
  46.     FMOD::Sound *loop2a1;
  47.     FMOD::Sound *event1a1;
  48.     FMOD::Sound *event2a1;
  49.     FMOD::Sound *event2b1;
  50.     FMOD::Sound *end;
  51.     FMOD::Sound *hardcore_disco;
  52.     FMOD::Sound *burning_rome;
  53.     FMOD::Sound *just_hesitation;
  54.     FMOD::Sound *asdf;
  55.  
  56.     double dMusicTimer;
  57. };
  58.  
  59. /////////////////////////////////////
  60. // cpp section
  61.  
  62. Music::Music(void)
  63. {
  64.     musicPlaying = NOTHING;
  65.     dMusicTimer = 0.0;
  66. }
  67.  
  68.  
  69. Music::~Music(void)
  70. {
  71. }
  72.  
  73. //load
  74. void Music::Initialise()
  75. {
  76.     FMOD::System_Create(&system);
  77.     system->init(32, FMOD_INIT_NORMAL, 0);
  78.  
  79.     system->createStream("./music/LOOP1A1.ogg", FMOD_HARDWARE, 0, &loop1a1);
  80.     system->createStream("./music/LOOP2A1.ogg", FMOD_HARDWARE, 0, &loop2a1);
  81.     system->createStream("./music/EVENT1A1.ogg", FMOD_HARDWARE, 0, &event1a1);
  82.     system->createStream("./music/EVENT2A1.ogg", FMOD_HARDWARE, 0, &event2a1);
  83.     system->createStream("./music/EVENT2B1.ogg", FMOD_HARDWARE, 0, &event2b1);
  84.     system->createStream("./music/END.ogg", FMOD_HARDWARE, 0, &end);
  85.     system->createStream("./music/HARDCORE_DISCO.ogg", FMOD_HARDWARE, 0, &hardcore_disco);
  86.     system->createStream("./music/BURNING_ROME.ogg", FMOD_HARDWARE, 0, &burning_rome);
  87.     system->createStream("./music/JUST_HESITATION.ogg", FMOD_HARDWARE, 0, &just_hesitation);
  88.     system->createStream("./music/ASDF.ogg", FMOD_HARDWARE, 0, &asdf);
  89. }
  90.  
  91. //unload everything
  92. void Music::Deinitialise()
  93. {
  94.  
  95.     loop1a1     ->release();
  96.     loop2a1     ->release();
  97.     event1a1    ->release();
  98.     event2a1    ->release();
  99.     event2b1    ->release();
  100.     end         ->release();
  101.     hardcore_disco  ->release();
  102.     burning_rome    ->release();
  103.     just_hesitation ->release();
  104.     asdf        ->release();
  105.  
  106.     system  ->close();
  107.     system  ->release();
  108. }
  109.  
  110. //called every frame
  111. void Music::Update(double &dt)
  112. {
  113.     dMusicTimer -= dt;
  114.     if(dMusicTimer <=0.0)
  115.     {
  116.         channel->stop();
  117.         musicPlaying = NOTHING;
  118.         dMusicTimer = 0.0;
  119.     }
  120.  
  121.     system->update();
  122. }
  123.  
  124. //use this to set the playing music
  125. void Music::SetMusic(MUSIC music)
  126. {
  127.    
  128.     if(musicPlaying != music)
  129.     {
  130.  
  131.         channel->stop();
  132.  
  133.         switch(music)
  134.         {
  135.         case LOOP1A1:  
  136.             system->playSound(FMOD_CHANNEL_FREE, loop1a1, false, &channel);    
  137.             dMusicTimer = 283.0;    break;
  138.  
  139.         case LOOP2A1:  
  140.             system->playSound(FMOD_CHANNEL_FREE, loop2a1, false, &channel);    
  141.             dMusicTimer = 187.0;    break;
  142.  
  143.         case EVENT1A1: 
  144.             system->playSound(FMOD_CHANNEL_FREE, event1a1, false, &channel);   
  145.             dMusicTimer = 195.0;    break;
  146.  
  147.         case EVENT2A1: 
  148.             system->playSound(FMOD_CHANNEL_FREE, event2a1, false, &channel);   
  149.             dMusicTimer = 189.0;    break;
  150.  
  151.         case EVENT2B1: 
  152.             system->playSound(FMOD_CHANNEL_FREE, event2b1, false, &channel);   
  153.             dMusicTimer = 215.0;    break;
  154.  
  155.         case END:      
  156.             system->playSound(FMOD_CHANNEL_FREE, end, false, &channel);    
  157.             dMusicTimer = 242.0;    break;
  158.  
  159.         case HARDCORE_DISCO:   
  160.             system->playSound(FMOD_CHANNEL_FREE, hardcore_disco, false, &channel); 
  161.             dMusicTimer = 193.0;    break;
  162.  
  163.         case BURNING_ROME:     
  164.             system->playSound(FMOD_CHANNEL_FREE, burning_rome, false, &channel);   
  165.             dMusicTimer = 174.0;    break;
  166.  
  167.         case JUST_HESITATION:  
  168.             system->playSound(FMOD_CHANNEL_FREE, just_hesitation, false, &channel);
  169.             dMusicTimer = 199.0;    break;
  170.  
  171.         case ASDF: 
  172.             system->playSound(FMOD_CHANNEL_FREE, asdf, false, &channel);   
  173.             dMusicTimer = 128.0;    break;
  174.  
  175.         default:   
  176.             break;
  177.         }
  178.  
  179.         musicPlaying = music;
  180.     }
  181.     else
  182.     {
  183.     }
  184.  
  185.  
  186. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement