home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1999 September (IDG) / Sep99.iso / Shareware World / Info / For Developers / PlayerPRO 5.2 Dev.Kit Mac / MADH Library 5.2 / MacOS Examples / Game.c < prev    next >
Encoding:
C/C++ Source or Header  |  1999-01-03  |  3.7 KB  |  155 lines  |  [TEXT/CWIE]

  1. /********************************************************/
  2. /*
  3.     Player PRO 5.0 -- Music Driver EXAMPLE
  4.     
  5.     To use with MADLibrary 5.x for Think C & CodeWarrior
  6.  
  7.     Antoine ROSSET
  8.     16 Tranchees
  9.     1206 GENEVA
  10.     SWITZERLAND
  11.     
  12.     FAX: (+41 22) 346 11 97
  13.     PHONE: (+41 79) 203 74 62
  14.     Email: rosset@dial.eunet.ch
  15. */
  16. /********************************************************/
  17.  
  18. #include "RDriver.h"
  19.  
  20. MADDriverRec    *MADDriver;
  21. MADMusic        *Music;
  22. MADLibrary        *MADLib;
  23.  
  24. /*****************************/
  25. /****** ERROR FUNCTION *******/
  26. /*****************************/
  27.  
  28. void MyDebugStr( short, Ptr, Ptr)
  29. {
  30. }
  31.  
  32.  
  33. /*****************************/
  34. /****** MAIN FUNCTION ********/
  35. /*****************************/
  36.  
  37. void main( void)
  38. {
  39. DialogPtr        TheDia;
  40. Handle            itemHandle;
  41. Rect            itemRect;
  42. short            itemType, i, itemHit;
  43. Handle            mySound[ 4];            // my 4 sound resource
  44.  
  45. /* Initialisation de la toolbox */
  46.  
  47. InitGraf( &qd.thePort);
  48. InitFonts();
  49. InitWindows();
  50. TEInit();
  51. InitMenus();
  52. InitCursor();
  53. MaxApplZone();
  54.  
  55. /******************************************/
  56. /*** Load and prepare my sound resource ***/
  57. /******************************************/
  58.  
  59. for( i = 0 ; i < 4; i++)
  60. {
  61.     mySound[ i] = GetResource( 'snd ', 128 + i);
  62.     DetachResource( mySound[ i]);
  63.     HLock( mySound[ i]);                            // VERY IMPORTANT !!!!!!
  64. }
  65.  
  66.  
  67. /*******************************************************************************************/
  68. /****** MAD Library Initialisation : choose the best driver for the current hardware  ******/
  69. /*******************************************************************************************/
  70.  
  71. {
  72.     MADDriverSettings    init;
  73.     OSErr                err;
  74.     
  75.     err = MADInitLibrary("", false, &MADLib);
  76.     if( err) DebugStr("\pMADInitLibrary Err");
  77.     
  78.     MADGetBestDriver( &init);
  79.     
  80.     err = MADCreateDriver( &init, MADLib, &MADDriver);
  81.     if( err) DebugStr("\pMADCreateDriver Err");
  82. }
  83.  
  84. /***************************************************/
  85. /***   Open MADH Resource ID 3214 and play it !   **/
  86. /***************************************************/
  87.  
  88. if( MADLoadMusicRsrc( &Music, 'MADI', 3214) != noErr) DebugStr("\pMADLoadMusicRsrc Err");
  89.  
  90. MADAttachDriverToMusic( MADDriver, Music);
  91.  
  92. MADChangeTracks( MADDriver, Music->header->numChn + 2);        // Add 2 tracks for sound effects ! You need to call this function AFTER MADAttachDriverToMusic
  93.  
  94. if( MADStartDriver( MADDriver) != noErr) DebugStr("\pMADStartDriver Err");
  95.  
  96. /******************************************/
  97. /***        Open my dialog              ***/
  98. /******************************************/
  99.  
  100. TheDia = GetNewDialog( 128,0L, (WindowPtr) -1L);
  101. SetPort( TheDia);        
  102.  
  103. do
  104. {
  105.     ModalDialog( 0L, &itemHit);
  106.         
  107.     switch( itemHit)
  108.     {
  109.         case 2:
  110.             GetDialogItem( TheDia, 2, &itemType, &itemHandle, &itemRect);
  111.             SetControlValue( (ControlHandle) itemHandle, !GetControlValue( (ControlHandle) itemHandle));
  112.             
  113.             if( GetControlValue( (ControlHandle) itemHandle)) MADPlayMusic( MADDriver);
  114.             else
  115.             {
  116.                 MADStopMusic( MADDriver);
  117.                 MADCleanDriver( MADDriver);
  118.             }
  119.         break;
  120.     
  121.         case 3:
  122.             MADPlaySndHandle( MADDriver, mySound[ 0], Music->header->numChn, 48);            // C 3 = 48
  123.         break;
  124.         
  125.         case 4:
  126.             MADPlaySndHandle( MADDriver, mySound[ 1], Music->header->numChn + 1, 0xFF);        // 0xFF = normal rate (sample rate)
  127.         break;
  128.         
  129.         case 5:
  130.             MADPlaySndHandle( MADDriver, mySound[ 2], Music->header->numChn, 36);            // at C 2 = 36
  131.         break;
  132.         
  133.         case 6:
  134.             MADPlaySndHandle( MADDriver, mySound[ 3], Music->header->numChn + 1, 60);        // at C 4 = 60
  135.         break;
  136.     }
  137.     
  138. }while( itemHit != 1);
  139.  
  140. DisposeDialog( TheDia);
  141.  
  142. MADStopMusic( MADDriver);                    // Stop the music
  143. MADStopDriver( MADDriver);                    // Stop the driver
  144. MADDisposeMusic( &Music);                    // Clear music
  145. MADDisposeDriver( MADDriver);                // Dispose driver
  146. MADDisposeLibrary( MADLib);                    // Close Music Library
  147.  
  148. for( i = 0 ; i < 4; i++)
  149. {
  150.     HUnlock( mySound[ i]);
  151.     DisposeHandle( mySound[ i]);
  152. }
  153. }
  154.  
  155.