Home | History | Annotate | Download | only in include
      1 /* DirectMusic DLS Download Definitions
      2  *
      3  *  Copyright (C) 2003-2004 Rok Mandeljc
      4  *
      5  * This program is free software; you can redistribute it and/or
      6  * modify it under the terms of the GNU Lesser General Public
      7  * License as published by the Free Software Foundation; either
      8  * version 2.1 of the License, or (at your option) any later version.
      9  *
     10  * This program is distributed in the hope that it will be useful,
     11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
     12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     13  * Lesser General Public License for more details.
     14  *
     15  * You should have received a copy of the GNU Lesser General Public
     16  * License along with this program; if not, write to the Free Software
     17  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
     18  */
     19 
     20 #ifndef __WINE_DMUSIC_DLS_H
     21 #define __WINE_DMUSIC_DLS_H
     22 
     23 #include <dls1.h>
     24 
     25 /*****************************************************************************
     26  * Typedef definitions
     27  */
     28 typedef LONG GCENT;
     29 typedef LONG PCENT;
     30 typedef LONG PERCENT;
     31 typedef LONG TCENT;
     32 
     33 typedef LONGLONG REFERENCE_TIME, *LPREFERENCE_TIME;
     34 
     35 /*****************************************************************************
     36  * FOURCC definition
     37  */
     38 #ifndef mmioFOURCC
     39 typedef DWORD FOURCC;
     40 #define mmioFOURCC(ch0,ch1,ch2,ch3) \
     41 	((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) | \
     42 	((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24 ))
     43 #endif
     44 
     45 /*****************************************************************************
     46  * Flags
     47  */
     48 #define DMUS_DEFAULT_SIZE_OFFSETTABLE 0x1
     49 
     50 #define DMUS_DOWNLOADINFO_INSTRUMENT       0x1
     51 #define DMUS_DOWNLOADINFO_WAVE             0x2
     52 #define DMUS_DOWNLOADINFO_INSTRUMENT2      0x3
     53 #define DMUS_DOWNLOADINFO_WAVEARTICULATION 0x4
     54 #define DMUS_DOWNLOADINFO_STREAMINGWAVE    0x5
     55 #define DMUS_DOWNLOADINFO_ONESHOTWAVE      0x6
     56 
     57 #define DMUS_INSTRUMENT_GM_INSTRUMENT 0x1
     58 
     59 #define DMUS_MIN_DATA_SIZE 0x4
     60 
     61 /*****************************************************************************
     62  * Structures
     63  */
     64 /* typedef definitions */
     65 typedef struct _DMUS_DOWNLOADINFO   DMUS_DOWNLOADINFO,   *LPDMUS_DOWNLOADINFO;
     66 typedef struct _DMUS_OFFSETTABLE    DMUS_OFFSETTABLE,    *LPDMUS_OFFSETTABLE;
     67 typedef struct _DMUS_INSTRUMENT     DMUS_INSTRUMENT,     *LPDMUS_INSTRUMENT;
     68 typedef struct _DMUS_REGION         DMUS_REGION,         *LPDMUS_REGION;
     69 typedef struct _DMUS_LFOPARAMS      DMUS_LFOPARAMS,      *LPDMUS_LFOPARAMS;
     70 typedef struct _DMUS_VEGPARAMS      DMUS_VEGPARAMS,      *LPDMUS_VEGPARAMS;
     71 typedef struct _DMUS_PEGPARAMS      DMUS_PEGPARAMS,      *LPDMUS_PEGPARAMS;
     72 typedef struct _DMUS_MSCPARAMS      DMUS_MSCPARAMS,      *LPDMUS_MSCPARAMS;
     73 typedef struct _DMUS_ARTICPARAMS    DMUS_ARTICPARAMS,    *LPDMUS_ARTICPARAMS;
     74 typedef struct _DMUS_ARTICULATION   DMUS_ARTICULATION,   *LPDMUS_ARTICULATION;
     75 typedef struct _DMUS_ARTICULATION2  DMUS_ARTICULATION2,  *LPDMUS_ARTICULATION2;
     76 typedef struct _DMUS_EXTENSIONCHUNK DMUS_EXTENSIONCHUNK, *LPDMUS_EXTENSIONCHUNK;
     77 typedef struct _DMUS_COPYRIGHT      DMUS_COPYRIGHT,      *LPDMUS_COPYRIGHT;
     78 typedef struct _DMUS_WAVEDATA       DMUS_WAVEDATA,       *LPDMUS_WAVEDATA;
     79 typedef struct _DMUS_WAVE           DMUS_WAVE,           *LPDMUS_WAVE;
     80 typedef struct _DMUS_NOTERANGE      DMUS_NOTERANGE,      *LPDMUS_NOTERANGE;
     81 typedef struct _DMUS_WAVEARTDL      DMUS_WAVEARTDL,      *LPDMUS_WAVEARTDL;
     82 typedef struct _DMUS_WAVEDL         DMUS_WAVEDL,         *LPDMUS_WAVEDL;
     83 
     84 /* actual structures */
     85 struct _DMUS_DOWNLOADINFO {
     86 	DWORD dwDLType;
     87 	DWORD dwDLId;
     88 	DWORD dwNumOffsetTableEntries;
     89 	DWORD cbSize;
     90 };
     91 
     92 struct _DMUS_OFFSETTABLE {
     93 	ULONG ulOffsetTable[DMUS_DEFAULT_SIZE_OFFSETTABLE];
     94 };
     95 
     96 struct _DMUS_INSTRUMENT {
     97 	ULONG ulPatch;
     98 	ULONG ulFirstRegionIdx;
     99 	ULONG ulGlobalArtIdx;
    100 	ULONG ulFirstExtCkIdx;
    101 	ULONG ulCopyrightIdx;
    102 	ULONG ulFlags;
    103 };
    104 
    105 struct _DMUS_REGION {
    106 	RGNRANGE RangeKey;
    107 	RGNRANGE RangeVelocity;
    108 	USHORT   fusOptions;
    109 	USHORT   usKeyGroup;
    110 	ULONG    ulRegionArtIdx;
    111 	ULONG    ulNextRegionIdx;
    112 	ULONG    ulFirstExtCkIdx;
    113 	WAVELINK WaveLink;
    114 	WSMPL    WSMP;
    115 /* WLOOP is typedef'ed as struct _rloop in dls1.h. Changed type of
    116  * WLOOP[1] from WLOOP to struct _rloop for __cplusplus compat. */
    117 	struct _rloop   WLOOP[1];
    118 };
    119 
    120 struct _DMUS_LFOPARAMS {
    121 	PCENT pcFrequency;
    122 	TCENT tcDelay;
    123 	GCENT gcVolumeScale;
    124 	PCENT pcPitchScale;
    125 	GCENT gcMWToVolume;
    126 	PCENT pcMWToPitch;
    127 };
    128 
    129 struct _DMUS_VEGPARAMS {
    130 	TCENT   tcAttack;
    131 	TCENT   tcDecay;
    132 	PERCENT ptSustain;
    133 	TCENT   tcRelease;
    134 	TCENT   tcVel2Attack;
    135 	TCENT   tcKey2Decay;
    136 };
    137 
    138 struct _DMUS_PEGPARAMS {
    139 	TCENT   tcAttack;
    140 	TCENT   tcDecay;
    141 	PERCENT ptSustain;
    142 	TCENT   tcRelease;
    143 	TCENT   tcVel2Attack;
    144 	TCENT   tcKey2Decay;
    145 	PCENT   pcRange;
    146 };
    147 
    148 struct _DMUS_MSCPARAMS {
    149 	PERCENT ptDefaultPan;
    150 };
    151 
    152 struct _DMUS_ARTICPARAMS {
    153 	DMUS_LFOPARAMS LFO;
    154 	DMUS_VEGPARAMS VolEG;
    155 	DMUS_PEGPARAMS PitchEG;
    156 	DMUS_MSCPARAMS Misc;
    157 };
    158 
    159 struct _DMUS_ARTICULATION {
    160 	ULONG ulArt1Idx;
    161 	ULONG ulFirstExtCkIdx;
    162 };
    163 
    164 struct _DMUS_ARTICULATION2 {
    165 	ULONG ulArtIdx;
    166 	ULONG ulFirstExtCkIdx;
    167 	ULONG ulNextArtIdx;
    168 };
    169 
    170 struct _DMUS_EXTENSIONCHUNK {
    171 	ULONG  cbSize;
    172 	ULONG  ulNextExtCkIdx;
    173 	FOURCC ExtCkID;
    174 	BYTE   byExtCk[DMUS_MIN_DATA_SIZE];
    175 };
    176 
    177 struct _DMUS_COPYRIGHT {
    178 	ULONG cbSize;
    179 	BYTE  byCopyright[DMUS_MIN_DATA_SIZE];
    180 };
    181 
    182 struct _DMUS_WAVEDATA {
    183 	ULONG cbSize;
    184 	BYTE  byData[DMUS_MIN_DATA_SIZE];
    185 };
    186 
    187 struct _DMUS_WAVE {
    188 	ULONG        ulFirstExtCkIdx;
    189 	ULONG        ulCopyrightIdx;
    190 	ULONG        ulWaveDataIdx;
    191 	WAVEFORMATEX WaveformatEx;
    192 };
    193 
    194 struct _DMUS_NOTERANGE {
    195 	DWORD dwLowNote;
    196 	DWORD dwHighNote;
    197 };
    198 
    199 struct _DMUS_WAVEARTDL {
    200 	ULONG  ulDownloadIdIdx;
    201 	ULONG  ulBus;
    202 	ULONG  ulBuffers;
    203 	ULONG  ulMasterDLId;
    204 	USHORT usOptions;
    205 };
    206 
    207 struct _DMUS_WAVEDL {
    208 	ULONG cbWaveData;
    209 };
    210 
    211 #endif /* __WINE_DMUSIC_DLS_H */
    212