{******************************************************************************} {* *} {* Copyright (C) Microsoft Corporation. All Rights Reserved. *} {* *} {* Files: dsound.h *} {* Content: DirectSound include file *} {* *} {* DirectX 9.0 Delphi / FreePascal adaptation by Alexey Barkovoy *} {* E-Mail: directx@clootie.ru *} {* *} {* Modified: 14-Apr-2007 *} {* *} {* Compatible with : *} {* DirectX 7.0 Object Pascal adaptation by *} {* Erik Unger, e-Mail: DelphiDirectX@next-reality.com *} {* *} {* Latest version can be downloaded from: *} {* http://www.clootie.ru *} {* http://sourceforge.net/projects/delphi-dx9sdk *} {* *} {******************************************************************************} { } { Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI) } { } { The contents of this file are used with permission, subject to the Mozilla } { Public License Version 1.1 (the "License"); you may not use this file except } { in compliance with the License. You may obtain a copy of the License at } { http://www.mozilla.org/MPL/MPL-1.1.html } { } { Software distributed under the License is distributed on an "AS IS" basis, } { WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for } { the specific language governing rights and limitations under the License. } { } { Alternatively, the contents of this file may be used under the terms of the } { GNU Lesser General Public License (the "LGPL License"), in which case the } { provisions of the LGPL License are applicable instead of those above. } { If you wish to allow use of your version of this file only under the terms } { of the LGPL License and not to allow others to use your version of this file } { under the MPL, indicate your decision by deleting the provisions above and } { replace them with the notice and other provisions required by the LGPL } { License. If you do not delete the provisions above, a recipient may use } { your version of this file under either the MPL or the LGPL License. } { } { For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html } { } {******************************************************************************} {$I DirectX.inc} unit DirectSound; interface uses Windows, MMSystem, DXTypes; (*==========================================================================; * * Copyright (c) Microsoft Corporation. All rights reserved. * * File: dsound.h * Content: DirectSound include file * **************************************************************************) //////////////////////////////////////////////////////////////////////// // Global level dynamic loading support {$IFDEF DYNAMIC_LINK_ALL} {$DEFINE DIRECTSOUND_DYNAMIC_LINK} {$ENDIF} {$IFDEF DYNAMIC_LINK_EXPLICIT_ALL} {$DEFINE DIRECTSOUND_DYNAMIC_LINK_EXPLICIT} {$ENDIF} // Remove "dots" below to force some kind of dynamic linking {.$DEFINE DIRECTSOUND_DYNAMIC_LINK} {.$DEFINE DIRECTSOUND_DYNAMIC_LINK_EXPLICIT} //////////////////////////////////////////////////////////////////////// // Assume for what DirectSound version we will compile headers {$IFDEF DIRECTX7} {$DEFINE DIRECTSOUND_VERSION_7} {$ENDIF} {$IFDEF DIRECTX8} {$DEFINE DIRECTSOUND_VERSION_8} {$ENDIF} {$IFDEF DIRECTX9} {$DEFINE DIRECTSOUND_VERSION_9} {$ENDIF} {$IFNDEF DIRECTSOUND_VERSION_9} {$IFNDEF DIRECTSOUND_VERSION_8} {$IFNDEF DIRECTSOUND_VERSION_7} // Compiling for DirectSound9 by default {$DEFINE DIRECTSOUND_VERSION_9} {$ENDIF} {$ENDIF} {$ENDIF} //////////////////////////////////////////////////////////////////////// // Emit conditionals to C++Builder compiler {$IFDEF DIRECTSOUND_VERSION_7} {$HPPEMIT '#define DIRECTSOUND_VERSION 0x0700'} {$ENDIF} {$IFDEF DIRECTSOUND_VERSION_8} {$HPPEMIT '#define DIRECTSOUND_VERSION 0x0800'} {$ENDIF} {$IFDEF DIRECTSOUND_VERSION_9} {$HPPEMIT '#define DIRECTSOUND_VERSION 0x0900'} {$ENDIF} (*$HPPEMIT '#include "dsound.h"' *) //////////////////////////////////////////////////////////////////////// // Define symbols for '<=' comparision {$IFDEF DIRECTSOUND_VERSION_9} {$DEFINE DIRECTSOUND_VERSION_8} {$ENDIF} {$IFDEF DIRECTSOUND_VERSION_8} {$DEFINE DIRECTSOUND_VERSION_7} {$ENDIF} {$IFNDEF COMPILER6_UP} type PPointer = ^Pointer; PPAnsiChar = ^PAnsiChar; {$ENDIF} { Type definitions shared with Direct3D } type D3DVALUE = DXTypes.D3DVALUE; {$EXTERNALSYM D3DVALUE} TD3DValue = DXTypes.TD3DValue; PD3DValue = DXTypes.PD3DValue; D3DCOLOR = DXTypes.D3DCOLOR; {$EXTERNALSYM D3DCOLOR} TD3DColor = DXTypes.TD3DColor; _D3DVECTOR = DXTypes._D3DVECTOR; {$EXTERNALSYM _D3DVECTOR} D3DVECTOR = DXTypes.D3DVECTOR; {$EXTERNALSYM D3DVECTOR} TD3DVector = DXTypes.TD3DVector; PD3DVector = DXTypes.PD3DVector; const _FACDS = $878; { DirectSound's facility code } {$EXTERNALSYM _FACDS} // #define MAKE_DSHRESULT(code) MAKE_HRESULT(1, _FACDS, code) function MAKE_DSHRESULT(Code: DWord): DWord; {$EXTERNALSYM MAKE_DSHRESULT} const MAKE_DSHRESULT_R = (1 shl 31) or (_FACDS shl 16); const // DirectSound Component GUID {47D4D946-62E8-11CF-93BC-444553540000} CLSID_DirectSound: TGUID = '{47d4d946-62e8-11cf-93bc-444553540000}'; {$EXTERNALSYM CLSID_DirectSound} // DirectSound 8.0 Component GUID {3901CC3F-84B5-4FA4-BA35-AA8172B8A09B} CLSID_DirectSound8: TGUID = '{3901cc3f-84b5-4fa4-ba35-aa8172b8a09b}'; {$EXTERNALSYM CLSID_DirectSound8} // DirectSound Capture Component GUID {B0210780-89CD-11D0-AF08-00A0C925CD16} CLSID_DirectSoundCapture: TGUID = '{b0210780-89cd-11d0-af08-00a0c925cd16}'; {$EXTERNALSYM CLSID_DirectSoundCapture} // DirectSound 8.0 Capture Component GUID {E4BCAC13-7F99-4908-9A8E-74E3BF24B6E1} CLSID_DirectSoundCapture8: TGUID = '{e4bcac13-7f99-4908-9a8e-74e3bf24b6e1}'; {$EXTERNALSYM CLSID_DirectSoundCapture8} // DirectSound Full Duplex Component GUID {FEA4300C-7959-4147-B26A-2377B9E7A91D} CLSID_DirectSoundFullDuplex: TGUID = '{fea4300c-7959-4147-b26a-2377b9e7a91d}'; {$EXTERNALSYM CLSID_DirectSoundFullDuplex} // DirectSound default playback device GUID {DEF00000-9C6D-47ED-AAF1-4DDA8F2B5C03} DSDEVID_DefaultPlayback: TGUID = '{def00000-9c6d-47ed-aaf1-4dda8f2b5c03}'; {$EXTERNALSYM DSDEVID_DefaultPlayback} // DirectSound default capture device GUID {DEF00001-9C6D-47ED-AAF1-4DDA8F2B5C03} DSDEVID_DefaultCapture: TGUID = '{def00001-9c6d-47ed-aaf1-4dda8f2b5c03}'; {$EXTERNALSYM DSDEVID_DefaultCapture} // DirectSound default device for voice playback {DEF00002-9C6D-47ED-AAF1-4DDA8F2B5C03} DSDEVID_DefaultVoicePlayback: TGUID = '{def00002-9c6d-47ed-aaf1-4dda8f2b5c03}'; {$EXTERNALSYM DSDEVID_DefaultVoicePlayback} // DirectSound default device for voice capture {DEF00003-9C6D-47ED-AAF1-4DDA8F2B5C03} DSDEVID_DefaultVoiceCapture: TGUID = '{def00003-9c6d-47ed-aaf1-4dda8f2b5c03}'; {$EXTERNALSYM DSDEVID_DefaultVoiceCapture} // // Structures // type PDSCaps = ^TDSCaps; _DSCAPS = packed record dwSize : DWORD; dwFlags : DWORD; dwMinSecondarySampleRate : DWORD; dwMaxSecondarySampleRate : DWORD; dwPrimaryBuffers : DWORD; dwMaxHwMixingAllBuffers : DWORD; dwMaxHwMixingStaticBuffers : DWORD; dwMaxHwMixingStreamingBuffers : DWORD; dwFreeHwMixingAllBuffers : DWORD; dwFreeHwMixingStaticBuffers : DWORD; dwFreeHwMixingStreamingBuffers : DWORD; dwMaxHw3DAllBuffers : DWORD; dwMaxHw3DStaticBuffers : DWORD; dwMaxHw3DStreamingBuffers : DWORD; dwFreeHw3DAllBuffers : DWORD; dwFreeHw3DStaticBuffers : DWORD; dwFreeHw3DStreamingBuffers : DWORD; dwTotalHwMemBytes : DWORD; dwFreeHwMemBytes : DWORD; dwMaxContigFreeHwMemBytes : DWORD; dwUnlockTransferRateHwBuffers : DWORD; dwPlayCpuOverheadSwBuffers : DWORD; dwReserved1 : DWORD; dwReserved2 : DWORD; end; {$EXTERNALSYM _DSCAPS} DSCAPS = _DSCAPS; {$EXTERNALSYM DSCAPS} TDSCaps = _DSCAPS; PDSBcaps = ^TDSBcaps; _DSBCAPS = packed record dwSize : DWORD; dwFlags : DWORD; dwBufferBytes : DWORD; dwUnlockTransferRate : DWORD; dwPlayCpuOverhead : DWORD; end; {$EXTERNALSYM _DSBCAPS} DSBCAPS = _DSBCAPS; {$EXTERNALSYM DSBCAPS} TDSBcaps = _DSBCAPS; {$IFDEF DIRECTSOUND_VERSION_8} // #if DIRECTSOUND_VERSION >= 0x0800 PDSEffectDesc = ^TDSEffectDesc; _DSEFFECTDESC = packed record dwSize : DWORD; dwFlags : DWORD; guidDSFXClass : TGUID; dwReserved1 : DWORD_PTR; dwReserved2 : DWORD_PTR; end; {$EXTERNALSYM _DSEFFECTDESC} DSEFFECTDESC = _DSEFFECTDESC; {$EXTERNALSYM DSEFFECTDESC} TDSEffectDesc = _DSEFFECTDESC; const DSFX_LOCHARDWARE = $00000001; {$EXTERNALSYM DSFX_LOCHARDWARE} DSFX_LOCSOFTWARE = $00000002; {$EXTERNALSYM DSFX_LOCSOFTWARE} DSFXR_PRESENT = 0; {$EXTERNALSYM DSFXR_PRESENT} DSFXR_LOCHARDWARE = 1; {$EXTERNALSYM DSFXR_LOCHARDWARE} DSFXR_LOCSOFTWARE = 2; {$EXTERNALSYM DSFXR_LOCSOFTWARE} DSFXR_UNALLOCATED = 3; {$EXTERNALSYM DSFXR_UNALLOCATED} DSFXR_FAILED = 4; {$EXTERNALSYM DSFXR_FAILED} DSFXR_UNKNOWN = 5; {$EXTERNALSYM DSFXR_UNKNOWN} DSFXR_SENDLOOP = 6; {$EXTERNALSYM DSFXR_SENDLOOP} type PDSCEffectDesc = ^TDSCEffectDesc; _DSCEFFECTDESC = packed record dwSize: DWORD; dwFlags: DWORD; guidDSCFXClass: TGUID; guidDSCFXInstance: TGUID; dwReserved1: DWORD; dwReserved2: DWORD; end; {$EXTERNALSYM _DSCEFFECTDESC} DSCEFFECTDESC = _DSCEFFECTDESC; {$EXTERNALSYM DSCEFFECTDESC} TDSCEffectDesc = _DSCEFFECTDESC; const DSCFX_LOCHARDWARE = $00000001; {$EXTERNALSYM DSCFX_LOCHARDWARE} DSCFX_LOCSOFTWARE = $00000002; {$EXTERNALSYM DSCFX_LOCSOFTWARE} DSCFXR_LOCHARDWARE = $00000010; {$EXTERNALSYM DSCFXR_LOCHARDWARE} DSCFXR_LOCSOFTWARE = $00000020; {$EXTERNALSYM DSCFXR_LOCSOFTWARE} {$ENDIF} // DIRECTSOUND_VERSION >= 0x0800 type PDSBufferDesc = ^TDSBufferDesc; _DSBUFFERDESC = packed record dwSize: DWORD; dwFlags: DWORD; dwBufferBytes: DWORD; dwReserved: DWORD; lpwfxFormat: PWaveFormatEx; {$IFDEF DIRECTSOUND_VERSION_7} // #if DIRECTSOUND_VERSION >= 0x0700 guid3DAlgorithm: TGUID; {$ENDIF} // DIRECTSOUND_VERSION >= 0x0700 end; {$EXTERNALSYM _DSBUFFERDESC} DSBUFFERDESC = _DSBUFFERDESC; {$EXTERNALSYM DSBUFFERDESC} TDSBufferDesc = _DSBUFFERDESC; // Older version of this structure: PDSBufferDesc1 = ^TDSBufferDesc1; _DSBUFFERDESC1 = packed record dwSize: DWORD; dwFlags: DWORD; dwBufferBytes: DWORD; dwReserved: DWORD; lpwfxFormat: PWaveFormatEx; end; {$EXTERNALSYM _DSBUFFERDESC1} DSBUFFERDESC1 = _DSBUFFERDESC1; {$EXTERNALSYM DSBUFFERDESC1} TDSBufferDesc1 = _DSBUFFERDESC1; PDS3DBuffer = ^TDS3DBuffer; _DS3DBUFFER = packed record dwSize: DWORD; vPosition: TD3DVector; vVelocity: TD3DVector; dwInsideConeAngle: DWORD; dwOutsideConeAngle: DWORD; vConeOrientation: TD3DVector; lConeOutsideVolume: Longint; flMinDistance: TD3DValue; flMaxDistance: TD3DValue; dwMode: DWORD; end; {$EXTERNALSYM _DS3DBUFFER} DS3DBUFFER = _DS3DBUFFER; {$EXTERNALSYM DS3DBUFFER} TDS3DBuffer = _DS3DBUFFER; PDS3DListener = ^TDS3DListener; _DS3DLISTENER = packed record dwSize: DWORD; vPosition: TD3DVector; vVelocity: TD3DVector; vOrientFront: TD3DVector; vOrientTop: TD3DVector; flDistanceFactor: TD3DValue; flRolloffFactor: TD3DValue; flDopplerFactor: TD3DValue; end; {$EXTERNALSYM _DS3DLISTENER} DS3DLISTENER = _DS3DLISTENER; {$EXTERNALSYM DS3DLISTENER} TDS3DListener = _DS3DLISTENER; PDSCcaps = ^TDSCcaps; _DSCCAPS = packed record dwSize: DWORD; dwFlags: DWORD; dwFormats: DWORD; dwChannels: DWORD; end; {$EXTERNALSYM _DSCCAPS} DSCCAPS = _DSCCAPS; {$EXTERNALSYM DSCCAPS} TDSCcaps = _DSCCAPS; PDSCBufferDesc1 = ^TDSCBufferDesc1; _DSCBUFFERDESC1 = packed record dwSize: DWORD; dwFlags: DWORD; dwBufferBytes: DWORD; dwReserved: DWORD; lpwfxFormat: PWaveFormatEx; end; {$EXTERNALSYM _DSCBUFFERDESC1} DSCBUFFERDESC1 = _DSCBUFFERDESC1; {$EXTERNALSYM DSCBUFFERDESC1} TDSCBufferDesc1 = _DSCBUFFERDESC1; PDSCBufferDesc = ^TDSCBufferDesc; _DSCBUFFERDESC = packed record dwSize: DWORD; dwFlags: DWORD; dwBufferBytes: DWORD; dwReserved: DWORD; lpwfxFormat: PWaveFormatEx; {$IFDEF DIRECTSOUND_VERSION_8} // #if DIRECTSOUND_VERSION >= 0x0800 dwFXCount: DWORD; lpDSCFXDesc: PDSCEffectDesc; {$ENDIF} // DIRECTSOUND_VERSION >= 0x0800 end; {$EXTERNALSYM _DSCBUFFERDESC} DSCBUFFERDESC = _DSCBUFFERDESC; {$EXTERNALSYM DSCBUFFERDESC} TDSCBufferDesc = _DSCBUFFERDESC; PDSCBCaps = ^TDSCBCaps; _DSCBCAPS = packed record dwSize: DWORD; dwFlags: DWORD; dwBufferBytes: DWORD; dwReserved: DWORD; end; {$EXTERNALSYM _DSCBCAPS} DSCBCAPS = _DSCBCAPS; {$EXTERNALSYM DSCBCAPS} TDSCBCaps = _DSCBCAPS; PDSBPositionNotify = ^TDSBPositionNotify; _DSBPOSITIONNOTIFY = packed record dwOffset: DWORD; hEventNotify: THandle; end; {$EXTERNALSYM _DSBPOSITIONNOTIFY} DSBPOSITIONNOTIFY = _DSBPOSITIONNOTIFY; {$EXTERNALSYM DSBPOSITIONNOTIFY} TDSBPositionNotify = _DSBPOSITIONNOTIFY; type REFERENCE_TIME = DXTypes.REFERENCE_TIME; {$EXTERNALSYM REFERENCE_TIME} TReferenceTime = DXTypes.TReferenceTime; PReferenceTime = DXTypes.PReferenceTime; type {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IReferenceClock);'} {$EXTERNALSYM IReferenceClock} IReferenceClock = interface(IUnknown) ['{56a86897-0ad4-11ce-b03a-0020af0ba770}'] // IReferenceClock methods function GetTime(out pTime: TReferenceTime): HResult; stdcall; function AdviseTime(rtBaseTime, rtStreamTime: TReferenceTime; hEvent: THandle; out pdwAdviseCookie: DWORD): HResult; stdcall; function AdvisePeriodic(const rtStartTime, rtPeriodTime: TReferenceTime; hSemaphore: THandle; out pdwAdviseCookie: DWORD): HResult; stdcall; function Unadvise(dwAdviseCookie: DWORD): HResult; stdcall; end; IID_IReferenceClock = IReferenceClock; {$EXTERNALSYM IID_IReferenceClock} IDirectSoundBuffer = interface; // // IDirectSound // {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectSound);'} {$EXTERNALSYM IDirectSound} IDirectSound = interface(IUnknown) ['{279AFA83-4981-11CE-A521-0020AF0BE560}'] // IDirectSound methods function CreateSoundBuffer(const pcDSBufferDesc: TDSBufferDesc; out ppDSBuffer: IDirectSoundBuffer; pUnkOuter: IUnknown): HResult; stdcall; function GetCaps(out pDSCaps: TDSCaps): HResult; stdcall; function DuplicateSoundBuffer(pDSBufferOriginal: IDirectSoundBuffer; out ppDSBufferDuplicate: IDirectSoundBuffer): HResult; stdcall; function SetCooperativeLevel(hwnd: HWND; dwLevel: DWORD): HResult; stdcall; function Compact: HResult; stdcall; function GetSpeakerConfig(out pdwSpeakerConfig: DWORD): HResult; stdcall; function SetSpeakerConfig(dwSpeakerConfig: DWORD): HResult; stdcall; function Initialize(pcGuidDevice: PGUID): HResult; stdcall; end; IID_IDirectSound = IDirectSound; {$EXTERNALSYM IID_IDirectSound} {$IFDEF DIRECTSOUND_VERSION_8} // #if DIRECTSOUND_VERSION >= 0x0800 // // IDirectSound8 // {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectSound8);'} {$EXTERNALSYM IDirectSound8} IDirectSound8 = interface(IDirectSound) ['{C50A7E93-F395-4834-9EF6-7FA99DE50966}'] // IDirectSound8 methods function VerifyCertification(pdwCertified: PDWORD): HResult; stdcall; end; IID_IDirectSound8 = IDirectSound8; {$EXTERNALSYM IID_IDirectSound8} {$ENDIF} // DIRECTSOUND_VERSION >= 0x0800 // // IDirectSoundBuffer // {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectSoundBuffer);'} {$EXTERNALSYM IDirectSoundBuffer} IDirectSoundBuffer = interface(IUnknown) ['{279AFA85-4981-11CE-A521-0020AF0BE560}'] // IDirectSoundBuffer methods function GetCaps(var pDSBufferCaps: TDSBcaps): HResult; stdcall; function GetCurrentPosition(pdwCurrentPlayCursor, pdwCurrentWriteCursor: PDWORD): HResult; stdcall; function GetFormat(pwfxFormat: PWaveFormatEx; dwSizeAllocated: DWORD; pdwSizeWritten: PDWORD): HResult; stdcall; function GetVolume(out plVolume: Longint): HResult; stdcall; function GetPan(out plPan: Longint): HResult; stdcall; function GetFrequency(out pdwFrequency: DWORD): HResult; stdcall; function GetStatus(out pdwStatus: DWORD): HResult; stdcall; function Initialize(pDirectSound: IDirectSound; const pcDSBufferDesc: TDSBufferDesc): HResult; stdcall; function Lock(dwOffset, dwBytes: DWORD; ppvAudioPtr1: PPointer; pdwAudioBytes1: PDWORD; ppvAudioPtr2: PPointer; pdwAudioBytes2: PDWORD; dwFlags: DWORD): HResult; stdcall; function Play(dwReserved1, dwPriority, dwFlags: DWORD): HResult; stdcall; function SetCurrentPosition(dwNewPosition: DWORD): HResult; stdcall; function SetFormat(pcfxFormat: PWaveFormatEx): HResult; stdcall; function SetVolume(lVolume: Longint): HResult; stdcall; function SetPan(lPan: Longint): HResult; stdcall; function SetFrequency(dwFrequency: DWORD): HResult; stdcall; function Stop: HResult; stdcall; function Unlock(pvAudioPtr1: Pointer; dwAudioBytes1: DWORD; pvAudioPtr2: Pointer; dwAudioBytes2: DWORD): HResult; stdcall; function Restore: HResult; stdcall; end; IID_IDirectSoundBuffer = IDirectSoundBuffer; {$EXTERNALSYM IID_IDirectSoundBuffer} {$IFDEF DIRECTSOUND_VERSION_8} // #if DIRECTSOUND_VERSION >= 0x0800 // // IDirectSoundBuffer8 // {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectSoundBuffer8);'} {$EXTERNALSYM IDirectSoundBuffer8} IDirectSoundBuffer8 = interface(IDirectSoundBuffer) ['{6825a449-7524-4d82-920f-50e36ab3ab1e}'] // IDirectSoundBuffer8 methods function SetFX(dwEffectsCount: DWORD; pDSFXDesc: PDSEffectDesc; pdwResultCodes: PDWORD): HResult; stdcall; function AcquireResources(dwFlags, dwEffectsCount: DWORD; pdwResultCodes: PDWORD): HResult; stdcall; function GetObjectInPath(const rguidObject: TGUID; dwIndex: DWORD; const rguidInterface: TGUID; out ppObject{IUnknown}): HResult; stdcall; end; IID_IDirectSoundBuffer8 = IDirectSoundBuffer8; {$EXTERNALSYM IID_IDirectSoundBuffer8} const // Special GUID meaning "select all objects" for use in GetObjectInPath() GUID_All_Objects: TGUID = '{aa114de5-c262-4169-a1c8-23d698cc73b5}'; {$EXTERNALSYM GUID_All_Objects} type {$ENDIF} // DIRECTSOUND_VERSION >= 0x0800 // // IDirectSound3DListener // {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectSound3DListener);'} {$EXTERNALSYM IDirectSound3DListener} IDirectSound3DListener = interface(IUnknown) ['{279AFA84-4981-11CE-A521-0020AF0BE560}'] // IDirectSound3DListener methods function GetAllParameters(var pListener: TDS3DListener): HResult; stdcall; function GetDistanceFactor(out pflDistanceFactor: TD3DValue): HResult; stdcall; function GetDopplerFactor(out pflDopplerFactor: TD3DValue): HResult; stdcall; function GetOrientation(out pvOrientFront, pvOrientTop: TD3DVector): HResult; stdcall; function GetPosition(out pvPosition: TD3DVector): HResult; stdcall; function GetRolloffFactor(out pflRolloffFactor: TD3DValue): HResult; stdcall; function GetVelocity(out pvVelocity: TD3DVector): HResult; stdcall; function SetAllParameters(const pcListener: TDS3DListener; dwApply: DWORD): HResult; stdcall; function SetDistanceFactor(flDistanceFactor: TD3DValue; dwApply: DWORD): HResult; stdcall; function SetDopplerFactor(flDopplerFactor: TD3DValue; dwApply: DWORD): HResult; stdcall; function SetOrientation(xFront, yFront, zFront: TD3DValue; xTop, yTop, zTop: TD3DValue; dwApply: DWORD): HResult; stdcall; function SetPosition(x, y, z: TD3DValue; dwApply: DWORD): HResult; stdcall; function SetRolloffFactor(flRolloffFactor: TD3DValue; dwApply: DWORD): HResult; stdcall; function SetVelocity(x, y, z: TD3DValue; dwApply: DWORD): HResult; stdcall; function CommitDeferredSettings: HResult; stdcall; end; IID_IDirectSound3DListener = IDirectSound3DListener; {$EXTERNALSYM IID_IDirectSound3DListener} // // IDirectSound3DBuffer // {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectSound3DBuffer);'} {$EXTERNALSYM IDirectSound3DBuffer} IDirectSound3DBuffer = interface(IUnknown) ['{279AFA86-4981-11CE-A521-0020AF0BE560}'] // IDirectSound3DBuffer methods function GetAllParameters(var pDs3dBuffer: TDS3DBuffer): HResult; stdcall; function GetConeAngles(var pdwInsideConeAngle, pdwOutsideConeAngle: DWORD): HResult; stdcall; function GetConeOrientation(out pvOrientation: TD3DVector): HResult; stdcall; function GetConeOutsideVolume(out plConeOutsideVolume: Longint): HResult; stdcall; function GetMaxDistance(out pflMaxDistance: TD3DValue): HResult; stdcall; function GetMinDistance(out pflMinDistance: TD3DValue): HResult; stdcall; function GetMode(out pdwMode: DWORD): HResult; stdcall; function GetPosition(out pvPosition: TD3DVector): HResult; stdcall; function GetVelocity(out pvVelocity: TD3DVector): HResult; stdcall; function SetAllParameters(const pcDs3dBuffer: TDS3DBuffer; dwApply: DWORD): HResult; stdcall; function SetConeAngles(dwInsideConeAngle, dwOutsideConeAngle: DWORD; dwApply: DWORD): HResult; stdcall; function SetConeOrientation(x, y, z: TD3DValue; dwApply: DWORD): HResult; stdcall; function SetConeOutsideVolume(lConeOutsideVolume: Longint; dwApply: DWORD): HResult; stdcall; function SetMaxDistance(flMaxDistance: TD3DValue; dwApply: DWORD): HResult; stdcall; function SetMinDistance(flMinDistance: TD3DValue; dwApply: DWORD): HResult; stdcall; function SetMode(dwMode: DWORD; dwApply: DWORD): HResult; stdcall; function SetPosition(x, y, z: TD3DValue; dwApply: DWORD): HResult; stdcall; function SetVelocity(x, y, z: TD3DValue; dwApply: DWORD): HResult; stdcall; end; IID_IDirectSound3DBuffer = IDirectSound3DBuffer; {$EXTERNALSYM IID_IDirectSound3DBuffer} IDirectSoundCaptureBuffer = interface; // // IDirectSoundCapture // {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectSoundCapture);'} {$EXTERNALSYM IDirectSoundCapture} IDirectSoundCapture = interface(IUnknown) ['{b0210781-89cd-11d0-af08-00a0c925cd16}'] // IDirectSoundCapture methods function CreateCaptureBuffer(const pcDSCBufferDesc: TDSCBufferDesc; out ppDSCBuffer: IDirectSoundCaptureBuffer; pUnkOuter: IUnknown): HResult; stdcall; function GetCaps(var pDSCCaps: TDSCcaps): HResult; stdcall; function Initialize(pcGuidDevice: PGUID): HResult; stdcall; end; IID_IDirectSoundCapture = IDirectSoundCapture; {$EXTERNALSYM IID_IDirectSoundCapture} // // IDirectSoundCaptureBuffer // {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectSoundCaptureBuffer);'} {$EXTERNALSYM IDirectSoundCaptureBuffer} IDirectSoundCaptureBuffer = interface(IUnknown) ['{b0210782-89cd-11d0-af08-00a0c925cd16}'] // IDirectSoundCaptureBuffer methods function GetCaps(var pDSCBCaps: TDSCBCaps): HResult; stdcall; function GetCurrentPosition(pdwCapturePosition, pdwReadPosition: PDWORD): HResult; stdcall; function GetFormat(pwfxFormat: PWaveFormatEx; dwSizeAllocated: DWORD; pdwSizeWritten: PDWORD): HResult; stdcall; function GetStatus(pdwStatus: PDWORD): HResult; stdcall; function Initialize(pDirectSoundCapture: IDirectSoundCapture; const pcDSCBufferDesc: TDSCBufferDesc): HResult; stdcall; function Lock(dwOffset, dwBytes: DWORD; ppvAudioPtr1: PPointer; pdwAudioBytes1: PDWORD; ppvAudioPtr2: PPointer; pdwAudioBytes2: PDWORD; dwFlags: DWORD): HResult; stdcall; function Start(dwFlags: DWORD): HResult; stdcall; function Stop: HResult; stdcall; function Unlock(pvAudioPtr1: Pointer; dwAudioBytes1: DWORD; pvAudioPtr2: Pointer; dwAudioBytes2: DWORD): HResult; stdcall; end; IID_IDirectSoundCaptureBuffer = IDirectSoundCaptureBuffer; {$EXTERNALSYM IID_IDirectSoundCaptureBuffer} {$IFDEF DIRECTSOUND_VERSION_8} // #if DIRECTSOUND_VERSION >= 0x0800 // // IDirectSoundCaptureBuffer8 // {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectSoundCaptureBuffer8);'} {$EXTERNALSYM IDirectSoundCaptureBuffer8} IDirectSoundCaptureBuffer8 = interface(IDirectSoundCaptureBuffer) ['{00990df4-0dbb-4872-833e-6d303e80aeb6}'] // IDirectSoundCaptureBuffer8 methods function GetObjectInPath(const rguidObject: TGUID; dwIndex: DWORD; const rguidInterface: TGUID; out ppObject{IUnknown}): HResult; stdcall; function GetFXStatus(dwFXCount: DWORD; pdwFXStatus: PDWORD): HResult; stdcall; end; IID_IDirectSoundCaptureBuffer8 = IDirectSoundCaptureBuffer8; {$EXTERNALSYM IID_IDirectSoundCaptureBuffer8} {$ENDIF} // DIRECTSOUND_VERSION >= 0x0800 // // IDirectSoundNotify // {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectSoundNotify);'} {$EXTERNALSYM IDirectSoundNotify} IDirectSoundNotify = interface(IUnknown) ['{b0210783-89cd-11d0-af08-00a0c925cd16}'] // IDirectSoundNotify methods function SetNotificationPositions(dwPositionNotifies: DWORD; pcPositionNotifies: PDSBPositionNotify): HResult; stdcall; end; IID_IDirectSoundNotify = IDirectSoundNotify; {$EXTERNALSYM IID_IDirectSoundNotify} // // IKsPropertySet // const KSPROPERTY_SUPPORT_GET = $00000001; {$EXTERNALSYM KSPROPERTY_SUPPORT_GET} KSPROPERTY_SUPPORT_SET = $00000002; {$EXTERNALSYM KSPROPERTY_SUPPORT_SET} type {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IKsPropertySet);'} {$EXTERNALSYM IKsPropertySet} IKsPropertySet = interface(IUnknown) ['{31efac30-515c-11d0-a9aa-00aa0061be93}'] // IKsPropertySet methods function Get(const rguidPropSet: TGUID; ulId: ULONG; pInstanceData: Pointer; ulInstanceLength: ULONG; pPropertyData: Pointer; ulDataLength: ULONG; out pulBytesReturned: ULONG): HResult; stdcall; function _Set(const rguidPropSet: TGUID; ulId: ULONG; pInstanceData: Pointer; ulInstanceLength: ULONG; pPropertyData: Pointer; ulDataLength: ULONG): HResult; stdcall; function QuerySupport(const rguidPropSet: TGUID; ulId: ULONG; out pulTypeSupport: ULONG): HResult; stdcall; end; IID_IKsPropertySet = IKsPropertySet; {$EXTERNALSYM IID_IKsPropertySet} {$IFDEF DIRECTSOUND_VERSION_8} // #if DIRECTSOUND_VERSION >= 0x0800 // // IDirectSoundFXGargle // PDSFXGargle = ^TDSFXGargle; _DSFXGargle = packed record dwRateHz: DWORD; // Rate of modulation in hz dwWaveShape: DWORD; // DSFXGARGLE_WAVE_xxx end; {$EXTERNALSYM _DSFXGargle} DSFXGargle = _DSFXGargle; {$EXTERNALSYM DSFXGargle} TDSFXGargle = _DSFXGargle; const DSFXGARGLE_WAVE_TRIANGLE = 0; {$EXTERNALSYM DSFXGARGLE_WAVE_TRIANGLE} DSFXGARGLE_WAVE_SQUARE = 1; {$EXTERNALSYM DSFXGARGLE_WAVE_SQUARE} DSFXGARGLE_RATEHZ_MIN = 1; {$EXTERNALSYM DSFXGARGLE_RATEHZ_MIN} DSFXGARGLE_RATEHZ_MAX = 1000; {$EXTERNALSYM DSFXGARGLE_RATEHZ_MAX} type {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectSoundFXGargle);'} {$EXTERNALSYM IDirectSoundFXGargle} IDirectSoundFXGargle = interface(IUnknown) ['{d616f352-d622-11ce-aac5-0020af0b99a3}'] // IDirectSoundFXGargle methods function SetAllParameters(const pcDsFxGargle: TDSFXGargle): HResult; stdcall; function GetAllParameters(out pDsFxGargle: TDSFXGargle): HResult; stdcall; end; IID_IDirectSoundFXGargle = IDirectSoundFXGargle; {$EXTERNALSYM IID_IDirectSoundFXGargle} // // IDirectSoundFXChorus // PDSFXChorus = ^TDSFXChorus; _DSFXChorus = packed record fWetDryMix: Single; fDepth: Single; fFeedback: Single; fFrequency: Single; lWaveform: Longint; // LFO shape; DSFXCHORUS_WAVE_xxx fDelay: Single; lPhase: Longint; end; {$EXTERNALSYM _DSFXChorus} DSFXChorus = _DSFXChorus; {$EXTERNALSYM DSFXChorus} TDSFXChorus = _DSFXChorus; const DSFXCHORUS_WAVE_TRIANGLE = 0; {$EXTERNALSYM DSFXCHORUS_WAVE_TRIANGLE} DSFXCHORUS_WAVE_SIN = 1; {$EXTERNALSYM DSFXCHORUS_WAVE_SIN} DSFXCHORUS_WETDRYMIX_MIN = 0.0; {$EXTERNALSYM DSFXCHORUS_WETDRYMIX_MIN} DSFXCHORUS_WETDRYMIX_MAX = 100.0; {$EXTERNALSYM DSFXCHORUS_WETDRYMIX_MAX} DSFXCHORUS_DEPTH_MIN = 0.0; {$EXTERNALSYM DSFXCHORUS_DEPTH_MIN} DSFXCHORUS_DEPTH_MAX = 100.0; {$EXTERNALSYM DSFXCHORUS_DEPTH_MAX} DSFXCHORUS_FEEDBACK_MIN = -99.0; {$EXTERNALSYM DSFXCHORUS_FEEDBACK_MIN} DSFXCHORUS_FEEDBACK_MAX = 99.0; {$EXTERNALSYM DSFXCHORUS_FEEDBACK_MAX} DSFXCHORUS_FREQUENCY_MIN = 0.0; {$EXTERNALSYM DSFXCHORUS_FREQUENCY_MIN} DSFXCHORUS_FREQUENCY_MAX = 10.0; {$EXTERNALSYM DSFXCHORUS_FREQUENCY_MAX} DSFXCHORUS_DELAY_MIN = 0.0; {$EXTERNALSYM DSFXCHORUS_DELAY_MIN} DSFXCHORUS_DELAY_MAX = 20.0; {$EXTERNALSYM DSFXCHORUS_DELAY_MAX} DSFXCHORUS_PHASE_MIN = 0; {$EXTERNALSYM DSFXCHORUS_PHASE_MIN} DSFXCHORUS_PHASE_MAX = 4; {$EXTERNALSYM DSFXCHORUS_PHASE_MAX} DSFXCHORUS_PHASE_NEG_180 = 0; {$EXTERNALSYM DSFXCHORUS_PHASE_NEG_180} DSFXCHORUS_PHASE_NEG_90 = 1; {$EXTERNALSYM DSFXCHORUS_PHASE_NEG_90} DSFXCHORUS_PHASE_ZERO = 2; {$EXTERNALSYM DSFXCHORUS_PHASE_ZERO} DSFXCHORUS_PHASE_90 = 3; {$EXTERNALSYM DSFXCHORUS_PHASE_90} DSFXCHORUS_PHASE_180 = 4; {$EXTERNALSYM DSFXCHORUS_PHASE_180} type {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectSoundFXChorus);'} {$EXTERNALSYM IDirectSoundFXChorus} IDirectSoundFXChorus = interface(IUnknown) ['{880842e3-145f-43e6-a934-a71806e50547}'] // IDirectSoundFXChorus methods function SetAllParameters(const pcDsFxChorus: TDSFXChorus): HResult; stdcall; function GetAllParameters(out pDsFxChorus: TDSFXChorus): HResult; stdcall; end; IID_IDirectSoundFXChorus = IDirectSoundFXChorus; {$EXTERNALSYM IID_IDirectSoundFXChorus} // // IDirectSoundFXFlanger // PDSFXFlanger = ^TDSFXFlanger; _DSFXFlanger = packed record fWetDryMix: Single; fDepth: Single; fFeedback: Single; fFrequency: Single; lWaveform: Longint; fDelay: Single; lPhase: Longint; end; {$EXTERNALSYM _DSFXFlanger} DSFXFlanger = _DSFXFlanger; {$EXTERNALSYM DSFXFlanger} TDSFXFlanger = _DSFXFlanger; const DSFXFLANGER_WAVE_TRIANGLE = 0; {$EXTERNALSYM DSFXFLANGER_WAVE_TRIANGLE} DSFXFLANGER_WAVE_SIN = 1; {$EXTERNALSYM DSFXFLANGER_WAVE_SIN} DSFXFLANGER_WETDRYMIX_MIN = 0.0; {$EXTERNALSYM DSFXFLANGER_WETDRYMIX_MIN} DSFXFLANGER_WETDRYMIX_MAX = 100.0; {$EXTERNALSYM DSFXFLANGER_WETDRYMIX_MAX} DSFXFLANGER_FREQUENCY_MIN = 0.0; {$EXTERNALSYM DSFXFLANGER_FREQUENCY_MIN} DSFXFLANGER_FREQUENCY_MAX = 10.0; {$EXTERNALSYM DSFXFLANGER_FREQUENCY_MAX} DSFXFLANGER_DEPTH_MIN = 0.0; {$EXTERNALSYM DSFXFLANGER_DEPTH_MIN} DSFXFLANGER_DEPTH_MAX = 100.0; {$EXTERNALSYM DSFXFLANGER_DEPTH_MAX} DSFXFLANGER_PHASE_MIN = 0; {$EXTERNALSYM DSFXFLANGER_PHASE_MIN} DSFXFLANGER_PHASE_MAX = 4; {$EXTERNALSYM DSFXFLANGER_PHASE_MAX} DSFXFLANGER_FEEDBACK_MIN = -99.0; {$EXTERNALSYM DSFXFLANGER_FEEDBACK_MIN} DSFXFLANGER_FEEDBACK_MAX = 99.0; {$EXTERNALSYM DSFXFLANGER_FEEDBACK_MAX} DSFXFLANGER_DELAY_MIN = 0.0; {$EXTERNALSYM DSFXFLANGER_DELAY_MIN} DSFXFLANGER_DELAY_MAX = 4.0; {$EXTERNALSYM DSFXFLANGER_DELAY_MAX} DSFXFLANGER_PHASE_NEG_180 = 0; {$EXTERNALSYM DSFXFLANGER_PHASE_NEG_180} DSFXFLANGER_PHASE_NEG_90 = 1; {$EXTERNALSYM DSFXFLANGER_PHASE_NEG_90} DSFXFLANGER_PHASE_ZERO = 2; {$EXTERNALSYM DSFXFLANGER_PHASE_ZERO} DSFXFLANGER_PHASE_90 = 3; {$EXTERNALSYM DSFXFLANGER_PHASE_90} DSFXFLANGER_PHASE_180 = 4; {$EXTERNALSYM DSFXFLANGER_PHASE_180} type {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectSoundFXFlanger);'} {$EXTERNALSYM IDirectSoundFXFlanger} IDirectSoundFXFlanger = interface(IUnknown) ['{903e9878-2c92-4072-9b2c-ea68f5396783}'] // IDirectSoundFXFlanger methods function SetAllParameters(const pcDsFxFlanger: TDSFXFlanger): HResult; stdcall; function GetAllParameters(out pDsFxFlanger: TDSFXFlanger): HResult; stdcall; end; IID_IDirectSoundFXFlanger = IDirectSoundFXFlanger; {$EXTERNALSYM IID_IDirectSoundFXFlanger} // // IDirectSoundFXEcho // PDSFXEcho = ^TDSFXEcho; _DSFXEcho = packed record fWetDryMix: Single; fFeedback: Single; fLeftDelay: Single; fRightDelay: Single; lPanDelay: Longint; end; {$EXTERNALSYM _DSFXEcho} DSFXEcho = _DSFXEcho; {$EXTERNALSYM DSFXEcho} TDSFXEcho = _DSFXEcho; const DSFXECHO_WETDRYMIX_MIN = 0.0; {$EXTERNALSYM DSFXECHO_WETDRYMIX_MIN} DSFXECHO_WETDRYMIX_MAX = 100.0; {$EXTERNALSYM DSFXECHO_WETDRYMIX_MAX} DSFXECHO_FEEDBACK_MIN = 0.0; {$EXTERNALSYM DSFXECHO_FEEDBACK_MIN} DSFXECHO_FEEDBACK_MAX = 100.0; {$EXTERNALSYM DSFXECHO_FEEDBACK_MAX} DSFXECHO_LEFTDELAY_MIN = 1.0; {$EXTERNALSYM DSFXECHO_LEFTDELAY_MIN} DSFXECHO_LEFTDELAY_MAX = 2000.0; {$EXTERNALSYM DSFXECHO_LEFTDELAY_MAX} DSFXECHO_RIGHTDELAY_MIN = 1.0; {$EXTERNALSYM DSFXECHO_RIGHTDELAY_MIN} DSFXECHO_RIGHTDELAY_MAX = 2000.0; {$EXTERNALSYM DSFXECHO_RIGHTDELAY_MAX} DSFXECHO_PANDELAY_MIN = 0; {$EXTERNALSYM DSFXECHO_PANDELAY_MIN} DSFXECHO_PANDELAY_MAX = 1; {$EXTERNALSYM DSFXECHO_PANDELAY_MAX} type {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectSoundFXEcho);'} {$EXTERNALSYM IDirectSoundFXEcho} IDirectSoundFXEcho = interface(IUnknown) ['{8bd28edf-50db-4e92-a2bd-445488d1ed42}'] // IDirectSoundFXEcho methods function SetAllParameters(const pcDsFxEcho: TDSFXEcho): HResult; stdcall; function GetAllParameters(out pDsFxEcho: TDSFXEcho): HResult; stdcall; end; IID_IDirectSoundFXEcho = IDirectSoundFXEcho; {$EXTERNALSYM IID_IDirectSoundFXEcho} // // IDirectSoundFXDistortion // PDSFXDistortion = ^TDSFXDistortion; _DSFXDistortion = packed record fGain: Single; fEdge: Single; fPostEQCenterFrequency: Single; fPostEQBandwidth: Single; fPreLowpassCutoff: Single; end; {$EXTERNALSYM _DSFXDistortion} DSFXDistortion = _DSFXDistortion; {$EXTERNALSYM DSFXDistortion} TDSFXDistortion = _DSFXDistortion; const DSFXDISTORTION_GAIN_MIN = -60.0; {$EXTERNALSYM DSFXDISTORTION_GAIN_MIN} DSFXDISTORTION_GAIN_MAX = 0.0; {$EXTERNALSYM DSFXDISTORTION_GAIN_MAX} DSFXDISTORTION_EDGE_MIN = 0.0; {$EXTERNALSYM DSFXDISTORTION_EDGE_MIN} DSFXDISTORTION_EDGE_MAX = 100.0; {$EXTERNALSYM DSFXDISTORTION_EDGE_MAX} DSFXDISTORTION_POSTEQCENTERFREQUENCY_MIN = 100.0; {$EXTERNALSYM DSFXDISTORTION_POSTEQCENTERFREQUENCY_MIN} DSFXDISTORTION_POSTEQCENTERFREQUENCY_MAX = 8000.0; {$EXTERNALSYM DSFXDISTORTION_POSTEQCENTERFREQUENCY_MAX} DSFXDISTORTION_POSTEQBANDWIDTH_MIN = 100.0; {$EXTERNALSYM DSFXDISTORTION_POSTEQBANDWIDTH_MIN} DSFXDISTORTION_POSTEQBANDWIDTH_MAX = 8000.0; {$EXTERNALSYM DSFXDISTORTION_POSTEQBANDWIDTH_MAX} DSFXDISTORTION_PRELOWPASSCUTOFF_MIN = 100.0; {$EXTERNALSYM DSFXDISTORTION_PRELOWPASSCUTOFF_MIN} DSFXDISTORTION_PRELOWPASSCUTOFF_MAX = 8000.0; {$EXTERNALSYM DSFXDISTORTION_PRELOWPASSCUTOFF_MAX} type {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectSoundFXDistortion);'} {$EXTERNALSYM IDirectSoundFXDistortion} IDirectSoundFXDistortion = interface(IUnknown) ['{8ecf4326-455f-4d8b-bda9-8d5d3e9e3e0b}'] // IDirectSoundFXDistortion methods function SetAllParameters(const pcDsFxDistortion: TDSFXDistortion): HResult; stdcall; function GetAllParameters(out pDsFxDistortion: TDSFXDistortion): HResult; stdcall; end; IID_IDirectSoundFXDistortion = IDirectSoundFXDistortion; {$EXTERNALSYM IID_IDirectSoundFXDistortion} // // IDirectSoundFXCompressor // PDSFXCompressor = ^TDSFXCompressor; _DSFXCompressor = packed record fGain: Single; fAttack: Single; fRelease: Single; fThreshold: Single; fRatio: Single; fPredelay: Single; end; {$EXTERNALSYM _DSFXCompressor} DSFXCompressor = _DSFXCompressor; {$EXTERNALSYM DSFXCompressor} TDSFXCompressor = _DSFXCompressor; const DSFXCOMPRESSOR_GAIN_MIN = -60.0; {$EXTERNALSYM DSFXCOMPRESSOR_GAIN_MIN} DSFXCOMPRESSOR_GAIN_MAX = 60.0; {$EXTERNALSYM DSFXCOMPRESSOR_GAIN_MAX} DSFXCOMPRESSOR_ATTACK_MIN = 0.01; {$EXTERNALSYM DSFXCOMPRESSOR_ATTACK_MIN} DSFXCOMPRESSOR_ATTACK_MAX = 500.0; {$EXTERNALSYM DSFXCOMPRESSOR_ATTACK_MAX} DSFXCOMPRESSOR_RELEASE_MIN = 50.0; {$EXTERNALSYM DSFXCOMPRESSOR_RELEASE_MIN} DSFXCOMPRESSOR_RELEASE_MAX = 3000.0; {$EXTERNALSYM DSFXCOMPRESSOR_RELEASE_MAX} DSFXCOMPRESSOR_THRESHOLD_MIN = -60.0; {$EXTERNALSYM DSFXCOMPRESSOR_THRESHOLD_MIN} DSFXCOMPRESSOR_THRESHOLD_MAX = 0.0; {$EXTERNALSYM DSFXCOMPRESSOR_THRESHOLD_MAX} DSFXCOMPRESSOR_RATIO_MIN = 1.0; {$EXTERNALSYM DSFXCOMPRESSOR_RATIO_MIN} DSFXCOMPRESSOR_RATIO_MAX = 100.0; {$EXTERNALSYM DSFXCOMPRESSOR_RATIO_MAX} DSFXCOMPRESSOR_PREDELAY_MIN = 0.0; {$EXTERNALSYM DSFXCOMPRESSOR_PREDELAY_MIN} DSFXCOMPRESSOR_PREDELAY_MAX = 4.0; {$EXTERNALSYM DSFXCOMPRESSOR_PREDELAY_MAX} type {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectSoundFXCompressor);'} {$EXTERNALSYM IDirectSoundFXCompressor} IDirectSoundFXCompressor = interface(IUnknown) ['{4bbd1154-62f6-4e2c-a15c-d3b6c417f7a0}'] // IDirectSoundFXCompressor methods function SetAllParameters(const pcDsFxCompressor: TDSFXCompressor): HResult; stdcall; function GetAllParameters(out pDsFxCompressor: TDSFXCompressor): HResult; stdcall; end; IID_IDirectSoundFXCompressor = IDirectSoundFXCompressor; {$EXTERNALSYM IID_IDirectSoundFXCompressor} // // IDirectSoundFXParamEq // PDSFXParamEq = ^TDSFXParamEq; _DSFXParamEq = packed record fCenter: Single; fBandwidth: Single; fGain: Single; end; {$EXTERNALSYM _DSFXParamEq} DSFXParamEq = _DSFXParamEq; {$EXTERNALSYM DSFXParamEq} TDSFXParamEq = _DSFXParamEq; const DSFXPARAMEQ_CENTER_MIN = 80.0; {$EXTERNALSYM DSFXPARAMEQ_CENTER_MIN} DSFXPARAMEQ_CENTER_MAX = 16000.0; {$EXTERNALSYM DSFXPARAMEQ_CENTER_MAX} DSFXPARAMEQ_BANDWIDTH_MIN = 1.0; {$EXTERNALSYM DSFXPARAMEQ_BANDWIDTH_MIN} DSFXPARAMEQ_BANDWIDTH_MAX = 36.0; {$EXTERNALSYM DSFXPARAMEQ_BANDWIDTH_MAX} DSFXPARAMEQ_GAIN_MIN = -15.0; {$EXTERNALSYM DSFXPARAMEQ_GAIN_MIN} DSFXPARAMEQ_GAIN_MAX = 15.0; {$EXTERNALSYM DSFXPARAMEQ_GAIN_MAX} type {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectSoundFXParamEq);'} {$EXTERNALSYM IDirectSoundFXParamEq} IDirectSoundFXParamEq = interface(IUnknown) ['{c03ca9fe-fe90-4204-8078-82334cd177da}'] // IDirectSoundFXParamEq methods function SetAllParameters(const pcDsFxParamEq: TDSFXParamEq): HResult; stdcall; function GetAllParameters(out pDsFxParamEq: TDSFXParamEq): HResult; stdcall; end; IID_IDirectSoundFXParamEq = IDirectSoundFXParamEq; {$EXTERNALSYM IID_IDirectSoundFXParamEq} // // IDirectSoundFXI3DL2Reverb // PDSFXI3DL2Reverb = ^TDSFXI3DL2Reverb; _DSFXI3DL2Reverb = packed record lRoom: Longint; // [-10000, 0] default: -1000 mB lRoomHF: Longint; // [-10000, 0] default: 0 mB flRoomRolloffFactor: Single; // [0.0, 10.0] default: 0.0 flDecayTime: Single; // [0.1, 20.0] default: 1.49s flDecayHFRatio: Single; // [0.1, 2.0] default: 0.83 lReflections: Longint; // [-10000, 1000] default: -2602 mB flReflectionsDelay: Single; // [0.0, 0.3] default: 0.007 s lReverb: Longint; // [-10000, 2000] default: 200 mB flReverbDelay: Single; // [0.0, 0.1] default: 0.011 s flDiffusion: Single; // [0.0, 100.0] default: 100.0 % flDensity: Single; // [0.0, 100.0] default: 100.0 % flHFReference: Single; // [20.0, 20000.0] default: 5000.0 Hz end; {$EXTERNALSYM _DSFXI3DL2Reverb} DSFXI3DL2Reverb = _DSFXI3DL2Reverb; {$EXTERNALSYM DSFXI3DL2Reverb} TDSFXI3DL2Reverb = _DSFXI3DL2Reverb; const DSFX_I3DL2REVERB_ROOM_MIN = (-10000); {$EXTERNALSYM DSFX_I3DL2REVERB_ROOM_MIN} DSFX_I3DL2REVERB_ROOM_MAX = 0; {$EXTERNALSYM DSFX_I3DL2REVERB_ROOM_MAX} DSFX_I3DL2REVERB_ROOM_DEFAULT = (-1000); {$EXTERNALSYM DSFX_I3DL2REVERB_ROOM_DEFAULT} DSFX_I3DL2REVERB_ROOMHF_MIN = (-10000); {$EXTERNALSYM DSFX_I3DL2REVERB_ROOMHF_MIN} DSFX_I3DL2REVERB_ROOMHF_MAX = 0; {$EXTERNALSYM DSFX_I3DL2REVERB_ROOMHF_MAX} DSFX_I3DL2REVERB_ROOMHF_DEFAULT = (-100); {$EXTERNALSYM DSFX_I3DL2REVERB_ROOMHF_DEFAULT} DSFX_I3DL2REVERB_ROOMROLLOFFFACTOR_MIN = 0.0; {$EXTERNALSYM DSFX_I3DL2REVERB_ROOMROLLOFFFACTOR_MIN} DSFX_I3DL2REVERB_ROOMROLLOFFFACTOR_MAX = 10.0; {$EXTERNALSYM DSFX_I3DL2REVERB_ROOMROLLOFFFACTOR_MAX} DSFX_I3DL2REVERB_ROOMROLLOFFFACTOR_DEFAULT = 0.0; {$EXTERNALSYM DSFX_I3DL2REVERB_ROOMROLLOFFFACTOR_DEFAULT} DSFX_I3DL2REVERB_DECAYTIME_MIN = 0.1; {$EXTERNALSYM DSFX_I3DL2REVERB_DECAYTIME_MIN} DSFX_I3DL2REVERB_DECAYTIME_MAX = 20.0; {$EXTERNALSYM DSFX_I3DL2REVERB_DECAYTIME_MAX} DSFX_I3DL2REVERB_DECAYTIME_DEFAULT = 1.49; {$EXTERNALSYM DSFX_I3DL2REVERB_DECAYTIME_DEFAULT} DSFX_I3DL2REVERB_DECAYHFRATIO_MIN = 0.1; {$EXTERNALSYM DSFX_I3DL2REVERB_DECAYHFRATIO_MIN} DSFX_I3DL2REVERB_DECAYHFRATIO_MAX = 2.0; {$EXTERNALSYM DSFX_I3DL2REVERB_DECAYHFRATIO_MAX} DSFX_I3DL2REVERB_DECAYHFRATIO_DEFAULT = 0.83; {$EXTERNALSYM DSFX_I3DL2REVERB_DECAYHFRATIO_DEFAULT} DSFX_I3DL2REVERB_REFLECTIONS_MIN = (-10000); {$EXTERNALSYM DSFX_I3DL2REVERB_REFLECTIONS_MIN} DSFX_I3DL2REVERB_REFLECTIONS_MAX = 1000; {$EXTERNALSYM DSFX_I3DL2REVERB_REFLECTIONS_MAX} DSFX_I3DL2REVERB_REFLECTIONS_DEFAULT = (-2602); {$EXTERNALSYM DSFX_I3DL2REVERB_REFLECTIONS_DEFAULT} DSFX_I3DL2REVERB_REFLECTIONSDELAY_MIN = 0.0; {$EXTERNALSYM DSFX_I3DL2REVERB_REFLECTIONSDELAY_MIN} DSFX_I3DL2REVERB_REFLECTIONSDELAY_MAX = 0.3; {$EXTERNALSYM DSFX_I3DL2REVERB_REFLECTIONSDELAY_MAX} DSFX_I3DL2REVERB_REFLECTIONSDELAY_DEFAULT = 0.007; {$EXTERNALSYM DSFX_I3DL2REVERB_REFLECTIONSDELAY_DEFAULT} DSFX_I3DL2REVERB_REVERB_MIN = (-10000); {$EXTERNALSYM DSFX_I3DL2REVERB_REVERB_MIN} DSFX_I3DL2REVERB_REVERB_MAX = 2000; {$EXTERNALSYM DSFX_I3DL2REVERB_REVERB_MAX} DSFX_I3DL2REVERB_REVERB_DEFAULT = (200); {$EXTERNALSYM DSFX_I3DL2REVERB_REVERB_DEFAULT} DSFX_I3DL2REVERB_REVERBDELAY_MIN = 0.0; {$EXTERNALSYM DSFX_I3DL2REVERB_REVERBDELAY_MIN} DSFX_I3DL2REVERB_REVERBDELAY_MAX = 0.1; {$EXTERNALSYM DSFX_I3DL2REVERB_REVERBDELAY_MAX} DSFX_I3DL2REVERB_REVERBDELAY_DEFAULT = 0.011; {$EXTERNALSYM DSFX_I3DL2REVERB_REVERBDELAY_DEFAULT} DSFX_I3DL2REVERB_DIFFUSION_MIN = 0.0; {$EXTERNALSYM DSFX_I3DL2REVERB_DIFFUSION_MIN} DSFX_I3DL2REVERB_DIFFUSION_MAX = 100.0; {$EXTERNALSYM DSFX_I3DL2REVERB_DIFFUSION_MAX} DSFX_I3DL2REVERB_DIFFUSION_DEFAULT = 100.0; {$EXTERNALSYM DSFX_I3DL2REVERB_DIFFUSION_DEFAULT} DSFX_I3DL2REVERB_DENSITY_MIN = 0.0; {$EXTERNALSYM DSFX_I3DL2REVERB_DENSITY_MIN} DSFX_I3DL2REVERB_DENSITY_MAX = 100.0; {$EXTERNALSYM DSFX_I3DL2REVERB_DENSITY_MAX} DSFX_I3DL2REVERB_DENSITY_DEFAULT = 100.0; {$EXTERNALSYM DSFX_I3DL2REVERB_DENSITY_DEFAULT} DSFX_I3DL2REVERB_HFREFERENCE_MIN = 20.0; {$EXTERNALSYM DSFX_I3DL2REVERB_HFREFERENCE_MIN} DSFX_I3DL2REVERB_HFREFERENCE_MAX = 20000.0; {$EXTERNALSYM DSFX_I3DL2REVERB_HFREFERENCE_MAX} DSFX_I3DL2REVERB_HFREFERENCE_DEFAULT = 5000.0; {$EXTERNALSYM DSFX_I3DL2REVERB_HFREFERENCE_DEFAULT} DSFX_I3DL2REVERB_QUALITY_MIN = 0; {$EXTERNALSYM DSFX_I3DL2REVERB_QUALITY_MIN} DSFX_I3DL2REVERB_QUALITY_MAX = 3; {$EXTERNALSYM DSFX_I3DL2REVERB_QUALITY_MAX} DSFX_I3DL2REVERB_QUALITY_DEFAULT = 2; {$EXTERNALSYM DSFX_I3DL2REVERB_QUALITY_DEFAULT} type {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectSoundFXI3DL2Reverb);'} {$EXTERNALSYM IDirectSoundFXI3DL2Reverb} IDirectSoundFXI3DL2Reverb = interface(IUnknown) ['{4b166a6a-0d66-43f3-80e3-ee6280dee1a4}'] // IDirectSoundFXI3DL2Reverb methods function SetAllParameters(const pcDsFxI3DL2Reverb: TDSFXI3DL2Reverb): HResult; stdcall; function GetAllParameters(out pDsFxI3DL2Reverb: TDSFXI3DL2Reverb): HResult; stdcall; function SetPreset(dwPreset: DWORD): HResult; stdcall; function GetPreset(out pdwPreset: DWORD): HResult; stdcall; function SetQuality(lQuality: Longint): HResult; stdcall; function GetQuality(out plQuality: Longint): HResult; stdcall; end; IID_IDirectSoundFXI3DL2Reverb = IDirectSoundFXI3DL2Reverb; {$EXTERNALSYM IID_IDirectSoundFXI3DL2Reverb} // // IDirectSoundFXWavesReverb // PDSFXWavesReverb = ^TDSFXWavesReverb; _DSFXWavesReverb = packed record fInGain: Single; // [-96.0,0.0] default: 0.0 dB fReverbMix: Single; // [-96.0,0.0] default: 0.0 db fReverbTime: Single; // [0.001,3000.0] default: 1000.0 ms fHighFreqRTRatio: Single; // [0.001,0.999] default: 0.001 end; {$EXTERNALSYM _DSFXWavesReverb} DSFXWavesReverb = _DSFXWavesReverb; {$EXTERNALSYM DSFXWavesReverb} TDSFXWavesReverb = _DSFXWavesReverb; const DSFX_WAVESREVERB_INGAIN_MIN = -96.0; {$EXTERNALSYM DSFX_WAVESREVERB_INGAIN_MIN} DSFX_WAVESREVERB_INGAIN_MAX = 0.0; {$EXTERNALSYM DSFX_WAVESREVERB_INGAIN_MAX} DSFX_WAVESREVERB_INGAIN_DEFAULT = 0.0; {$EXTERNALSYM DSFX_WAVESREVERB_INGAIN_DEFAULT} DSFX_WAVESREVERB_REVERBMIX_MIN = -96.0; {$EXTERNALSYM DSFX_WAVESREVERB_REVERBMIX_MIN} DSFX_WAVESREVERB_REVERBMIX_MAX = 0.0; {$EXTERNALSYM DSFX_WAVESREVERB_REVERBMIX_MAX} DSFX_WAVESREVERB_REVERBMIX_DEFAULT = 0.0; {$EXTERNALSYM DSFX_WAVESREVERB_REVERBMIX_DEFAULT} DSFX_WAVESREVERB_REVERBTIME_MIN = 0.001; {$EXTERNALSYM DSFX_WAVESREVERB_REVERBTIME_MIN} DSFX_WAVESREVERB_REVERBTIME_MAX = 3000.0; {$EXTERNALSYM DSFX_WAVESREVERB_REVERBTIME_MAX} DSFX_WAVESREVERB_REVERBTIME_DEFAULT = 1000.0; {$EXTERNALSYM DSFX_WAVESREVERB_REVERBTIME_DEFAULT} DSFX_WAVESREVERB_HIGHFREQRTRATIO_MIN = 0.001; {$EXTERNALSYM DSFX_WAVESREVERB_HIGHFREQRTRATIO_MIN} DSFX_WAVESREVERB_HIGHFREQRTRATIO_MAX = 0.999; {$EXTERNALSYM DSFX_WAVESREVERB_HIGHFREQRTRATIO_MAX} DSFX_WAVESREVERB_HIGHFREQRTRATIO_DEFAULT = 0.001; {$EXTERNALSYM DSFX_WAVESREVERB_HIGHFREQRTRATIO_DEFAULT} type {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectSoundFXWavesReverb);'} {$EXTERNALSYM IDirectSoundFXWavesReverb} IDirectSoundFXWavesReverb = interface(IUnknown) ['{46858c3a-0dc6-45e3-b760-d4eef16cb325}'] // IDirectSoundFXWavesReverb methods function SetAllParameters(const pcDsFxWavesReverb: TDSFXWavesReverb): HResult; stdcall; function GetAllParameters(out pDsFxWavesReverb: TDSFXWavesReverb): HResult; stdcall; end; IID_IDirectSoundFXWavesReverb = IDirectSoundFXWavesReverb; {$EXTERNALSYM IID_IDirectSoundFXWavesReverb} // // IDirectSoundCaptureFXAec // PDSCFXAec = ^TDSCFXAec; _DSCFXAec = packed record fEnable: BOOL; fNoiseFill: BOOL; dwMode: DWORD; end; {$EXTERNALSYM _DSCFXAec} DSCFXAec = _DSCFXAec; {$EXTERNALSYM DSCFXAec} TDSCFXAec = _DSCFXAec; const // These match the AEC_MODE_* constants in the DDK's ksmedia.h file DSCFX_AEC_MODE_PASS_THROUGH = $0; {$EXTERNALSYM DSCFX_AEC_MODE_PASS_THROUGH} DSCFX_AEC_MODE_HALF_DUPLEX = $1; {$EXTERNALSYM DSCFX_AEC_MODE_HALF_DUPLEX} DSCFX_AEC_MODE_FULL_DUPLEX = $2; {$EXTERNALSYM DSCFX_AEC_MODE_FULL_DUPLEX} // These match the AEC_STATUS_* constants in ksmedia.h DSCFX_AEC_STATUS_HISTORY_UNINITIALIZED = $0; {$EXTERNALSYM DSCFX_AEC_STATUS_HISTORY_UNINITIALIZED} DSCFX_AEC_STATUS_HISTORY_CONTINUOUSLY_CONVERGED = $1; {$EXTERNALSYM DSCFX_AEC_STATUS_HISTORY_CONTINUOUSLY_CONVERGED} DSCFX_AEC_STATUS_HISTORY_PREVIOUSLY_DIVERGED = $2; {$EXTERNALSYM DSCFX_AEC_STATUS_HISTORY_PREVIOUSLY_DIVERGED} DSCFX_AEC_STATUS_CURRENTLY_CONVERGED = $8; {$EXTERNALSYM DSCFX_AEC_STATUS_CURRENTLY_CONVERGED} type {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectSoundCaptureFXAec);'} {$EXTERNALSYM IDirectSoundCaptureFXAec} IDirectSoundCaptureFXAec = interface(IUnknown) ['{ad74143d-903d-4ab7-8066-28d363036d65}'] // IDirectSoundCaptureFXAec methods function SetAllParameters(const pDscFxAec: TDSCFXAec): HResult; stdcall; function GetAllParameters(out pDscFxAec: TDSCFXAec): HResult; stdcall; function GetStatus(out pdwStatus: DWORD): HResult; stdcall; function Reset: HResult; stdcall; end; IID_IDirectSoundCaptureFXAec = IDirectSoundCaptureFXAec; {$EXTERNALSYM IID_IDirectSoundCaptureFXAec} // // IDirectSoundCaptureFXNoiseSuppress // PDSCFXNoiseSuppress = ^TDSCFXNoiseSuppress; _DSCFXNoiseSuppress = packed record fEnable: BOOL; end; {$EXTERNALSYM _DSCFXNoiseSuppress} DSCFXNoiseSuppress = _DSCFXNoiseSuppress; {$EXTERNALSYM DSCFXNoiseSuppress} TDSCFXNoiseSuppress = _DSCFXNoiseSuppress; {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectSoundCaptureFXNoiseSuppress);'} {$EXTERNALSYM IDirectSoundCaptureFXNoiseSuppress} IDirectSoundCaptureFXNoiseSuppress = interface(IUnknown) ['{ed311e41-fbae-4175-9625-cd0854f693ca}'] // IDirectSoundCaptureFXNoiseSuppress methods function SetAllParameters(const pcDscFxNoiseSuppress: TDSCFXNoiseSuppress): HResult; stdcall; function GetAllParameters(out pDscFxNoiseSuppress: TDSCFXNoiseSuppress): HResult; stdcall; function Reset: HResult; stdcall; end; IID_IDirectSoundCaptureFXNoiseSuppress = IDirectSoundCaptureFXNoiseSuppress; {$EXTERNALSYM IID_IDirectSoundCaptureFXNoiseSuppress} // // IDirectSoundFullDuplex // {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectSoundFullDuplex);'} {$EXTERNALSYM IDirectSoundFullDuplex} IDirectSoundFullDuplex = interface(IUnknown) ['{edcb4c7a-daab-4216-a42e-6c50596ddc1d}'] // IDirectSoundFullDuplex methods function Initialize(pCaptureGuid, pRenderGuid: PGUID; const lpDscBufferDesc: TDSCBufferDesc; const lpDsBufferDesc: TDSBufferDesc; hWnd: HWND; dwLevel: DWORD; out lplpDirectSoundCaptureBuffer8: IDirectSoundCaptureBuffer8; out lplpDirectSoundBuffer8: IDirectSoundBuffer8): HResult; stdcall; end; IID_IDirectSoundFullDuplex = IDirectSoundFullDuplex; {$EXTERNALSYM IID_IDirectSoundFullDuplex} {$ENDIF} // DIRECTSOUND_VERSION >= 0x0800 // // DirectSound 8.0 interfaces. // {$IFDEF DIRECTSOUND_VERSION_8} // #if DIRECTSOUND_VERSION >= 0x0800 // IDirectSound8, IDirectSoundBuffer8 and IDirectSoundCaptureBuffer8 are the // only DirectSound 7.0 interfaces with changed functionality in version 8.0. // The other level 8 interfaces as equivalent to their level 7 counterparts: type IDirectSoundCapture8 = IDirectSoundCapture; {$EXTERNALSYM IDirectSoundCapture8} IDirectSound3DListener8 = IDirectSound3DListener; {$EXTERNALSYM IDirectSound3DListener8} IDirectSound3DBuffer8 = IDirectSound3DBuffer; {$EXTERNALSYM IDirectSound3DBuffer8} IDirectSoundNotify8 = IDirectSoundNotify; {$EXTERNALSYM IDirectSoundNotify8} IDirectSoundFXGargle8 = IDirectSoundFXGargle; {$EXTERNALSYM IDirectSoundFXGargle8} IDirectSoundFXChorus8 = IDirectSoundFXChorus; {$EXTERNALSYM IDirectSoundFXChorus8} IDirectSoundFXFlanger8 = IDirectSoundFXFlanger; {$EXTERNALSYM IDirectSoundFXFlanger8} IDirectSoundFXEcho8 = IDirectSoundFXEcho; {$EXTERNALSYM IDirectSoundFXEcho8} IDirectSoundFXDistortion8 = IDirectSoundFXDistortion; {$EXTERNALSYM IDirectSoundFXDistortion8} IDirectSoundFXCompressor8 = IDirectSoundFXCompressor; {$EXTERNALSYM IDirectSoundFXCompressor8} IDirectSoundFXParamEq8 = IDirectSoundFXParamEq; {$EXTERNALSYM IDirectSoundFXParamEq8} IDirectSoundFXWavesReverb8 = IDirectSoundFXWavesReverb; {$EXTERNALSYM IDirectSoundFXWavesReverb8} IDirectSoundFXI3DL2Reverb8 = IDirectSoundFXI3DL2Reverb; {$EXTERNALSYM IDirectSoundFXI3DL2Reverb8} IDirectSoundCaptureFXAec8 = IDirectSoundCaptureFXAec; {$EXTERNALSYM IDirectSoundCaptureFXAec8} IDirectSoundCaptureFXNoiseSuppress8 = IDirectSoundCaptureFXNoiseSuppress; {$EXTERNALSYM IDirectSoundCaptureFXNoiseSuppress8} IDirectSoundFullDuplex8 = IDirectSoundFullDuplex; {$EXTERNALSYM IDirectSoundFullDuplex8} // // IID definitions for the unchanged DirectSound 8.0 interfaces // IID_IDirectSoundCapture8 = IID_IDirectSoundCapture; {$EXTERNALSYM IID_IDirectSoundCapture8} IID_IDirectSound3DListener8 = IID_IDirectSound3DListener; {$EXTERNALSYM IID_IDirectSound3DListener8} IID_IDirectSound3DBuffer8 = IID_IDirectSound3DBuffer; {$EXTERNALSYM IID_IDirectSound3DBuffer8} IID_IDirectSoundNotify8 = IID_IDirectSoundNotify; {$EXTERNALSYM IID_IDirectSoundNotify8} IID_IDirectSoundFXGargle8 = IID_IDirectSoundFXGargle; {$EXTERNALSYM IID_IDirectSoundFXGargle8} IID_IDirectSoundFXChorus8 = IID_IDirectSoundFXChorus; {$EXTERNALSYM IID_IDirectSoundFXChorus8} IID_IDirectSoundFXFlanger8 = IID_IDirectSoundFXFlanger; {$EXTERNALSYM IID_IDirectSoundFXFlanger8} IID_IDirectSoundFXEcho8 = IID_IDirectSoundFXEcho; {$EXTERNALSYM IID_IDirectSoundFXEcho8} IID_IDirectSoundFXDistortion8 = IID_IDirectSoundFXDistortion; {$EXTERNALSYM IID_IDirectSoundFXDistortion8} IID_IDirectSoundFXCompressor8 = IID_IDirectSoundFXCompressor; {$EXTERNALSYM IID_IDirectSoundFXCompressor8} IID_IDirectSoundFXParamEq8 = IID_IDirectSoundFXParamEq; {$EXTERNALSYM IID_IDirectSoundFXParamEq8} IID_IDirectSoundFXWavesReverb8 = IID_IDirectSoundFXWavesReverb; {$EXTERNALSYM IID_IDirectSoundFXWavesReverb8} IID_IDirectSoundFXI3DL2Reverb8 = IID_IDirectSoundFXI3DL2Reverb; {$EXTERNALSYM IID_IDirectSoundFXI3DL2Reverb8} IID_IDirectSoundCaptureFXAec8 = IID_IDirectSoundCaptureFXAec; {$EXTERNALSYM IID_IDirectSoundCaptureFXAec8} IID_IDirectSoundCaptureFXNoiseSuppress8 = IID_IDirectSoundCaptureFXNoiseSuppress; {$EXTERNALSYM IID_IDirectSoundCaptureFXNoiseSuppress8} IID_IDirectSoundFullDuplex8 = IID_IDirectSoundFullDuplex; {$EXTERNALSYM IID_IDirectSoundFullDuplex8} {$ENDIF} // DIRECTSOUND_VERSION >= 0x0800 const // // Return Codes // // The function completed successfully DS_OK = S_OK; {$EXTERNALSYM DS_OK} // The call succeeded, but we had to substitute the 3D algorithm DS_NO_VIRTUALIZATION = (0 shl 31) or (_FACDS shl 16) or 10; // MAKE_HRESULT(0, _FACDS, 10) {$EXTERNALSYM DS_NO_VIRTUALIZATION} // The call failed because resources (such as a priority level) // were already being used by another caller DSERR_ALLOCATED = MAKE_DSHRESULT_R or 10; // MAKE_DSHRESULT(10) {$EXTERNALSYM DSERR_ALLOCATED} // The control (vol, pan, etc.) requested by the caller is not available DSERR_CONTROLUNAVAIL = MAKE_DSHRESULT_R or 30; // MAKE_DSHRESULT(30) {$EXTERNALSYM DSERR_CONTROLUNAVAIL} // An invalid parameter was passed to the returning function DSERR_INVALIDPARAM = E_INVALIDARG; {$EXTERNALSYM DSERR_INVALIDPARAM} // This call is not valid for the current state of this object DSERR_INVALIDCALL = MAKE_DSHRESULT_R or 50; // MAKE_DSHRESULT(50) {$EXTERNALSYM DSERR_INVALIDCALL} // An undetermined error occurred inside the DirectSound subsystem DSERR_GENERIC = E_FAIL; {$EXTERNALSYM DSERR_GENERIC} // The caller does not have the priority level required for the function to // succeed DSERR_PRIOLEVELNEEDED = MAKE_DSHRESULT_R or 70; // MAKE_DSHRESULT(70) {$EXTERNALSYM DSERR_PRIOLEVELNEEDED} // Not enough free memory is available to complete the operation DSERR_OUTOFMEMORY = E_OUTOFMEMORY; {$EXTERNALSYM DSERR_OUTOFMEMORY} // The specified WAVE format is not supported DSERR_BADFORMAT = MAKE_DSHRESULT_R or 100; // MAKE_DSHRESULT(100) {$EXTERNALSYM DSERR_BADFORMAT} // The function called is not supported at this time DSERR_UNSUPPORTED = E_NOTIMPL; {$EXTERNALSYM DSERR_UNSUPPORTED} // No sound driver is available for use DSERR_NODRIVER = MAKE_DSHRESULT_R or 120; // MAKE_DSHRESULT(120) {$EXTERNALSYM DSERR_NODRIVER} // This object is already initialized DSERR_ALREADYINITIALIZED = MAKE_DSHRESULT_R or 130; // MAKE_DSHRESULT(130) {$EXTERNALSYM DSERR_ALREADYINITIALIZED} // This object does not support aggregation DSERR_NOAGGREGATION = CLASS_E_NOAGGREGATION; {$EXTERNALSYM DSERR_NOAGGREGATION} // The buffer memory has been lost, and must be restored DSERR_BUFFERLOST = MAKE_DSHRESULT_R or 150; // MAKE_DSHRESULT(150) {$EXTERNALSYM DSERR_BUFFERLOST} // Another app has a higher priority level, preventing this call from // succeeding DSERR_OTHERAPPHASPRIO = MAKE_DSHRESULT_R or 160; // MAKE_DSHRESULT(160) {$EXTERNALSYM DSERR_OTHERAPPHASPRIO} // This object has not been initialized DSERR_UNINITIALIZED = MAKE_DSHRESULT_R or 170; // MAKE_DSHRESULT(170) {$EXTERNALSYM DSERR_UNINITIALIZED} // The requested COM interface is not available DSERR_NOINTERFACE = E_NOINTERFACE; {$EXTERNALSYM DSERR_NOINTERFACE} // Access is denied DSERR_ACCESSDENIED = E_ACCESSDENIED; {$EXTERNALSYM DSERR_ACCESSDENIED} // Tried to create a DSBCAPS_CTRLFX buffer shorter than DSBSIZE_FX_MIN milliseconds DSERR_BUFFERTOOSMALL = MAKE_DSHRESULT_R or 180; // MAKE_DSHRESULT(180) {$EXTERNALSYM DSERR_BUFFERTOOSMALL} // Attempt to use DirectSound 8 functionality on an older DirectSound object DSERR_DS8_REQUIRED = MAKE_DSHRESULT_R or 190; // MAKE_DSHRESULT(190) {$EXTERNALSYM DSERR_DS8_REQUIRED} // A circular loop of send effects was detected DSERR_SENDLOOP = MAKE_DSHRESULT_R or 200; // MAKE_DSHRESULT(200) {$EXTERNALSYM DSERR_SENDLOOP} // The GUID specified in an audiopath file does not match a valid MIXIN buffer DSERR_BADSENDBUFFERGUID = MAKE_DSHRESULT_R or 210; // MAKE_DSHRESULT(210) {$EXTERNALSYM DSERR_BADSENDBUFFERGUID} // The object requested was not found (numerically equal to DMUS_E_NOT_FOUND) DSERR_OBJECTNOTFOUND = MAKE_DSHRESULT_R or 4449; // MAKE_DSHRESULT(4449) {$EXTERNALSYM DSERR_OBJECTNOTFOUND} // The effects requested could not be found on the system, or they were found // but in the wrong order, or in the wrong hardware/software locations. DSERR_FXUNAVAILABLE = MAKE_DSHRESULT_R or 220; // MAKE_DSHRESULT(220) {$EXTERNALSYM DSERR_FXUNAVAILABLE} // // Flags // DSCAPS_PRIMARYMONO = $00000001; {$EXTERNALSYM DSCAPS_PRIMARYMONO} DSCAPS_PRIMARYSTEREO = $00000002; {$EXTERNALSYM DSCAPS_PRIMARYSTEREO} DSCAPS_PRIMARY8BIT = $00000004; {$EXTERNALSYM DSCAPS_PRIMARY8BIT} DSCAPS_PRIMARY16BIT = $00000008; {$EXTERNALSYM DSCAPS_PRIMARY16BIT} DSCAPS_CONTINUOUSRATE = $00000010; {$EXTERNALSYM DSCAPS_CONTINUOUSRATE} DSCAPS_EMULDRIVER = $00000020; {$EXTERNALSYM DSCAPS_EMULDRIVER} DSCAPS_CERTIFIED = $00000040; {$EXTERNALSYM DSCAPS_CERTIFIED} DSCAPS_SECONDARYMONO = $00000100; {$EXTERNALSYM DSCAPS_SECONDARYMONO} DSCAPS_SECONDARYSTEREO = $00000200; {$EXTERNALSYM DSCAPS_SECONDARYSTEREO} DSCAPS_SECONDARY8BIT = $00000400; {$EXTERNALSYM DSCAPS_SECONDARY8BIT} DSCAPS_SECONDARY16BIT = $00000800; {$EXTERNALSYM DSCAPS_SECONDARY16BIT} DSSCL_NORMAL = $00000001; {$EXTERNALSYM DSSCL_NORMAL} DSSCL_PRIORITY = $00000002; {$EXTERNALSYM DSSCL_PRIORITY} DSSCL_EXCLUSIVE = $00000003; {$EXTERNALSYM DSSCL_EXCLUSIVE} DSSCL_WRITEPRIMARY = $00000004; {$EXTERNALSYM DSSCL_WRITEPRIMARY} DSSPEAKER_DIRECTOUT = $00000000; {$EXTERNALSYM DSSPEAKER_DIRECTOUT} DSSPEAKER_HEADPHONE = $00000001; {$EXTERNALSYM DSSPEAKER_HEADPHONE} DSSPEAKER_MONO = $00000002; {$EXTERNALSYM DSSPEAKER_MONO} DSSPEAKER_QUAD = $00000003; {$EXTERNALSYM DSSPEAKER_QUAD} DSSPEAKER_STEREO = $00000004; {$EXTERNALSYM DSSPEAKER_STEREO} DSSPEAKER_SURROUND = $00000005; {$EXTERNALSYM DSSPEAKER_SURROUND} DSSPEAKER_5POINT1 = $00000006; // obsolete 5.1 setting {$EXTERNALSYM DSSPEAKER_5POINT1} DSSPEAKER_7POINT1 = $00000007; // obsolete 7.1 setting {$EXTERNALSYM DSSPEAKER_7POINT1} DSSPEAKER_7POINT1_SURROUND = $00000008; // correct 7.1 Home Theater setting {$EXTERNALSYM DSSPEAKER_7POINT1_SURROUND} DSSPEAKER_7POINT1_WIDE = DSSPEAKER_7POINT1; {$EXTERNALSYM DSSPEAKER_7POINT1_WIDE} //#if (DIRECTSOUND_VERSION >= 0x1000) DSSPEAKER_5POINT1_SURROUND = $00000009; // correct 5.1 setting {$EXTERNALSYM DSSPEAKER_5POINT1_SURROUND} DSSPEAKER_5POINT1_BACK = DSSPEAKER_5POINT1; {$EXTERNALSYM DSSPEAKER_5POINT1_BACK} //#endif DSSPEAKER_GEOMETRY_MIN = $00000005; // 5 degrees {$EXTERNALSYM DSSPEAKER_GEOMETRY_MIN} DSSPEAKER_GEOMETRY_NARROW = $0000000A; // 10 degrees {$EXTERNALSYM DSSPEAKER_GEOMETRY_NARROW} DSSPEAKER_GEOMETRY_WIDE = $00000014; // 20 degrees {$EXTERNALSYM DSSPEAKER_GEOMETRY_WIDE} DSSPEAKER_GEOMETRY_MAX = $000000B4; // 180 degrees {$EXTERNALSYM DSSPEAKER_GEOMETRY_MAX} // #define DSSPEAKER_COMBINED(c, g) ((DWORD)(((BYTE)(c)) | ((DWORD)((BYTE)(g))) << 16)) function DSSPEAKER_COMBINED(c, g: DWORD): DWORD; {$EXTERNALSYM DSSPEAKER_COMBINED} // #define DSSPEAKER_CONFIG(a) ((BYTE)(a)) function DSSPEAKER_CONFIG(a: Cardinal): Byte; {$EXTERNALSYM DSSPEAKER_CONFIG} // #define DSSPEAKER_GEOMETRY(a) ((BYTE)(((DWORD)(a) >> 16) & 0x00FF)) function DSSPEAKER_GEOMETRY(a: Cardinal): Byte; {$EXTERNALSYM DSSPEAKER_GEOMETRY} const DSBCAPS_PRIMARYBUFFER = $00000001; {$EXTERNALSYM DSBCAPS_PRIMARYBUFFER} DSBCAPS_STATIC = $00000002; {$EXTERNALSYM DSBCAPS_STATIC} DSBCAPS_LOCHARDWARE = $00000004; {$EXTERNALSYM DSBCAPS_LOCHARDWARE} DSBCAPS_LOCSOFTWARE = $00000008; {$EXTERNALSYM DSBCAPS_LOCSOFTWARE} DSBCAPS_CTRL3D = $00000010; {$EXTERNALSYM DSBCAPS_CTRL3D} DSBCAPS_CTRLFREQUENCY = $00000020; {$EXTERNALSYM DSBCAPS_CTRLFREQUENCY} DSBCAPS_CTRLPAN = $00000040; {$EXTERNALSYM DSBCAPS_CTRLPAN} DSBCAPS_CTRLVOLUME = $00000080; {$EXTERNALSYM DSBCAPS_CTRLVOLUME} DSBCAPS_CTRLPOSITIONNOTIFY = $00000100; {$EXTERNALSYM DSBCAPS_CTRLPOSITIONNOTIFY} DSBCAPS_CTRLFX = $00000200; {$EXTERNALSYM DSBCAPS_CTRLFX} DSBCAPS_STICKYFOCUS = $00004000; {$EXTERNALSYM DSBCAPS_STICKYFOCUS} DSBCAPS_GLOBALFOCUS = $00008000; {$EXTERNALSYM DSBCAPS_GLOBALFOCUS} DSBCAPS_GETCURRENTPOSITION2 = $00010000; {$EXTERNALSYM DSBCAPS_GETCURRENTPOSITION2} DSBCAPS_MUTE3DATMAXDISTANCE = $00020000; {$EXTERNALSYM DSBCAPS_MUTE3DATMAXDISTANCE} DSBCAPS_LOCDEFER = $00040000; {$EXTERNALSYM DSBCAPS_LOCDEFER} //#if (DIRECTSOUND_VERSION >= 0x1000) // Force GetCurrentPosition() to return a buffer's true play position; // unmodified by aids to enhance backward compatibility. DSBCAPS_TRUEPLAYPOSITION = $00080000; {$EXTERNALSYM DSBCAPS_TRUEPLAYPOSITION} //#endif DSBPLAY_LOOPING = $00000001; {$EXTERNALSYM DSBPLAY_LOOPING} DSBPLAY_LOCHARDWARE = $00000002; {$EXTERNALSYM DSBPLAY_LOCHARDWARE} DSBPLAY_LOCSOFTWARE = $00000004; {$EXTERNALSYM DSBPLAY_LOCSOFTWARE} DSBPLAY_TERMINATEBY_TIME = $00000008; {$EXTERNALSYM DSBPLAY_TERMINATEBY_TIME} DSBPLAY_TERMINATEBY_DISTANCE = $000000010; {$EXTERNALSYM DSBPLAY_TERMINATEBY_DISTANCE} DSBPLAY_TERMINATEBY_PRIORITY = $000000020; {$EXTERNALSYM DSBPLAY_TERMINATEBY_PRIORITY} DSBSTATUS_PLAYING = $00000001; {$EXTERNALSYM DSBSTATUS_PLAYING} DSBSTATUS_BUFFERLOST = $00000002; {$EXTERNALSYM DSBSTATUS_BUFFERLOST} DSBSTATUS_LOOPING = $00000004; {$EXTERNALSYM DSBSTATUS_LOOPING} DSBSTATUS_LOCHARDWARE = $00000008; {$EXTERNALSYM DSBSTATUS_LOCHARDWARE} DSBSTATUS_LOCSOFTWARE = $00000010; {$EXTERNALSYM DSBSTATUS_LOCSOFTWARE} DSBSTATUS_TERMINATED = $00000020; {$EXTERNALSYM DSBSTATUS_TERMINATED} DSBLOCK_FROMWRITECURSOR = $00000001; {$EXTERNALSYM DSBLOCK_FROMWRITECURSOR} DSBLOCK_ENTIREBUFFER = $00000002; {$EXTERNALSYM DSBLOCK_ENTIREBUFFER} DSBFREQUENCY_ORIGINAL = 0; {$EXTERNALSYM DSBFREQUENCY_ORIGINAL} DSBFREQUENCY_MIN = 100; {$EXTERNALSYM DSBFREQUENCY_MIN} {$IFDEF DIRECTSOUND_VERSION_9} // #if DIRECTSOUND_VERSION >= 0x0900 DSBFREQUENCY_MAX = 200000; {$EXTERNALSYM DSBFREQUENCY_MAX} {$ELSE} DSBFREQUENCY_MAX = 100000; {$EXTERNALSYM DSBFREQUENCY_MAX} {$ENDIF} DSBPAN_LEFT = -10000; {$EXTERNALSYM DSBPAN_LEFT} DSBPAN_CENTER = 0; {$EXTERNALSYM DSBPAN_CENTER} DSBPAN_RIGHT = 10000; {$EXTERNALSYM DSBPAN_RIGHT} DSBVOLUME_MIN = -10000; {$EXTERNALSYM DSBVOLUME_MIN} DSBVOLUME_MAX = 0; {$EXTERNALSYM DSBVOLUME_MAX} DSBSIZE_MIN = 4; {$EXTERNALSYM DSBSIZE_MIN} DSBSIZE_MAX = $0FFFFFFF; {$EXTERNALSYM DSBSIZE_MAX} DSBSIZE_FX_MIN = 150; // NOTE: Milliseconds, not bytes {$EXTERNALSYM DSBSIZE_FX_MIN} DSBNOTIFICATIONS_MAX = 100000; {$EXTERNALSYM DSBNOTIFICATIONS_MAX} DS3DMODE_NORMAL = $00000000; {$EXTERNALSYM DS3DMODE_NORMAL} DS3DMODE_HEADRELATIVE = $00000001; {$EXTERNALSYM DS3DMODE_HEADRELATIVE} DS3DMODE_DISABLE = $00000002; {$EXTERNALSYM DS3DMODE_DISABLE} DS3D_IMMEDIATE = $00000000; {$EXTERNALSYM DS3D_IMMEDIATE} DS3D_DEFERRED = $00000001; {$EXTERNALSYM DS3D_DEFERRED} var // Forced to define as 'var' cos pascal compiler treats all consts as Double DS3D_MINDISTANCEFACTOR: Single = 1.175494351e-38; // FLT_MIN; {$EXTERNALSYM DS3D_MINDISTANCEFACTOR} DS3D_MAXDISTANCEFACTOR: Single = 3.402823466e+38; // FLT_MAX; {$EXTERNALSYM DS3D_MAXDISTANCEFACTOR} const DS3D_DEFAULTDISTANCEFACTOR = 1.0; {$EXTERNALSYM DS3D_DEFAULTDISTANCEFACTOR} DS3D_MINROLLOFFFACTOR = 0.0; {$EXTERNALSYM DS3D_MINROLLOFFFACTOR} DS3D_MAXROLLOFFFACTOR = 10.0; {$EXTERNALSYM DS3D_MAXROLLOFFFACTOR} DS3D_DEFAULTROLLOFFFACTOR = 1.0; {$EXTERNALSYM DS3D_DEFAULTROLLOFFFACTOR} DS3D_MINDOPPLERFACTOR = 0.0; {$EXTERNALSYM DS3D_MINDOPPLERFACTOR} DS3D_MAXDOPPLERFACTOR = 10.0; {$EXTERNALSYM DS3D_MAXDOPPLERFACTOR} DS3D_DEFAULTDOPPLERFACTOR = 1.0; {$EXTERNALSYM DS3D_DEFAULTDOPPLERFACTOR} DS3D_DEFAULTMINDISTANCE = 1.0; {$EXTERNALSYM DS3D_DEFAULTMINDISTANCE} DS3D_DEFAULTMAXDISTANCE = 1000000000.0; {$EXTERNALSYM DS3D_DEFAULTMAXDISTANCE} DS3D_MINCONEANGLE = 0; {$EXTERNALSYM DS3D_MINCONEANGLE} DS3D_MAXCONEANGLE = 360; {$EXTERNALSYM DS3D_MAXCONEANGLE} DS3D_DEFAULTCONEANGLE = 360; {$EXTERNALSYM DS3D_DEFAULTCONEANGLE} DS3D_DEFAULTCONEOUTSIDEVOLUME = DSBVOLUME_MAX; {$EXTERNALSYM DS3D_DEFAULTCONEOUTSIDEVOLUME} // IDirectSoundCapture attributes DSCCAPS_EMULDRIVER = DSCAPS_EMULDRIVER; {$EXTERNALSYM DSCCAPS_EMULDRIVER} DSCCAPS_CERTIFIED = DSCAPS_CERTIFIED; {$EXTERNALSYM DSCCAPS_CERTIFIED} DSCCAPS_MULTIPLECAPTURE = $00000001; {$EXTERNALSYM DSCCAPS_MULTIPLECAPTURE} // IDirectSoundCaptureBuffer attributes DSCBCAPS_WAVEMAPPED = $80000000; {$EXTERNALSYM DSCBCAPS_WAVEMAPPED} {$IFDEF DIRECTSOUND_VERSION_8} // #if DIRECTSOUND_VERSION >= 0x0800 DSCBCAPS_CTRLFX = $00000200; {$EXTERNALSYM DSCBCAPS_CTRLFX} {$ENDIF} // DIRECTSOUND_VERSION >= 0x0800 DSCBLOCK_ENTIREBUFFER = $00000001; {$EXTERNALSYM DSCBLOCK_ENTIREBUFFER} DSCBSTATUS_CAPTURING = $00000001; {$EXTERNALSYM DSCBSTATUS_CAPTURING} DSCBSTATUS_LOOPING = $00000002; {$EXTERNALSYM DSCBSTATUS_LOOPING} DSCBSTART_LOOPING = $00000001; {$EXTERNALSYM DSCBSTART_LOOPING} DSBPN_OFFSETSTOP = $FFFFFFFF; {$EXTERNALSYM DSBPN_OFFSETSTOP} DS_CERTIFIED = $00000000; {$EXTERNALSYM DS_CERTIFIED} DS_UNCERTIFIED = $00000001; {$EXTERNALSYM DS_UNCERTIFIED} // // Flags for the I3DL2 effects // // // I3DL2 Material Presets // DSFX_I3DL2_MATERIAL_PRESET_SINGLEWINDOW = 0; {$EXTERNALSYM DSFX_I3DL2_MATERIAL_PRESET_SINGLEWINDOW} DSFX_I3DL2_MATERIAL_PRESET_DOUBLEWINDOW = 1; {$EXTERNALSYM DSFX_I3DL2_MATERIAL_PRESET_DOUBLEWINDOW} DSFX_I3DL2_MATERIAL_PRESET_THINDOOR = 2; {$EXTERNALSYM DSFX_I3DL2_MATERIAL_PRESET_THINDOOR} DSFX_I3DL2_MATERIAL_PRESET_THICKDOOR = 3; {$EXTERNALSYM DSFX_I3DL2_MATERIAL_PRESET_THICKDOOR} DSFX_I3DL2_MATERIAL_PRESET_WOODWALL = 4; {$EXTERNALSYM DSFX_I3DL2_MATERIAL_PRESET_WOODWALL} DSFX_I3DL2_MATERIAL_PRESET_BRICKWALL = 5; {$EXTERNALSYM DSFX_I3DL2_MATERIAL_PRESET_BRICKWALL} DSFX_I3DL2_MATERIAL_PRESET_STONEWALL = 6; {$EXTERNALSYM DSFX_I3DL2_MATERIAL_PRESET_STONEWALL} DSFX_I3DL2_MATERIAL_PRESET_CURTAIN = 7; {$EXTERNALSYM DSFX_I3DL2_MATERIAL_PRESET_CURTAIN} //Translator: have not found where these defines are used { #define I3DL2_MATERIAL_PRESET_SINGLEWINDOW -2800,0.71f #define I3DL2_MATERIAL_PRESET_DOUBLEWINDOW -5000,0.40f #define I3DL2_MATERIAL_PRESET_THINDOOR -1800,0.66f #define I3DL2_MATERIAL_PRESET_THICKDOOR -4400,0.64f #define I3DL2_MATERIAL_PRESET_WOODWALL -4000,0.50f #define I3DL2_MATERIAL_PRESET_BRICKWALL -5000,0.60f #define I3DL2_MATERIAL_PRESET_STONEWALL -6000,0.68f #define I3DL2_MATERIAL_PRESET_CURTAIN -1200,0.15f } DSFX_I3DL2_ENVIRONMENT_PRESET_DEFAULT = 0; {$EXTERNALSYM DSFX_I3DL2_ENVIRONMENT_PRESET_DEFAULT} DSFX_I3DL2_ENVIRONMENT_PRESET_GENERIC = 1; {$EXTERNALSYM DSFX_I3DL2_ENVIRONMENT_PRESET_GENERIC} DSFX_I3DL2_ENVIRONMENT_PRESET_PADDEDCELL = 2; {$EXTERNALSYM DSFX_I3DL2_ENVIRONMENT_PRESET_PADDEDCELL} DSFX_I3DL2_ENVIRONMENT_PRESET_ROOM = 3; {$EXTERNALSYM DSFX_I3DL2_ENVIRONMENT_PRESET_ROOM} DSFX_I3DL2_ENVIRONMENT_PRESET_BATHROOM = 4; {$EXTERNALSYM DSFX_I3DL2_ENVIRONMENT_PRESET_BATHROOM} DSFX_I3DL2_ENVIRONMENT_PRESET_LIVINGROOM = 5; {$EXTERNALSYM DSFX_I3DL2_ENVIRONMENT_PRESET_LIVINGROOM} DSFX_I3DL2_ENVIRONMENT_PRESET_STONEROOM = 6; {$EXTERNALSYM DSFX_I3DL2_ENVIRONMENT_PRESET_STONEROOM} DSFX_I3DL2_ENVIRONMENT_PRESET_AUDITORIUM = 7; {$EXTERNALSYM DSFX_I3DL2_ENVIRONMENT_PRESET_AUDITORIUM} DSFX_I3DL2_ENVIRONMENT_PRESET_CONCERTHALL = 8; {$EXTERNALSYM DSFX_I3DL2_ENVIRONMENT_PRESET_CONCERTHALL} DSFX_I3DL2_ENVIRONMENT_PRESET_CAVE = 9; {$EXTERNALSYM DSFX_I3DL2_ENVIRONMENT_PRESET_CAVE} DSFX_I3DL2_ENVIRONMENT_PRESET_ARENA = 10; {$EXTERNALSYM DSFX_I3DL2_ENVIRONMENT_PRESET_ARENA} DSFX_I3DL2_ENVIRONMENT_PRESET_HANGAR = 11; {$EXTERNALSYM DSFX_I3DL2_ENVIRONMENT_PRESET_HANGAR} DSFX_I3DL2_ENVIRONMENT_PRESET_CARPETEDHALLWAY = 12; {$EXTERNALSYM DSFX_I3DL2_ENVIRONMENT_PRESET_CARPETEDHALLWAY} DSFX_I3DL2_ENVIRONMENT_PRESET_HALLWAY = 13; {$EXTERNALSYM DSFX_I3DL2_ENVIRONMENT_PRESET_HALLWAY} DSFX_I3DL2_ENVIRONMENT_PRESET_STONECORRIDOR = 14; {$EXTERNALSYM DSFX_I3DL2_ENVIRONMENT_PRESET_STONECORRIDOR} DSFX_I3DL2_ENVIRONMENT_PRESET_ALLEY = 15; {$EXTERNALSYM DSFX_I3DL2_ENVIRONMENT_PRESET_ALLEY} DSFX_I3DL2_ENVIRONMENT_PRESET_FOREST = 16; {$EXTERNALSYM DSFX_I3DL2_ENVIRONMENT_PRESET_FOREST} DSFX_I3DL2_ENVIRONMENT_PRESET_CITY = 17; {$EXTERNALSYM DSFX_I3DL2_ENVIRONMENT_PRESET_CITY} DSFX_I3DL2_ENVIRONMENT_PRESET_MOUNTAINS = 18; {$EXTERNALSYM DSFX_I3DL2_ENVIRONMENT_PRESET_MOUNTAINS} DSFX_I3DL2_ENVIRONMENT_PRESET_QUARRY = 19; {$EXTERNALSYM DSFX_I3DL2_ENVIRONMENT_PRESET_QUARRY} DSFX_I3DL2_ENVIRONMENT_PRESET_PLAIN = 20; {$EXTERNALSYM DSFX_I3DL2_ENVIRONMENT_PRESET_PLAIN} DSFX_I3DL2_ENVIRONMENT_PRESET_PARKINGLOT = 21; {$EXTERNALSYM DSFX_I3DL2_ENVIRONMENT_PRESET_PARKINGLOT} DSFX_I3DL2_ENVIRONMENT_PRESET_SEWERPIPE = 22; {$EXTERNALSYM DSFX_I3DL2_ENVIRONMENT_PRESET_SEWERPIPE} DSFX_I3DL2_ENVIRONMENT_PRESET_UNDERWATER = 23; {$EXTERNALSYM DSFX_I3DL2_ENVIRONMENT_PRESET_UNDERWATER} DSFX_I3DL2_ENVIRONMENT_PRESET_SMALLROOM = 24; {$EXTERNALSYM DSFX_I3DL2_ENVIRONMENT_PRESET_SMALLROOM} DSFX_I3DL2_ENVIRONMENT_PRESET_MEDIUMROOM = 25; {$EXTERNALSYM DSFX_I3DL2_ENVIRONMENT_PRESET_MEDIUMROOM} DSFX_I3DL2_ENVIRONMENT_PRESET_LARGEROOM = 26; {$EXTERNALSYM DSFX_I3DL2_ENVIRONMENT_PRESET_LARGEROOM} DSFX_I3DL2_ENVIRONMENT_PRESET_MEDIUMHALL = 27; {$EXTERNALSYM DSFX_I3DL2_ENVIRONMENT_PRESET_MEDIUMHALL} DSFX_I3DL2_ENVIRONMENT_PRESET_LARGEHALL = 28; {$EXTERNALSYM DSFX_I3DL2_ENVIRONMENT_PRESET_LARGEHALL} DSFX_I3DL2_ENVIRONMENT_PRESET_PLATE = 29; {$EXTERNALSYM DSFX_I3DL2_ENVIRONMENT_PRESET_PLATE} // // I3DL2 Reverberation Presets Values // I3DL2_ENVIRONMENT_PRESET_DEFAULT : TDSFXI3DL2Reverb = (lRoom: -1000; lRoomHF: -100; flRoomRolloffFactor: 0.0; flDecayTime: 1.49; flDecayHFRatio: 0.83; lReflections: -2602; flReflectionsDelay: 0.007; lReverb: 200; flReverbDelay: 0.011; flDiffusion: 100.0; flDensity: 100.0; flHFReference: 5000.0); {$EXTERNALSYM I3DL2_ENVIRONMENT_PRESET_DEFAULT} I3DL2_ENVIRONMENT_PRESET_GENERIC : TDSFXI3DL2Reverb = (lRoom: -1000; lRoomHF: -100; flRoomRolloffFactor: 0.0; flDecayTime: 1.49; flDecayHFRatio: 0.83; lReflections: -2602; flReflectionsDelay: 0.007; lReverb: 200; flReverbDelay: 0.011; flDiffusion: 100.0; flDensity: 100.0; flHFReference: 5000.0); {$EXTERNALSYM I3DL2_ENVIRONMENT_PRESET_GENERIC} I3DL2_ENVIRONMENT_PRESET_PADDEDCELL : TDSFXI3DL2Reverb = (lRoom: -1000; lRoomHF: -6000; flRoomRolloffFactor: 0.0; flDecayTime: 0.17; flDecayHFRatio: 0.10; lReflections: -1204; flReflectionsDelay: 0.001; lReverb: 207; flReverbDelay: 0.002; flDiffusion: 100.0; flDensity: 100.0; flHFReference: 5000.0); {$EXTERNALSYM I3DL2_ENVIRONMENT_PRESET_PADDEDCELL} I3DL2_ENVIRONMENT_PRESET_ROOM : TDSFXI3DL2Reverb = (lRoom: -1000; lRoomHF: -454; flRoomRolloffFactor: 0.0; flDecayTime: 0.40; flDecayHFRatio: 0.83; lReflections: -1646; flReflectionsDelay: 0.002; lReverb: 53; flReverbDelay: 0.003; flDiffusion: 100.0; flDensity: 100.0; flHFReference: 5000.0); {$EXTERNALSYM I3DL2_ENVIRONMENT_PRESET_ROOM} I3DL2_ENVIRONMENT_PRESET_BATHROOM : TDSFXI3DL2Reverb = (lRoom: -1000; lRoomHF: -1200; flRoomRolloffFactor: 0.0; flDecayTime: 1.49; flDecayHFRatio: 0.54; lReflections: -370; flReflectionsDelay: 0.007; lReverb: 1030; flReverbDelay: 0.011; flDiffusion: 100.0; flDensity: 60.0; flHFReference: 5000.0); {$EXTERNALSYM I3DL2_ENVIRONMENT_PRESET_BATHROOM} I3DL2_ENVIRONMENT_PRESET_LIVINGROOM : TDSFXI3DL2Reverb = (lRoom: -1000; lRoomHF: -6000; flRoomRolloffFactor: 0.0; flDecayTime: 0.50; flDecayHFRatio: 0.10; lReflections: -1376; flReflectionsDelay: 0.003; lReverb: -1104; flReverbDelay: 0.004; flDiffusion: 100.0; flDensity: 100.0; flHFReference: 5000.0); {$EXTERNALSYM I3DL2_ENVIRONMENT_PRESET_LIVINGROOM} I3DL2_ENVIRONMENT_PRESET_STONEROOM : TDSFXI3DL2Reverb = (lRoom: -1000; lRoomHF: -300; flRoomRolloffFactor: 0.0; flDecayTime: 2.31; flDecayHFRatio: 0.64; lReflections: -711; flReflectionsDelay: 0.012; lReverb: 83; flReverbDelay: 0.017; flDiffusion: 100.0; flDensity: 100.0; flHFReference: 5000.0); {$EXTERNALSYM I3DL2_ENVIRONMENT_PRESET_STONEROOM} I3DL2_ENVIRONMENT_PRESET_AUDITORIUM : TDSFXI3DL2Reverb = (lRoom: -1000; lRoomHF: -476; flRoomRolloffFactor: 0.0; flDecayTime: 4.32; flDecayHFRatio: 0.59; lReflections: -789; flReflectionsDelay: 0.020; lReverb: -289; flReverbDelay: 0.030; flDiffusion: 100.0; flDensity: 100.0; flHFReference: 5000.0); {$EXTERNALSYM I3DL2_ENVIRONMENT_PRESET_AUDITORIUM} I3DL2_ENVIRONMENT_PRESET_CONCERTHALL : TDSFXI3DL2Reverb = (lRoom: -1000; lRoomHF: -500; flRoomRolloffFactor: 0.0; flDecayTime: 3.92; flDecayHFRatio: 0.70; lReflections: -1230; flReflectionsDelay: 0.020; lReverb: -2; flReverbDelay: 0.029; flDiffusion: 100.0; flDensity: 100.0; flHFReference: 5000.0); {$EXTERNALSYM I3DL2_ENVIRONMENT_PRESET_CONCERTHALL} I3DL2_ENVIRONMENT_PRESET_CAVE : TDSFXI3DL2Reverb = (lRoom: -1000; lRoomHF: 0; flRoomRolloffFactor: 0.0; flDecayTime: 2.91; flDecayHFRatio: 1.30; lReflections: -602; flReflectionsDelay: 0.015; lReverb: -302; flReverbDelay: 0.022; flDiffusion: 100.0; flDensity: 100.0; flHFReference: 5000.0); {$EXTERNALSYM I3DL2_ENVIRONMENT_PRESET_CAVE} I3DL2_ENVIRONMENT_PRESET_ARENA : TDSFXI3DL2Reverb = (lRoom: -1000; lRoomHF: -698; flRoomRolloffFactor: 0.0; flDecayTime: 7.24; flDecayHFRatio: 0.33; lReflections: -1166; flReflectionsDelay: 0.020; lReverb: 16; flReverbDelay: 0.030; flDiffusion: 100.0; flDensity: 100.0; flHFReference: 5000.0); {$EXTERNALSYM I3DL2_ENVIRONMENT_PRESET_ARENA} I3DL2_ENVIRONMENT_PRESET_HANGAR : TDSFXI3DL2Reverb = (lRoom: -1000; lRoomHF: -1000; flRoomRolloffFactor: 0.0; flDecayTime:10.05; flDecayHFRatio: 0.23; lReflections: -602; flReflectionsDelay: 0.020; lReverb: 198; flReverbDelay: 0.030; flDiffusion: 100.0; flDensity: 100.0; flHFReference: 5000.0); {$EXTERNALSYM I3DL2_ENVIRONMENT_PRESET_HANGAR} I3DL2_ENVIRONMENT_PRESET_CARPETEDHALLWAY : TDSFXI3DL2Reverb = (lRoom: -1000; lRoomHF: -4000; flRoomRolloffFactor: 0.0; flDecayTime: 0.30; flDecayHFRatio: 0.10; lReflections: -1831; flReflectionsDelay: 0.002; lReverb: -1630; flReverbDelay: 0.030; flDiffusion: 100.0; flDensity: 100.0; flHFReference: 5000.0); {$EXTERNALSYM I3DL2_ENVIRONMENT_PRESET_CARPETEDHALLWAY} I3DL2_ENVIRONMENT_PRESET_HALLWAY : TDSFXI3DL2Reverb = (lRoom: -1000; lRoomHF: -300; flRoomRolloffFactor: 0.0; flDecayTime: 1.49; flDecayHFRatio: 0.59; lReflections: -1219; flReflectionsDelay: 0.007; lReverb: 441; flReverbDelay: 0.011; flDiffusion: 100.0; flDensity: 100.0; flHFReference: 5000.0); {$EXTERNALSYM I3DL2_ENVIRONMENT_PRESET_HALLWAY} I3DL2_ENVIRONMENT_PRESET_STONECORRIDOR : TDSFXI3DL2Reverb = (lRoom: -1000; lRoomHF: -237; flRoomRolloffFactor: 0.0; flDecayTime: 2.70; flDecayHFRatio: 0.79; lReflections: -1214; flReflectionsDelay: 0.013; lReverb: 395; flReverbDelay: 0.020; flDiffusion: 100.0; flDensity: 100.0; flHFReference: 5000.0); {$EXTERNALSYM I3DL2_ENVIRONMENT_PRESET_STONECORRIDOR} I3DL2_ENVIRONMENT_PRESET_ALLEY : TDSFXI3DL2Reverb = (lRoom: -1000; lRoomHF: -270; flRoomRolloffFactor: 0.0; flDecayTime: 1.49; flDecayHFRatio: 0.86; lReflections: -1204; flReflectionsDelay: 0.007; lReverb: -4; flReverbDelay: 0.011; flDiffusion: 100.0; flDensity: 100.0; flHFReference: 5000.0); {$EXTERNALSYM I3DL2_ENVIRONMENT_PRESET_ALLEY} I3DL2_ENVIRONMENT_PRESET_FOREST : TDSFXI3DL2Reverb = (lRoom: -1000; lRoomHF: -3300; flRoomRolloffFactor: 0.0; flDecayTime: 1.49; flDecayHFRatio: 0.54; lReflections: -2560; flReflectionsDelay: 0.162; lReverb: -613; flReverbDelay: 0.088; flDiffusion: 79.0; flDensity: 100.0; flHFReference: 5000.0); {$EXTERNALSYM I3DL2_ENVIRONMENT_PRESET_FOREST} I3DL2_ENVIRONMENT_PRESET_CITY : TDSFXI3DL2Reverb = (lRoom: -1000; lRoomHF: -800; flRoomRolloffFactor: 0.0; flDecayTime: 1.49; flDecayHFRatio: 0.67; lReflections: -2273; flReflectionsDelay: 0.007; lReverb: -2217; flReverbDelay: 0.011; flDiffusion: 50.0; flDensity: 100.0; flHFReference: 5000.0); {$EXTERNALSYM I3DL2_ENVIRONMENT_PRESET_CITY} I3DL2_ENVIRONMENT_PRESET_MOUNTAINS : TDSFXI3DL2Reverb = (lRoom: -1000; lRoomHF: -2500; flRoomRolloffFactor: 0.0; flDecayTime: 1.49; flDecayHFRatio: 0.21; lReflections: -2780; flReflectionsDelay: 0.300; lReverb: -2014; flReverbDelay: 0.100; flDiffusion: 27.0; flDensity: 100.0; flHFReference: 5000.0); {$EXTERNALSYM I3DL2_ENVIRONMENT_PRESET_MOUNTAINS} I3DL2_ENVIRONMENT_PRESET_QUARRY : TDSFXI3DL2Reverb = (lRoom: -1000; lRoomHF: -1000; flRoomRolloffFactor: 0.0; flDecayTime: 1.49; flDecayHFRatio: 0.83; lReflections:-10000; flReflectionsDelay: 0.061; lReverb: 500; flReverbDelay: 0.025; flDiffusion: 100.0; flDensity: 100.0; flHFReference: 5000.0); {$EXTERNALSYM I3DL2_ENVIRONMENT_PRESET_QUARRY} I3DL2_ENVIRONMENT_PRESET_PLAIN : TDSFXI3DL2Reverb = (lRoom: -1000; lRoomHF: -2000; flRoomRolloffFactor: 0.0; flDecayTime: 1.49; flDecayHFRatio: 0.50; lReflections: -2466; flReflectionsDelay: 0.179; lReverb: -2514; flReverbDelay: 0.100; flDiffusion: 21.0; flDensity: 100.0; flHFReference: 5000.0); {$EXTERNALSYM I3DL2_ENVIRONMENT_PRESET_PLAIN} I3DL2_ENVIRONMENT_PRESET_PARKINGLOT : TDSFXI3DL2Reverb = (lRoom: -1000; lRoomHF: 0; flRoomRolloffFactor: 0.0; flDecayTime: 1.65; flDecayHFRatio: 1.50; lReflections: -1363; flReflectionsDelay: 0.008; lReverb: -1153; flReverbDelay: 0.012; flDiffusion: 100.0; flDensity: 100.0; flHFReference: 5000.0); {$EXTERNALSYM I3DL2_ENVIRONMENT_PRESET_PARKINGLOT} I3DL2_ENVIRONMENT_PRESET_SEWERPIPE : TDSFXI3DL2Reverb = (lRoom: -1000; lRoomHF: -1000; flRoomRolloffFactor: 0.0; flDecayTime: 2.81; flDecayHFRatio: 0.14; lReflections: 429; flReflectionsDelay: 0.014; lReverb: 648; flReverbDelay: 0.021; flDiffusion: 80.0; flDensity: 60.0; flHFReference: 5000.0); {$EXTERNALSYM I3DL2_ENVIRONMENT_PRESET_SEWERPIPE} I3DL2_ENVIRONMENT_PRESET_UNDERWATER : TDSFXI3DL2Reverb = (lRoom: -1000; lRoomHF: -4000; flRoomRolloffFactor: 0.0; flDecayTime: 1.49; flDecayHFRatio: 0.10; lReflections: -449; flReflectionsDelay: 0.007; lReverb: 1700; flReverbDelay: 0.011; flDiffusion: 100.0; flDensity: 100.0; flHFReference: 5000.0); {$EXTERNALSYM I3DL2_ENVIRONMENT_PRESET_UNDERWATER} // // Examples simulating 'musical' reverb presets // // Name Decay time Description // Small Room 1.1s A small size room with a length of 5m or so. // Medium Room 1.3s A medium size room with a length of 10m or so. // Large Room 1.5s A large size room suitable for live performances. // Medium Hall 1.8s A medium size concert hall. // Large Hall 1.8s A large size concert hall suitable for a full orchestra. // Plate 1.3s A plate reverb simulation. // I3DL2_ENVIRONMENT_PRESET_SMALLROOM : TDSFXI3DL2Reverb = (lRoom: -1000; lRoomHF: -600; flRoomRolloffFactor: 0.0; flDecayTime: 1.10; flDecayHFRatio: 0.83; lReflections: -400; flReflectionsDelay: 0.005; lReverb: 500; flReverbDelay: 0.010; flDiffusion: 100.0; flDensity: 100.0; flHFReference: 5000.0); {$EXTERNALSYM I3DL2_ENVIRONMENT_PRESET_SMALLROOM} I3DL2_ENVIRONMENT_PRESET_MEDIUMROOM : TDSFXI3DL2Reverb = (lRoom: -1000; lRoomHF: -600; flRoomRolloffFactor: 0.0; flDecayTime: 1.30; flDecayHFRatio: 0.83; lReflections: -1000; flReflectionsDelay: 0.010; lReverb: -200; flReverbDelay: 0.020; flDiffusion: 100.0; flDensity: 100.0; flHFReference: 5000.0); {$EXTERNALSYM I3DL2_ENVIRONMENT_PRESET_MEDIUMROOM} I3DL2_ENVIRONMENT_PRESET_LARGEROOM : TDSFXI3DL2Reverb = (lRoom: -1000; lRoomHF: -600; flRoomRolloffFactor: 0.0; flDecayTime: 1.50; flDecayHFRatio: 0.83; lReflections: -1600; flReflectionsDelay: 0.020; lReverb: -1000; flReverbDelay: 0.040; flDiffusion: 100.0; flDensity: 100.0; flHFReference: 5000.0); {$EXTERNALSYM I3DL2_ENVIRONMENT_PRESET_LARGEROOM} I3DL2_ENVIRONMENT_PRESET_MEDIUMHALL : TDSFXI3DL2Reverb = (lRoom: -1000; lRoomHF: -600; flRoomRolloffFactor: 0.0; flDecayTime: 1.80; flDecayHFRatio: 0.70; lReflections: -1300; flReflectionsDelay: 0.015; lReverb: -800; flReverbDelay: 0.030; flDiffusion: 100.0; flDensity: 100.0; flHFReference: 5000.0); {$EXTERNALSYM I3DL2_ENVIRONMENT_PRESET_MEDIUMHALL} I3DL2_ENVIRONMENT_PRESET_LARGEHALL : TDSFXI3DL2Reverb = (lRoom: -1000; lRoomHF: -600; flRoomRolloffFactor: 0.0; flDecayTime: 1.80; flDecayHFRatio: 0.70; lReflections: -2000; flReflectionsDelay: 0.030; lReverb: -1400; flReverbDelay: 0.060; flDiffusion: 100.0; flDensity: 100.0; flHFReference: 5000.0); {$EXTERNALSYM I3DL2_ENVIRONMENT_PRESET_LARGEHALL} I3DL2_ENVIRONMENT_PRESET_PLATE : TDSFXI3DL2Reverb = (lRoom: -1000; lRoomHF: -200; flRoomRolloffFactor: 0.0; flDecayTime: 1.30; flDecayHFRatio: 0.90; lReflections: 0; flReflectionsDelay: 0.002; lReverb: 0; flReverbDelay: 0.010; flDiffusion: 100.0; flDensity: 75.0; flHFReference: 5000.0); {$EXTERNALSYM I3DL2_ENVIRONMENT_PRESET_PLATE} // // DirectSound3D Algorithms // // Default DirectSound3D algorithm {00000000-0000-0000-0000-000000000000} DS3DALG_DEFAULT : TGUID = '{00000000-0000-0000-0000-000000000000}'; // GUID_NULL; {$EXTERNALSYM DS3DALG_DEFAULT} // No virtualization (Pan3D) {C241333F-1C1B-11d2-94F5-00C04FC28ACA} DS3DALG_NO_VIRTUALIZATION: TGUID = '{c241333f-1c1b-11d2-94f5-00c04fc28aca}'; {$EXTERNALSYM DS3DALG_NO_VIRTUALIZATION} // High-quality HRTF algorithm {C2413340-1C1B-11d2-94F5-00C04FC28ACA} DS3DALG_HRTF_FULL: TGUID = '{c2413340-1c1b-11d2-94f5-00c04fc28aca}'; {$EXTERNALSYM DS3DALG_HRTF_FULL} // Lower-quality HRTF algorithm {C2413342-1C1B-11d2-94F5-00C04FC28ACA} DS3DALG_HRTF_LIGHT: TGUID = '{c2413342-1c1b-11d2-94f5-00c04fc28aca}'; {$EXTERNALSYM DS3DALG_HRTF_LIGHT} {$IFDEF DIRECTSOUND_VERSION_8} // #if DIRECTSOUND_VERSION >= 0x0800 // // DirectSound Internal Effect Algorithms // // Gargle {DAFD8210-5711-4B91-9FE3-F75B7AE279BF} GUID_DSFX_STANDARD_GARGLE: TGUID = '{dafd8210-5711-4b91-9fe3-f75b7ae279bf}'; {$EXTERNALSYM GUID_DSFX_STANDARD_GARGLE} // Chorus {EFE6629C-81F7-4281-BD91-C9D604A95AF6} GUID_DSFX_STANDARD_CHORUS: TGUID = '{efe6629c-81f7-4281-bd91-c9d604a95af6}'; {$EXTERNALSYM GUID_DSFX_STANDARD_CHORUS} // Flanger {EFCA3D92-DFD8-4672-A603-7420894BAD98} GUID_DSFX_STANDARD_FLANGER: TGUID = '{efca3d92-dfd8-4672-a603-7420894bad98}'; {$EXTERNALSYM GUID_DSFX_STANDARD_FLANGER} // Echo/Delay {EF3E932C-D40B-4F51-8CCF-3F98F1B29D5D} GUID_DSFX_STANDARD_ECHO: TGUID = '{ef3e932c-d40b-4f51-8ccf-3f98f1b29d5d}'; {$EXTERNALSYM GUID_DSFX_STANDARD_ECHO} // Distortion {EF114C90-CD1D-484E-96E5-09CFAF912A21} GUID_DSFX_STANDARD_DISTORTION: TGUID = '{ef114c90-cd1d-484e-96e5-09cfaf912a21}'; {$EXTERNALSYM GUID_DSFX_STANDARD_DISTORTION} // Compressor/Limiter {EF011F79-4000-406D-87AF-BFFB3FC39D57} GUID_DSFX_STANDARD_COMPRESSOR: TGUID = '{ef011f79-4000-406d-87af-bffb3fc39d57}'; {$EXTERNALSYM GUID_DSFX_STANDARD_COMPRESSOR} // Parametric Equalization {120CED89-3BF4-4173-A132-3CB406CF3231} GUID_DSFX_STANDARD_PARAMEQ: TGUID = '{120ced89-3bf4-4173-a132-3cb406cf3231}'; {$EXTERNALSYM GUID_DSFX_STANDARD_PARAMEQ} // I3DL2 Environmental Reverberation: Reverb (Listener) Effect {EF985E71-D5C7-42D4-BA4D-2D073E2E96F4} GUID_DSFX_STANDARD_I3DL2REVERB: TGUID = '{ef985e71-d5c7-42d4-ba4d-2d073e2e96f4}'; {$EXTERNALSYM GUID_DSFX_STANDARD_I3DL2REVERB} // Waves Reverberation {87FC0268-9A55-4360-95AA-004A1D9DE26C} GUID_DSFX_WAVES_REVERB: TGUID = '{87fc0268-9a55-4360-95aa-004a1d9de26c}'; {$EXTERNALSYM GUID_DSFX_WAVES_REVERB} // // DirectSound Capture Effect Algorithms // // Acoustic Echo Canceller {BF963D80-C559-11D0-8A2B-00A0C9255AC1} // Matches KSNODETYPE_ACOUSTIC_ECHO_CANCEL in ksmedia.h GUID_DSCFX_CLASS_AEC: TGUID = '{BF963D80-C559-11D0-8A2B-00A0C9255AC1}'; {$EXTERNALSYM GUID_DSCFX_CLASS_AEC} // Microsoft AEC {CDEBB919-379A-488a-8765-F53CFD36DE40} GUID_DSCFX_MS_AEC: TGUID = '{cdebb919-379a-488a-8765-f53cfd36de40}'; {$EXTERNALSYM GUID_DSCFX_MS_AEC} // System AEC {1C22C56D-9879-4f5b-A389-27996DDC2810} GUID_DSCFX_SYSTEM_AEC: TGUID = '{1c22c56d-9879-4f5b-a389-27996ddc2810}'; {$EXTERNALSYM GUID_DSCFX_SYSTEM_AEC} // Noise Supression {E07F903F-62FD-4e60-8CDD-DEA7236665B5} // Matches KSNODETYPE_NOISE_SUPPRESS in post Windows ME DDK's ksmedia.h GUID_DSCFX_CLASS_NS: TGUID = '{e07f903f-62fd-4e60-8cdd-dea7236665b5}'; {$EXTERNALSYM GUID_DSCFX_CLASS_NS} // Microsoft Noise Suppresion {11C5C73B-66E9-4ba1-A0BA-E814C6EED92D} GUID_DSCFX_MS_NS: TGUID = '{11c5c73b-66e9-4ba1-a0ba-e814c6eed92d}'; {$EXTERNALSYM GUID_DSCFX_MS_NS} // System Noise Suppresion {5AB0882E-7274-4516-877D-4EEE99BA4FD0} GUID_DSCFX_SYSTEM_NS: TGUID = '{5ab0882e-7274-4516-877d-4eee99ba4fd0}'; {$EXTERNALSYM GUID_DSCFX_SYSTEM_NS} {$ENDIF} // DIRECTSOUND_VERSION >= 0x0800 // // DirectSound API // type TDSEnumCallbackA = function(lpGuid: PGUID; lpcstrDescription, lpcstrModule: PAnsiChar; lpContext: Pointer): BOOL; stdcall; {$NODEFINE TDSEnumCallbackA} TDSEnumCallbackW = function(lpGuid: PGUID; lpcstrDescription, lpcstrModule: PWideChar; lpContext: Pointer): BOOL; stdcall; {$NODEFINE TDSEnumCallbackW} {$IFDEF UNICODE} TDSEnumCallback = TDSEnumCallbackW; {$ELSE} TDSEnumCallback = TDSEnumCallbackA; {$ENDIF} {$NODEFINE TDSEnumCallback} {$HPPEMIT 'typedef LPDSENUMCALLBACKA TDSEnumCallbackA;'} {$HPPEMIT 'typedef LPDSENUMCALLBACKW TDSEnumCallbackW;'} {$HPPEMIT 'typedef LPDSENUMCALLBACK TDSEnumCallback;'} const DirectSoundDll = 'dsound.dll'; function DirectSoundLoaded: Boolean; function UnLoadDirectSound: Boolean; function LoadDirectSound: Boolean; {$IFDEF DIRECTSOUND_DYNAMIC_LINK} var DirectSoundCreate: function(lpGuid: PGUID; out ppDS: IDirectSound; pUnkOuter: IUnknown): HResult; stdcall; {$EXTERNALSYM DirectSoundCreate} DirectSoundEnumerateW: function(lpDSEnumCallback: TDSEnumCallbackW; lpContext: Pointer): HResult; stdcall; {$EXTERNALSYM DirectSoundEnumerateW} DirectSoundEnumerateA: function(lpDSEnumCallback: TDSEnumCallbackA; lpContext: Pointer): HResult; stdcall; {$EXTERNALSYM DirectSoundEnumerateA} DirectSoundEnumerate: function(lpDSEnumCallback: TDSEnumCallback; lpContext: Pointer): HResult; stdcall; {$EXTERNALSYM DirectSoundEnumerate} DirectSoundCaptureCreate: function(lpGUID: PGUID; out lplpDSC: IDirectSoundCapture; pUnkOuter: IUnknown): HResult; stdcall; {$EXTERNALSYM DirectSoundCaptureCreate} DirectSoundCaptureEnumerateW: function(lpDSEnumCallback: TDSEnumCallbackW; lpContext: Pointer): HResult; stdcall; {$EXTERNALSYM DirectSoundCaptureEnumerateW} DirectSoundCaptureEnumerateA: function(lpDSEnumCallback: TDSEnumCallbackA; lpContext: Pointer): HResult; stdcall; {$EXTERNALSYM DirectSoundCaptureEnumerateA} DirectSoundCaptureEnumerate: function(lpDSEnumCallback: TDSEnumCallback; lpContext: Pointer): HResult; stdcall; {$EXTERNALSYM DirectSoundCaptureEnumerate} //#if DIRECTSOUND_VERSION >= 0x0800 type TDirectSoundFullDuplexCreateFunc = function(pcGuidCaptureDevice, pcGuidRenderDevice: PGUID; const pcDSCBufferDesc: TDSCBufferDesc; const pcDSBufferDesc: TDSBufferDesc; hWnd: hWnd; dwLevel: DWORD; out ppDSFD: IDirectSoundFullDuplex8; out ppDSCBuffer8: IDirectSoundCaptureBuffer8; out ppDSBuffer8: IDirectSoundBuffer8; pUnkOuter: IUnknown): HResult; stdcall; var DirectSoundCreate8: function(pcGuidDevice: PGUID; out ppDS8: IDirectSound8; pUnkOuter: IUnknown): HResult; stdcall; {$EXTERNALSYM DirectSoundCreate8} DirectSoundCaptureCreate8: function(pcGuidDevice: PGUID; out ppDSC8: IDirectSoundCapture8; pUnkOuter: IUnknown): HResult; stdcall; {$EXTERNALSYM DirectSoundCaptureCreate8} DirectSoundFullDuplexCreate: TDirectSoundFullDuplexCreateFunc; {$EXTERNALSYM DirectSoundFullDuplexCreate} DirectSoundFullDuplexCreate8: TDirectSoundFullDuplexCreateFunc; {$EXTERNALSYM DirectSoundFullDuplexCreate8} GetDeviceID: function(pGuidSrc, pGuidDest: PGUID): HResult; stdcall; {$EXTERNALSYM GetDeviceID} //#endif // DIRECTSOUND_VERSION >= 0x0800 {$ELSE} function DirectSoundCreate(lpGuid: PGUID; out ppDS: IDirectSound; pUnkOuter: IUnknown): HResult; stdcall; external DirectSoundDLL; {$EXTERNALSYM DirectSoundCreate} function DirectSoundEnumerateW(lpDSEnumCallback: TDSEnumCallbackW; lpContext: Pointer): HResult; stdcall; external DirectSoundDLL name 'DirectSoundEnumerateW'; {$EXTERNALSYM DirectSoundEnumerateW} function DirectSoundEnumerateA(lpDSEnumCallback: TDSEnumCallbackA; lpContext: Pointer): HResult; stdcall; external DirectSoundDLL name 'DirectSoundEnumerateA'; {$EXTERNALSYM DirectSoundEnumerateA} {$IFDEF UNICODE} function DirectSoundEnumerate(lpDSEnumCallback: TDSEnumCallback; lpContext: Pointer): HResult; stdcall; external DirectSoundDLL name 'DirectSoundEnumerateW'; {$ELSE} function DirectSoundEnumerate(lpDSEnumCallback: TDSEnumCallback; lpContext: Pointer): HResult; stdcall; external DirectSoundDLL name 'DirectSoundEnumerateA'; {$ENDIF} {$EXTERNALSYM DirectSoundEnumerate} function DirectSoundCaptureCreate(lpGUID: PGUID; out lplpDSC: IDirectSoundCapture; pUnkOuter: IUnknown): HResult; stdcall; external DirectSoundDLL; {$EXTERNALSYM DirectSoundCaptureCreate} function DirectSoundCaptureEnumerateW(lpDSEnumCallback: TDSEnumCallbackW; lpContext: Pointer): HResult; stdcall; external DirectSoundDLL name 'DirectSoundCaptureEnumerateW'; {$EXTERNALSYM DirectSoundCaptureEnumerateW} function DirectSoundCaptureEnumerateA(lpDSEnumCallback: TDSEnumCallbackA; lpContext: Pointer): HResult; stdcall; external DirectSoundDLL name 'DirectSoundCaptureEnumerateA'; {$EXTERNALSYM DirectSoundCaptureEnumerateA} {$IFDEF UNICODE} function DirectSoundCaptureEnumerate(lpDSEnumCallback: TDSEnumCallback; lpContext: Pointer): HResult; stdcall; external DirectSoundDLL name 'DirectSoundCaptureEnumerateW'; {$ELSE} function DirectSoundCaptureEnumerate(lpDSEnumCallback: TDSEnumCallback; lpContext: Pointer): HResult; stdcall; external DirectSoundDLL name 'DirectSoundCaptureEnumerateA'; {$ENDIF} {$EXTERNALSYM DirectSoundCaptureEnumerate} //#if DIRECTSOUND_VERSION >= 0x0800 function DirectSoundCreate8(pcGuidDevice: PGUID; out ppDS8: IDirectSound8; pUnkOuter: IUnknown): HResult; stdcall; external DirectSoundDLL; {$EXTERNALSYM DirectSoundCreate8} function DirectSoundCaptureCreate8(pcGuidDevice: PGUID; out ppDSC8: IDirectSoundCapture8; pUnkOuter: IUnknown): HResult; stdcall; external DirectSoundDLL; {$EXTERNALSYM DirectSoundCaptureCreate8} function DirectSoundFullDuplexCreate(pcGuidCaptureDevice, pcGuidRenderDevice: PGUID; const pcDSCBufferDesc: TDSCBufferDesc; const pcDSBufferDesc: TDSBufferDesc; hWnd: hWnd; dwLevel: DWORD; out ppDSFD: IDirectSoundFullDuplex8; out ppDSCBuffer8: IDirectSoundCaptureBuffer8; out ppDSBuffer8: IDirectSoundBuffer8; pUnkOuter: IUnknown): HResult; stdcall; external DirectSoundDLL; {$EXTERNALSYM DirectSoundFullDuplexCreate} function DirectSoundFullDuplexCreate8(pcGuidCaptureDevice, pcGuidRenderDevice: PGUID; const pcDSCBufferDesc: TDSCBufferDesc; const pcDSBufferDesc: TDSBufferDesc; hWnd: hWnd; dwLevel: DWORD; out ppDSFD: IDirectSoundFullDuplex8; out ppDSCBuffer8: IDirectSoundCaptureBuffer8; out ppDSBuffer8: IDirectSoundBuffer8; pUnkOuter: IUnknown): HResult; stdcall; external DirectSoundDLL name 'DirectSoundFullDuplexCreate'; {$EXTERNALSYM DirectSoundFullDuplexCreate8} function GetDeviceID(pGuidSrc, pGuidDest: PGUID): HResult; stdcall; external DirectSoundDLL; {$EXTERNALSYM GetDeviceID} //#endif // DIRECTSOUND_VERSION >= 0x0800 {$ENDIF} implementation // #define MAKE_DSHRESULT(code) MAKE_HRESULT(1, _FACDS, code) function MAKE_DSHRESULT(Code: DWord): DWord; begin Result:= DWord((1 shl 31) or (_FACDS shl 16)) or Code; end; // #define DSSPEAKER_COMBINED(c, g) ((DWORD)(((BYTE)(c)) | ((DWORD)((BYTE)(g))) << 16)) function DSSPEAKER_COMBINED(c, g: DWORD): DWORD; begin Result:= Byte(c) or (DWORD(Byte(g)) shl 16); end; // #define DSSPEAKER_CONFIG(a) ((BYTE)(a)) function DSSPEAKER_CONFIG(a: Cardinal): Byte; begin Result:= Byte(a); end; // #define DSSPEAKER_GEOMETRY(a) ((BYTE)(((DWORD)(a) >> 16) & 0x00FF)) function DSSPEAKER_GEOMETRY(a: Cardinal): Byte; begin Result:= Byte((DWORD(a) shr 16) and $00FF); end; {$IFDEF DIRECTSOUND_DYNAMIC_LINK} var DirectSoundLib: THandle = 0; function DirectSoundLoaded: Boolean; begin Result:= (DirectSoundLib <> 0); end; function UnLoadDirectSound: Boolean; begin Result:= True; if (DirectSoundLib <> 0) then begin Result:= Result and FreeLibrary(DirectSoundLib); DirectSoundCreate:= nil; DirectSoundEnumerateW:= nil; DirectSoundEnumerateA:= nil; DirectSoundEnumerate:= nil; DirectSoundCaptureCreate:= nil; DirectSoundCaptureEnumerateW:= nil; DirectSoundCaptureEnumerateA:= nil; DirectSoundCaptureEnumerate:= nil; //#if DIRECTSOUND_VERSION >= 0x0800 DirectSoundCreate8:= nil; DirectSoundCaptureCreate8:= nil; DirectSoundFullDuplexCreate:= nil; DirectSoundFullDuplexCreate8:= nil; GetDeviceID:= nil; DirectSoundLib:= 0; end; end; function LoadDirectSound: Boolean; begin Result:= DirectSoundLoaded; if (not Result) then begin DirectSoundLib:= LoadLibrary(DirectSoundDll); if (DirectSoundLib<>0) then begin DirectSoundCreate:= GetProcAddress(DirectSoundLib, 'DirectSoundCreate'); DirectSoundEnumerateW:= GetProcAddress(DirectSoundLib, 'DirectSoundEnumerateW'); DirectSoundEnumerateA:= GetProcAddress(DirectSoundLib, 'DirectSoundEnumerateA'); {$IFDEF UNICODE} DirectSoundEnumerate:= GetProcAddress(DirectSoundLib, 'DirectSoundEnumerateW'); {$ELSE} DirectSoundEnumerate:= GetProcAddress(DirectSoundLib, 'DirectSoundEnumerateA'); {$ENDIF} DirectSoundCaptureCreate:= GetProcAddress(DirectSoundLib, 'DirectSoundCaptureCreate'); DirectSoundCaptureEnumerateW:= GetProcAddress(DirectSoundLib, 'DirectSoundCaptureEnumerateW'); DirectSoundCaptureEnumerateA:= GetProcAddress(DirectSoundLib, 'DirectSoundCaptureEnumerateA'); {$IFDEF UNICODE} DirectSoundCaptureEnumerate:= GetProcAddress(DirectSoundLib, 'DirectSoundCaptureEnumerateW'); {$ELSE} DirectSoundCaptureEnumerate:= GetProcAddress(DirectSoundLib, 'DirectSoundCaptureEnumerateA'); {$ENDIF} //#if DIRECTSOUND_VERSION >= 0x0800 DirectSoundCreate8:= GetProcAddress(DirectSoundLib, 'DirectSoundCreate8'); DirectSoundCaptureCreate8:= GetProcAddress(DirectSoundLib, 'DirectSoundCaptureCreate8'); DirectSoundFullDuplexCreate:= GetProcAddress(DirectSoundLib, 'DirectSoundFullDuplexCreate'); DirectSoundFullDuplexCreate8:= GetProcAddress(DirectSoundLib, 'DirectSoundFullDuplexCreate'); GetDeviceID:= GetProcAddress(DirectSoundLib, 'GetDeviceID'); //#endif // DIRECTSOUND_VERSION >= 0x0800 end; Result:= Assigned(DirectSoundCreate); if not Result then UnLoadDirectSound; end; end; {$ELSE} function DirectSoundLoaded: Boolean; begin // Stub function for static linking Result:= True; end; function UnLoadDirectSound: Boolean; begin // Stub function for static linking Result:= True; // should emulate "normal" behaviour end; function LoadDirectSound: Boolean; begin // Stub function for static linking Result:= True; end; {$ENDIF} {$IFDEF DIRECTSOUND_DYNAMIC_LINK} initialization {$IFNDEF DIRECTSOUND_DYNAMIC_LINK_EXPLICIT} LoadDirectSound; {$ENDIF} finalization UnLoadDirectSound; {$ENDIF} end.