···11-/******************** ***********************/
22-//
33-// Player PRO 4.4x -- MAD Music Driver Definition
44-//
55-// Library Version 3.0
66-//
77-// To use with MusicLibrary for Think C & CodeWarrior
88-//
99-// Antoine ROSSET
1010-// 16 Tranchees
1111-// 1206 GENEVA
1212-// SWITZERLAND
1313-//
1414-// FAX: (+41 22) 346 11 97
1515-// Compuserve: 100277,164
1616-// Internet: rosset@dial.eunet.ch
1717-//
1818-/******************** ***********************/
1919-2020-#if defined(powerc) || defined(__powerc)
2121-#pragma options align=mac68k
2222-#endif
2323-2424-struct PatHeader {
2525- long PatternSize; // Length of pattern: standard = 64
2626- long CompressionMode; // Compression mode, none = 'NONE'
2727- char PatternName[ 20];
2828- long PatBytes; // Pattern Size in Bytes
2929- long unused2;
3030-};
3131-3232-struct Command {
3333- Byte InstrumentNo; // Instrument no
3434- Byte AmigaPeriod; // Note, see table
3535- Byte EffectCmd; // Effect cmd
3636- Byte EffectArg; // Effect arg
3737-};
3838-3939-struct MusicPattern
4040-{ // Pattern = 64 notes to play
4141- struct PatHeader header;
4242- struct Command Commands[];
4343-};
4444-4545-struct FileInstrData {
4646- char Filename[ 32]; // Instrument's filename
4747- long insSize; // Sample length
4848- Byte fineTune;
4949- Byte volume; // Base volume
5050- short CompCode; // Compression Code, 0 = nothing, M3 = MAC3, M6 = MAC6
5151- short freq; // Base frequence, simple, double, quadruple
5252- Byte amplitude; // 8 or 16 bits
5353- long loopStart; // LoopStart
5454- long loopLenght; // LoopLength
5555-};
5656-5757-struct MADSpec
5858-{
5959- long MADIdentification; // Mad Identification: MADG in version 2.0
6060- char NameSignature[ 32]; // Music's name
6161- struct FileInstrData fid[ 64]; // 64 instruments descriptor
6262- Byte PatMax;
6363- Byte numPointers; // Patterns number
6464- Byte oPointers[ 128]; // Patterns list
6565- Byte Tracks; // Tracks number
6666-};
6767-typedef struct MADSpec MADSpec;
6868-6969-#if defined(powerc) || defined(__powerc)
7070-#pragma options align=reset
7171-#endif
-319
Mac #includes/Apple #includes/RDriver.h
···11-/******************** ***********************/
22-//
33-// Player PRO 4.4x -- MAD Music Driver Definition
44-//
55-// Library Version 3.0
66-//
77-// To use with MusicLibrary for Think C & CodeWarrior
88-//
99-// Antoine ROSSET
1010-// 16 Tranchees
1111-// 1206 GENEVA
1212-// SWITZERLAND
1313-//
1414-// FAX: (+41 22) 346 11 97
1515-// Compuserve: 100277,164
1616-// Internet: rosset@dial.eunet.ch
1717-//
1818-/******************** ***********************/
1919-2020-#define MAX_ARP 3
2121-#define NUMBER_FINETUNES 16
2222-#define NUMBER_NOTES 84
2323-#define AMIGA_CLOCKFREQ2 3575872L
2424-2525-#define MIN_PITCH 13L
2626-#define MAX_PITCH 1918L
2727-2828-#define MIN_VOLUME 0
2929-#define MAX_VOLUME 64
3030-#define MAXTRACK 32
3131-#define MAXINSTRU 64
3232-#define MAXPATTERN 200
3333-#define MAXPATTERNSIZE 1024
3434-3535-/******************** ***********************/
3636-/*** RInit Function parameter ***/
3737-/******************** ***********************/
3838-3939-enum
4040-{
4141- ASCSoundDriver = 1,
4242- AWACSoundDriver,
4343- MIDISoundDriver,
4444- SoundManagerDriver
4545-};
4646-4747-enum
4848-{
4949- MonoOutPut = 1,
5050- StereoOutPut,
5151- TrueStereoOutPut
5252-};
5353-5454-struct RInitDesc
5555-{
5656- short TrackNo; // from 2 to 32
5757-5858- short OutPutBits; // 8 or 16
5959- long OutPutFrequency; // rate44khz, rate22050hz, rate22khz, rate11khz, rate11025hz
6060- short DriverMode; // ASCSoundDriver, AWACSoundDriver, MIDISoundDriver or SoundManagerDriver
6161- short SMBufferSize; // Used only if DriverMode == SoundManagerDriver
6262-6363- short VExt; // Play Speed : 80 = normal
6464- short FreqExt; // Play Pitch : 80 = normal
6565-6666- Boolean AntiAliasing; // Use AntiAliasing filter ?
6767- short OutPutMode; // Mono, Stereo or True Stereo output ?
6868-6969- Boolean RepeatMusic; // If music finished, repeat it or stop.
7070-};
7171-typedef struct RInitDesc RInitDesc;
7272-7373-7474-/******************** ***********************/
7575-/*** Voice structure definition ***/
7676-/******************** ***********************/
7777-7878-struct VoiceActive {
7979- Ptr MaxPtr;
8080- Ptr InstruVoice;
8181- Ptr StartPtr;
8282- long loopWord;
8383- long loopWords;
8484-8585- short Instru;
8686- short InstruOld;
8787-8888- short fineTune;
8989-9090- short Amiga;
9191- short AmigaOld;
9292-9393- short pitch;
9494- short realpitch;
9595- short Prerealpitch;
9696-9797- short volume;
9898- short effect;
9999- Byte arg;
100100-101101- short arp[MAX_ARP];
102102- short arpindex;
103103-104104- short viboffset;
105105- short vibdepth;
106106- short slide;
107107- short pitchgoal;
108108-109109- short pitchrate;
110110- short oldpitchrate;
111111-112112- short volumerate;
113113-114114- short vibrate;
115115- short oldvibrate;
116116-117117- short retrig;
118118-119119- short ID;
120120- short amplitude;
121121-122122- Ptr samplePtr;
123123-124124- Boolean repeat;
125125-};
126126-typedef struct VoiceActive VoiceActive;
127127-128128-/******************** ***********************/
129129-/*** Music description used in driver ***/
130130-/******************** ***********************/
131131-132132-struct MADPartition
133133-{
134134- MADSpec* header;
135135- struct MusicPattern* partition[ MAXPATTERN];
136136- Ptr instrument[ MAXINSTRU];
137137-};
138138-typedef struct MADPartition MADPartition;
139139-140140-/******************** ***********************/
141141-/*** PlayerPRO variables ***/
142142-/******************** ***********************/
143143-144144-#ifdef MainSystemPlayerPRO
145145-#define EXTDR
146146-#else
147147-#define EXTDR extern
148148-#endif
149149-150150-#ifndef __SOUND__
151151-#include <Sound.h>
152152-#endif
153153-154154-EXTDR RInitDesc InitDescInt;
155155-EXTDR MADPartition thePartition; // Current music in memory, loaded with RLoadMusic() by example
156156-EXTDR MADSpec *theFileInt; // Current music header == thePartition.header
157157-EXTDR VoiceActive theVoiceActive[ MAXTRACK]; // Current driver voices
158158-EXTDR short DriverTypeInt; // Actual driver type
159159-EXTDR short Tube[ MAXTRACK]; // Used in 'Tracks View' Window - View menu
160160-EXTDR short PartitionReader; // Current position in pattern (0...64)
161161-EXTDR short Pat; // Current ID Pattern, see 'Patterns list'
162162-EXTDR short PL; // Current position in partition, see 'Partition list'
163163-EXTDR short VolExt[ MAXTRACK]; // Volumes settings, see 'Adaptators' window
164164-EXTDR short speed; // Current speed, see speed Effect
165165-EXTDR short finespeed; // Current finespeed, see speed Effect
166166-EXTDR short InstruTube[ MAXINSTRU]; // Used in 'Instrument View' Window - View menu
167167-EXTDR short VExt; // External music speed, see 'Adaptators' window
168168-EXTDR short FreqExt; // External music pitch, see 'Adaptators' window
169169-EXTDR short DriveTrackNo; // Actual number of tracks
170170-EXTDR short DriveOutBit; // Output bit: 8 or 16 bits
171171-EXTDR Boolean PtrSystem; // Use NewPtr or NewPtrSys ?
172172-EXTDR Boolean Reading; // Reading indicator
173173-EXTDR Boolean MusiqueFertig; // Is your music finished?
174174-EXTDR Boolean AntiAliasingFilter; // Is AntiAliasingFilter On? RInitMusic turns it to false
175175-EXTDR short LeftRight[ MAXTRACK]; // Left/Right % for Deluxe Driver
176176-177177-/* DO NOT MODIFY OR USE these variables */
178178-179179-EXTDR short smallcounter, trackDiv;
180180-EXTDR long ASCBUFFER, FREQBASE;
181181-EXTDR short **FreqHandle, InstruActif[ MAXINSTRU];
182182-EXTDR Ptr SysHeapPtr, Vol, IntDataPtr, OscilloWavePtr;
183183-EXTDR Boolean RepeatMusic, JumpToNextPattern;
184184-EXTDR Boolean DriveStereo, PtrSystem, JumpToNextPattern, AntiAliasing;
185185-EXTDR short pitchTable[ NUMBER_NOTES + 4][ NUMBER_FINETUNES];
186186-EXTDR long VSYNC, BufCounter, BytesToGenerate;
187187-188188-extern short vibrato_table[ ];
189189-190190-191191-/******************** ***********************/
192192-/*** DRIVERS ID ***/
193193-/*** DO NOT USE MIDIClassic Driver !!!! ***/
194194-/******************** ***********************/
195195-196196-enum {
197197- ASCMono = 1,
198198- ASCStereo = 2,
199199- SMMono = 3,
200200- SMStereo = 4,
201201- SMDSP = 5,
202202- SMPolyPhonic = 6,
203203- MIDIClassic = 7,
204204- AWAC = 8,
205205- SMDELUXE = 9,
206206- SMDELUXE8 = 10
207207-};
208208-209209-/******************** ***********************/
210210-/*** EFFECTS ID ***/
211211-/******************** ***********************/
212212-213213-enum {
214214- arpeggioE = 0,
215215- downslideE = 1,
216216- upslideE = 2,
217217- portamentoE = 3,
218218- vibratoE = 4,
219219- portaslideE = 5,
220220- vibratoslideE = 6,
221221- nothingE = 7,
222222- offsetE = 9,
223223- slidevolE = 10,
224224- fastskipE = 11,
225225- volumeE = 12,
226226- skipE = 13,
227227- extendedE = 14,
228228- speedE = 15
229229- };
230230-231231-/******************** ***********************/
232232-/* General Function Description */
233233-/* For more informations about these functions, e-mail me */
234234-/******************** ***********************/
235235-236236-237237-/******************** ***********************/
238238-/*** EXTERNAL ROUTINES ***/
239239-/*** See Documentation for more informations on these routines ***/
240240-/******************** ***********************/
241241-242242-enum {
243243- FileType = 1,
244244- RsrcType = 2,
245245- PtrType = 3
246246-};
247247-248248-#ifdef __cplusplus
249249-extern "C" {
250250-#endif
251251-252252-OSErr RInitMusic( short, short, Boolean); // Music Driver initialization
253253-OSErr RPlayMusic( void); // Play the current music
254254-OSErr RStopMusic( void); // Stop the current music
255255-OSErr RResetMusic( void); // Reset the current music at the start position
256256-OSErr RQuitMusic( void); // Dispose the music driver, use it after RInitMusic()
257257-258258-OSErr RLoadMusic( Str255 fName); // Load a MAD File in the current directory
259259-OSErr RLoadMusicRsrc( OSType IDName, short IDNo); // Load a MAD Rsrc into memory
260260-OSErr RLoadMusicPtr( Ptr myPtr); // Load a MAD Ptr into memory, you can DisposPtr your Ptr after this call
261261-OSErr RInstallMADF( MADPartition aPartition); // Install directly a MAD partition
262262-OSErr RClearMusic(void); // Dispose the current music, use it after RLoadMusic(), RLoadMusicRsrc(), RInstallMADF()
263263-264264-265265-OSErr ConvertMod2Mad( Ptr aMOD, long Size, MADPartition *theMAD); // Convert MOD to MAD
266266-Ptr ConvertMad2Mod( MADPartition *theMAD); // Convert MAD to MOD
267267-void ChangeTrackNo( short); // Change current tracks number of the music driver
268268-void CleanDriver(); // Clean the driver
269269-struct Command* GetCommand( short PosX, short TrackIdX, struct MusicPattern* tempMusicPat); // Extract a Command from a MusicPattern
270270-271271-// Play a sound with an amplitude on a track at a period, with loopStart and loopEnd
272272-// If period == 0, play it at normal frequence 22Khz ( F#5 )
273273-// Period: from 0 to NUMBER_NOTES
274274-OSErr RPlaySound( Ptr whichSound, long SoundSize, long whichTrack, long Period, long Amplitude, long loopStart, long loopLength);
275275-276276-277277-/******************** ***********************/
278278-/*** INTERNAL ROUTINES ***/
279279-/*** DO NOT use these routines ***/
280280-/******************** ***********************/
281281-282282-void Sampler8in8Add( VoiceActive *curVoice, register Ptr ASCBuffer);
283283-void Sampler16Add( VoiceActive *curVoice, register short *ASCBuffer);
284284-285285-void NoteAnalyse( void);
286286-287287-void ClearVol4();
288288-OSErr SetUpFrequence( long, long);
289289-OSErr ReadInstrument( short, short, Handle, Ptr);
290290-void DoEffect( VoiceActive *, short);
291291-OSErr DBSndClose();
292292-void StopChannel();
293293-OSErr SetMODVol4( long , long , Boolean );
294294-void PlayChannel();
295295-void checkpitch( VoiceActive *, Boolean);
296296-void BufferCopyM();
297297-void BufferCopyS();
298298-void InstallMODVBL(void);
299299-void ReadNote( VoiceActive *curVoice, struct Command *theCommand);
300300-void RemoveMODVBL(void);
301301-void MODRelance(void);
302302-void Play(void);
303303-void VIAOn(void);
304304-void SndOff(void);
305305-void SndOn(void);
306306-void VIAOn2(void);
307307-void VIAOn3(void);
308308-OSErr InitDBSoundManager( long);
309309-void SetUpEffect( VoiceActive *ch);
310310-Boolean DirectSave( Ptr, short, short);
311311-void ChangeSpeed( void);
312312-void Play16Stereo( void);
313313-void Play8Stereo( void);
314314-void Play8Mono( void);
315315-void ClearFrequence();
316316-317317-#ifdef __cplusplus
318318-}
319319-#endif