home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Dream 59
/
CDDream59.ISO
/
BeOs
/
Sound
/
Intel
/
PPBeDevKit.ZIP
/
PLAYERPR.TAR
/
PlayerPRO
/
Source
/
RDriverInt.h
< prev
next >
Wrap
C/C++ Source or Header
|
1998-12-27
|
12KB
|
254 lines
/******************** ***********************/
//
// Player PRO 5.0 - DRIVER SOURCE CODE -
//
// Library Version 5.0
//
// To use with MAD Library for Mac: Symantec, CodeWarrior and MPW
//
// Antoine ROSSET
// 16 Tranchees
// 1206 GENEVA
// SWITZERLAND
//
// COPYRIGHT ANTOINE ROSSET 1996, 1997, 1998
//
// Thank you for your interest in PlayerPRO !
//
// FAX: (+41 22) 346 11 97
// PHONE: (+41 79) 203 74 62
// Internet: RossetAntoine@bluewin.ch
//
/******************** ***********************/
#ifndef __RDRIVERINTH__
#define __RDRIVERINTH__
#include <stdio.h>
#include "FileUtils.h"
#define MEM {Str255 str; NumToString( FreeMem(), str); DebugStr( str);}
//#define NUMBER_FINETUNES 16
#define AMIGA_CLOCKFREQ2 14317456L //3575872L -- 14303488L
#define BYTEDIV 8L
#define EXTRASMALLCOUNTER 5
//#define POSPITCH 170
//#define SoundActive 0x27E
//#define ASCBase 0x0CC0
/** Some #define functions for easiest access **/
#define SampleDataN(InsD,NoteD) curMusic->sample[ curMusic->fid[ InsD].firstSample + curMusic->fid[ InsD].what[ NoteD]]
#define SampleDataS(InsD,SampleD) curMusic->sample[ curMusic->fid[ InsD].firstSample + SampleD]
#define SampleDataD(InsD) curMusic->sample[ curMusic->fid[ InsD].firstSample + curSample[ InsD]]
#ifdef __cplusplus
extern "C" {
#endif
/******************** ***********************/
/*** INTERNAL ROUTINES ***/
/*** DO NOT use these routines ***/
/******************** ***********************/
/*** Deluxe ***/
void MADCreateOverShoot( MADDriverRec *intDriver);
void MADKillOverShoot( MADDriverRec *intDriver);
void Sampler16AddDeluxe( Channel *curVoice, register long *ASCBuffer, MADDriverRec *intDriver);
void Sampler16Addin16Deluxe( Channel *curVoice, register long *ASCBuffer, MADDriverRec *intDriver);
void Sample16BufferAddDeluxe( Channel *curVoice, register long *ASCBuffer, MADDriverRec *intDriver);
void Play16StereoDeluxe( MADDriverRec *intDriver);
void Sampler8in8AddDeluxe( Channel *curVoice, register short *ASCBuffer, MADDriverRec *intDriver);
void Sampler8in16AddDeluxe( Channel *curVoice, register short *ASCBuffer, MADDriverRec *intDriver);
void Sample8BufferAddDeluxe( Channel *curVoice, register short *ASCBuffer, MADDriverRec *intDriver);
void Play8StereoDeluxe( MADDriverRec *intDriver);
/*** Delay ***/
void Sampler16AddDelay( Channel *curVoice, register long *ASCBuffer, MADDriverRec *intDriver);
void Sampler16Addin16Delay( Channel *curVoice, register long *ASCBuffer, MADDriverRec *intDriver);
void Sample16BufferAddDelay( Channel *curVoice, register long *ASCBuffer, MADDriverRec *intDriver);
void Play16StereoDelay( MADDriverRec *intDriver);
void Sampler8in8AddDelay( Channel *curVoice, register short *ASCBuffer, MADDriverRec *intDriver);
void Sampler8in16AddDelay( Channel *curVoice, register short *ASCBuffer, MADDriverRec *intDriver);
void Sample8BufferAddDelay( Channel *curVoice, register short *ASCBuffer, MADDriverRec *intDriver);
void Play8StereoDelay( MADDriverRec *intDriver);
/*** 8 Bits ***/
void Sampler8in8Add( Channel *curVoice, register Ptr ASCBuffer, MADDriverRec *intDriver);
void Sampler8in16Add( Channel *curVoice, register Ptr ASCBuffer, MADDriverRec *intDriver);
void Sampler8in8AddPoly( Channel *curVoice, register Ptr ASCBuffer, short chanNo, MADDriverRec *intDriver);
void Sampler8in16AddPoly( Channel *curVoice, register Ptr ASCBuffer, short chanNo, MADDriverRec *intDriver);
void Sample8BufferAdd( Channel *curVoice, register Ptr ASCBuffer, MADDriverRec *intDriver);
void Sample8BufferAddPoly( Channel *curVoice, register Ptr ASCBuffer, short chanNo, MADDriverRec *intDriver);
void Play8Mono( MADDriverRec *intDriver);
void Play8Stereo( MADDriverRec *intDriver);
void Play8PolyPhonic( MADDriverRec *intDriver);
/*** 16 Bits ***/
void Sampler16Add( Channel *curVoice, register short *ASCBuffer, MADDriverRec* intDriver);
void Sampler16Addin16( Channel *curVoice, register short *ASCBuffer, MADDriverRec* intDriver);
void Sample16BufferAdd( Channel *curVoice, register short *ASCBuffer, MADDriverRec* intDriver);
void Play16Stereo( MADDriverRec* intDriver);
void Sampler16AddPoly( Channel *curVoice, register short *ASCBuffer, short chanNo, MADDriverRec* intDriver);
void Sampler16Addin16Poly( Channel *curVoice, register short *ASCBuffer, short chanNo, MADDriverRec* intDriver);
void Sample16BufferAddPoly( Channel *curVoice, register short *ASCBuffer, short chanNo, MADDriverRec* intDriver);
void Play16PolyPhonic( MADDriverRec* intDriver);
void Play16Mono( MADDriverRec* intDriver);
/*** Effects ***/
void DoEffect( Channel *ch, short call, MADDriverRec *intDriver);
void SetUpEffect( Channel *ch, MADDriverRec *intDriver);
void DoVolCmd( Channel *ch, short call, MADDriverRec *intDriver);
/*** Interruption Functions ***/
void NoteAnalyse( MADDriverRec *intDriver);
pascal void DMAPlay ( void);
void ReadNote( Channel *curVoice, Cmd *theCommand, MADDriverRec *intDriver);
void Filter8Bit( register Byte *myPtr, MADDriverRec *intDriver);
void Filter8BitX( register Byte *myPtr, MADDriverRec *intDriver);
void Filter16BitX( register short *myPtr, MADDriverRec *intDriver);
void BufferCopyM( MADDriverRec *intDriver);
void BufferCopyS( MADDriverRec *intDriver);
void NoteOff(short oldIns, short oldN, short oldV, MADDriverRec *intDriver);
void SampleMIDI( Channel *curVoice, short channel, short curN, MADDriverRec *intDriver);
void CleanDriver( MADDriverRec *intDriver);
#ifdef _MAC_H
pascal void MyDoubleBackProc(SndChannelPtr chan, SndDoubleBufferPtr doubleBuffer);
void InstallPersistentVBL( MADDriverRec *MDriver, VBLTask *theVBLRec);
SndChannelPtr CreateSndChannel( long init);
OSErr DBSndPlay (MADDriverRec *inMADDriver, SndChannelPtr chan);
#endif
/*** General Functions ***/
OSErr MADKillInstrument( MADMusic*, short ins);
OSErr MADKillSample( MADMusic *, short ins, short sample);
sData *MADCreateSample( MADMusic *MDriver, short ins, short sample);
OSErr MADKillCmd( Cmd*);
void UpdateTracksNumber( MADDriverRec *);
OSErr MADCreateVolumeTable( MADDriverRec *intDriver);
void MADDisposeVolumeTable( MADDriverRec *intDriver);
void AllNoteOff( MADDriverRec *intDriver);
Boolean MADIsPressed( unsigned char* km2, unsigned short k);
OSErr MADCreateTiming( MADDriverRec *intDriver);
OSErr MADCreateDriverBuffer( MADDriverRec *intDriver);
void MADDisposeDriverBuffer( MADDriverRec *intDriver);
OSErr MADCreateReverb( MADDriverRec *intDriver);
void MADDisposeReverb( MADDriverRec *intDriver);
OSErr MADCreateMicroDelay( MADDriverRec *intDriver);
long MADGetMusicSize( MADMusic*);
OSErr MADReadMAD( MADMusic **music, UNFILE srcFile, short InPutType, Handle MADRsrc, Ptr MADPtr);
OSErr DBSndClose(MADDriverRec *inMADDriver);
void StopChannel(MADDriverRec *inMADDriver);
void PlayChannel(MADDriverRec *inMADDriver);
void InstallMODVBL(MADDriverRec *MDriver);
void RemoveMODVBL(MADDriverRec *MDriver);
void MODRelance(void);
void Play(void);
void VIAOn(void);
void SndOff(void);
void SndOn(void);
void VIAOn2(void);
void VIAOn3(void);
void MADPurgeTrack( MADDriverRec *intDriver);
OSErr InitDBSoundManager( MADDriverRec *intDriver, long);
EXP Boolean DirectSave( Ptr myPtr, MADDriverSettings *driverType, MADDriverRec *intDriver);
void ChangeSpeed( void);
void ClearFrequence(void);
void InstallDMAVBL(MADDriverRec *MDriver);
void RemoveDMAVBL(void);
OSErr MADCreateVibrato(MADDriverRec *MDriver);
void ActiveDMA(void);
PatData* DecompressPartitionMAD1( MADMusic *MDriver, PatData* myPat);
PatData* CompressPartitionMAD1( MADMusic *MDriver, PatData* myPat);
Ptr DoMAC3Expand( Ptr sound, long *InOutSize);
Ptr DoMAC3Compress( Ptr sound, long *InOutSize);
void DMAIntInstall( unsigned long refCon, Ptr handlerAddr, unsigned long vectorBit);
void DMAIntRemove( unsigned long vectorBit);
void GenerateSound( MADDriverRec *intDriver);
long GetOldPeriod( short note, long c2spd, MADDriverRec *intDriver);
OSErr MADResetInstrument( InstrData *curIns);
void MADCheckSpeed( MADMusic *MDriver, MADDriverRec *intDriver);
OSErr AddSoundToMAD( Ptr theSound,
long lS,
long lE,
short sS,
short bFreq,
unsigned long rate,
Boolean stereo,
Str255 name,
short ins,
short *sampleID);
OSErr PPTestFile( MADLibrary *inMADDriver, char *kindFile, char *AlienFile);
OSErr PPInfoFile( MADLibrary *inMADDriver, char *kindFile, char *AlienFile, PPInfoRec *InfoRec);
OSErr PPExportFile( MADLibrary *inMADDriver, char *kindFile, char *AlienFile, MADMusic *theNewMAD);
OSErr PPImportFile( MADLibrary *inMADDriver, char *kindFile, char *AlienFile, MADMusic **theNewMAD);
OSErr PPIdentifyFile( MADLibrary *inMADDriver, char *kindFile, char *AlienFile);
OSType GetPPPlugType( MADLibrary *inMADDriver, short ID, OSType type);
void MInitImportPlug( MADLibrary *inMADDriver, char*);
void CloseImportPlug( MADLibrary *inMADDriver);
OSErr MADLoadMADFileCString( MADMusic **, Ptr fName);
OSErr CheckMADFile( char *AlienFile);
OSErr MADCopyCurrentPartition( MADMusic *theNewMAD);
OSErr CallImportPlug( MADLibrary *inMADDriver,
short PlugNo, // CODE du plug
OSType order,
char *AlienFile,
MADMusic *theNewMAD,
PPInfoRec *info);
long DoVolPanning( short, Channel *ch, MADDriverRec *intDriver);
long DoVolPanning256( short, Channel *ch, MADDriverRec *intDriver);
void MADKeyOFF( MADDriverRec *MDriver, short track);
long MADMinimize( MADMusic*);
void MADTickLoopFill8( Channel *curVoice, long *ASCBuffer1, long *ASCBuffer2, long size, short left, short right);
void MADTickLoop8( long size, Channel *curVoice, long *ASCBuffer1, long *ASCBuffer2, MADDriverRec *intDriver);
void MADTickRemoverStart8( Channel *curVoice, long *ASCBuffer1, long *ASCBuffer2, MADDriverRec *intDriver);
void MADTickRemoverLoop16( long size, Channel *curVoice, long *ASCBuffer1, long *ASCBuffer2, MADDriverRec *intDriver, long diffL, long diffR);
void MADTickRemoverLoop8( long size, Channel *curVoice, long *ASCBuffer1, long *ASCBuffer2, MADDriverRec *intDriver, long diff);
short MADGetNextReader( MADMusic *music, MADDriverRec *intDriver, short cur, short *pat);
OSErr MADCleanCurrentMusic( MADMusic *MDriver, MADDriverRec *intDriver);
void MADSetMADDriverPtr( MADDriverRec* driver);
long Interpolate(long p,long p1,long p2,long v1,long v2);
long InterpolateEnv(long p, EnvRec *a,EnvRec *b);
void ProcessFadeOut( Channel *ch, MADDriverRec *intDriver);
void ProcessEnvelope( Channel *ch, MADDriverRec *intDriver);
void StartEnvelope( Channel *ch);
void NScanResource( MADLibrary *inMADDriver);
void NScanDirImportPlug( MADLibrary *inMADDriver, long dirID, short VRefNum, Str255 Fname);
void LoadImportPLUG( MADLibrary *inMADDriver, short No, FSSpec *theSpec);
void DirectSoundClose( MADDriverRec* driver);
Boolean DirectSoundInit( MADDriverRec* driver);
Boolean W95_Init( MADDriverRec* driver);
void W95_Exit( MADDriverRec* driver);
// Effects.c
void BL32( void *msg_buf);
void BL16( void *msg_buf);
void parse_slidevol(Channel *ch, Byte Arg);
void ConvertTo64Rows( MADMusic *music);
void BL32( void *msg_buf);
void BL16( void *msg_buf);
#ifdef __cplusplus
}
#endif
#endif