home *** CD-ROM | disk | FTP | other *** search
Text File | 1998-02-11 | 2.5 KB | 109 lines | [????/????] |
- /******************** ***********************/
- //
- // Player PRO 4.6 -- MAD Class for BeOS -
- //
- // Library Version 4.6
- //
- // To use with MAD Library for BeOS: CodeWarrior
- //
- // Antoine ROSSET
- // 16 Tranchees
- // 1206 GENEVA
- // SWITZERLAND
- //
- // Thank you for your interest in PlayerPRO !
- //
- // FAX: (+41 22) 346 11 97
- // PHONE: (+41 79) 203 74 62
- // Internet: rosset@dial.eunet.ch
- //
- /******************** ***********************/
-
- #include "AudioStream.h"
- #include "RDriver.h"
- #include "DriverClass.h"
-
- static MADDriverRec *MADDriver;
-
- static bool trackerStreamPlay(void *user, char *buffer, unsigned long count, void* header);
-
- MADDriverClass::MADDriverClass( MADDriverSettings *init)
- {
- if( MADInitLibrary( "Plugs", init->sysMemory) != noErr) debugger("Small Problem I...");
- // curDriverRec = MADDriver = MADGetMADDriverPtr();
-
- if( MADCreateDriver( init, &MADDriver) != noErr) debugger("Small Problem II...");
- curDriverRec = MADDriver;
-
- /////////////
-
- dacStream = new BDACStream();
-
- mPlayer = new BSubscriber("PlayerPRO");
- if (mPlayer)
- {
- long error, chan;
-
- error = mPlayer->Subscribe( dacStream);
-
- if( init->outPutMode == MonoOutPut) chan = 1;
- else chan = 2;
-
- error = dacStream->SetSamplingRate( init->outPutRate>>16L );
-
- // error = dacStream->SetStreamBuffers( 1, 4096);
-
- error = mPlayer->EnterStream(NULL, FALSE, this ,trackerStreamPlay, NULL, TRUE);
- }
- }
-
- MADDriverClass::~MADDriverClass()
- {
- delete mPlayer;
-
- MADDisposeDriver( curDriverRec);
- MADDisposeLibrary();
- }
-
- extern "C" {
- Boolean DirectSave( Ptr myPtr, MADDriverSettings *driverType, MADDriverRec *intDriver);
- }
-
- static bool trackerStreamPlay(void *user, char *buffer, unsigned long count, void* header)
- {
- if( count != 2048) debugger("count error");
-
- DirectSave( (Ptr) buffer, &MADDriver->DriverSettings, MADDriver);
-
- if( MADDriver->DriverSettings.outPutBits == 8)
- {
- for( long i = 0; i < count; i++) buffer[i] -= 0x80;
- }
-
- return true;
- }
-
- void MADDriverClass::LoadMusic( BFile & file)
- {
- // file.Open(O_RDWR);
-
- long len = file.Seek(0, 2);
- char * ptr = new char[len];
- file.Seek(0, 0);
- file.Read(ptr, len);
-
- ///////////
-
- if( MADLoadMusicPtr( &curMusic, (Ptr) ptr)) debugger( "error LoadPtr");
-
- MADAttachDriverToMusic( curDriverRec, curMusic);
-
- if( MADStartDriver( curDriverRec)) debugger( "error MADPlay"); // Turn interrupt driver function ON
- MADPlayMusic( curDriverRec); // Read the current partition in memory
-
- //////////
-
- // file.close();
-
- delete[] ptr;
- }