diff options
Diffstat (limited to 'rtl/morphos/ahi.pas')
-rw-r--r-- | rtl/morphos/ahi.pas | 630 |
1 files changed, 0 insertions, 630 deletions
diff --git a/rtl/morphos/ahi.pas b/rtl/morphos/ahi.pas deleted file mode 100644 index f9655d95cc..0000000000 --- a/rtl/morphos/ahi.pas +++ /dev/null @@ -1,630 +0,0 @@ -{ - This file is part of the Free Pascal run time library. - Copyright (c) 2005 Karoly Balogh for Genesi S.a.r.l. - - ahi.library interface unit for MorphOS/PowerPC - - Based on work of Nils Sjoholm member of the Amiga RTL - development team. - - MorphOS port was done on a free Pegasos II/G4 machine - provided by Genesi S.a.r.l. <www.genesi.lu> - - See the file COPYING.FPC, included in this distribution, - for details about the copyright. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -**********************************************************************} - -{$PACKRECORDS 2} -unit AHI; - -interface - -uses exec, utility; - -var - AHIBase: PLibrary; - - type - - PFixed = ^Fixed; - Fixed = LONGINT; - { A fixed-point value, 16 bits - to the left of the point and - 16 bits to the right } - - type - - Psposition = ^sposition; - sposition = Fixed; - - { AHIAudioCtrl } - { Lots of private data follows! } - PAHIAudioCtrl = ^tAHIAudioCtrl; - tAHIAudioCtrl = record - ahiac_UserData : Pointer; - end; - - { AHISoundMessage } - PAHISoundMessage = ^tAHISoundMessage; - tAHISoundMessage = record - ahism_Channel : Word; - end; - - { AHIRecordMessage } - PAHIRecordMessage = ^tAHIRecordMessage; - tAHIRecordMessage = record - ahirm_Type : Cardinal; { Format of buffer (object) } - ahirm_Buffer : Pointer; { Pointer to the sample array } - ahirm_Length : Cardinal; { Number of sample frames in buffer } - end; - - { AHISampleInfo } - PAHISampleInfo = ^tAHISampleInfo; - tAHISampleInfo = record - ahisi_Type : Cardinal; { Format of samples } - ahisi_Address : Pointer; { Address to array of samples } - ahisi_Length : Cardinal; { Number of samples in array } - end; - - { AHIAudioModeRequester } - PAHIAudioModeRequester = ^tAHIAudioModeRequester; - tAHIAudioModeRequester = record - ahiam_AudioID : Cardinal; { Selected audio mode } - ahiam_MixFreq : Cardinal; { Selected mixing/sampling frequency } - ahiam_LeftEdge : WORD; { Coordinates of requester on exit } - ahiam_TopEdge : WORD; - ahiam_Width : WORD; - ahiam_Height : WORD; - ahiam_InfoOpened : Boolean; { Info window opened on exit? } - ahiam_InfoLeftEdge : WORD; { Last coordinates of Info window } - ahiam_InfoTopEdge : WORD; - ahiam_InfoWidth : WORD; - ahiam_InfoHeight : WORD; - ahiam_UserData : Pointer; { You can store your own data here } - { Lots of private data follows! } - end; - - { AHIEffMasterVolume } - PAHIEffMasterVolume = ^tAHIEffMasterVolume; - tAHIEffMasterVolume = record - ahie_Effect : Cardinal; { Set to AHIET_MASTERVOLUME } - ahiemv_Volume : Fixed; { See autodocs for range! } - end; - - { AHIEffOutputBuffer } - PAHIEffOutputBuffer = ^tAHIEffOutputBuffer; - tAHIEffOutputBuffer = record - ahie_Effect : Cardinal; { Set to AHIET_OUTPUTBUFFER } - ahieob_Func : PHook; - { These fields are filled by AHI } - ahieob_Type : Cardinal; { Format of buffer } - ahieob_Buffer : Pointer; { Pointer to the sample array } - ahieob_Length : Cardinal; { Number of sample frames in buffer } - end; - - { AHIEffDSPMask (V4) } - PAHIEffDSPMask = ^tAHIEffDSPMask; - tAHIEffDSPMask = record - ahie_Effect : Cardinal; { Set to AHIET_DSPMASK } - ahiedm_Channels : Word; { Number of elements in array } - ahiedm_Mask : array[0..0] of Byte; { Here follows the array } - end; - - - const - AHIEDM_WET = 0; - AHIEDM_DRY = 1; - { AHIEffDSPEcho (V4) } - type - PAHIDSPEcho = ^tAHIDSPEcho; - tAHIDSPEcho = record - ahie_Effect : Cardinal; { Set to AHIET_DSPECHO } - ahiede_Delay : Cardinal; { In samples } - ahiede_Feedback : Fixed; - ahiede_Mix : Fixed; - ahiede_Cross : Fixed; - end; - - { AHIEffChannelInfo (V4) } - PAHIEffChannelInfo = ^tAHIEffChannelInfo; - tAHIEffChannelInfo = record - ahie_Effect : Cardinal; { Set to AHIET_CHANNELINFO } - ahieci_Func : PHook; - ahieci_Channels : Word; - ahieci_Pad : Word; - { The rest is filled by AHI } - ahieci_Offset : array[0..0] of Cardinal; { The array follows } - end; - - { TAGS } - - const - AHI_TagBase = TAG_USER; - AHI_TagBaseR = AHI_TagBase or $8000; - { AHI_AllocAudioA tags } - { Desired audio mode } - AHIA_AudioID = AHI_TagBase + 1; - { Suggested mixing frequency } - AHIA_MixFreq = AHI_TagBase + 2; - { Suggested number of channels } - AHIA_Channels = AHI_TagBase + 3; - { Number of sounds to use } - AHIA_Sounds = AHI_TagBase + 4; - { End-of-Sound Hook } - AHIA_SoundFunc = AHI_TagBase + 5; - { Player Hook } - AHIA_PlayerFunc = AHI_TagBase + 6; - { Frequency for player Hook (Fixed) } - AHIA_PlayerFreq = AHI_TagBase + 7; - { Minimum Frequency for player Hook } - AHIA_MinPlayerFreq = AHI_TagBase + 8; - { Maximum Frequency for player Hook } - AHIA_MaxPlayerFreq = AHI_TagBase + 9; - { Sample recording Hook } - AHIA_RecordFunc = AHI_TagBase + 10; - { What to put in ahiac_UserData } - AHIA_UserData = AHI_TagBase + 11; - { AHI_PlayA tags (V4) } - { All command tags should be... } - AHIP_BeginChannel = AHI_TagBase + 40; - { ... enclosed by these tags. } - AHIP_EndChannel = AHI_TagBase + 41; - AHIP_Freq = AHI_TagBase + 50; - AHIP_Vol = AHI_TagBase + 51; - AHIP_Pan = AHI_TagBase + 52; - AHIP_Sound = AHI_TagBase + 53; - AHIP_Offset = AHI_TagBase + 54; - AHIP_Length = AHI_TagBase + 55; - AHIP_LoopFreq = AHI_TagBase + 60; - AHIP_LoopVol = AHI_TagBase + 61; - AHIP_LoopPan = AHI_TagBase + 62; - AHIP_LoopSound = AHI_TagBase + 63; - AHIP_LoopOffset = AHI_TagBase + 64; - AHIP_LoopLength = AHI_TagBase + 65; - { AHI_ControlAudioA tags } - { Booleanean } - AHIC_Play = AHI_TagBase + 80; - { Booleanean } - AHIC_Record = AHI_TagBase + 81; - AHIC_MonitorVolume = AHI_TagBase + 82; - { ti_Data is pointer to Fixed (LONG) } - AHIC_MonitorVolume_Query = AHI_TagBase + 83; - { ti_Data is pointer to Cardinal } - AHIC_MixFreq_Query = AHI_TagBase + 84; - { --- New for V2, they will be ignored by V1 --- } - AHIC_InputGain = AHI_TagBase + 85; - { ti_Data is pointer to Fixed (LONG) } - AHIC_InputGain_Query = AHI_TagBase + 86; - AHIC_OutputVolume = AHI_TagBase + 87; - { ti_Data is pointer to Fixed (LONG) } - AHIC_OutputVolume_Query = AHI_TagBase + 88; - AHIC_Input = AHI_TagBase + 89; - { ti_Data is pointer to Cardinal } - AHIC_Input_Query = AHI_TagBase + 90; - AHIC_Output = AHI_TagBase + 91; - { ti_Data is pointer to Cardinal } - AHIC_Output_Query = AHI_TagBase + 92; - { AHI_GetAudioAttrsA tags } - AHIDB_AudioID = AHI_TagBase + 100; - { Pointer to name of driver } - AHIDB_Driver = AHI_TagBaseR + 101; - { Private! } - AHIDB_Flags = AHI_TagBase + 102; - { Booleanean } - AHIDB_Volume = AHI_TagBase + 103; - { Booleanean } - AHIDB_Panning = AHI_TagBase + 104; - { Booleanean } - AHIDB_Stereo = AHI_TagBase + 105; - { Booleanean } - AHIDB_HiFi = AHI_TagBase + 106; - { Booleanean } - AHIDB_PingPong = AHI_TagBase + 107; - { Private! } - AHIDB_MultTable = AHI_TagBase + 108; - { Pointer to name of this mode } - AHIDB_Name = AHI_TagBaseR + 109; - { Output bits } - AHIDB_Bits = AHI_TagBase + 110; - { Max supported channels } - AHIDB_MaxChannels = AHI_TagBase + 111; - { Min mixing freq. supported } - AHIDB_MinMixFreq = AHI_TagBase + 112; - { Max mixing freq. supported } - AHIDB_MaxMixFreq = AHI_TagBase + 113; - { Booleanean } - AHIDB_Record = AHI_TagBase + 114; - AHIDB_Frequencies = AHI_TagBase + 115; - { ti_Data is frequency index } - AHIDB_FrequencyArg = AHI_TagBase + 116; - AHIDB_Frequency = AHI_TagBase + 117; - { Pointer to driver author name } - AHIDB_Author = AHI_TagBase + 118; - { Pointer to driver copyright notice } - AHIDB_Copyright = AHI_TagBase + 119; - { Pointer to driver version string } - AHIDB_Version = AHI_TagBase + 120; - { Pointer to driver annotation text } - AHIDB_Annotation = AHI_TagBase + 121; - { Specifies the string buffer size } - AHIDB_BufferLen = AHI_TagBase + 122; - { ti_Data is frequency! } - AHIDB_IndexArg = AHI_TagBase + 123; - AHIDB_Index = AHI_TagBase + 124; - { Booleanean } - AHIDB_Realtime = AHI_TagBase + 125; - { It's sample frames } - AHIDB_MaxPlaySamples = AHI_TagBase + 126; - { It's sample frames } - AHIDB_MaxRecordSamples = AHI_TagBase + 127; - { Booleanean } - AHIDB_FullDuplex = AHI_TagBase + 129; - { --- New for V2, they will be ignored by V1 --- } - AHIDB_MinMonitorVolume = AHI_TagBase + 130; - AHIDB_MaxMonitorVolume = AHI_TagBase + 131; - AHIDB_MinInputGain = AHI_TagBase + 132; - AHIDB_MaxInputGain = AHI_TagBase + 133; - AHIDB_MinOutputVolume = AHI_TagBase + 134; - AHIDB_MaxOutputVolume = AHI_TagBase + 135; - AHIDB_Inputs = AHI_TagBase + 136; - { ti_Data is input index } - AHIDB_InputArg = AHI_TagBase + 137; - AHIDB_Input = AHI_TagBase + 138; - AHIDB_Outputs = AHI_TagBase + 139; - { ti_Data is input index } - AHIDB_OutputArg = AHI_TagBase + 140; - AHIDB_Output = AHI_TagBase + 141; - { --- New for V4, they will be ignored by V2 and earlier --- } - { Private! } - AHIDB_Data = AHI_TagBaseR + 142; - { AHI_BestAudioIDA tags } - { --- New for V4, they will be ignored by V2 and earlier --- } - AHIB_Dizzy = AHI_TagBase + 190; - { AHI_AudioRequestA tags } - { Window control } - { Parent window } - AHIR_Window = AHI_TagBase + 200; - { Screen to open on if no window } - AHIR_Screen = AHI_TagBase + 201; - { Name of public screen } - AHIR_PubScreenName = AHI_TagBase + 202; - { Allocate private IDCMP? } - AHIR_PrivateIDCMP = AHI_TagBase + 203; - { Function to handle IntuiMessages } - AHIR_IntuiMsgFunc = AHI_TagBase + 204; - { Block input in AHIR_Window? } - AHIR_SleepWindow = AHI_TagBase + 205; - { What to put in ahiam_UserData } - AHIR_UserData = AHI_TagBase + 206; - { Text display } - { Text font to use for gadget text } - AHIR_TextAttr = AHI_TagBase + 220; - { Locale to use for text } - AHIR_Locale = AHI_TagBase + 221; - { Title of requester } - AHIR_TitleText = AHI_TagBase + 222; - { Positive gadget text } - AHIR_PositiveText = AHI_TagBase + 223; - { Negative gadget text } - AHIR_NegativeText = AHI_TagBase + 224; - { Initial settings } - { Initial requester coordinates } - AHIR_InitialLeftEdge = AHI_TagBase + 240; - AHIR_InitialTopEdge = AHI_TagBase + 241; - { Initial requester dimensions } - AHIR_InitialWidth = AHI_TagBase + 242; - AHIR_InitialHeight = AHI_TagBase + 243; - { Initial audio mode id } - AHIR_InitialAudioID = AHI_TagBase + 244; - { Initial mixing/sampling frequency } - AHIR_InitialMixFreq = AHI_TagBase + 245; - { Info window initially opened? } - AHIR_InitialInfoOpened = AHI_TagBase + 246; - { Initial Info window coords. } - AHIR_InitialInfoLeftEdge = AHI_TagBase + 247; - AHIR_InitialInfoTopEdge = AHI_TagBase + 248; - { Not used! } - AHIR_InitialInfoWidth = AHI_TagBase + 249; - { Not used! } - AHIR_InitialInfoHeight = AHI_TagBase + 250; - { Options } - { Allow selection of mixing frequency? } - AHIR_DoMixFreq = AHI_TagBase + 260; - { Allow selection of default mode? (V4) } - AHIR_DoDefaultMode = AHI_TagBase + 261; - { Filtering } - { Pointer to filter taglist } - AHIR_FilterTags = AHI_TagBase + 270; - { Function to filter mode id's } - AHIR_FilterFunc = AHI_TagBase + 271; - { DEFS } - AHINAME : PChar = 'ahi.device'; - { Invalid Audio ID } - AHI_INVALID_ID = not (0); - { Only for AHI_AllocAudioA()! } - AHI_DEFAULT_ID = $00000000; - { Special sample render Audio ID } - AHI_LOOPBACK_ID = $00000001; - { Only for AHI_AllocAudioA()! } - AHI_DEFAULT_FREQ = 0; - { Special frequency for AHI_SetFreq() } - AHI_MIXFREQ = not (0); - { Turns a channel off } - AHI_NOSOUND = $ffff; - { Set#? Flags } - AHISF_IMM = 1 shl 0; - AHISB_IMM = 0; - { Effect Types } - { OR with effect to disable } - AHIET_CANCEL = 1 shl 31; - AHIET_MASTERVOLUME = 1; - AHIET_OUTPUTBUFFER = 2; - { --- New for V4 --- } - AHIET_DSPMASK = 3; - AHIET_DSPECHO = 4; - AHIET_CHANNELINFO = 5; - { Sound Types } - { Private } - AHIST_NOTYPE = not (0); - { 8 or 16 bit sample } - AHIST_SAMPLE = 0; - { Dynamic sample } - AHIST_DYNAMICSAMPLE = 1; - { The input from your sampler } - AHIST_INPUT = 1 shl 29; - { Private } - AHIST_BW = 1 shl 30; - { Sample types } - { Note that only AHIST_M8S, AHIST_S8S, AHIST_M16S and AHIST_S16S - are supported by AHI_LoadSound(). } - { Mono, 8 bit signed (BYTE) } - AHIST_M8S = 0; - { Mono, 16 bit signed (WORD) } - AHIST_M16S = 1; - { Stereo, 8 bit signed (2×BYTE) } - AHIST_S8S = 2; - { Stereo, 16 bit signed (2×WORD) } - AHIST_S16S = 3; - { Mono, 32 bit signed (LONG) } - AHIST_M32S = 8; - { Stereo, 32 bit signed (2×LONG) } - AHIST_S32S = 10; - { OBSOLETE! } - AHIST_M8U = 4; - { Error codes } - { No error } - AHIE_OK = 0; - { Out of memory } - AHIE_NOMEM = 1; - { Unknown sound type } - AHIE_BADSOUNDTYPE = 2; - { Unknown/unsupported sample type } - AHIE_BADSAMPLETYPE = 3; - { User-triggered abortion } - AHIE_ABORTED = 4; - { Error, but unknown } - AHIE_UNKNOWN = 5; - { CMD_WRITE/CMD_READ failure } - AHIE_HALFDUPLEX = 6; - { DEVICE INTERFACE DEFINITIONS FOLLOWS } - { Device units } - AHI_DEFAULT_UNIT = 0; - AHI_NO_UNIT = 255; - { The preference file } - ID_AHIU = $41484955; - ID_AHIG = $41484947; - - - type - PAHIUnitPrefs = ^tAHIUnitPrefs; - tAHIUnitPrefs = record - ahiup_Unit : Byte; - ahiup_Pad : Byte; - ahiup_Channels : Word; - ahiup_AudioMode : Cardinal; - ahiup_Frequency : Cardinal; - ahiup_MonitorVolume : Fixed; - ahiup_InputGain : Fixed; - ahiup_OutputVolume : Fixed; - ahiup_Input : Cardinal; - ahiup_Output : Cardinal; - end; - - - - PAHIGlobalPrefs = ^tAHIGlobalPrefs; - tAHIGlobalPrefs = record - ahigp_DebugLevel : Word; { Range: 0-3 (for None, Low,} - ahigp_DisableSurround : Boolean; { High and All) } - ahigp_DisableEcho : Boolean; - ahigp_FastEcho : Boolean; - ahigp_MaxCPU : Fixed; - ahigp_ClipMasterVolume : Boolean; - end; - - { Debug levels } - - const - AHI_DEBUG_NONE = 0; - AHI_DEBUG_LOW = 1; - AHI_DEBUG_HIGH = 2; - AHI_DEBUG_ALL = 3; - - { AHIRequest } - type - PAHIRequest = ^tAHIRequest; - tAHIRequest = record - ahir_Std : tIOStdReq; { Standard IO request } - ahir_Version : Word; { Needed version } - { --- New for V4, they will be ignored by V2 and earlier --- } - ahir_Pad1 : Word; - ahir_Private : array[0..1] of Cardinal; { Hands off! } - ahir_Type : Cardinal; { Sample format } - ahir_Frequency : Cardinal; { Sample/Record frequency } - ahir_Volume : Fixed; { Sample volume } - ahir_Position : Fixed; { Stereo position } - ahir_Link : PAHIRequest; { For double buffering } - end; - - { Flags for OpenDevice() } - - const - AHIDF_NOMODESCAN = 1 shl 0; - AHIDB_NOMODESCAN = 0; - - -function AHI_AllocAudioA(tagList : pTagItem location 'a1') : pAHIAudioCtrl; -SysCall AHIBase 042; - -procedure AHI_FreeAudio(AudioCtrl : pAHIAudioCtrl location 'a2'); -SysCall AHIBase 048; - -procedure AHI_KillAudio; -SysCall AHIBase 054; - -function AHI_ControlAudioA(AudioCtrl : pAHIAudioCtrl location 'a2'; tagList : pTagItem location 'a1') : Cardinal; -SysCall AHIBase 060; - -procedure AHI_SetVol(Channel : Word location 'd0'; Volume : LongInt location 'd1'; Pan : LongInt location 'd2'; AudioCtrl : pAHIAudioCtrl location 'a2'; Flags : Cardinal location 'd3'); -SysCall AHIBase 066; - -procedure AHI_SetFreq(Channel : Word location 'd0'; Freq : Cardinal location 'd1'; AudioCtrl : pAHIAudioCtrl location 'a2'; Flags : Cardinal location 'd2'); -SysCall AHIBase 072; - -procedure AHI_SetSound(Channel : Word location 'd0'; Sound : Word location 'd1'; Offset : Cardinal location 'd2'; Length : LongInt location 'd3'; AudioCtrl : pAHIAudioCtrl location 'a2'; Flags : Cardinal location 'd4'); -SysCall AHIBase 078; - -function AHI_SetEffect(Effect : Pointer location 'a0'; AudioCtrl : pAHIAudioCtrl location 'a2') : Cardinal; -SysCall AHIBase 084; - -function AHI_LoadSound(Sound : Word location 'd0'; SType : Cardinal location 'd1'; Info : Pointer location 'a0'; AudioCtrl : pAHIAudioCtrl location 'a2') : Cardinal; -SysCall AHIBase 090; - -procedure AHI_UnloadSound(Sound : Word location 'd0'; Audioctrl : pAHIAudioCtrl location 'a2'); -SysCall AHIBase 096; - -function AHI_NextAudioID(Last_ID : Cardinal location 'd0') : Cardinal; -SysCall AHIBase 102; - -function AHI_GetAudioAttrsA(ID : Cardinal location 'd0'; Audioctrl : pAHIAudioCtrl location 'a2'; tagList : pTagItem location 'a1') : BOOLEAN; -SysCall AHIBase 108; - -function AHI_BestAudioIDA(tagList : pTagItem location 'a1') : Cardinal; -SysCall AHIBase 114; - -function AHI_AllocAudioRequestA(tagList : pTagItem location 'a0') : pAHIAudioModeRequester; -SysCall AHIBase 120; - -function AHI_AudioRequestA(Requester : pAHIAudioModeRequester location 'a0'; tagList : pTagItem location 'a1') : BOOLEAN; -SysCall AHIBase 126; - -procedure AHI_FreeAudioRequest(Requester : pAHIAudioModeRequester location 'a0'); -SysCall AHIBase 132; - -procedure AHI_PlayA(Audioctrl : pAHIAudioCtrl location 'a2'; tagList : pTagItem location 'a1'); -SysCall AHIBase 138; - -function AHI_SampleFrameSize(SampleType : Cardinal location 'd0') : Cardinal; -SysCall AHIBase 144; - -function AHI_AddAudioMode(a0arg : pTagItem location 'a0') : Cardinal; -SysCall AHIBase 150; - -function AHI_RemoveAudioMode(d0arg : Cardinal location 'd0') : Cardinal; -SysCall AHIBase 156; - -function AHI_LoadModeFile(a0arg : PChar location 'a0') : Cardinal; -SysCall AHIBase 162; - - -{ - Functions and procedures with tags -} -function AHI_AllocAudio(tagList : array of DWord): pAHIAudioCtrl; -function AHI_ControlAudio(AudioCtrl : pAHIAudioCtrl; tagList : array Of DWord) : Cardinal; -function AHI_GetAudioAttrs(ID : CARDINAL; Audioctrl : pAHIAudioCtrl; taglist : array of DWord) : Boolean; -function AHI_BestAudioID(taglist : array of DWord) : Cardinal; -function AHI_AllocAudioRequest(taglist : array of DWord) : pAHIAudioModeRequester; -function AHI_AudioRequest(Requester : pAHIAudioModeRequester; taglist : array of DWord) : Boolean; -procedure AHI_Play(Audioctrl : pAHIAudioCtrl; taglist : array of DWord); - -function InitAHILibrary : boolean; - - -implementation - - -function AHI_AllocAudio(tagList : array of DWord): pAHIAudioCtrl; -begin - AHI_AllocAudio:=AHI_AllocAudioA(@taglist); -end; - -function AHI_AllocAudioRequest(taglist : array of DWord) : pAHIAudioModeRequester; -begin - AHI_AllocAudioRequest:=AHI_AllocAudioRequestA(@taglist); -end; - -function AHI_AudioRequest(Requester : pAHIAudioModeRequester; taglist : array of DWord) : Boolean; -begin - AHI_AudioRequest:=AHI_AudioRequestA(Requester,@taglist); -end; - -function AHI_BestAudioID(taglist : array of DWord) : longword; -begin - AHI_BestAudioID:=AHI_BestAudioIDA(@taglist); -end; - -function AHI_ControlAudio(AudioCtrl : pAHIAudioCtrl; taglist : array of DWord) : longword; -begin - AHI_ControlAudio:=AHI_ControlAudioA(AudioCtrl,@taglist); -end; - -function AHI_GetAudioAttrs(ID : longword; Audioctrl : pAHIAudioCtrl; taglist : array of DWord) : Boolean; -begin - AHI_GetAudioAttrs:=AHI_GetAudioAttrsA(ID,Audioctrl,@taglist); -end; - -procedure AHI_Play(Audioctrl : pAHIAudioCtrl; taglist : array of DWord); -begin - AHI_PlayA(Audioctrl,@taglist); -end; - - -const - { Change VERSION and LIBVERSION to proper values } - - VERSION : string[2] = '0'; - LIBVERSION : longword = 0; - -var - ahi_exit : Pointer; - -procedure CloseAHILibrary; -begin - ExitProc := ahi_exit; - if AHIBase <> nil then begin - CloseLibrary(PLibrary(AHIBase)); - AHIBase := nil; - end; -end; - -function InitAHILibrary : boolean; -begin - AHIBase := nil; - AHIBase := OpenLibrary(AHINAME,LIBVERSION); - if AHIBase <> nil then begin - ahi_exit := ExitProc; - ExitProc := @CloseAhiLibrary; - InitAhiLibrary:=True; - end else begin - InitAhiLibrary:=False; - end; -end; - -end. (* UNIT AHI *) - |