⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 directmusic.pas

📁 3D GameStudio 的Delphi开发包
💻 PAS
📖 第 1 页 / 共 5 页
字号:
// 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 = 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 = record
    ulOffset:    Cardinal;       // Offset to the entry in the list
  end;
  {$EXTERNALSYM _POOLCUE}
  POOLCUE = _POOLCUE;
  {$EXTERNALSYM POOLCUE}
  TPoolCUE = _POOLCUE;

  PPoolTable = ^TPoolTable;
  _POOLTABLE = 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 = 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 = 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}


  REFERENCE_TIME = DXTypes.REFERENCE_TIME;
  {$EXTERNALSYM REFERENCE_TIME}
  TReferenceTime = DXTypes.TReferenceTime;
  PReferenceTime = DXTypes.PReferenceTime;
  PReference_Time = PReferenceTime;
  TReference_Time = TReferenceTime;

  PDMusDownloadInfo = ^TDMusDownloadInfo;
  _DMUS_DOWNLOADINFO = 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 = 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 = record
    ulPatch: Cardinal;
    ulFirstRegionIdx: Cardinal;
    ulGlobalArtIdx: Cardinal;         // If zero the instrument does not have an articulation
    ulFirstExtCkIdx: Cardinal;        // If zero no 3rd party entenstion chunks associated with the instrument

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -