G940LEDControl/DirectX/DirectSound.pas

2420 lines
102 KiB
ObjectPascal

{******************************************************************************}
{* *}
{* 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.