?? directmusic.pas
字號:
// **** For level 1 only WAVELINK_CHANNEL_MONO is valid ****
// ulChannel allows for up to 32 channels of audio with each bit position
// specifiying a channel of playback
const
WAVELINK_CHANNEL_LEFT = $0001;
{$EXTERNALSYM WAVELINK_CHANNEL_LEFT}
WAVELINK_CHANNEL_RIGHT = $0002;
{$EXTERNALSYM WAVELINK_CHANNEL_RIGHT}
F_WAVELINK_PHASE_MASTER = $0001;
{$EXTERNALSYM F_WAVELINK_PHASE_MASTER}
type
PWaveLink = ^TWaveLink;
_WAVELINK = packed record // any paths or links are stored right after struct
fusOptions: Word; // options flags for this wave
usPhaseGroup: Word; // Phase grouping for locking channels
ulChannel: Cardinal; // channel placement
ulTableIndex: Cardinal; // index into the wave pool table, 0 based
end;
{$EXTERNALSYM _WAVELINK}
WAVELINK = _WAVELINK;
{$EXTERNALSYM WAVELINK}
TWaveLink = _WAVELINK;
const
POOL_CUE_NULL = $ffffffff;
{$EXTERNALSYM POOL_CUE_NULL}
type
PPoolCUE = ^TPoolCUE;
_POOLCUE = packed record
ulOffset: Cardinal; // Offset to the entry in the list
end;
{$EXTERNALSYM _POOLCUE}
POOLCUE = _POOLCUE;
{$EXTERNALSYM POOLCUE}
TPoolCUE = _POOLCUE;
PPoolTable = ^TPoolTable;
_POOLTABLE = packed record
cbSize: Cardinal; // size of the pool table structure
cCues: Cardinal; // count of cues in the list
end;
{$EXTERNALSYM _POOLTABLE}
POOLTABLE = _POOLTABLE;
{$EXTERNALSYM POOLTABLE}
TPoolTable = _POOLTABLE;
(*)///////////////////////////////////////////////////////////////////////////
// Structures for the "wsmp" chunk
///////////////////////////////////////////////////////////////////////////(*)
const
F_WSMP_NO_TRUNCATION = $0001;
{$EXTERNALSYM F_WSMP_NO_TRUNCATION}
F_WSMP_NO_COMPRESSION = $0002;
{$EXTERNALSYM F_WSMP_NO_COMPRESSION}
type
PWSMPL = ^TWSMPL;
_rwsmp = packed record
cbSize: Cardinal;
usUnityNote: Word; // MIDI Unity Playback Note
sFineTune: SmallInt; // Fine Tune in log tuning
lAttenuation: Longint; // Overall Attenuation to be applied to data
fulOptions: Cardinal; // Flag options
cSampleLoops: Cardinal; // Count of Sample loops, 0 loops is one shot
end;
{$EXTERNALSYM _rwsmp}
WSMPL = _rwsmp;
{$EXTERNALSYM WSMPL}
TWSMPL = _rwsmp;
// This loop type is a normal forward playing loop which is continually
// played until the envelope reaches an off threshold in the release
// portion of the volume envelope
const
WLOOP_TYPE_FORWARD = 0;
{$EXTERNALSYM WLOOP_TYPE_FORWARD}
type
PWLoop = ^TWLoop;
_rloop = packed record
cbSize: Cardinal;
ulType: Cardinal; // Loop Type
ulStart: Cardinal; // Start of loop in samples
ulLength: Cardinal; // Length of loop in samples
end;
{$EXTERNALSYM _rloop}
WLOOP = _rloop;
{$EXTERNALSYM WLOOP}
TWLoop = _rloop;
(*
dls2.h
Description:
Interface defines and structures for the DLS2 extensions of DLS.
Written by Microsoft 1998. Released for public use.
*)
(*
FOURCC's used in the DLS2 file, in addition to DLS1 chunks
*)
const
FOURCC_RGN2 = DWORD(Byte('r') or (Byte('g') shl 8) or (Byte('n') shl 16) or (Byte('2') shl 24));
{$EXTERNALSYM FOURCC_RGN2}
FOURCC_LAR2 = DWORD(Byte('l') or (Byte('a') shl 8) or (Byte('r') shl 16) or (Byte('2') shl 24));
{$EXTERNALSYM FOURCC_LAR2}
FOURCC_ART2 = DWORD(Byte('a') or (Byte('r') shl 8) or (Byte('t') shl 16) or (Byte('2') shl 24));
{$EXTERNALSYM FOURCC_ART2}
FOURCC_CDL = DWORD(Byte('c') or (Byte('d') shl 8) or (Byte('l') shl 16) or (Byte(' ') shl 24));
{$EXTERNALSYM FOURCC_CDL}
// FOURCC_DLID = DWORD(Byte('d') or (Byte('l') shl 8) or (Byte('i') shl 16) or (Byte('d') shl 24)); //Already defined above
(*
Articulation connection graph definitions. These are in addition to
the definitions in the DLS1 header.
*)
// Generic Sources (in addition to DLS1 sources.
CONN_SRC_POLYPRESSURE = $0007; // Polyphonic Pressure
{$EXTERNALSYM CONN_SRC_POLYPRESSURE}
CONN_SRC_CHANNELPRESSURE = $0008; // Channel Pressure
{$EXTERNALSYM CONN_SRC_CHANNELPRESSURE}
CONN_SRC_VIBRATO = $0009; // Vibrato LFO
{$EXTERNALSYM CONN_SRC_VIBRATO}
CONN_SRC_MONOPRESSURE = $000a; // MIDI Mono pressure
{$EXTERNALSYM CONN_SRC_MONOPRESSURE}
// Midi Controllers
CONN_SRC_CC91 = $00db; // Reverb Send
{$EXTERNALSYM CONN_SRC_CC91}
CONN_SRC_CC93 = $00dd; // Chorus Send
{$EXTERNALSYM CONN_SRC_CC93}
(* Generic Destinations *)
CONN_DST_GAIN = $0001; // Same as CONN_DST_ ATTENUATION, but more appropriate terminology.
{$EXTERNALSYM CONN_DST_GAIN}
CONN_DST_KEYNUMBER = $0005; // Key Number Generator
{$EXTERNALSYM CONN_DST_KEYNUMBER}
// Audio Channel Output Destinations
CONN_DST_LEFT = $0010; // Left Channel Send
{$EXTERNALSYM CONN_DST_LEFT}
CONN_DST_RIGHT = $0011; // Right Channel Send
{$EXTERNALSYM CONN_DST_RIGHT}
CONN_DST_CENTER = $0012; // Center Channel Send
{$EXTERNALSYM CONN_DST_CENTER}
CONN_DST_LEFTREAR = $0013; // Left Rear Channel Send
{$EXTERNALSYM CONN_DST_LEFTREAR}
CONN_DST_RIGHTREAR = $0014; // Right Rear Channel Send
{$EXTERNALSYM CONN_DST_RIGHTREAR}
CONN_DST_LFE_CHANNEL = $0015; // LFE Channel Send
{$EXTERNALSYM CONN_DST_LFE_CHANNEL}
CONN_DST_CHORUS = $0080; // Chorus Send
{$EXTERNALSYM CONN_DST_CHORUS}
CONN_DST_REVERB = $0081; // Reverb Send
{$EXTERNALSYM CONN_DST_REVERB}
// Vibrato LFO Destinations
CONN_DST_VIB_FREQUENCY = $0114; // Vibrato Frequency
{$EXTERNALSYM CONN_DST_VIB_FREQUENCY}
CONN_DST_VIB_STARTDELAY = $0115; // Vibrato Start Delay
{$EXTERNALSYM CONN_DST_VIB_STARTDELAY}
// EG1 Destinations
CONN_DST_EG1_DELAYTIME = $020B; // EG1 Delay Time
{$EXTERNALSYM CONN_DST_EG1_DELAYTIME}
CONN_DST_EG1_HOLDTIME = $020C; // EG1 Hold Time
{$EXTERNALSYM CONN_DST_EG1_HOLDTIME}
CONN_DST_EG1_SHUTDOWNTIME = $020D; // EG1 Shutdown Time
{$EXTERNALSYM CONN_DST_EG1_SHUTDOWNTIME}
// EG2 Destinations
CONN_DST_EG2_DELAYTIME = $030F; // EG2 Delay Time
{$EXTERNALSYM CONN_DST_EG2_DELAYTIME}
CONN_DST_EG2_HOLDTIME = $0310; // EG2 Hold Time
{$EXTERNALSYM CONN_DST_EG2_HOLDTIME}
// Filter Destinations
CONN_DST_FILTER_CUTOFF = $0500; // Filter Cutoff Frequency
{$EXTERNALSYM CONN_DST_FILTER_CUTOFF}
CONN_DST_FILTER_Q = $0501; // Filter Resonance
{$EXTERNALSYM CONN_DST_FILTER_Q}
// Transforms
CONN_TRN_CONVEX = $0002; // Convex Transform
{$EXTERNALSYM CONN_TRN_CONVEX}
CONN_TRN_SWITCH = $0003; // Switch Transform
{$EXTERNALSYM CONN_TRN_SWITCH}
// Conditional chunk operators
DLS_CDL_AND = $0001;// X = X & Y
{$EXTERNALSYM DLS_CDL_AND}
DLS_CDL_OR = $0002;// X = X | Y
{$EXTERNALSYM DLS_CDL_OR}
DLS_CDL_XOR = $0003;// X = X ^ Y
{$EXTERNALSYM DLS_CDL_XOR}
DLS_CDL_ADD = $0004;// X = X + Y
{$EXTERNALSYM DLS_CDL_ADD}
DLS_CDL_SUBTRACT = $0005;// X = X - Y
{$EXTERNALSYM DLS_CDL_SUBTRACT}
DLS_CDL_MULTIPLY = $0006;// X = X * Y
{$EXTERNALSYM DLS_CDL_MULTIPLY}
DLS_CDL_DIVIDE = $0007;// X = X / Y
{$EXTERNALSYM DLS_CDL_DIVIDE}
DLS_CDL_LOGICAL_AND = $0008;// X = X && Y
{$EXTERNALSYM DLS_CDL_LOGICAL_AND}
DLS_CDL_LOGICAL_OR = $0009;// X = X || Y
{$EXTERNALSYM DLS_CDL_LOGICAL_OR}
DLS_CDL_LT = $000A;// X = (X < Y)
{$EXTERNALSYM DLS_CDL_LT}
DLS_CDL_LE = $000B;// X = (X <= Y)
{$EXTERNALSYM DLS_CDL_LE}
DLS_CDL_GT = $000C;// X = (X > Y)
{$EXTERNALSYM DLS_CDL_GT}
DLS_CDL_GE = $000D;// X = (X >= Y)
{$EXTERNALSYM DLS_CDL_GE}
DLS_CDL_EQ = $000E;// X = (X == Y)
{$EXTERNALSYM DLS_CDL_EQ}
DLS_CDL_NOT = $000F;// X = !X
{$EXTERNALSYM DLS_CDL_NOT}
DLS_CDL_CONST = $0010;// 32-bit constant
{$EXTERNALSYM DLS_CDL_CONST}
DLS_CDL_QUERY = $0011;// 32-bit value returned from query
{$EXTERNALSYM DLS_CDL_QUERY}
DLS_CDL_QUERYSUPPORTED = $0012;// Test to see if query is supported by synth
{$EXTERNALSYM DLS_CDL_QUERYSUPPORTED}
(*
Loop and release
*)
WLOOP_TYPE_RELEASE = 1;
{$EXTERNALSYM WLOOP_TYPE_RELEASE}
(*
WaveLink chunk <wlnk-ck>
*)
F_WAVELINK_MULTICHANNEL = $0002;
{$EXTERNALSYM F_WAVELINK_MULTICHANNEL}
const
(*
DLSID queries for <cdl-ck>
*)
DLSID_GMInHardware: TGUID = '{178f2f24-c364-11d1-a760-0000f875ac12}';
{$EXTERNALSYM DLSID_GMInHardware}
DLSID_GSInHardware: TGUID = '{178f2f25-c364-11d1-a760-0000f875ac12}';
{$EXTERNALSYM DLSID_GSInHardware}
DLSID_XGInHardware: TGUID = '{178f2f26-c364-11d1-a760-0000f875ac12}';
{$EXTERNALSYM DLSID_XGInHardware}
DLSID_SupportsDLS1: TGUID = '{178f2f27-c364-11d1-a760-0000f875ac12}';
{$EXTERNALSYM DLSID_SupportsDLS1}
DLSID_SupportsDLS2: TGUID = '{f14599e5-4689-11d2-afa6-00aa0024d8b6}';
{$EXTERNALSYM DLSID_SupportsDLS2}
DLSID_SampleMemorySize: TGUID = '{178f2f28-c364-11d1-a760-0000f875ac12}';
{$EXTERNALSYM DLSID_SampleMemorySize}
DLSID_ManufacturersID: TGUID = '{b03e1181-8095-11d2-a1ef-00600833dbd8}';
{$EXTERNALSYM DLSID_ManufacturersID}
DLSID_ProductID: TGUID = '{b03e1182-8095-11d2-a1ef-00600833dbd8}';
{$EXTERNALSYM DLSID_ProductID}
DLSID_SamplePlaybackRate: TGUID = '{2a91f713-a4bf-11d2-bbdf-00600833dbd8}';
{$EXTERNALSYM DLSID_SamplePlaybackRate}
(************************************************************************
* *
* dmdls.h -- DLS download definitions for DirectMusic API's *
* *
* Copyright (c) Microsoft Corporation. All rights reserved. *
* *
************************************************************************)
type
PCENT = Longint; (* Pitch cents *)
{$EXTERNALSYM PCENT}
GCENT = Longint; (* Gain cents *)
{$EXTERNALSYM GCENT}
TCENT = Longint; (* Time cents *)
{$EXTERNALSYM TCENT}
PERCENT = Longint; (* Per.. cent! *)
{$EXTERNALSYM PERCENT}
PReferenceTime = ^TReferenceTime;
REFERENCE_TIME = LONGLONG;
{$EXTERNALSYM REFERENCE_TIME}
TReferenceTime = REFERENCE_TIME;
PReference_Time = PReferenceTime;
TReference_Time = TReferenceTime;
PDMusDownloadInfo = ^TDMusDownloadInfo;
_DMUS_DOWNLOADINFO = packed record
dwDLType: DWORD; // Instrument or Wave
dwDLId: DWORD; // Unique identifier to tag this download.
dwNumOffsetTableEntries: DWORD; // Number of index in the offset address table.
cbSize: DWORD; // Total size of this memory chunk.
end;
{$EXTERNALSYM _DMUS_DOWNLOADINFO}
DMUS_DOWNLOADINFO = _DMUS_DOWNLOADINFO;
{$EXTERNALSYM DMUS_DOWNLOADINFO}
TDMusDownloadInfo = _DMUS_DOWNLOADINFO;
const
DMUS_DOWNLOADINFO_INSTRUMENT = 1;
{$EXTERNALSYM DMUS_DOWNLOADINFO_INSTRUMENT}
DMUS_DOWNLOADINFO_WAVE = 2;
{$EXTERNALSYM DMUS_DOWNLOADINFO_WAVE}
DMUS_DOWNLOADINFO_INSTRUMENT2 = 3; (* New version for better DLS2 support. *)
{$EXTERNALSYM DMUS_DOWNLOADINFO_INSTRUMENT2}
(* Support for oneshot and streaming wave data
*)
DMUS_DOWNLOADINFO_WAVEARTICULATION = 4; (* Wave articulation data *)
{$EXTERNALSYM DMUS_DOWNLOADINFO_WAVEARTICULATION}
DMUS_DOWNLOADINFO_STREAMINGWAVE = 5; (* One chunk of a streaming *)
{$EXTERNALSYM DMUS_DOWNLOADINFO_STREAMINGWAVE}
DMUS_DOWNLOADINFO_ONESHOTWAVE = 6;
{$EXTERNALSYM DMUS_DOWNLOADINFO_ONESHOTWAVE}
DMUS_DEFAULT_SIZE_OFFSETTABLE = 1;
{$EXTERNALSYM DMUS_DEFAULT_SIZE_OFFSETTABLE}
(* Flags for DMUS_INSTRUMENT's ulFlags member *)
DMUS_INSTRUMENT_GM_INSTRUMENT = (1 shr 0);
{$EXTERNALSYM DMUS_INSTRUMENT_GM_INSTRUMENT}
type
PDMusOffsetTable = ^TDMusOffsetTable;
_DMUS_OFFSETTABLE = packed record
ulOffsetTable: array[0..DMUS_DEFAULT_SIZE_OFFSETTABLE - 1] of Cardinal;
end;
{$EXTERNALSYM _DMUS_OFFSETTABLE}
DMUS_OFFSETTABLE = _DMUS_OFFSETTABLE;
{$EXTERNALSYM DMUS_OFFSETTABLE}
TDMusOffsetTable = _DMUS_OFFSETTABLE;
PDMusInstrument = ^TDMusInstrument;
_DMUS_INSTRUMENT = packed record
ulPatch: Cardinal;
ulFirstRegionIdx: Cardinal;
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -